新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)系列連載8—獨(dú)立鍵盤與矩陣鍵盤

51單片機(jī)系列連載8—獨(dú)立鍵盤與矩陣鍵盤

作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
在前面我們講的都是向單片機(jī)中向外輸出數(shù)據(jù),今天我們開始介紹一下如何向單片機(jī)里面輸入數(shù)據(jù),也就是鍵盤。

本文引用地址:http://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)系就不做過多分析,具體看一下下面的編程:


上一頁 1 2 下一頁

評論


技術(shù)專區(qū)

關(guān)閉