在前面我們講的都是向單片機(jī)中向外輸出數(shù)據(jù),今天我們開始介紹一下如何向單片機(jī)里面輸入數(shù)據(jù),也就是鍵盤。
本文引用地址:http://www.bjwjmy.cn/article/201611/322440.htm鍵盤有兩種,獨(dú)立式鍵盤與行列式矩陣鍵盤。
獨(dú)立式鍵盤是指直接用一根I/O口線構(gòu)成的單個(gè)按鍵電路,每個(gè)I/O口的按鍵不會(huì)影響另外一個(gè),具體電路圖如下:

接下來(lái)看一個(gè)程序,這個(gè)程序主要是按鍵二極管亮,同時(shí)按一下數(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);//這個(gè)語(yǔ)句加的好神奇
}
else
d1=1;
duan=1;
P0=table[num];
duan=0;
}
}
但是在仿真時(shí)就出現(xiàn)問(wèn)題了,C(15):errorC141:syntaxerrornear;對(duì)應(yīng)的是這句voiddelay(uintz),但直到現(xiàn)在我都不知道它到底哪里錯(cuò)了,真悲哀,先記下來(lái),以后有時(shí)間回過(guò)頭再看。
矩陣式鍵盤跟獨(dú)立式鍵盤相反,彼此之間是有聯(lián)系的,如下圖:

矩陣式鍵盤的原理也很簡(jiǎn)單,跟獨(dú)立按鍵的基本原理是一樣的,但是它是一行一行掃描的,由于時(shí)間關(guān)系就不做過(guò)多分析,具體看一下下面的編程:
評(píng)論