C51单片机键盘检测原理以及实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C51单片机键盘检测原理以及实现
首先,在做软件之前确定硬件。
明确键盘类型:弹性按键:按下时闭合,
松手后自动断开。
如电脑键盘
自锁式按键:按下时闭合,且自动锁住。
一边用于开关
在I/O 口检测触电电压时应该考虑按键抖动问题,一般按键抖动为5~10ms
左右,具体与其机械特性有关,所以要加检测抖动环节,可以用软件或者去抖
动芯片硬件处理,当然通常用延时方法处理。
注意正确连接引脚。
下面是一个简单的4 按键独立键盘程序,在51hei 开发板的数码管上操作。
完整的源代码下载51hei/f/jpdd.rar 数值为0~59 变化,开始显示00 按key1 数
值加1,按key2 数值减1,按key3 数值归0,按key4 数值每秒加1。
#include
reg52.h#define uchar unsigned char#define unit unsigned intsbit key1=P3 ;sbit key1=P3;sb it key1=P3;sb it key1=P3;sb it dula=P2;sb it wela=P2;uch a r code table[]={0x3f,0x06.0x5b,0x4f,0x66,0x6d,0x7d,0x070x7f,0x6f,0x77,0x7c0x39,0x5e,0 x79,0x71};void delayms(unit);uchar numt0,unm;void display(uchar numdis) //定义一个显示的函数,分个位十位,用来显示{uchar shi,ge; //然后用轮流显示发,利
用人眼图像残留分别显示shi=numdis/10; //上面的numdis 表示num 这个显示的
数ge=numdis%10; //numdis 由下面主函数num 赋值dula=1;P0=table[shi]; dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delayms(5);dula=1;P0=table[ge];dula=0;P0 =0xff;wela=1;P0=0xfe;wela=0;delayms(5);}void delayms(unit xms) //自定义延迟环
节{unit i,j;for(i=xms,i0,i--);for(j=110,j0,j--);}void init() //初始化函数,保证程序正
常运行{TMOD=0x01;TH0=(65536-45872)/256;TL0=(65536-
458720%256;EA=1;ET=0;}tips:感谢大家的阅读,本文由我司收集整编。
仅供参
阅!。