版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验二 矩阵键盘实验一、实验目的 1.掌握矩阵键盘行列设计方法; 2.掌握矩阵键盘识别方法; 3.掌握矩阵键盘去抖原理; 4.掌握矩阵键盘控制LED或数码管的设计方法。二、实验原理 1.MCS51系列单片机的P0P3口作为输入端口使用时必须先向端口写入“1”。 2.用查询方式检测按键时,要加入延时(通常采用软件延时1020mS)以消除抖动。 3.识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。 行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线
2、也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。 由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写
3、入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平台中进行编程、编译,生成目标文件(.HEX
4、文件) 3.在PROTEUS平台中加载目标文件(.HEX文件)并进行仿真调试,若达不到要求,则要修改程序,反复调试,直到成功。四、实验内容 1.编写程序,做到在键盘上每按一个数字键(0F)用LED数码管将该代码显示出来。按其它键退出。 2.利用Proteus,设计4*4矩阵键盘硬件电路,并仿真实现。参考程序/*功能:4*4矩阵键盘,LED显示所按的键*/#include#define uint unsigned int#define uchar unsigned charsbit wei1=P20;uchar code table=0xC0,0xF9,0xA4,0xB0, 0x99,0x92,
5、0x82,0xF8, 0x80,0x90,0x88,0x83, 0xC6,0xA1,0x86,0x8E;/共阳数码管码表/全局变量uchar num,temp,num1;/函数声明void delay(uint z);uchar keyscan();void display(uchar aa);void main()num=1; wei1=0;P0=0xC0;while(1) display(keyscan();void display(uchar aa)P0=tableaa-1;uchar keyscan()P1=0xfe;temp=P1;temp=temp&0xf0;while(temp!
6、=0xf0)delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0)temp=P1;switch(temp)case 0xee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e: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)
7、temp=P1;switch(temp)case 0xed:num=5;break;case 0xdd:num=6;break;case 0xbd:num=7;break;case 0x7d:num=8;break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;P1=0xfb;temp=P1;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0)temp=P1;switch(temp)case 0xeb:num=9;break;case 0xdb:num
8、=10;break;case 0xbb:num=11;break;case 0x7b:num=12;break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;P1=0xf7;temp=P1;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0)temp=P1;switch(temp)case 0xe7:num=13;break;case 0xd7:num=14;break;case 0xb7:num=15;break;case 0x77:num=16;break;while(temp!=0xf0)temp=P1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 结构性心脏病介入治疗规范化诊疗业务学习
- 《中小学学生学籍管理办法(2026年)》
- 外墙涂料施工工艺及质量控制指南
- 农林牧渔企业信息公开工作规范落实自查自纠整改复查报告
- 2025年东昌府区柳园街道招聘社区网格员考试试题附答案详解
- 某人防工程监理实施细则
- 乡村兽医培训考试试题
- 法制宣传日宣传活动总结
- 公司文职人员试用期转正工作总结
- 活动宣传方案
- 2026贵州省住房资金管理中心招聘工作人员1人备考题库含答案详解(考试直接用)
- 2026储能入市背景下的投资测算工具设计逻辑深度研究报告
- 2026四川省阿坝州州级事业单位考试调动37人重点基础提升(共500题)附带答案详解
- 2026湖北神农架林区公安局招聘辅警22人笔试参考题库及答案解析
- 2026学校规范教育收费自查整改报告
- 2026中华全国供销合作总社直属事业单位招聘27人考试参考题库及答案解析
- 事故隐患排查治理基本知识
- 煤矿防治水知识培训
- 科学学习方法小学主题班会课件
- 2026江铜铜箔科技股份有限公司第一批次春季校园招聘89人建设笔试参考题库及答案解析
- 2026年建安杯信息通信建设行业安全竞赛重点题库(新版)
评论
0/150
提交评论