1. 51單片機如何把矩陣鍵盤控制數碼管和獨立鍵盤控制蜂鳴器共同實現
我們先了解矩陣鍵盤的工作原理,掌握編碼方法並能夠編寫出掃描程序,使用矩陣鍵盤控制數碼管輸出矩陣鍵值。
顯示內容
在顯示備橘祥模塊的八位 LED 數碼的個位顯示當前使用矩陣鍵盤所按下的值。
鍵陣鍵盤多用於鍵伍李數目較多的時候。這樣可以更多的節省IO口的佔用量,
對於矩陣鍵盤常用的掃描方法為線反轉查詢法。具體的思路是:首先使行作為輸入,使用單片機內部仿搏電阻上拉為高電平,列輸出低電平,讀行的狀態。如果行有一個IO口是低,說明有鍵按下,進行下一步,否則退出掃描。如果有鍵按下,置列為輸入,行輸出低電平,讀列的狀態。最後根據
行列的狀態查表就可以知道是那個按鍵按下。
2. 單片機中如何通過矩陣鍵盤對數碼管進行兩位數的置數,並且能顯示在數碼管上
首先定義一個數組,要把顯示的斷碼存入數組中,然後數碼管斷碼定義一個變數,當按下按鍵的時候,讓這個數碼管的變數發生變化,當然這需要數組 舉個例子:
uchar code tab[]={//這里寫數碼管的斷碼}
uint i;
{
P0=0xfe;//位碼
P2=tab[i];//斷碼
}
當按鍵按下的時候,讓i發生變化,比如 i++;
純手打,望採納
3. 單片機4*4矩陣鍵盤與數碼管連用問題(將某行某列的鍵盤顯示在數碼管上)
你用的是靜態顯示,按下某一銉後,只有列數信號被鎖存,因你的行和列數碼管共用P0口和同一個鎖存器,所以先顯示的行數被後面的列數代替,且中間還沒有任何延時,所以行數只是一閃而過
即使按住按鍵不丟,雖行數信號可以被反復顯示,但由於按銉識別時有10MS的延時,這期間行數信號是不顯示的,所以行數碼管看起來還只是微微閃亮
假設按鍵按住不放其工作過程是這樣的
顯示行數(可能只有1-2us)--顯示列數--延時10ms(列數仍顯示)--顯示行數....
解決辦法,在P0=table_hang[hang];
la=0;之後加延時,
並且在WHILE
(1)大循環未尾加display(hang,lie);
但也帶來另外一個問題,即使不按任何按鍵,也會顯示0行0列
可採用給行列賦初值的方法解決(給行和列賦一個不能顯示的初值,例如44,然後改table_hang[]={0x06,0x5b,0x4f,0x66,0xff}及table_lie[]={0x06,0x5b,0x4f,0x66,0xff};
另一種方法,將display(hang,lie);改成
for(i=0;i<200;i++)
{
display(hang,lie);
}
在顯示程序內部最好還有毫秒級延時,
將兩處P0=0xff全換成延時
4. 51單片機怎樣用鍵盤控制數碼管顯示
51單片機怎樣用鍵盤控制數碼管顯示的方法。
如下參考:
1.首先,編寫代碼並點亮數碼管。