学习笔记之51单片机键盘篇(非编码键盘与编码键盘、非编码键盘的扫描方式、独立键盘、矩阵键盘) |
您所在的位置:网站首页 › 计算机编码方式有哪三种 › 学习笔记之51单片机键盘篇(非编码键盘与编码键盘、非编码键盘的扫描方式、独立键盘、矩阵键盘) |
这篇博文主要记录51单片机键盘篇(非编码键盘与编码键盘、非编码键盘的扫描方式、独立键盘、矩阵键盘、键盘消抖等)包含原理图、代码等
(一)基础补充1.键盘的任务2.键盘的识别3.如何消除按键的抖动4.非编码键盘与编码键盘5.非编码键盘的扫描方式(1)查询扫描:(2)定时扫描:(3)中断扫描:
(二)独立键盘1.独立键盘原理图2.独立键盘K1控制LED1代码实现
(三)矩阵键盘1.矩阵键盘原理图2.矩阵键盘对应数码管输出0到代码实现
(一)基础补充
1.键盘的任务
(1)判别是否有键按下?若有,进入下一步。 (2)识别哪一个键被按下,并求出相应的键值。 (3)根据键值,找到相应键值的处理程序入口。 2.键盘的识别
(1)用软件延时来消除按键抖动,基本思路是:在检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,行线的低电平变为高电平,执行一段延时10ms的子程序后,检测该行线为高电平,说明按键确实已经松开。 (2)采用专用的键盘/显示器接口芯片,这类芯片中都有自动去抖动的硬件电路。 4.非编码键盘与编码键盘(1)非编码键盘是指按下按键,键号信息不能直接得到,要通过软件来获取。非编码键盘常见的有独立式键盘和矩阵式键盘两种结构。 (2)编码键盘是指当按键按下后,能直接得到按键的键号,例如使用专用的键盘接口芯片。 5.非编码键盘的扫描方式 (1)查询扫描:利用单片机空闲时,调用键盘扫描子程序,反复扫描键盘,来响应键盘的输入请求,如果单片机的查询频率过高,虽能及时响应键盘的输入,但也会影响其他任务的进行。如果查询的频率过低,有可能出现键盘输入的漏判现象。所以要根据单片机系统的繁忙程度和键盘的操作频率,来调整键盘扫描的频率。 (2)定时扫描:单片机可每隔一定的时间对键盘扫描一次,即定时扫描。这种方式通常是利用单片机内的定时器产生的定时中断,进入中断子程序后对键盘进行扫描,在有键按下时识别出按下的键,并执行相应键的处理程序。由于每次按键的时间一般不会小于100ms,所以为了不判漏有效的按键,定时中断的周期一般小于100ms。 (3)中断扫描:为了进一步提高单片机扫描键盘的工作效率,可采用中断扫描方式,即键盘只有在有按键按下时,才会向单片机发出中断请求信号。单片机响应中断,执行键盘扫描中断服务子程序,识别出按下的按键,并跳向该按键的处理程序。如果无键按下,单片机将不理睬键盘。该方式的优点是只有有按键按下时才会进行处理,所以实时性强,工作效率高。 (二)独立键盘 1.独立键盘原理图独立式键盘的特点是各键相互独立,每个按键各接一条I/O口线,通过检测I/O口输入线的电平状态,很容易判断哪个按键被按下。 2.独立键盘K1控制LED1代码实现 #include sbit led1=P2^0;//因为led1由p2^0口控制 sbit k1=P3^1;//P31口的输出电平由按键k1控制 void delay(int i) { while(i--); } void keyproc() { if(k1==0) { delay(1000);//延时消抖 if(k1==0) { led1=~led1; } while(!k1) ; } } void main() { while(1) { keyproc(); } } (三)矩阵键盘 1.矩阵键盘原理图
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |