標(biāo)題: 單片機(jī)矩陣鍵盤這部分程序,請(qǐng)問是我理解的這樣嗎? [打印本頁]

作者: 百二秦關(guān)終屬我    時(shí)間: 2024-6-1 18:04
標(biāo)題: 單片機(jī)矩陣鍵盤這部分程序,請(qǐng)問是我理解的這樣嗎?
最近在看51單片機(jī),矩陣鍵盤這部分我有點(diǎn)問題,想問問大家。
就是說,我給這個(gè)P2口寫了0xf0,那這個(gè)值是不是寫入了這個(gè)P2口的鎖存器里?其相應(yīng)的IO口會(huì)表現(xiàn)出1111 0000,應(yīng)該是這樣的吧?
然后按鍵輸入會(huì)拉低IO口的電平,那這個(gè)switch(P2)應(yīng)該是讀外部引腳,而不是讀P2寄存器的值,所以才會(huì)有switch(P2)吧?
請(qǐng)問是這樣的嗎?能解釋一下這個(gè)過程嗎?

作者: 百二秦關(guān)終屬我    時(shí)間: 2024-6-1 18:07
這個(gè)是我說的這部分程序

下載.png (49.71 KB, 下載次數(shù): 28)

附件程序圖,忘記傳了

附件程序圖,忘記傳了

作者: xiaobendan001    時(shí)間: 2024-6-2 12:42
只有這點(diǎn)就是每個(gè)IO接了一個(gè)開關(guān),不是啥矩陣
作者: wswkaishi    時(shí)間: 2024-6-2 20:30
矩陣鍵盤的原理是八個(gè)引腳有4個(gè)是輸入,四個(gè)是輸出。然后讓這四個(gè)輸出一次輸出高電平,然后檢測四個(gè)輸入哪個(gè)是高電平,這樣就可以對(duì)應(yīng)出是按下的哪個(gè)按鍵。個(gè)人理解
作者: qqqqqqqqhhh    時(shí)間: 2024-6-2 20:59
你這個(gè)只能判斷行吧
作者: qqqqqqqqhhh    時(shí)間: 2024-6-2 21:11
你這個(gè)相當(dāng)于只判斷行了。
以這個(gè)為例,它用的是行列式掃描法,先判斷列,在判斷行。
先判斷第一列,令P13為0,其他引腳為1。當(dāng)S1按下時(shí),P17被P13拉為低電平,否則P17為高電平,以此類推判斷S5、S9和S13。(延時(shí)的作用是為了消抖)

屏幕截圖 2024-06-02 210122.png (198.84 KB, 下載次數(shù): 23)

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

作者: zzzyfzz    時(shí)間: 2024-6-2 21:42
寫沒寫入鎖存器要看原理圖是否有連接的有,你這種情況一般不可能將鎖存器和按鍵放在同一個(gè)IO口,你可以去看看原理圖的按鍵IO口在哪里
作者: yzw846562238    時(shí)間: 2024-6-3 08:48
wswkaishi 發(fā)表于 2024-6-2 20:30
矩陣鍵盤的原理是八個(gè)引腳有4個(gè)是輸入,四個(gè)是輸出。然后讓這四個(gè)輸出一次輸出高電平,然后檢測四個(gè)輸入哪 ...

也可以是6個(gè)輸出2個(gè)輸入、5個(gè)輸出3個(gè)輸入等等組合哦,矩陣很多樣式的,也有2*2、2*3等等
作者: 百二秦關(guān)終屬我    時(shí)間: 2024-6-3 10:02
zzzyfzz 發(fā)表于 2024-6-2 21:42
寫沒寫入鎖存器要看原理圖是否有連接的有,你這種情況一般不可能將鎖存器和按鍵放在同一個(gè)IO口,你可以去看 ...

這個(gè)就是P2口,我覺得給P2口賦值0xf0的話相當(dāng)于將這個(gè)值寫在鎖存器里,而swicth(P2)相當(dāng)于讀P2引腳的值。請(qǐng)問是這樣嗎?

Snipaste_2024-06-03_09-59-49.png (85.98 KB, 下載次數(shù): 27)

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

作者: 百二秦關(guān)終屬我    時(shí)間: 2024-6-3 10:05
wswkaishi 發(fā)表于 2024-6-2 20:30
矩陣鍵盤的原理是八個(gè)引腳有4個(gè)是輸入,四個(gè)是輸出。然后讓這四個(gè)輸出一次輸出高電平,然后檢測四個(gè)輸入哪 ...

這樣理解好像確實(shí)沒啥問題,但是這個(gè)51它又不想stm32可以用程序設(shè)置IO口為輸入模式還是輸出模式。所以我想問的是給P2賦值0xf0是不是就是意味著把這個(gè)值寫在了鎖存器中,然后switch(P2)應(yīng)該是讀外部引腳的值。
作者: xiaobendan001    時(shí)間: 2024-6-3 10:56
yzw846562238 發(fā)表于 2024-6-3 08:48
也可以是6個(gè)輸出2個(gè)輸入、5個(gè)輸出3個(gè)輸入等等組合哦,矩陣很多樣式的,也有2*2、2*3等等

2*2有意義?四個(gè)IO,直接用4個(gè)按鍵接地可以不
作者: 188610329    時(shí)間: 2024-6-3 12:49
你就這樣理解, P2  寄存器 有兩個(gè),  一個(gè) 只讀  一個(gè)只寫。
當(dāng)你讀 P2 的時(shí)候,就獲得  IO 當(dāng)前的真實(shí)電平狀態(tài)。
當(dāng)你寫 P2 的時(shí)候,就是讓你 P2口  輸出你期望的電平狀態(tài), 但是受限于IO驅(qū)動(dòng)能力有限,IO口的實(shí)際電平會(huì)被外部電路影響有所改變, 所以 通過寫P2 和 讀P2 這個(gè)組合動(dòng)作,可以用來 分析距陣鍵盤的按鍵情況。
作者: 百二秦關(guān)終屬我    時(shí)間: 2024-6-3 22:13
188610329 發(fā)表于 2024-6-3 12:49
你就這樣理解, P2  寄存器 有兩個(gè),  一個(gè) 只讀  一個(gè)只寫。
當(dāng)你讀 P2 的時(shí)候,就獲得  IO 當(dāng)前的真實(shí)電 ...

OK,這樣說感覺也對(duì)。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1