独立键盘的使用

发布者:梦想启航最新更新时间:2022-04-21 来源: eefocus关键字:独立键盘  驱动  上拉电阻 手机看文章 扫描二维码
随时随地手机看文章

1、前言

线与

开关合上后,都是0(0&1 = 0)即,两端只要有一端是0,合上就是0,两端都是1,合上才是1;


线或


右边是高阻态;左边是0,合上就是0,左边是1,合上就是1.


2、独立键盘电路图

 

51单片机,P1、P2、P3均自带上拉电阻,只有P0需要单独接上拉电阻。


3、独立键盘的驱动原理:

查I/O口的状态;


检查过程,先给对应的I/O口置1,再读这个I/O口,若还是1,说明按键未被按下,若是0说明按键按下了。


例如:


P3 = 0xff;  //需要先将I/O口输出1.,只有先输出1,才能被当做输入使用。


//按键按下,二极管亮,按键松,二极管灭;按键按下后数码管示数加1


#include

sbit key1 = P3^2;

sbit led1 = P2^0;

unsigned char code smg_du[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void main()

{

    P3 = 0xff;

    unsigned char num;

 

    while(1)

    {

        if(key1 == 0)

        {

            led1 = 0;      //灯亮

            num++;

            if(num ==10)

                num = 0;

            while(!key1);//按键按下时间相较单片机执行时间,很长,导致按一下,数码管跳变,故添加词条代码

        }

            

        else

             led1 =1;      //灯灭

        P1 = smg_du[num];

    }

}

左图为软件消抖,右图为硬件消抖;


//按键时间一般都20ms,


#include

sbit key1 = P3^2;

sbit led1 = P2^0;

unsigned char code smg_du[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//12MHz下,延时50us

void delay_50us(unsigned int t)

{

    unsigned char j;

    for(;t>0;t--);

        for(j =19;j>0;j--);

}

 

void main()

{

    P3 = 0xff;

    unsigned char num;

 

    while(1)

    {

        if(key1 == 0)

        {

            delay_50us(200);//延时5ms

            if(key1 == 0)

            {

                led1 = 0;      //灯亮

                num++;

                if(num ==10)

                num = 0;

                while(!key1);//按键按下时间相较单片机执行时间,很长,导致按一下,数码管跳变,故添加词条代码

            }

            delay_50us(200);//延时5ms;

            while(!key1);          

        }

            

        else

             led1 =1;      //灯灭

        P1 = smg_du[num];

    }

}

关键字:独立键盘  驱动  上拉电阻 引用地址:独立键盘的使用

上一篇:80C51定时器中断
下一篇:数码管简介

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved