找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 886|回复: 12
收起左侧

单片机矩阵键盘这部分程序,请问是我理解的这样吗?

[复制链接]
ID:1061677 发表于 2024-6-1 18:04 | 显示全部楼层 |阅读模式
最近在看51单片机,矩阵键盘这部分我有点问题,想问问大家。
就是说,我给这个P2口写了0xf0,那这个值是不是写入了这个P2口的锁存器里?其相应的IO口会表现出1111 0000,应该是这样的吧?
然后按键输入会拉低IO口的电平,那这个switch(P2)应该是读外部引脚,而不是读P2寄存器的值,所以才会有switch(P2)吧?
请问是这样的吗?能解释一下这个过程吗?
回复

使用道具 举报

ID:1061677 发表于 2024-6-1 18:07 | 显示全部楼层
这个是我说的这部分程序

附件程序图,忘记传了

附件程序图,忘记传了
回复

使用道具 举报

ID:1109793 发表于 2024-6-2 12:42 | 显示全部楼层
只有这点就是每个IO接了一个开关,不是啥矩阵
回复

使用道具 举报

ID:619694 发表于 2024-6-2 20:30 | 显示全部楼层
矩阵键盘的原理是八个引脚有4个是输入,四个是输出。然后让这四个输出一次输出高电平,然后检测四个输入哪个是高电平,这样就可以对应出是按下的哪个按键。个人理解
回复

使用道具 举报

ID:1122373 发表于 2024-6-2 20:59 | 显示全部楼层
你这个只能判断行吧
回复

使用道具 举报

ID:1122373 发表于 2024-6-2 21:11 | 显示全部楼层
你这个相当于只判断行了。
以这个为例,它用的是行列式扫描法,先判断列,在判断行。
先判断第一列,令P13为0,其他引脚为1。当S1按下时,P17被P13拉为低电平,否则P17为高电平,以此类推判断S5、S9和S13。(延时的作用是为了消抖)
屏幕截图 2024-06-02 210122.png

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:1123420 发表于 2024-6-2 21:42 | 显示全部楼层
写没写入锁存器要看原理图是否有连接的有,你这种情况一般不可能将锁存器和按键放在同一个IO口,你可以去看看原理图的按键IO口在哪里
回复

使用道具 举报

ID:458247 发表于 2024-6-3 08:48 | 显示全部楼层
wswkaishi 发表于 2024-6-2 20:30
矩阵键盘的原理是八个引脚有4个是输入,四个是输出。然后让这四个输出一次输出高电平,然后检测四个输入哪 ...

也可以是6个输出2个输入、5个输出3个输入等等组合哦,矩阵很多样式的,也有2*2、2*3等等
回复

使用道具 举报

ID:1061677 发表于 2024-6-3 10:02 | 显示全部楼层
zzzyfzz 发表于 2024-6-2 21:42
写没写入锁存器要看原理图是否有连接的有,你这种情况一般不可能将锁存器和按键放在同一个IO口,你可以去看 ...

这个就是P2口,我觉得给P2口赋值0xf0的话相当于将这个值写在锁存器里,而swicth(P2)相当于读P2引脚的值。请问是这样吗?
Snipaste_2024-06-03_09-59-49.png
回复

使用道具 举报

ID:1061677 发表于 2024-6-3 10:05 | 显示全部楼层
wswkaishi 发表于 2024-6-2 20:30
矩阵键盘的原理是八个引脚有4个是输入,四个是输出。然后让这四个输出一次输出高电平,然后检测四个输入哪 ...

这样理解好像确实没啥问题,但是这个51它又不想stm32可以用程序设置IO口为输入模式还是输出模式。所以我想问的是给P2赋值0xf0是不是就是意味着把这个值写在了锁存器中,然后switch(P2)应该是读外部引脚的值。
回复

使用道具 举报

ID:1109793 发表于 2024-6-3 10:56 | 显示全部楼层
yzw846562238 发表于 2024-6-3 08:48
也可以是6个输出2个输入、5个输出3个输入等等组合哦,矩阵很多样式的,也有2*2、2*3等等

2*2有意义?四个IO,直接用4个按键接地可以不
回复

使用道具 举报

ID:624769 发表于 2024-6-3 12:49 | 显示全部楼层
你就这样理解, P2  寄存器 有两个,  一个 只读  一个只写。
当你读 P2 的时候,就获得  IO 当前的真实电平状态。
当你写 P2 的时候,就是让你 P2口  输出你期望的电平状态, 但是受限于IO驱动能力有限,IO口的实际电平会被外部电路影响有所改变, 所以 通过写P2 和 读P2 这个组合动作,可以用来 分析距阵键盘的按键情况。
回复

使用道具 举报

ID:1061677 发表于 2024-6-3 22:13 | 显示全部楼层
188610329 发表于 2024-6-3 12:49
你就这样理解, P2  寄存器 有两个,  一个 只读  一个只写。
当你读 P2 的时候,就获得  IO 当前的真实电 ...

OK,这样说感觉也对。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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