在前面我們講的都是向單片機(jī)中向外輸出數(shù)據(jù),今天我們開始介紹一下如何向單片機(jī)里面輸入數(shù)據(jù),也就是鍵盤。
本文引用地址:http://m.butianyuan.cn/article/201611/322440.htm鍵盤有兩種,獨(dú)立式鍵盤與行列式矩陣鍵盤。
獨(dú)立式鍵盤是指直接用一根I/O口線構(gòu)成的單個按鍵電路,每個I/O口的按鍵不會影響另外一個,具體電路圖如下:
接下來看一個程序,這個程序主要是按鍵二極管亮,同時按一下數(shù)碼管顯示一下,往下加,加到9,具體程序如下:
#include
#defineuintunsignedint;
#defineucharunsignedchar;
sbitd1=P1^2;
sbitduan=P2^2;
sbitwei=P2^3;
sbitkey1=P3^3;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
ucharnum,t1,y,z;
voiddelay(uintz)
{
uintt1,y;
for(t1=z;t1>0;t1--)
for(y=110;y>0;y--);
}
voidmain()
{wei=1;
P0=0xfe;
wei=0;
key1=1;
while(1)
{
if(key1==0)
{
delay(10);
if(key1==0)
{
d1=0;
num ;
if(num==10)
num=0;
}
while(key1==0);//這個語句加的好神奇
}
else
d1=1;
duan=1;
P0=table[num];
duan=0;
}
}
但是在仿真時就出現(xiàn)問題了,C(15):errorC141:syntaxerrornear;對應(yīng)的是這句voiddelay(uintz),但直到現(xiàn)在我都不知道它到底哪里錯了,真悲哀,先記下來,以后有時間回過頭再看。
矩陣式鍵盤跟獨(dú)立式鍵盤相反,彼此之間是有聯(lián)系的,如下圖:
矩陣式鍵盤的原理也很簡單,跟獨(dú)立按鍵的基本原理是一樣的,但是它是一行一行掃描的,由于時間關(guān)系就不做過多分析,具體看一下下面的編程:
評論