9矩阵式键盘的设计

9矩阵式键盘的设计

ID:21117730

大小:159.45 KB

页数:6页

时间:2018-10-19

9矩阵式键盘的设计_第1页
9矩阵式键盘的设计_第2页
9矩阵式键盘的设计_第3页
9矩阵式键盘的设计_第4页
9矩阵式键盘的设计_第5页
资源描述:

《9矩阵式键盘的设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第二章矩阵式键盘的设计班级:光信科1203组员:陈宏烨、王凯杰、糞馨1.设计要求设计一个4*4的矩阵式键盘,以P1.0〜P1.3作为行线,以P1.4〜P1.7作为列线。要求:未按下键时,WD数码管显示按下键时,在数码管上显示相应的键值。2.硬件电路AT09C51PO.OfACOP0.1/AQ1P0.2/AD2P0.3TAD3P0.4/AQ4P0.5fAD5PO.6TAD6P0.7/AD7P2J0/A8P21/A9P2.2/A10P23ZA11P2.4/A12P25/A13P2£/A14P2.7/A15P30^XDP3KTXDP3.2(K而

2、"P33MTTP34/T0P3SfT1P36巫P37jRD*3938373ft35343332-2Z-22.-21-25.-2Llfl..⑦RP1PfSPACK-8...vcc图2.1电路说明:在图2.1所示的电路屮,数码管采用共阳极接法,当P1口输出低电平时,数码管发光。Pl.(TP1.3行线开始时为高电平,Pl.O1.7列线开始时为低电平,当有键被按下时(每次只按下一个键),键所在的行线变成低电平。3.软件流程开始•>初始化key,PlP1=0x0f?Pl=OxfO;key二PlPO二Ox3f延时去抖key=PlPl

3、=OxOf?Nkey=OxOe?Nkey=OxOd?INkey=OxOb?iNkey=0x07?key=OxOe?INYPO二OxcOkey=OxOe?P0=0xf9士Nkey=OxOe?Y->P0=0xa4NYkey=OxOe?>PO=OxbO原理同上,输出PO值为4,5,6,7>原理同上,输出P0值为8,9,10,n>原理同上,输出PO值为12,13,14,15设计思路:要想让数码管输出正确的数字,必须要做到三步:1.判断是否有键被按下;2.判断被按下键的位罝;3.确定该位罝所对应的数字并输出。由于我们令低四位为高电平的行线,令

4、高四位为低电平的列线,所以对应的十六进制数应该是OxOf。当冇键被按下吋,被按下的键所在的行必定由高电平变成低电平,对应的十六进制数必定不是OxOf,从而确定是否有键被按下并且确定被按下键所在的行。同理,我们可以重新定义一个函数,先令高四位为高电平,低四位为低电平,所对应的十六进制数为OxfO,接着当有键被按下时,这时对应的十六进制数必定不是OxfO,从而可以确定被按下键所在的列。最后,定义一个函数,按每个键所处的不同位置,分别输出不同的数。4.源代码^includevoiddelay(ms){for(;ms>0;ms-

5、-);}voidHangl(){charkey;Pl=0xf0;delay(100);key=Pl;switch(key){caseOxeO:P0=0xc0;break;caseOxdO:P0=0xf9;break;caseOxbO:P0=0xa4;break;case0x70:PO=OxbO;break;default:break;voidHang2(){charkey;Pl=0xf0;delay(100);key=Pl;switch(key){caseOxeO:P0=0x99;break;caseOxdO:P0=0x92;break;

6、caseOxbO:P0=0x82;break;case0x70:PO:Oxf8;break;default:break;}voidHang3(){charkey;Pl=0xf0;delay(100);kcy=Pl;switch(key){caseOxeO:P0=0x80;break;caseOxdO:P0=0x90;break;caseOxbO:P0=0x88;break;case0x70:PO二0x83;break;default:break;voidHangd(){charkey;Pl=0xf0;delay(100);key=Pl;s

7、witch(key){caseOxcO:P0=0xc6;break;caseOxdO:P0=0xal;break;caseOxbO:PO二0x86;break;case0x70:P0=0x8e;break;default:break;}voidmain()intkey;Pl=0x0f;while(Pl:=0x0f){P0=0x3f;};delay(100);while(Pl==OxOf){P0=0x3f;};/*进行去抖操作*/key=Pl;if(Pl!=OxOf)A判断是否有键被按下*/{switch(key)/*判断被按下的键在哪一行

8、,并进行相应的操作V{case0x0e:Hangl();break;caseOxOd:Hang2();break;caseOxOb:Hang3();break;case0x07:Hang4()

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

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

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