在沒有數字顯示的開始,順序為矩陣鍵盤後,依次顯示的數碼管0~f,6同時數字控制靜態展示。
數字控制和矩陣式鍵盤
首先關閉全部的數碼管的段選不讓數碼管顯示不論什麼數字。然後位選中全部的數碼管,接下來僅僅須要選中全部的數碼管,以後的操作的僅僅須要送段選資料即可了,接著進入while()大迴圈不停的掃瞄鍵盤是否有被按下
#include
#define uchar unsigned char
#define uint unsigned int
sbit dula=p2^6;
sbit wela=p2^7;
uchar code table=;
void delayms(uint xms)
void display(uchar num)
void matrixkeyscan()
while(temp!=0xf0)
display(key);}}
p3=0xfd;
temp=p3;
temp=temp&0xf0;
if(temp!=0xf0)
while(temp!=0xf0)
display(key);}}
p3=0xfb;
temp=p3;
temp=temp&0xf0;
if(temp!=0xf0)
while(temp!=0xf0)
display(key);}}
p3=0xf7;
temp=p3;
temp=temp&0xf0;
if(temp!=0xf0)
while(temp!=0xf0)
display(key);}}
}void main()}
這裡有幾個
p3=0xfe;
temp=p3;
temp=temp&0xf0;
if(temp!=0xf0)
{delayms(10);
temp=p3;
temp=temp&0xf0;
if(temp!=0xf0)
{ .........
p3=0xfe 將第1 行線置低電平,其餘的行線所有為高電平
temp=p3 讀取p3口當前的狀態值賦值給暫時變數temp
temp=temp&0xf0 將temp與0xf0進行與運算 然後再將結果賦值給temp,主要是推斷temp的高4位是否有0。假設temp的高4位沒有0。那麼他與0xf0「與」運算後的結果仍然等於0xf0.temp的高4位資料實際上就是矩陣鍵盤的4個列線,從而我們可通過推斷temp與「0xf0運算後的結果是否為0xf0來推斷出第一行按鍵是否有按鍵被按下。
if(temp!=0xf0) 表示temp是上面p3口資料與0xf0「與」運算後的結果,假設結果temp不等於0xf0來推斷出有按鍵被按下。
另外p3口全部引腳
其餘的想復位引腳res\vpd
還有ea\vpp
ale\prog
這是全部的了,我的是at89s52(51系列)
矩陣鍵盤 數碼管動態顯示
我把矩陣鍵盤和數碼管動態顯示綜合起來寫了個程式。這個 的意思是在一開始8個數碼管什麼也不顯示,因為p0的初始值是0x00,當我們按下矩陣按鍵裡的按鍵時,8個數碼管動態顯示該按鍵的鍵值,直到按下了下乙個按鍵,8個數碼管顯示的內容才可能改變。include 目的是每按下乙個按鍵,8個數碼管就動態顯示對應...
STM32 矩陣鍵盤控制數碼管
在以往的32部落格中,見過了數碼管和矩陣鍵盤,今天就將他們結合起來,如何用矩陣鍵盤去控制數碼管。我們都知道數碼管可以顯示從0 9十位數字,也可以顯示從a f的字母,將數碼管和2 2矩陣鍵盤結合起來也就是使用四個按鍵分別控制加,減,置0和全部點亮。加減的功能不用多說也就是從0加到f,如果繼續增加的話又...
51 定時器掃瞄矩陣鍵盤 數碼管顯示
大二的時候學完51寫的乙個綜合程式。用定時器中斷掃瞄行,即行已知 再在主程式中判斷列 得到的行列值帶入顯示函式display 按下鍵顯示,鬆開取消顯示。涉及原理理解,邏輯比較混亂,可讀性低。includeunsigned char i,j,l,r,add 0,temp 注意微控制器的行列對應的引腳 ...