|
发表于 2022-8-1 14:37:06
|
显示全部楼层
void change(unsigned char a) //数字对应段码的转换
{ if(a==0) P0=0xc0;
if(a==1) P0=0xf9;
if(a==2) P0=0xa4;
if(a==3) P0=0xb0;
if(a==4) P0=0x99;
if(a==5) P0=0x92;
if(a==6) P0=0x82;
if(a==7) P0=0xf8;
if(a==8) P0=0x80;
if(a==9) P0=0x90;
}
void display_val(unsigned int x) //显示数值
{
unsigned char i,j,k,l,q,w; //i,j,k,l分别储存转速的千位、百位、十位和个位
w=x/100000;
q=x/10000;
i=x/1000; //取千位
j=(x%1000)/100; //取百位
k=(x%100)/10; //取十位
l=x%10; //取个位
P1=32; //选3号数码管
change(w);
delay1ms();
P1=16; //选4号数码管
change(q);
delay1ms();
P1=8; //选3号数码管
change(i);
delay1ms();
P1=4; //选4号数码管
change(j);
delay1ms();
P1=2; //选5号数码管
change(k);
delay1ms();
P1=1; //选6号数码管
change(l);
delay1ms();
}
void main(void) //主函数
{
TMOD=0x51; //定时器T1工作于计数模式1,定时器T0工作于计时模式1;
TH0=0x10; //定时器T0的高8位设置初值,每66.67ms产生一次中断
TL0=0; //定时器T0的低8位设置初值
EA=1; //开总中断
ET0=1; //定时器T0中断允许
TR0=1; //启动定时器T0 |
|