单片机 键盘扫描ppt课件.ppt

单片机 键盘扫描ppt课件.ppt

ID:59342642

大小:302.00 KB

页数:31页

时间:2020-09-20

单片机 键盘扫描ppt课件.ppt_第1页
单片机 键盘扫描ppt课件.ppt_第2页
单片机 键盘扫描ppt课件.ppt_第3页
单片机 键盘扫描ppt课件.ppt_第4页
单片机 键盘扫描ppt课件.ppt_第5页
资源描述:

《单片机 键盘扫描ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、独立式键盘程序设计独列式键盘的原理1.判断是否有键按下由于P3口为准双向口,故现P3口接键盘,则P3口必须先置为1,再将P3口输入到A后取反,如为全0则无键按下,如值不为0,则表示有键按下,软件延时去抖动,再次用同样的方法判断是否有键按下。若第二次判断也有键按下,则可以确定有键按下;若第二次判断无键按下,则可能第一次为误判断。注意:软件延时去抖动这一步不要省略,否则对按键的判断可能会产生误判断。在使用动态扫描显示的程序中,一般采用动态扫描显示程序作为去抖动的延时。一、独列式键盘扫描程序设计步骤2.根据按键位置求得到键值如S0、S1、S2……S7,其键值分别为0、1、

2、2……7。3.判断闭合的按键是否释放无论一次按键时间有多长,系统仅执行一次按键功能程序。判断按键是否释放的算法同判断是否有键按下的算法正好相反。二、应用实例(一)1.设计要求利用用户板2,在秒表计基础上扩充程序功能使之成为:开始显示00,按S0秒表计开始计时,再按S0则停止计时,显示即时时间;按S1,停止计时并实现清0。2.设计方法主函数完成T0、中断的初始化、键盘扫描;中断服务函数完成秒的加1和显示缓冲区的刷新。设计思路:1、工作标志位的设计:flag=0,停止计时;flag=1,开始计时;2、延时消抖采用显示程序;#include#define

3、s00x01//启动/停止#defines10x02//清零constunsignedcharseg[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳码unsignedcharcout=0,sec=0,time[2]={0};//秒变量,显示缓冲(留有余地,为时分预留)unsignedchartest(void);//键盘测试unsignedcharkeyscan(void);//键盘扫描,返回键值voiddisplay(void);//显示voiddelay(void);//延时main()/

4、/主函数{unsignedchart;bitflag=0;TMOD=0X01;TH0=0X3C;TL0=0XB0;EA=1;while(1){display();t=keyscan();switch(t){cases0:if(!flag){flag=1;ET0=1;TR0=1;}else{flag=0;ET0=0;TR0=0;}break;cases1:flag=0;sec=0;time[0]=0;time[1]=0;ET0=0;TR0=0;}}}unsignedcharkeyscan(void)//键盘扫描函数{unsignedchark,i;if(test())

5、{i=20;while(i--)display();if(k=test()){while(test())display();returnk;}}return0;}unsignedchartest()//键盘检测函数,有键按下,键值不为0,无{unsignedchark;键按下,键值为0。P3=0XFF;k=P3;k=~k;K=k&0x03;returnk;//S0按下,K=1;S1按下,K=2}voiddisplay(){unsignedcharb=0x02,t,i;for(i=0;i<2;i++){t=time[i];P0=seg[t];P2=b;b=b>>1;d

6、elay();P0=0Xff;}}voiddelay(){unsignedchari=250;while(i--);}at0()interrupt1{TH0=0X3C;TL0=0XB0;cout++;if(cout==20){cout=0;sec++;if(sec==60)sec=0;time[0]=sec/10;time[1]=sec%10;}}二、应用实例(一)1.设计要求利用用户板2,在上例的基础上扩充功能,使之可以调秒。上电就开始计时,按S0,停止计时并进入调秒状态,按一次S1使数码管+1,直至加至59,再加1为0,再按S0,退出调时状态,恢复计秒。2.键盘

7、扫描流程如下:注意:考虑到以后程序功能的扩充,特设任务标志work,注释:WORK=0,计秒状态;WORK=1,调秒状态//秒+1带调时功能#include#defines00x01#defines10x02constunsignedcharseg[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};unsignedcharcout=0,sec=0,time[2]={0};//秒变量,显示缓冲unsignedchartest(void);//键盘测试。有键按下!0unsignedc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。