标题: 单片机矩阵键盘这部分程序,请问是我理解的这样吗? [打印本页]

作者: 百二秦关终属我    时间: 2024-6-1 18:04
标题: 单片机矩阵键盘这部分程序,请问是我理解的这样吗?
最近在看51单片机,矩阵键盘这部分我有点问题,想问问大家。
就是说,我给这个P2口写了0xf0,那这个值是不是写入了这个P2口的锁存器里?其相应的IO口会表现出1111 0000,应该是这样的吧?
然后按键输入会拉低IO口的电平,那这个switch(P2)应该是读外部引脚,而不是读P2寄存器的值,所以才会有switch(P2)吧?
请问是这样的吗?能解释一下这个过程吗?

作者: 百二秦关终属我    时间: 2024-6-1 18:07
这个是我说的这部分程序

下载.png (49.71 KB, 下载次数: 28)

附件程序图,忘记传了

附件程序图,忘记传了

作者: xiaobendan001    时间: 2024-6-2 12:42
只有这点就是每个IO接了一个开关,不是啥矩阵
作者: wswkaishi    时间: 2024-6-2 20:30
矩阵键盘的原理是八个引脚有4个是输入,四个是输出。然后让这四个输出一次输出高电平,然后检测四个输入哪个是高电平,这样就可以对应出是按下的哪个按键。个人理解
作者: qqqqqqqqhhh    时间: 2024-6-2 20:59
你这个只能判断行吧
作者: qqqqqqqqhhh    时间: 2024-6-2 21:11
你这个相当于只判断行了。
以这个为例,它用的是行列式扫描法,先判断列,在判断行。
先判断第一列,令P13为0,其他引脚为1。当S1按下时,P17被P13拉为低电平,否则P17为高电平,以此类推判断S5、S9和S13。(延时的作用是为了消抖)

屏幕截图 2024-06-02 210122.png (198.84 KB, 下载次数: 23)

屏幕截图 2024-06-02 210122.png

作者: zzzyfzz    时间: 2024-6-2 21:42
写没写入锁存器要看原理图是否有连接的有,你这种情况一般不可能将锁存器和按键放在同一个IO口,你可以去看看原理图的按键IO口在哪里
作者: yzw846562238    时间: 2024-6-3 08:48
wswkaishi 发表于 2024-6-2 20:30
矩阵键盘的原理是八个引脚有4个是输入,四个是输出。然后让这四个输出一次输出高电平,然后检测四个输入哪 ...

也可以是6个输出2个输入、5个输出3个输入等等组合哦,矩阵很多样式的,也有2*2、2*3等等
作者: 百二秦关终属我    时间: 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 (85.98 KB, 下载次数: 27)

Snipaste_2024-06-03_09-59-49.png

作者: 百二秦关终属我    时间: 2024-6-3 10:05
wswkaishi 发表于 2024-6-2 20:30
矩阵键盘的原理是八个引脚有4个是输入,四个是输出。然后让这四个输出一次输出高电平,然后检测四个输入哪 ...

这样理解好像确实没啥问题,但是这个51它又不想stm32可以用程序设置IO口为输入模式还是输出模式。所以我想问的是给P2赋值0xf0是不是就是意味着把这个值写在了锁存器中,然后switch(P2)应该是读外部引脚的值。
作者: xiaobendan001    时间: 2024-6-3 10:56
yzw846562238 发表于 2024-6-3 08:48
也可以是6个输出2个输入、5个输出3个输入等等组合哦,矩阵很多样式的,也有2*2、2*3等等

2*2有意义?四个IO,直接用4个按键接地可以不
作者: 188610329    时间: 2024-6-3 12:49
你就这样理解, P2  寄存器 有两个,  一个 只读  一个只写。
当你读 P2 的时候,就获得  IO 当前的真实电平状态。
当你写 P2 的时候,就是让你 P2口  输出你期望的电平状态, 但是受限于IO驱动能力有限,IO口的实际电平会被外部电路影响有所改变, 所以 通过写P2 和 读P2 这个组合动作,可以用来 分析距阵键盘的按键情况。
作者: 百二秦关终属我    时间: 2024-6-3 22:13
188610329 发表于 2024-6-3 12:49
你就这样理解, P2  寄存器 有两个,  一个 只读  一个只写。
当你读 P2 的时候,就获得  IO 当前的真实电 ...

OK,这样说感觉也对。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1