📄 1.c
字号:
#include <reg52.h>
sbit F1=P1^0;
sbit F2=P1^1;
sbit M1=P1^2;
sbit M2=P1^3;
sbit BEEP=P1^4;
#define uchar unsigned char
#define uint unsigned int
void delay(uint z);
uchar num,temp;
uchar keyscan();
void display();
uchar m[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int a=0,b=0,c=0,d=0;
void main()
{
P1=0xf0;
// P0=0xc0;
TMOD = 0x01; //使用定时器 0 的 16 位工作模式
TR0 = 0;
ET0 = 1;
EA = 1;
while(1)
{
display();
while(keyscan())
{
a=keyscan();
}
display();
while(keyscan())
{
b=keyscan();
}
display();
while(keyscan())
{
c=keyscan();
}
display();
while(keyscan())
{
d=keyscan();
}
display();
/* if(keyscan()==16)
{
break;
} */
while(keyscan()!=13);
TR0=1;
delay(400);
display();
}
}
void display()
{
while(!keyscan())
{
if(a==10)
{
a=0;
}
if(b==10)
{
b=0;
}
if(c==10)
{
c=0;
}
if(d==10)
{
d=0;
}
F1=0;
P0=m[a];
delay(5);
F1=1;
F2=0;
P0=m[b];
delay(5);
F2=1;
M1=0;
P0=m[c];
delay(5);
M1=1;
M2=0;
P0=m[d];
delay(5);
M2=1;
}
}
uchar keyscan()
{
num=0;
P2=0xef;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay(5);
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0xee: num=1;break;
case 0xed: num=2;break;
case 0xeb: num=3;break;
case 0xe7: num=4;break;
}
}
}
P2=0xdf;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay(5);
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0xde: num=5;break;
case 0xdd: num=6;break;
case 0xdb: num=7;break;
case 0xd7: num=8;break;
}
}
}
P2=0xbf;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay(5);
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0xbe: num=9;break;
case 0xbd: num=10;break;
case 0xbb: num=11;break;
case 0xb7: num=12;break;
}
}
}
P2=0x7f;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay(5);
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
temp=P2;
switch(temp)
{
case 0x7e: num=13;break;
case 0x7d: num=14;break;
case 0x7b: num=15;break;
case 0x77: num=16;break;
}
}
}
return num;
}
void delay(uint z)
{
uint x,y;
for (x=z;x>0;x--)
for(y=110;y>0;y--);
}
void x() interrupt 1
{
uint t;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==20)
{
t=0;
d--;
if(d+1==0)
{
d=9;
c--;
if(c+1==0)
{
c=5;
b--;
if(b+1==0)
{
b=9;
a--;
}
}
}
}
if(a==0&&b==0&&c==0&&d==0)
{
BEEP=0;
TR0=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -