已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
44矩阵键盘原理及其在单片机中的简单应用基于Proteus仿真1、44矩阵键盘的工作原理如下图所示,44矩阵键盘由4条行线和4条列线组成,行线接P3.0P3.3,列线接P3.4P3.7,按键位于每条行线和列线的交叉点上。按键的识别可采用行扫描法和线反转法,这里采用简单的线反转法,只需三步。第一步,执行程序使X0X3均为低电平,此时读取各列线Y0Y3的状态即可知道是否有键按下。当无键按下时,各行线与各列线相互断开,各列线仍保持为高电平;当有键按下时,则相应的行线与列线通过该按键相连,该列线就变为低电平,此时读取Y0Y1Y2Y3的状态,得到列码。第二步,执行程序使Y0Y3均为低电平,当有键按下时,X0X3中有一条行线为低电平,其余行线为高电平,读取X0X1X2X3的状态,得到行码。第三步,将第一步得到的列码和第二步得到的行码拼合成被按键的位置码,即Y0Y1Y2Y3X0X1X2X3(因为行线和列线各有一条为低电平,其余为高电平,所以位置码低四位和高四位分别只有一位低电平,其余为高电平)。当0键按下时,行线X0和列线Y0为低电平,其余行列线为高电平,于是可以得到0键的位置码Y0Y1Y2Y3X0X1X2X3为0111 0111,即0X77。当5键按下时,行线X1和列线Y1为低电平,其余行列线为高电平,于是可得到5键的位置码Y0Y1Y2Y3X0X1X2X3为1011 1011,即0XBB。全部矩阵键盘的位置码如下:2、44矩阵键盘在单片机的简单应用举例(一)如下图所示,运行程序时,按下任一按键,数码管会显示它在矩阵键盘上的序号0F,并且蜂鸣器发出声音,模拟按键的声音。此处采用线反转法识别按键。C程序如下:#include#define uchar unsigned char#define uint unsigned intsbit buzzer=P10;uchar code dis= /09,AF的共阳显示代码0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X88,0X83,0XC6,0XA1,0X86,0X8E;uchar code tab=/矩阵键盘按键位置码0x77,0xb7,0xd7,0xe7,0x7b,0xbb,0xdb,0xeb,0x7d,0xbd,0xdd,0xed,0x7e,0xbe,0xde,0xee;void delay(uint x) /延时函数uchar i;while(x-)for(i=0;i120;i+); uchar scan() /矩阵键盘扫描函数,得到按键号,采用线反转法uchar a,b,c,i;P3=0XF0; /P3口输出11110000a=P3; /读取列码delay(10); /防抖延时10msP3=0X0F; /P3口输出00001111b=P3; /读取行码c=a+b; /得到位置码for(i=0;i16;i+)if(c=tabi)return i; /查表得到按键序号并返回return -1;/无按键,则返回-1void beep() /蜂鸣器发出声音,模拟按键的声音 uchar i;for(i=0;i100;i+)buzzer=buzzer;delay(1);buzzer=0;void main()uchar key;buzzer=0; /关闭蜂鸣器while(1)key=scan(); /得到按键号if(key!=-1)/有按键则显示,并且蜂鸣器发出声音P0=diskey; beep(); delay(100);Proteus仿真运行结果如下:3、44矩阵键盘在单片机的简单应用举例(二)如下图所示,运行程序时,按下的按键键值越大,点亮的LED灯越多,例如,按下1号键时,点亮一只LED灯,按下2号键时,点亮两只LED灯,按下16号键时,点亮全部LED灯。这里仍然采用线反转法识别按键。C程序如下:#include#define uchar unsigned char#define uint unsigned intuchar code tab= /矩阵键盘按键位置码0x77,0xb7,0xd7,0xe7,0x7b,0xbb,0xdb,0xeb,0x7d,0xbd,0xdd,0xed,0x7e,0xbe,0xde,0xee;void delay(uint x) /延时函数uchar i;while(x-)for(i=0;i120;i+);uchar scan() /矩阵键盘扫描函数,得到按键号,采用线反转法uchar a,b,c,i;P1=0XF0;a=P1;delay(10);P1=0X0F;b=P1;c=a+b;for(i=0;i16;i+)if(c=tabi)return i; /有按键,则返回按键号return -1; /无按键,则返回-1void main()uchar key,i,led3,led2; while(1) key=scan(); if(key!=-1) led3=0xff; led2=0xff; for(i=0;i=key;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026辽宁沈阳城投置业发展有限公司招聘4人笔试题库附答案详解AB卷
- 2026辽宁省精神卫生中心(开原院区)招聘三方派遣制门诊导诊人员2人考前冲刺试卷带答案详解(满分必刷)
- 2026辽宁阜新蒙古族自治县乡村医生委托定向培养医学生毕业招聘1人笔试题库附参考答案详解(巩固)
- 2026重庆两江职业教育中心教辅人员招聘9人考前冲刺试卷及完整答案详解(有一套)
- 2026重庆人工智能学院非事业编工作人员招聘5人(第四批)考前冲刺试卷含答案详解【培优A卷】
- 2026年音响行业创新技术发展展望报告
- 2026年汽车保险行业创新技术报告
- 2026重庆市两江新区鸳鸯社区卫生服务中心招聘4人考前冲刺试卷【考点精练】附答案详解
- 2026重庆市人和中学校(维修工)招聘1人备考题库附答案详解【培优B卷】
- 2026重庆市卫生人才发展与对外交流中心见习生招募2人笔试题库【培优B卷】附答案详解
- 2026年甘肃省兰州市公安局兰州新区分局招聘警务辅助人员40人考试参考题库及答案详解
- 2026年餐饮店员工劳动合同范本(甲乙双方)二篇
- 2026 融媒体采编岗事业单位面试试题招聘考试参考题库 含答案
- 漏电保护器培训课件
- 三年级上册英语单词表【1-6单元】
- 课件-隧道施工安全培训
- 脑干出血治疗指南
- 丰乳肥臀在线阅读
- 心境情感障碍的护理查房
- 2025届高三数学一轮复习-分段函数专项训练【含答案】
- 桥梁墩柱施工方案评审
评论
0/150
提交评论