- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4x4键盘设计
实验二 4×4编码键盘设计1. 实验目的(1)掌握按键工作原理及硬件实现;(2)掌握矩阵式按键识别方法;2. 实验环境(1)PC机(2)protues仿真软件(3)Keil C编程软件3. 实验内容(1)在protues仿真环境中设计基于8051单片机的按键硬件实现并行硬件仿真;(2)在Keil C中编程实现矩阵式按键识别;(3)在protues中进行软硬件仿真;分析仿真过程。4. 实验要求在实验报告中的实验内容中应包括以下内容:(1)硬件原理图;(2)程序流程图及部分关键代码;程序:#includereg51.h#includeLCD1602.h#includehardware.hchar code tab[4][4]={{1,4,7,#},{2,5,8,0},{3,6,9,*},{A,B,C,D}}; //0到F的16个键植void delay(unsigned char a){unsigned char i;while(a--)for(i=100;i0;i--);}char kbscan() //键盘扫描{unsigned char hang,lie,key;if(P3!=0x0f)delay(5);if(P3!=0x0f){switch(P30x0f){case 0x0e:lie=0;break;case 0x0d:lie=1;break;case 0x0b:lie=2;break;case 7:lie=3;break;}P3=0xf0;P3=0xf0;switch(P30xf0){case 0xe0:hang=0;break;case 0xd0:hang=1;break;case 0xb0:hang=2;break;case 0x70:hang=3;break;}P3=0x0f;while(P3!=0x0f);key=tab[hang][lie];}elsekey=0;return (key);}void main(){unsigned char temp;LCD_initial();LCD_prints(piaoling);P3=0x0f;P0=0xff;while(1){temp=kbscan();if(temp!=0){P0=temp;LCD_set_position(0x40);LCD_printc(temp);}}}(3)仿真截图(仿真结果)(4)结论开发板上设计了行列式矩阵编码键盘,规模为 4*4,可作为外部输入。采用矩阵编码键盘可以减少对 I/O 口的占用。开发板上的矩阵编码键盘有4条行线,4条列线。行线和列线的交叉处不直接连接,而是通过一个按键加以连接。这样就构成 4*4=16个按键输入,比之直接将信号线用于键盘多出了一倍,而且线数越多,区别越明显。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,如图列线通过电阻接正电源,并将行线所接的FPGA、CPLD的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。5. 实验参考见实验参考文件夹《智能化测量控制仪表原理与设计》?徐爱军著北京航空航天大学出版社, 1999出版《单片机实践与应用》?吴金戍等著北京: 清华大学出版社, 2002出版.?
文档评论(0)