188610329 发表于 2024-6-3 12:49 OK,这样说感觉也对。 |
你就这样理解, P2 寄存器 有两个, 一个 只读 一个只写。 当你读 P2 的时候,就获得 IO 当前的真实电平状态。 当你写 P2 的时候,就是让你 P2口 输出你期望的电平状态, 但是受限于IO驱动能力有限,IO口的实际电平会被外部电路影响有所改变, 所以 通过写P2 和 读P2 这个组合动作,可以用来 分析距阵键盘的按键情况。 |
yzw846562238 发表于 2024-6-3 08:48 2*2有意义?四个IO,直接用4个按键接地可以不 |
wswkaishi 发表于 2024-6-2 20:30 这样理解好像确实没啥问题,但是这个51它又不想stm32可以用程序设置IO口为输入模式还是输出模式。所以我想问的是给P2赋值0xf0是不是就是意味着把这个值写在了锁存器中,然后switch(P2)应该是读外部引脚的值。 |
wswkaishi 发表于 2024-6-2 20:30 也可以是6个输出2个输入、5个输出3个输入等等组合哦,矩阵很多样式的,也有2*2、2*3等等 |
写没写入锁存器要看原理图是否有连接的有,你这种情况一般不可能将锁存器和按键放在同一个IO口,你可以去看看原理图的按键IO口在哪里 |
你这个相当于只判断行了。 以这个为例,它用的是行列式扫描法,先判断列,在判断行。 先判断第一列,令P13为0,其他引脚为1。当S1按下时,P17被P13拉为低电平,否则P17为高电平,以此类推判断S5、S9和S13。(延时的作用是为了消抖) |
屏幕截图 2024-06-02 210122.png (198.84 KB, 下载次数: 23)
你这个只能判断行吧 |
矩阵键盘的原理是八个引脚有4个是输入,四个是输出。然后让这四个输出一次输出高电平,然后检测四个输入哪个是高电平,这样就可以对应出是按下的哪个按键。个人理解 |
只有这点就是每个IO接了一个开关,不是啥矩阵 |