?? 3x4矩陣鍵盤的掃描程序.c
字號:
/* 3x4矩陣鍵盤的掃描程序
按相應的按鍵,數碼管顯示相應的數字,星號鍵和井號鍵分別顯示為E和F
*********************************
Create by:左秀龍
support:
Tel:0755-82879296
email: cutedesign@tom.com
Date: 2005/06/23
*********************************
測試通過*/
#include
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99, //0~4
0x92,0x82,0xF8,0x80,0x90, //5~9
0x88,0x83,0xA7,0xA1,0x86,0x8E}; //A~F
void KeyScan();
void delay10ms(unsigned char time);
void Dispaly (unsigned char k);
unsigned char key,temp;
void main() //主程序
{
while(1)
{
KeyScan();
}
}
void KeyScan() //按鍵掃描子程序
{
P1=0xFF;
P1_3=0;
temp=P1;
temp&=0xF0; //檢查列線
if(temp !=0xF0) //去抖動
{
delay10ms(1);
temp=P1;
temp&=0xF0;
if(temp !=0xF0)
{
temp=P1;
temp&=0xF0;
switch(temp)
{
case 0x70:
key=1;break;
case 0xB0:
key=2;break;
case 0xD0:
key=3;break;
}
Dispaly(key);
}
}
P1=0xFF;
P1_2=0;
temp=P1;
temp&=0xF0;
if(temp !=0xF0)
{
delay10ms(1);
temp=P1;
temp&=0xF0;
if(temp !=0xF0)
{
temp=P1;
temp&=0xF0;
switch(temp)
{
case 0x70:
key=4;break;
case 0xB0:
key=5;break;
case 0xD0:
key=6;break;
}
Dispaly(key);
}
}
P1=0xFF;
P1_1=0;
temp=P1;
temp&=0xF0;
if(temp !=0xF0)
{
delay10ms(1);
temp=P1;
temp&=0xF0;
if(temp !=0xF0)
{
temp=P1;
temp&=0xF0;
switch(temp)
{
case 0x70:
key=7;break;
case 0xB0:
key=8;break;
case 0xD0:
key=9;break;
}
Dispaly(key);
}
}
P1=0xFF;
P1_0=0;
temp=P1;
temp&=0xF0;
if(temp !=0xF0)
{
delay10ms(1);
temp=P1;
temp&=0xF0;
if(temp !=0xF0)
{
temp=P1;
temp&=0xF0;
switch(temp)
{
case 0x70:
key=14;break;
case 0xB0:
key=0;break;
case 0xD0:
key=15;break;
}
Dispaly(key);
}
}
}
//延時程序
void delay10ms(unsigned char time)
{
unsigned char a,b,c;
for(a=0;a<time;a++)
for(b=0;b<10;b++)
for(c=0;c<120;c++);
}
//顯示程序
void Dispaly(unsigned char k)
{
P0=table[k];
P2_1=0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -