1、单片机原理及应用在线开放课程单片机原理及应用在线开放课程键盘接口技术:独立按键键盘接口技术:独立按键1完整最新版课件CONTENTS目录目录01键盘简介键盘简介02独立按键工作原理独立按键工作原理03独立按键应用实例独立按键应用实例道艺兼修敬业乐群2完整最新版课件Part01键盘简介键盘简介3完整最新版课件01键盘简介键盘简介键盘是电子系统中人机对话的重要组成部分,是人向机器发出指令、键盘是电子系统中人机对话的重要组成部分,是人向机器发出指令、输入信息的必须设备,也是在单片机应用系统中使用最广泛的一种输入信息的必须设备,也是在单片机应用系统中使用最广泛的一种数据输入设备。数据输入设备。键盘是由
2、多个按键组成的。键盘是由多个按键组成的。4完整最新版课件Part02独立按键独立按键5完整最新版课件02独立按键独立按键按键通常是一种常开型开关,常态下按键的两个触按键通常是一种常开型开关,常态下按键的两个触点处于断开状态,按下按键时它们才闭合。点处于断开状态,按下按键时它们才闭合。按键1按键26完整最新版课件02独立按键与单片机的接口原理独立按键与单片机的接口原理330P1.6P1.7VCCGND按键不按下时,按键不按下时,P1.7P1.7通过一个电阻接通过一个电阻接到到VCCVCC上,上,P1.7P1.7为高电平状态,为高电平状态,按键按下按键按下时时按键抬起时,又接到按键抬起时,又接到V
3、CCVCC上,上,P1.7P1.7再次回到高电平状态。再次回到高电平状态。P1.7P1.7接到了接到了GNDGND上,上,P1.7P1.7被拉低为被拉低为低电平低电平7完整最新版课件02多个独立按键的单片机接口电路多个独立按键的单片机接口电路图2-20 独立式连接的非编码键盘 8031P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7R8 5 V0号 键1号 键2号 键3号 键4号 键5号 键6号 键7号 键P1.01P1.11P1.21P1.31P1.41P1.51P1.61P1.7100P1 1111,1111P11111,1110P11101,11118完整最新版课件02实
4、际按键的抖动问题实际按键的抖动问题实际按键的按下与释放是通过机械触点的闭合与断开来实现的,实际按键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖动的过因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖动的过程,抖动必须清除。程,抖动必须清除。9完整最新版课件02常用消抖方法常用消抖方法 1硬件方法硬件方法硬件方法是设计一个滤波延时电路或单稳态电路、硬件方法是设计一个滤波延时电路或单稳态电路、RS触发器等硬件电触发器等硬件电路来避开按键的抖动时间。每个按键一套电路路来避开按键的抖动时间。每个按键一套电路。10完整最新版课件02常用消抖方法常用消
5、抖方法2软件方法软件方法 软件方法是指编制一段时间大于软件方法是指编制一段时间大于20ms的延时程序,的延时程序,在第一次检测到有键按下时,执行延时子程序,使键在第一次检测到有键按下时,执行延时子程序,使键的前沿抖动消失后再检测该键状态,如果该键仍保持的前沿抖动消失后再检测该键状态,如果该键仍保持闭合状态电平,则确认为该键已稳定按下,否则无键闭合状态电平,则确认为该键已稳定按下,否则无键按下,从而消除了抖动的影响。按下,从而消除了抖动的影响。同理,在检测到按键释放后,也同样要延迟一段时间,同理,在检测到按键释放后,也同样要延迟一段时间,以消除后沿抖动,然后转入对该按键的处理以消除后沿抖动,然后
6、转入对该按键的处理11完整最新版课件02软件消抖流程图软件消抖流程图按键有键闭合?延时20mS去抖动有键闭合?保存键码延时20mS去抖动按键释放?按键释放?执行按键功能返回YYYYNNNN独立按键处理流程12完整最新版课件Part03简单独立按键实例简单独立按键实例13完整最新版课件03任务显示电路图如下,用第一个数码管任务显示电路图如下,用第一个数码管将独立按键接于单片机将独立按键接于单片机P3.0引脚引脚独立按键接于单片机独立按键接于单片机P3.0,当每按下一次按键数码管的值加当每按下一次按键数码管的值加1,初始值为初始值为0,加到,加到9后归零。后归零。14完整最新版课件03程序代码程序
7、代码#include#define uchar unsigned char#define uint unsigned intsbit wei=P27;/数码管位选sbit duan=P26;/数码管段选sbit key_s2=P30;/S2按键位定义uchar code leddata=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,;/0-9显示码void delay(uint z)uint x,y;for(x=z;x 0;x-)for(y=114;y 0;y-);void main()uchar num;we=1;P0
8、=0 xfe;/选通第一个数码管选通第一个数码管 wei=0;while(1)duan=1;P0=leddatanum;/显示显示S2按下次数按下次数duan=0;if(key_s2=0)/判断判断S2是否按键是否按键delay(20);/软件延时软件延时if(key_s2=0)num+;/计数加计数加1while(!key_s2);/松手检测松手检测 if(num=10)/当数值为超过当数值为超过9时归零时归零num=0;15完整最新版课件16完整最新版课件此课件下载可自行编辑修改,供参考!感谢您的支持,我们努力做得更好!此课件下载可自行编辑修改,此课件供参考!此课件下载可自行编辑修改,此课件供参考!部分内容来源于网络,如有侵权请与我联系删除!感谢你的观看!部分内容来源于网络,如有侵权请与我联系删除!感谢你的观看!此课件下载可自行编辑修改,此课件供参考!此课件下载可自行编辑修改,此课件供参考!部分内容来源于网络,如有侵权请与我联系删除!感谢你的观看!部分内容来源于网络,如有侵权请与我联系删除!感谢你的观看!此课件下载可自行编辑修改,此课件供参考!此课件下载可自行编辑修改,此课件供参考!部分内容来源于网络,如有侵权请与我联系删除!感谢你的观看!部分内容来源于网络,如有侵权请与我联系删除!感谢你的观看!