该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
typedef unsigned int uint32;
typedef unsigned char uint8;
sbit Dula = P2^6;
sbit Wela = P2^7;
uint8 code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00}; //数字排列
uint32 key=0,x=0;
void display(uint32 num) //数码管显示
{
void delay(uint32 x);
Wela = 1;
P0 = 0xc0;
Wela = 0;
delay(5);
Dula = 1;
P0 = table[num]; //显示数字
Dula = 0;
delay(5);
}
void delay(uint32 x) //延时函数
{
int a,b;
for(a=0;a
{
for(b=0;b<112;b++);
}
}
void main()
{
int num = 16;
int a;
while(1)
{
P3 = 0xf0; //P3.1输出低电平
key = P3;
key = key&0xf0;
while(key!=0xf0) //判断P3是否有输入,有就进循环
{
delay(5) ; //延时5毫秒
key = P3;
key = key&0xf0;
while(key!=0xf0) //再次判断P3是否有输入
{
key = P3;
key = key&0x0f;
switch(key)/*判断P3输入是第几排 0123
4567
89AB
CDEF */
{
case 0x0E:a = 0; break;
case 0x0D:a = 1;break;
case 0x0B:a = 2; break;
case 0x07:a = 3; break;
}
key = P3;
key = key&0xf0;
switch(key) //判断P3输入是第几位
{
case 0xe0 : num = 0+a*4;break;
case 0xd0 : num = 1+a*4;break;
case 0xb0 : num = 2+a*4;break;
case 0x70 : num = 3+a*4;break;
}
while (key!= 0xf0) //判断按键是否松开,松开走出循环
{
key = P3;
key = key&0xf0;
}
}
}
display(num);//显示数码管
}
}