矩陣鍵盤 數碼管

2021-09-08 11:21:00 字數 1510 閱讀 9195

在沒有數字顯示的開始,順序為矩陣鍵盤後,依次顯示的數碼管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 注意微控制器的行列對應的引腳 ...