实验二矩阵键盘实验.docx

实验二矩阵键盘实验.docx

ID:59205999

大小:42.16 KB

页数:9页

时间:2020-09-10

实验二矩阵键盘实验.docx_第1页
实验二矩阵键盘实验.docx_第2页
实验二矩阵键盘实验.docx_第3页
实验二矩阵键盘实验.docx_第4页
实验二矩阵键盘实验.docx_第5页
资源描述:

《实验二矩阵键盘实验.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验二矩阵键盘实验一、实验目的1.掌握矩阵键盘行列设计方法;2.掌握矩阵键盘识别方法;3.掌握矩阵键盘去抖原理;4.掌握矩阵键盘控制LED或数码管的设计方法。二、实验原理1.MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。2.用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。3.识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,

2、将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全

3、部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0xBF写入P1口,使P1.6为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。三、实验步骤1.在PROTEUS平台中画出电原理图。2.在keil平台

4、中进行编程、编译,生成目标文件(.HEX文件)3.在PROTEUS平台中加载目标文件(.HEX文件)并进行仿真调试,若达不到要求,则要修改程序,反复调试,直到成功。四、实验内容1.编写程序,做到在键盘上每按一个数字键(0-F)用LED数码管将该代码显示出来。按其它键退出。2.利用Proteus,设计4*4矩阵键盘硬件电路,并仿真实现。参考程序/***************************************************************功能:4*4矩阵键盘,LED显示所按的键**********************************

5、*****************************/#include#defineuintunsignedint#defineucharunsignedcharsbitwei1=P2^0;ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳数码管码表//全局变量ucharnum,temp,num1;//函数声明voiddelay(uintz);ucharkeyscan();voiddisplay(

6、ucharaa);voidmain(){num=1;wei1=0;P0=0xC0;while(1){display(keyscan());}}voiddisplay(ucharaa){P0=table[aa-1];}ucharkeyscan(){P1=0xfe;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case0xee:num=1;break;case0xde:num=2;break;case0

7、xbe:num=3;break;case0x7e:num=4;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfd;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case0xed:num=5;break;case0xdd:num=6;break;case0xbd:num=7;b

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

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

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