矩陣按鍵貌似是學(xué)51單片機(jī)里面必備的一課,現(xiàn)在基本所有的51開發(fā)板都帶這部分電路。因為它用8個IO口實現(xiàn)了16個按鍵的掃描檢測,實現(xiàn)了IO口更充分的利用。 掃描矩陣按鍵的程序說簡單也簡單,說復(fù)雜也復(fù)雜。說它簡單,是因為現(xiàn)在網(wǎng)絡(luò)太發(fā)達(dá)了,隨便搜索一下,都能找到可以直接用的源碼。說它復(fù)雜,是因為如果不借助網(wǎng)絡(luò),全憑自己去摸索,確實要花一部分時間。 我當(dāng)時是性子比較倔,只在網(wǎng)上看了矩陣按鍵的原理,沒有看參考代碼,完全憑借自己的理解,寫了一段矩陣按鍵的掃描程序,花了三天時間才調(diào)試通。那三天,真的是折騰的死去活來,但是當(dāng)程序調(diào)好的時候,真的感覺自己還是很拉風(fēng)的。 這里,不是讓大家學(xué)我那樣去閉門造車,因為太費時間了。看過一個高手說的一段話:寄存器不用死記硬背,我做了那么久單片機(jī)項目的開發(fā),連一個寄存器都記不住。需要配置寄存器的時候,直接在網(wǎng)上或者書本上參考別人現(xiàn)成的配置程序是上策,查找芯片數(shù)據(jù)手冊是中策,死記硬背寄存器是最最下策。 直接參考別人現(xiàn)成的配置程序是上策,但是一定要理解,否則會出現(xiàn)根基不穩(wěn)、知其然不知其所以然的情況! 繼續(xù)說矩陣鍵盤,上電路: 注意,前面廢話了很多,現(xiàn)在開始說原理: 程序掃描時,給P3口賦值就0Xfe。然后讀取高四位的電平,因為此時無按鍵觸發(fā),所以高四位狀態(tài)是1111 (二進(jìn)制數(shù))。 假設(shè)此時S1被按下,高四位會變成什么?1110(二進(jìn)制數(shù)),S1對應(yīng)的編碼就是:0B11101110. 假設(shè)是S3被按下,高四位會變成什么?1011(二進(jìn)制數(shù)),S3對應(yīng)的編碼就是:0B10111110 因為S1被按下,所以低四位的狀態(tài)會變成1110(二進(jìn)制數(shù))。 將兩次得到的P3口狀態(tài)進(jìn)行邏輯或運算,就能得到按鍵S1對應(yīng)的編碼:0B1110 1110.每個按鍵都會有一個編碼,我們只需要對他們的編碼進(jìn)行比對,就知道按下了哪個按鍵。 注意:編碼的確認(rèn)是在矩陣電路確定后,就已經(jīng)隨著電路固定了。 因為程序比較多,我就不在這里貼了,這次是矩陣按鍵控制數(shù)碼管顯示,從0~F。程序里會加注釋。 下載地址:
44矩陣.zip
(57.68 KB, 下載次數(shù): 209)
2015-3-24 22:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
44KEY.zip
(32.81 KB, 下載次數(shù): 149)
2015-3-24 22:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|