- 1、本文档共61页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
源程序编写如下://宏定义#includereg51.h#defineucharunsignedchar#defineuintunsignedint//延时1ms子程序voidDelayMS(uintx){uchari;while(x--)for(i=0;i120;i++);}//按键控制LED灯主程序voidmain(){uchark,t,Key_State;P1=0xFF;P0=0xFF;while(1){t=P1;//将键值保存起来if(t!=0xFF)//判断有键按下{DelayMS(10);//再次检查按键是否按下,去抖动if(t!=P1)continue;//如果按键没有按下,下一次循环Key_State=~t;//取得4位按键值,由1111xxxx变为0000xxxxk=0;//获取按键号kwhile(Key_State!=0){k++;Key_State=1;}switch(k){case1:if(P0==0x00)P0=0xFF;P0=1;//逐个点亮D1~D8DelayMS(200);break;case2:P0=0xF0;break;//点亮D1~D4case3:P0=0x0F;break;//点亮D5~D8case4:P0=0xFF;//熄灭D1~D8}}}}7.1.2矩阵键盘控制数码管显示7.1.2.1矩阵键盘的工作原理矩阵键盘由行线和列线组成,按键位于行、列的交叉点上。如图所示,1个4×4的行、列结构可以构成1个含有16个按键的键盘。在按键数量较多的场合,矩阵键盘与独立键盘相比要节省很多I/O口线。7.1.2矩阵键盘控制数码管显示7.1.2.1矩阵键盘的工作原理矩阵键盘的按键识别方法:扫描法和线反转法扫描法第一步:识别键盘是否有键闭合第二步:识别具体闭合的按键扫描法线反转法第一步:将行线编程为输入线,列线编程为输出线,并使输出线输出为全零电平,则行线中电平由高到低所在行为按键所在行。第二步:将行线编程为输出线,列线编程为输入线,并使输出线为全零电平,则列线中电平由高到低所在列为按键所在列。综合一二步的结果可确定按键所在行和列,从而识别出所按的键。矩阵按键键盘常用的有2种编码方式:(1)对于矩阵式键盘,按键的位置由行号和列号确定,分别对行号和列号进行二进制编码,然后将两值合成1个字节,高4位表示行号,低4位表示列号。如12H表示第1行第2列的按键。(2)采用依次排列键号的方式对按键进行编码。以4×4键盘为例,可以将键号编码为:0x00、0x01、0x02、…、0x0D、0x0E、0x0F共16个。对键盘的控制方式主要有:定时扫描中断扫描定时扫描就是每隔一定的时间读取一次键盘I/O口状态。中断方式下,当有键按下时,就会有一根行线被拉为低电平,经过与门之后就会触发一次外中断,这种方式避免了对键盘的空扫描,可以提高CPU的效率。任务操作1.任务要求设计一个电路,AT89C51单片机的P1口连接一个4×4矩阵键盘,其中P1.0~P1.3为行线,P1.4~P1.7为列线,P0端口连接一只共阴极的一位数码管,要求按下一只按键时在数码管上显示器对应的键号,如按下K1则显示“1”,按下K2则显示“2”……,按下KF则显示“F”。7.1.2.2矩阵键盘控制数码管显示的设计方法2.任务分析
文档评论(0)