4×4矩阵键盘在单片机中的应用(Proteus)_第1页
4×4矩阵键盘在单片机中的应用(Proteus)_第2页
4×4矩阵键盘在单片机中的应用(Proteus)_第3页
4×4矩阵键盘在单片机中的应用(Proteus)_第4页
4×4矩阵键盘在单片机中的应用(Proteus)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档 1欢迎下载 4 44 4 矩阵键盘原理及其在单片机中的简单应用矩阵键盘原理及其在单片机中的简单应用 基于基于 ProteusProteus 仿真仿真 1 1 4 44 4 矩阵键盘的工作原理矩阵键盘的工作原理 如下图所示 4 4 矩阵键盘由 4 条行线和 4 条列线组成 行线接 P3 0 P3 3 列线接 P3 4 P3 7 按键位于每条行线和列线的交叉点上按键位于每条行线和列线的交叉点上 精品文档 2欢迎下载 按键的识别可采用行扫描法和线反转法 这里采用简单的线反转法 只需三步 第一步 执行程序使 X0 X3 均为低电平 此时读取各列线 Y0 Y3 的状态即可知道是否有键按 下 当无键按下时 各行线与各列线相互断开 各列线仍保持为高电平 当有键按下时 则相应 的行线与列线通过该按键相连 该列线就变为低电平 此时读取 Y0Y1Y2Y3 的状态 得到列码 第二步 执行程序使 Y0 Y3 均为低电平 当有键按下时 X0 X3 中有一条行线为低电平 其余 行线为高电平 读取 X0X1X2X3 的状态 得到行码 第三步 将第一步得到的列码和第二步得到的行码拼合成被按键的位置码 即 Y0Y1Y2Y3X0X1X2X3 因为行线和列线各有一条为低电平 其余为高电平 所以位置码低四位和高 四位分别只有一位低电平 其余为高电平 当当 0 0 键按下时 行线键按下时 行线 X0X0 和列线和列线 Y0Y0 为低电平 其余行列线为高电平 于是可以得到为低电平 其余行列线为高电平 于是可以得到 0 0 键的位键的位 置码置码 Y0Y1Y2Y3X0X1X2X3Y0Y1Y2Y3X0X1X2X3 为为 01110111 01110111 即 即 0X770X77 当 当 5 5 键按下时 行线键按下时 行线 X1X1 和列线和列线 Y1Y1 为低电平 其为低电平 其 余行列线为高电平 于是可得到余行列线为高电平 于是可得到 5 5 键的位置码键的位置码 Y0Y1Y2Y3X0X1X2X3Y0Y1Y2Y3X0X1X2X3 为为 10111011 10111011 即 即 0XBB0XBB 全部矩 全部矩 阵键盘的位置码如下 阵键盘的位置码如下 2 2 4 44 4 矩阵键盘在单片机的简单应用举例 一 矩阵键盘在单片机的简单应用举例 一 如下图所示 运行程序时 按下任一按键 数码管会显示它在矩阵键盘上的序号 0 F 并且蜂鸣 器发出声音 模拟按键的声音 此处采用线反转法识别按键 精品文档 3欢迎下载 C C 程序如下 程序如下 include include define define ucharuchar unsignedunsigned charchar define define uintuint unsignedunsigned intint sbitsbit buzzer P1 0 buzzer P1 0 ucharuchar codecode dis dis 0 9 0 9 A FA F 的共阳显示代码的共阳显示代码 0 xc0 0 xf9 0 xa4 0 xb0 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 0X88 0X83 0 x80 0 x90 0X88 0X83 0XC6 0XA1 0X86 0X8E 0XC6 0XA1 0X86 0X8E ucharuchar codecode tab tab 矩阵键盘按键位置码矩阵键盘按键位置码 0 x77 0 xb7 0 xd7 0 xe7 0 x77 0 xb7 0 xd7 0 xe7 0 x7b 0 xbb 0 xdb 0 xeb 0 x7b 0 xbb 0 xdb 0 xeb 0 x7d 0 xbd 0 xdd 0 xed 0 x7d 0 xbd 0 xdd 0 xed 精品文档 4欢迎下载 0 x7e 0 xbe 0 xde 0 xee0 x7e 0 xbe 0 xde 0 xee voidvoid delay uintdelay uint x x 延时函数延时函数 uchar uchar i i while x while x for i 0 i 120 i for i 0 i 120 i ucharuchar scan scan 矩阵键盘扫描函数 得到按键号 采用线反转法矩阵键盘扫描函数 得到按键号 采用线反转法 uchar uchar a b c i a b c i P3 0XF0 P3 0XF0 P3 P3 口输出口输出 1111000011110000 a P3 a P3 读取列码读取列码 delay 10 delay 10 防抖延时防抖延时 10ms10ms P3 0X0F P3 0X0F P3 P3 口输出口输出 0000111100001111 b P3 b P3 读取行码读取行码 c a b c a b 得到位置码得到位置码 for i 0 i 16 i for i 0 i 16 i if c tab i returnif c tab i return i i 查表得到按键序号并返回查表得到按键序号并返回 returnreturn 1 1 无按键 则返回无按键 则返回 1 1 voidvoid beep beep 蜂鸣器发出声音 模拟按键的声音蜂鸣器发出声音 模拟按键的声音 ucharuchar i i for i 0 i 100 i for i 0 i 100 i 精品文档 5欢迎下载 buzzer buzzer buzzer buzzer delay 1 delay 1 buzzer 0 buzzer 0 voidvoid main main uchar uchar key key buzzer 0 buzzer 0 关闭蜂鸣器关闭蜂鸣器 while 1 while 1 key scan key scan 得到按键号得到按键号 if key 1 if key 1 有按键则显示 并且蜂鸣器发出声音有按键则显示 并且蜂鸣器发出声音 P0 dis key P0 dis key beep beep delay 100 delay 100 ProteusProteus 仿真运行结果如下 仿真运行结果如下 精品文档 6欢迎下载 3 3 4 44 4 矩阵键盘在单片机的简单应用举例 二 矩阵键盘在单片机的简单应用举例 二 如下图所示 运行程序时 按下的按键键值越大 点亮的如下图所示 运行程序时 按下的按键键值越大 点亮的 LEDLED 灯越多 例如 按下灯越多 例如 按下 1 1 号键号键 时 点亮一只时 点亮一只 LEDLED 灯 按下灯 按下 2 2 号键时 点亮两只号键时 点亮两只 LEDLED 灯 按下灯 按下 1616 号键时 点亮全部号键时 点亮全部 LEDLED 灯 灯 这里仍然采用线反转法识别按键 这里仍然采用线反转法识别按键 C C 程序如下 程序如下 include include define define ucharuchar unsignedunsigned charchar define define uintuint unsignedunsigned intint 精品文档 7欢迎下载 ucharuchar codecode tab tab 矩阵键盘按键位置码矩阵键盘按键位置码 0 x77 0 xb7 0 xd7 0 xe7 0 x77 0 xb7 0 xd7 0 xe7 0 x7b 0 xbb 0 xdb 0 xeb 0 x7b 0 xbb 0 xdb 0 xeb 0 x7d 0 xbd 0 xdd 0 xed 0 x7d 0 xbd 0 xdd 0 xed 0 x7e 0 xbe 0 xde 0 xee0 x7e 0 xbe 0 xde 0 xee voidvoid delay uintdelay uint x x 延时函数延时函数 uchar uchar i i while x while x for i 0 i 120 i for i 0 i 120 i ucharuchar scan scan 矩阵键盘扫描函数 得到按键号 采用线反转法矩阵键盘扫描函数 得到按键号 采用线反转法 uchar uchar a b c i a b c i P1 0XF0 P1 0XF0 a P1 a P1 delay 10 delay 10 P1 0X0F P1 0X0F b P1 b P1 c a b c a b for i 0 i 16 i for i 0 i 16 i if c tab i returnif c tab i return i i 有按键 则返回按键号有按键 则返回按键号 returnreturn 1 1 无按键 则返回无按键 则返回 1 1 voidvoid main main 精品文档 8欢迎下载 uchar uchar key i led3 led2 key i led3 led2 while 1 while 1 key scan key scan if key 1 if key 1 led3 0 xff led3 0 xff led2 0 xff led2 0 xff for i 0 i key i for i 0 i key i 这里假设这里假设 key 3key 3 因为 因为 keykey 是从是从 0 0 开始算起 所以是开始算起 所以是 4 4 号键号键 应该应该 if i 8 if i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论