找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14555|回复: 19
打印 上一主题 下一主题
收起左侧

学51单片机-搞定矩阵键盘

  [复制链接]
跳转到指定楼层
楼主
ID:74835 发表于 2015-3-24 22:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      
      矩阵按键貌似是学51单片机里面必备的一课,现在基本所有的51开发板都带这部分电路。因为它用8个IO口实现了16个按键的扫描检测,实现了IO口更充分的利用。
      扫描矩阵按键的程序说简单也简单,说复杂也复杂。说它简单,是因为现在网络太发达了,随便搜索一下,都能找到可以直接用的源码。说它复杂,是因为如果不借助网络,全凭自己去摸索,确实要花一部分时间。
      我当时是性子比较倔,只在网上看了矩阵按键的原理,没有看参考代码,完全凭借自己的理解,写了一段矩阵按键的扫描程序,花了三天时间才调试通。那三天,真的是折腾的死去活来,但是当程序调好的时候,真的感觉自己还是很拉风的。
      这里,不是让大家学我那样去闭门造车,因为太费时间了。看过一个高手说的一段话:寄存器不用死记硬背,我做了那么久单片机项目的开发,连一个寄存器都记不住。需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄存器是最最下策。
      直接参考别人现成的配置程序是上策,但是一定要理解,否则会出现根基不稳、知其然不知其所以然的情况!
      继续说矩阵键盘,上电路:
      注意,前面废话了很多,现在开始说原理:
程序扫描时,给P3口赋值就0Xfe。然后读取高四位的电平,因为此时无按键触发,所以高四位状态是1111 (二进制数)。
      假设此时S1被按下,高四位会变成什么?1110(二进制数),S1对应的编码就是:0B11101110.
      假设是S3被按下,高四位会变成什么?1011(二进制数),S3对应的编码就是:0B10111110
因为S1被按下,所以低四位的状态会变成1110(二进制数)。
将两次得到的P3口状态进行逻辑或运算,就能得到按键S1对应的编码:0B1110 1110.每个按键都会有一个编码,我们只需要对他们的编码进行比对,就知道按下了哪个按键。
注意:编码的确认是在矩阵电路确定后,就已经随着电路固定了。
因为程序比较多,我就不在这里贴了,这次是矩阵按键控制数码管显示,从0~F。程序里会加注释。
下载地址: 44矩阵.zip (57.68 KB, 下载次数: 208) 44KEY.zip (32.81 KB, 下载次数: 148)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:164248 发表于 2017-2-11 15:21 | 只看该作者
嗯,讲的不错
回复

使用道具 举报

板凳
ID:164248 发表于 2017-2-11 15:22 | 只看该作者
讲的真的挺好
回复

使用道具 举报

地板
ID:149552 发表于 2017-3-15 23:29 | 只看该作者
不错不错
回复

使用道具 举报

5#
ID:149552 发表于 2017-3-15 23:30 | 只看该作者
嘿嘿嘿
回复

使用道具 举报

6#
ID:193426 发表于 2017-4-25 15:11 | 只看该作者
讲得很好,清楚明白易懂
回复

使用道具 举报

7#
ID:195094 发表于 2017-5-11 09:32 | 只看该作者
新手来学习啦
回复

使用道具 举报

8#
ID:208733 发表于 2017-9-13 11:22 | 只看该作者
看了楼主的贴子总算搞清是什么原理了
回复

使用道具 举报

9#
ID:239569 发表于 2017-10-27 20:51 | 只看该作者
谢谢分享了
回复

使用道具 举报

10#
ID:264744 发表于 2017-12-22 11:18 | 只看该作者
学习了
回复

使用道具 举报

11#
ID:276459 发表于 2018-1-16 11:59 | 只看该作者
说的很在理啊
回复

使用道具 举报

12#
ID:14630 发表于 2018-5-8 00:04 | 只看该作者
谢谢分享,太感谢了
回复

使用道具 举报

13#
ID:420853 发表于 2018-11-5 08:32 | 只看该作者
讲得很好
回复

使用道具 举报

14#
ID:430234 发表于 2018-12-2 21:18 | 只看该作者
非常感谢
回复

使用道具 举报

15#
ID:430234 发表于 2018-12-3 15:30 | 只看该作者
不知道能不能将独立键盘与矩阵键盘联合在一起?其实分开就好了吧……
回复

使用道具 举报

16#
ID:430234 发表于 2018-12-7 07:46 | 只看该作者
这的非常感谢您的解答!
回复

使用道具 举报

17#
ID:466667 发表于 2019-1-19 19:02 | 只看该作者
讲的真的挺好
回复

使用道具 举报

18#
ID:558624 发表于 2019-7-27 14:48 | 只看该作者
谢谢分享
回复

使用道具 举报

19#
ID:718275 发表于 2020-5-13 14:49 来自手机 | 只看该作者
还是厉害
回复

使用道具 举报

20#
ID:985401 发表于 2021-12-30 21:53 | 只看该作者

讲的真的挺好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表