欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機3個IO做9個按鍵程序
[打印本頁]
作者:
daming
時間:
2014-12-30 00:49
標題:
單片機3個IO做9個按鍵程序
#include<reg51.h>
//P0.0-P0.2
unsigned char leddata[]={
0xC0, //"0"
0xF9, //"1"
0xA4, //"2"
0xB0, //"3"
0x99, //"4"
0x92, //"5"
0x82, //"6"
0xF8, //"7"
0x80, //"8"
0x90, //"9"
0x88, //"A"
0x83, //"B"
0xC6, //"C"
0xA1, //"D"
0x86, //"E"
0x8E, //"F"
0x89, //"H"
0xC7, //"L"
0xC8, //"n"
0xC1, //"u"
0x8C, //"P"
0xA3, //"o"
0xBF, //"-"
0xFF, //熄滅
0xFF //自定義
};
unsigned char key;
void delay(unsigned char x)
{
unsigned char i;
while(x--)
for(i=0;i<115;i++);
}
void keyscan()
{
//------先掃描直接接地的3個按鍵-----//
P0|=0X07; //先將IO拉高
if(P0&0X01==0){
delay(15);
key=7;
return;
}
else if(P0&0x02==0){
delay(15);
key=8;
return;
}
else if(P0&0x04==0){
delay(15);
key=9;
return;
}
//------接著對逐一對IO口進行掃鍵-----//
P0|=0X07; //先將IO拉高,很重要
P0&=0XFE; //P0.0置0
if((P0&0X02)==0){
delay(15);
if((P0&0X02)==0){
P0|=0X07; //對地的按鍵優先級高,這里是為了防止誤判
if((P0&0X07)==0X07)
key=1;
else
key=8;
return;
}
}
else if((P0&0X04)==0){
delay(15);
if((P0&0X04)==0){
P0|=0X07;
if((P0&0X07)==0X07)
key=2;
else
key=9;
return;
}
}
P0|=0X07;//先將IO拉高,很重要
P0&=0XFD;
if((P0&0X01)==0){
delay(15);
if((P0&0X01)==0){
P0|=0X07;
if((P0&0X07)==0X07)
key=3;
else
key=7;
return;
}
}
else if((P0&0X04)==0){
delay(15);
if((P0&0X04)==0){
P0|=0X07;
if((P0&0X07)==0X07)
key=4;
else
key=9;
return;
}
}
P0|=0X07; //先將IO拉高,很重要
P0&=0XFB;
if((P0&0X01)==0){
delay(15);
if((P0&0X01)==0){
P0|=0X07;
if((P0&0X07)==0X07)
key=5;
else
key=7;
return;
}
}
else if((P0&0X02)==0){
delay(15);
if((P0&0X02)==0){
P0|=0X07;
if((P0&0X07)==0X07)
key=6;
else
key=8;
return;
}
}
}
void main()
{
while(1){
keyscan();
P3=leddata[key];
}
}
復制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1