📄 key.c
字号:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define FLASE 0
#define TRUE 1
sbit Pa=P1^0;
sbit Pb=P1^1;
sbit Pc=P1^2;
sbit Pd=P1^3;
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99, //0~4
0x92,0x82,0xF8,0x80,0x90, //5~9
0x7f,0x00}; //10.11
void KeyScan();
void Delay(uint MS);
void Dispaly(uchar k);
uchar key,temp;
void main() //主程序
{
while(1)
{
KeyScan();
}
}
void KeyScan() //按键扫描子程序
{
P1=0xff;
Pd=0;
temp=P1;
temp&=0xf0;
if(temp!=0xf0)
{
Delay(10);
temp=P1;
temp&=0xf0;
if(temp !=0xf0)
{
temp=P1;
temp&=0xf0;
switch(temp)
{
case 0x70:
key=11;break;
case 0xB0:
key=10;break;
case 0xD0:
key=9;break;
}
Dispaly(key);
}
}
P1=0xff;
Pc=0;
temp=P1;
temp&=0xf0;
if(temp !=0xf0)
{
Delay(10);
temp=P1;
temp&=0xf0;
if(temp !=0xf0)
{
temp=P1;
temp&=0xf0;
switch(temp)
{
case 0x70:
key=8;break;
case 0xB0:
key=7;break;
case 0xD0:
key=6;break;
}
Dispaly(key);
}
}
P1=0xff;
Pb=0;
temp=P1;
temp&=0xf0;
if(temp !=0xf0)
{
Delay(10);
temp=P1;
temp&=0xf0;
if(temp !=0xf0)
{
temp=P1;
temp&=0xf0;
switch(temp)
{
case 0x70:
key=5;break;
case 0xB0:
key=4;break;
case 0xD0:
key=3;break;
}
Dispaly(key);
}
}
P1=0xff;
Pa=0;
temp=P1;
temp&=0xf0;
if(temp !=0xf0)
{
Delay(10);
temp=P1;
temp&=0xf0;
if(temp !=0xf0)
{
temp=P1;
temp&=0xF0;
switch(temp)
{
case 0x70:
key=2;break;
case 0xB0:
key=1;break;
case 0xD0:
key=0;break;
}
Dispaly(key);
}
}
}
//延时程序
void Delay(uint MS)
{
unsigned char us,usn;
while(MS!=0)
{
usn = 2; //for 12M
while(usn!=0)
{
us=0xf6;
while (us!=0){us--;};
usn--;
}
MS--;
}
}
void Dispaly(uchar k) //显示程序
{
P2=table[k];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -