51單片機學習之5-獨立按鍵和矩陣鍵盤
鍵盤的原理
鍵盤分編碼鍵盤(例如電腦鍵盤)和非編碼鍵盤(自己用程序去識別)。
非編碼鍵盤分:獨立式非編碼鍵盤(獨立按鍵)、行列式非編碼鍵盤(4*4陣列鍵盤)
獨立鍵盤的電路圖。
因為51單片機的IO口不是雙向口而是準雙向口,要讓IO口具備輸入功能,必須將IO口置1,置1之后當按鍵按下時IO口的電平會被拉低,即被置0。當檢測到IO口為0時即可判斷該按鍵已經(jīng)按下。按鍵按下時會有一個抖動的過程(彈片會抖動),由于單片機檢測IO口速度非常快,超過彈片抖動的頻率,所以當單片機檢測到IO口為0時需延時一小段時間再檢測IO是否為0,如果仍為0就確認該按鈕被按下。因為IO口里面有上拉電阻,所以當松開按鈕時,IO口又被拉高。
例程:
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitKey=P3^4;//按鍵
sbitLed=P1^0;//Led燈
voiddelay(uintz);
/********主函數(shù)********/
voidmain()
{
while(1)
{
if(!Key)
{
delay(10);//消抖操作
if(!Key)
Led=0;//按下時Led亮
else
Led=1;
}
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
第15集
4*4矩陣鍵盤
上圖中,1個按鍵占用一個IO口,如果有16個按鍵就占用了16個IO口。為了減少IO口的使用,就需要用矩陣的方式連線。如下圖
矩陣掃描原理
從圖可以看出P30、P31、P32、P33為行(低四位),P34、P35、P36、P37為列(高四位)。
假設(shè)我們按下的是S6按鈕。
評論