第一節硬件解讀
擴展模塊和ADC模塊是一模一樣的,是插在主板上面的,主板的擴展口在ADC章節講解了,我們完全可以回顧一下:
主板上擴展板引腳的關系:
擴展板序號 | 主板引腳 |
1 | 5V |
2 | PB6 |
3 | GND |
4 | PB7 |
5 | PB1 |
6 | GND |
7 | PB0 |
8 | PA8 |
9 | VDD_NODE |
10 | PB4 |
我們來看看矩陣鍵盤的引腳的定義:
所以我們可以得到引腳關系如下:
擴展板序號 | 矩陣鍵盤模塊引腳 |
2 | ROW1 |
3 | GND |
4 | ROW2 |
5 | COLUMN1 |
6 | GND |
7 | COLUMN2 |
8 | COLUMN3 |
我們綜合一下:
擴展板序號 | 主板引腳 | 矩陣模塊引腳 |
1 | 5V | |
2 | PB6 | ROW1 |
3 | GND | GND |
4 | PB7 | ROW2 |
5 | PB1 | COLUMN1 |
6 | GND | GND |
7 | PB0 | COLUMN2 |
8 | PA8 | COLUMN3 |
9 | VDD_NODE | |
10 | PB4 |
說完了引腳的關系,來說說矩陣鍵盤的原理,以藍橋杯物聯網的矩陣鍵盤模塊為例,先給ROW1和ROW2一個電平,注意:ROW1或者ROW2一定是只允許其中一個引腳在某一時刻為低電平,除該引腳外,其他引腳必定為高電平,因為我們是通過低電平來判斷按鍵被按下的。然后單片機不斷讀取COLUMN1,COLUMN2和COLUMN3的引腳。如果在ROW1為低電平,ROW2為高電平的情況下,讀取COLUMN2為低電平,則代表B2被按下。
注意:在CubeMX配置和MDK代碼中,我們是先給COLUMN1,COLUMN2和COLUMN3一個電平,然后讀取ROW1和ROW2的電平。
第二節 CubeMX配置
第一步:配置PA8【注意:PA8和OLED的引腳重復】,PB0,PB1為輸出模式,初始化為低電平,并配置用戶標簽,如下圖:
第二步:配置PB6(ROW_1)和PB7(ROW_2)為輸入模式,上拉,并配置用戶標簽,如下圖:
注意:主板上使用了矩陣鍵盤模塊,將在CubeMX中取消ADC模塊的配置,在MDK代碼中也要刪除,否則會報錯;另外,PA8是矩陣鍵盤的引腳,同樣也是OLED的引腳,所以,矩陣鍵盤和OLED不會同時在一個項目中,除非矩陣鍵盤摒棄PA8,讓PA8為OLED引腳。
第三節 MDK代碼
第一步:以下是矩陣鍵盤的讀按鍵函數,如下圖:
第三步:讀取按鍵鍵值,如下圖:
第四節 實驗現象
注意:
2,請選擇A開發板。
現象:
1,繼電器K1和K2吸合。
2,LED燈LD5亮。
3,按下矩陣鍵盤,串口(波特率9600,HEX模式)發送鍵值。
-
模塊
+關注
關注
7文章
2695瀏覽量
47432 -
adc
+關注
關注
98文章
6495瀏覽量
544466 -
矩陣
+關注
關注
0文章
423瀏覽量
34528
發布評論請先 登錄
相關推薦
評論