?? 4x4key+led.c
字號:
///////////////////////////////////////////////////
//4X4鍵盤演示程序
//精英團隊提供
//位選信號 :由右到左為P20、P21、P22、P23、P24、P33
//LED數(shù)據(jù)線 :P0口
//數(shù)碼管數(shù)字碼:0 0xC0 1 0xF9 2 0xA4 3 0xB0 4 0x99 5 0x92 6 0x82 7 0xF8 8 0x80 9 0x90
//鍵盤數(shù)據(jù)線 :P1口
///////////////////////////////////////////////////
#include<reg52.h>
sbit wei1=P2^0;
sbit wei2=P2^1;
sbit wei3=P2^2;
sbit wei4=P2^3;
sbit wei5=P2^4;
sbit wei6=P3^3;
unsigned char keyvalue;//定義鍵值
///////////////////////////////////////////////////
void delay(unsigned long time)
{
while(time--);
}
//////////////////////////////////////////////////
void KEY4X4_scan(void)
{
keyvalue=0x00;//無按鍵時返回Ox00
P1=0xFE;//掃描第1行
delay(1);
if((P1&0xF0)!=0xF0)
keyvalue=(P1>>4)|0x10;//返回鍵值
P1=0xFD;//掃描第2行
delay(1);
if((P1&0xF0)!=0xF0)
keyvalue=(P1>>4)|0x20;//返回鍵值
P1=0xFB;//掃描第3行
delay(1);
if((P1&0xF0)!=0xF0)
keyvalue=(P1>>4)|0x30;//返回鍵值
P1=0xF7;//掃描第4行
delay(1);
if((P1&0xF0)!=0xF0)
keyvalue=(P1>>4)|0x40;//返回鍵值
}
//////////////////////////////////////////////////
void LEDdisplay(unsigned char numb,unsigned char wei)//顯示子函數(shù)
{
switch(numb)
{
case 0:P0=0xC0;break;
case 1:P0=0xF9;break;
case 2:P0=0xA4;break;
case 3:P0=0xB0;break;
case 4:P0=0x99;break;
case 5:P0=0x92;break;
case 6:P0=0x82;break;
case 7:P0=0xF8;break;
case 8:P0=0x80;break;
case 9:P0=0x90;break;
}
switch(wei)
{
case 1:wei1=1;wei2=0;wei3=0;wei4=0;wei5=0;wei6=0;break;
case 2:wei1=0;wei2=1;wei3=0;wei4=0;wei5=0;wei6=0;break;
case 3:wei1=0;wei2=0;wei3=1;wei4=0;wei5=0;wei6=0;break;
case 4:wei1=0;wei2=0;wei3=0;wei4=1;wei5=0;wei6=0;break;
case 5:wei1=0;wei2=0;wei3=0;wei4=0;wei5=1;wei6=0;break;
case 6:wei1=0;wei2=0;wei3=0;wei4=0;wei5=0;wei6=1;break;
}
}
//////////////////////////////////////////////////
void main(void)
{
unsigned char numb=0;
while(1)//動態(tài)顯示
{
KEY4X4_scan();
switch(keyvalue)
{
case 0x1E:numb=1;break;
case 0x1D:numb=2;break;
case 0x1B:numb=3;break;
case 0x17:numb=4;break;
case 0x2E:numb=5;break;
case 0x2D:numb=6;break;
case 0x2B:numb=7;break;
case 0x27:numb=8;break;
case 0x3E:numb=9;break;
case 0x3D:numb=10;break;
case 0x3B:numb=11;break;
case 0x37:numb=12;break;
case 0x4E:numb=13;break;
case 0x4D:numb=14;break;
case 0x4B:numb=15;break;
case 0x47:numb=16;break;
}
LEDdisplay(numb%10,1);delay(50);
LEDdisplay(numb/10,2);delay(50);
}
}
//////////////////////////////////////////////////
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -