單片機(jī)C語言程序設(shè)計(jì):4X4矩陣鍵盤控制條形LED 顯示
/* 名稱:4X4 矩陣鍵盤控
制條形 LED 顯示
說明:運(yùn)行本例時(shí),按
下 的 按 鍵 值 越 大 點(diǎn) 亮 的
LED 越多。
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//矩陣鍵盤按鍵特征碼表
uchar code KeyCodeTable[]={0x11,0x12,0x14,0x18,0x21,
0x22,0x24,0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88};
//延時(shí)
void DelayMS(uint x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
}
//鍵盤掃描
uchar Keys_Scan()
{
uchar sCode,kCode,i,k;
//低 4 位置 0,放入 4 行
P1=0xf0;
//若高 4 位出現(xiàn) 0,則有鍵按下
if((P1&0xf0)!=0xf0)
{
DelayMS(2);
if((P1&0xf0)!=0xf0)
{
sCode=0xfe;
//行掃描碼初值
for(k=0;k<4;k++) //對 4 行分別進(jìn)行掃描
{
P1=sCode;
if((P1&0xf0)!=0xf0)
{
kCode=~P1;
for(i=0;i<16;i++) //查表得到按鍵序號并返回
if(kCode==KeyCodeTable[i])
} return(i);
else
sCode=_crol_(sCode,1);
}
}
}
return(-1);
}
//主程序
void main()
{
uchar i,P2_LED,P3_LED;
uchar KeyNo=-1; //按鍵序號,-1 表示無按鍵
while(1)
{
KeyNo=Keys_Scan(); //掃描鍵盤獲取按鍵序號 KeyNo
if(KeyNo!=-1)
{
P2_LED=0xff;
P3_LED=0xff;
for(i=0;i<=KeyNo;i++)鍵值越大,點(diǎn)亮的 LED 越多
{
if(i<8)
P3_LED>>=1;
else
P2_LED>>=1;
}
P3=P3_LED; //點(diǎn)亮條形 LED
P2=P2_LED;
}
}
}
擴(kuò)展閱讀:MSP430編程點(diǎn)滴
編輯:admin 最后修改時(shí)間:2018-05-19