欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機矩陣鍵盤程序
[打印本頁]
作者:
51黑bing
時間:
2016-3-23 00:23
標題:
51單片機矩陣鍵盤程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define KEY P1 //用P1口控制4*4個矩陣鍵盤
//------------------------------------------------
uchar code duanma[17]={ //碼表的定義
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
//------------------------------------------------
void delay(uchar x) //延時函數的定義
{
uchar y,z;
for(y=x;y>0;y--)
for(z=110;z>0;z--);
}
//------------------------------------------------
uchar kayscan() //按鍵檢測函數的定義
{
uchar keyvalue=0; //鍵值的定義,并且用于返回
uchar temp;
uchar and;
temp=0x0f;
KEY=0x0f;
if(KEY != 0x0f) //檢測按鍵是否被按下
{
delay(10); //延時10毫秒,以便消抖
if(KEY != 0x0f) //再次檢測按鍵是否被按下
{
and = KEY & temp; //行檢測
switch(and)
{
case(0x0e) : keyvalue=0 ; break; //第一行的按鍵被按下了
case(0x0d) : keyvalue=4 ; break; //第二行的按鍵被按下了
case(0x0b) : keyvalue=8 ; break; //第三行的按鍵被按下了
case(0x07) : keyvalue=12; break; //第四行的按鍵被按下了
}
temp=0xf0; //列檢測
KEY=0xf0;
and = KEY & temp;
switch(and)
{
case(0xe0) : keyvalue=keyvalue+0; break; //第一列的按鍵被按下了
case(0xd0) : keyvalue=keyvalue+1; break; //第二列的按鍵被按下了
case(0xb0) : keyvalue=keyvalue+2; break; //第三列的按鍵被按下了
case(0x70) : keyvalue=keyvalue+3; break; //第四列的按鍵被按下了
}
}
}
return(keyvalue);
}
//------------------------------------------------
void main() //主函數
{
P0=0; //初始化,讓所有led都滅
while(1)
{
P0=duanma[kayscan()]; //矩陣鍵盤的掃描,并且返回鍵值,賦值給P0
}
}
復制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1