導航:首頁 > 操作系統 > 單片機44矩陣鍵盤

單片機44矩陣鍵盤

發布時間:2022-10-04 06:03:52

單片機 4*4矩陣鍵盤

這個電路圖,只是你使用哪幾個口在程序中對應上就可以了

程序

//行列掃描程序,可以自己定義埠和掃描方式,這里做簡單介紹

#include<reg52.h>//包含頭文件

#defineucharunsignedchar

#defineuintunsignedint

unsignedcharconstdofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F

ucharkeyscan(void);

voiddelay(uinti);

voidmain()

{

ucharkey;

P2=0x00;//1數碼管亮按相應的按鍵,會顯示按鍵上的字元

while(1)

{

key=keyscan();//調用鍵盤掃描,

switch(key)

{

case0x7e:P0=dofly[0];break;//0按下相應的鍵顯示相對應的碼值

case0x7d:P0=dofly[1];break;//1

case0x7b:P0=dofly[2];break;//2

case0x77:P0=dofly[3];break;//3

case0xbe:P0=dofly[4];break;//4

case0xbd:P0=dofly[5];break;//5

case0xbb:P0=dofly[6];break;//6

case0xb7:P0=dofly[7];break;//7

case0xde:P0=dofly[8];break;//8

case0xdd:P0=dofly[9];break;//9

case0xdb:P0=dofly[10];break;//a

case0xd7:P0=dofly[11];break;//b

case0xee:P0=dofly[12];break;//c

case0xed:P0=dofly[13];break;//d

case0xeb:P0=dofly[14];break;//e

case0xe7:P0=dofly[15];break;//f

}

}

}

ucharkeyscan(void)//鍵盤掃描函數,使用行列反轉掃描法

{

ucharcord_h,cord_l;//行列值

P3=0x0f;//行線輸出全為0

cord_h=P3&0x0f;//讀入列線值

if(cord_h!=0x0f)//先檢測有無按鍵按下

{

delay(100);//去抖

if(cord_h!=0x0f)

{

cord_h=P3&0x0f;//讀入列線值

P3=cord_h|0xf0;//輸出當前列線值

cord_l=P3&0xf0;//讀入行線值

return(cord_h+cord_l);//鍵盤最後組合碼值

}

}return(0xff);//返回該值

}

voiddelay(uinti)//延時函數

{

while(i--);

}

不明白的在聯系我,也可以直接訪問我的Blog:hi..com/lyzhangxiang

Ⅱ 誰能給我講明白單片機的4x4矩陣鍵盤工作原理

給P1賦值0xf0,這時P1^4,P1^5,P1^6,P1^7為高電平,P1^0,P1^1,P1^2,P1^3為低電平。如果這時候有按鍵按下那麼P1^4,P1^5,P1^6,P1^7就有一個會變成低電平。因此P1的值就不等於0xf0,這是就可以判斷有按鍵按下。

4x4矩陣鍵盤的工作原理是在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。當按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,通過讀入輸入線的狀態就可得知是否有鍵被按下。

(2)單片機44矩陣鍵盤擴展閱讀:

在鍵盤中按鍵數量較多時,為了減少I/O口的佔用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。

這樣,一個埠(如P1口)就可以構成4*4=16個按鍵,比之直接將埠線用於鍵盤多出了一倍,而且線數越多,區別越明顯,比如再多加一條線就可以構成20鍵的鍵盤,而直接用埠線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數比較多時,採用矩陣法來做鍵盤是合理的。

Ⅲ 單片機4x4矩陣鍵盤

因為只要求P1^0,P1^1,P1^2,P1^3有按鍵按下,所以讓P1^7為低電平就夠了啊。你說的也可以的,就是控制其他三排矩陣了嘛。其實看出你明白了矩陣鍵盤的原理呢~

Ⅳ C51單片機4X4矩陣鍵盤檢測程序問題

可以參考:
http://hi..com/%d7%f6%b6%f8%c2%db%b5%c0/blog/item/ef086222268d4f4eac34de59.html
程序中,讀取4*4矩陣鍵盤的函數,可以得到0~f,和16。
當讀出為16的時候,即是按鍵放手了,可以執行對應的功能程序。

Ⅳ 單片機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×4矩陣鍵盤的鍵值怎麼求

單片機書上應該有講的哦,多查資料。
既然是4x4,即4行4列了,共需要8個I/O口,有8bit數據(如高四位為行4bit,低四位為列4bit)位:xxxx xxxx。還要結合你的程序來編碼鍵值,如果有鍵按下了,查詢所有按鍵的所連接的I/O口電平狀態,每個按鍵需要兩個I/O口,一端連接行(行4bit之一),一端連接列(列4bit之一);若此時按鍵的電平狀態為0010 0001,即十六進制數據0x21,按下的按鍵所對應的鍵值編碼即為0x21。當然為了使用方便,在確定了按下按鍵的編碼後,可對其賦值,我要將它賦值為數字鍵8,方便後續編程使用。例:

//獲取鍵值編碼,由於確定哪個按鍵按下
uchar keyscan(void)//鍵盤掃描函數,使用行列反轉掃描法
{
uchar cord_h,cord_l;//行列值
P3=0x0f; //行線輸出全為0
cord_h=P3&0x0f; //讀入列線值
if(cord_h!=0x0f) //先檢測有無按鍵按下
{
delay(100); //去抖
if(cord_h!=0x0f)
{
cord_h=P3&0x0f; //讀入列線值
P3=cord_h|0xf0; //輸出當前列線值
cord_l=P3&0xf0; //讀入行線值
return(cord_h+cord_l);//鍵盤最後組合碼值
}
}return(0xff); //返回該值
}

while(1)
{
key=keyscan();//調用鍵盤掃描,

//keyVal=0~15表示按鍵對應的功能
switch(key)
{
case 0x7e:keyVal=0;break;//0 按下相應的鍵顯示相對應的碼值
case 0x7d:keyVal=1;break;//1
case 0x7b:keyVal=2;break;//2
case 0x77:keyVal=3;break;//3
case 0xbe:keyVal=4;break;//4
case 0xbd:keyVal=5;break;//5
case 0xbb:keyVal=6;break;//6
case 0xb7:keyVal=7;break;//7
case 0xde:keyVal=8;break;//8
case 0xdd:keyVal=9;break;//9
case 0xdb:keyVal=10;break;//a
case 0xd7:keyVal=11;break;//b
case 0xee:keyVal=12;break;//c
case 0xed:keyVal=13;break;//d
case 0xeb:keyVal=14;break;//e
case 0xe7:keyVal=15;break;//f
}

Ⅶ 51單片機4×4矩陣鍵盤,下載程序後LED全亮怎麼回事

如果鍵盤燈亮時,按鍵無反應這種情況:
是介面插錯了,一盤鍵盤的PS2介面是紫色,滑鼠是綠色的,檢查你插對了嗎;
是斷針,PS2介面有6根針,中間是定位點,其中2根是電源,其他4根是數據,你看一下是丌是斷針了。

Ⅷ 4x4矩陣鍵盤的工作原理是什麼

4x4矩陣鍵盤的工作原理是在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。當按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,通過讀入輸入線的狀態就可得知是否有鍵被按下。

(8)單片機44矩陣鍵盤擴展閱讀:

作為單片機外部設備,在鍵盤中按鍵數量較多時,為了減少I/O口的佔用,通常將按鍵排列成矩陣形式。矩陣式結構的鍵盤比直接法要復雜一些,識別也要復雜一些,列線通過電阻接正電源,並將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。

矩陣式結構的鍵盤比之直接將埠線用於鍵盤多出了一倍,而且線數越多,區別越明顯,比如再多加一條線就可以構成20鍵的鍵盤,而直接用埠線則只能多出一鍵(9鍵)。

閱讀全文

與單片機44矩陣鍵盤相關的資料

熱點內容
軟通動力程序員節2021 瀏覽:845
安卓系統如何卸載安裝包 瀏覽:870
簡訊刪除助手文件夾 瀏覽:688
java辦公自動化 瀏覽:340
php中超鏈接 瀏覽:253
linux默認路由設置 瀏覽:36
linux如何掛載iso 瀏覽:432
vs程序換文件夾後不能編譯 瀏覽:557
安卓源碼編譯輸入腳本沒反應 瀏覽:47
phpmysql自增 瀏覽:167
把ppt保存為pdf 瀏覽:533
汽車密封件加密配件 瀏覽:887
黑馬程序員15天基礎班 瀏覽:560
java調整格式 瀏覽:521
香港雲伺服器租用價 瀏覽:78
linuxsublime3 瀏覽:560
imac混合硬碟命令 瀏覽:278
沈陽用什麼app租房車 瀏覽:857
00後高中生都用什麼app 瀏覽:239
戴爾塔式伺服器怎麼打開獨立顯卡 瀏覽:808