📄 plvji.c
字号:
#include <reg51.H>
unsigned char code dispcode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//字码段0~9 程序存储空间
unsigned char a=0,b=0,c=0,d=0,e=0,f=0,g=0;
unsigned long int pinlv=0,pin=0;
unsigned long int count=0;
void delay() //延时子程序
{
int j;
for(j=0;j<944;j++);
}
void display()
{ f=pinlv/100000; //十万位
e=pinlv/10000%10; //万位
a=pinlv/1000%10; //千位
b=pinlv/100%10; //百位
c=pinlv%100/10; //十位
d=pinlv%10; //个位
if(pinlv<1000)
{ pin=pinlv*10;
a=pin/1000%10; //千位
b=pin/100%10; //百位
c=pin%100/10; //十位
d=pin%10; //个位
SCON=0;//串口控制器
P1=0xfe&0x1f; //*后面是定义显示单位的
SBUF=dispcode[a];
while(TI==0);
TI=0;
delay();
P1=0xfd&0x1f;
SBUF=dispcode[b];
while(TI==0);
TI=0;
delay();
P1=0xfb&0x1f;
SBUF=dispcode[c]&0x7f;//十位有点,精确到0.1
while(TI==0);
TI=0;
delay();
P1=0xf7&0x1f;
SBUF=dispcode[d];
while(TI==0);
TI=0;
delay();
}
else
{ SCON=0;
P1=0xfe&0x2f; //*后面的是定义单位的显示
SBUF=dispcode[f];
while(TI==0);
TI=0;
delay();
P1=0xfd&0x2f;
SBUF=dispcode[e];
while(TI==0);
TI=0;
delay();
P1=0xfb&0x2f;
SBUF=dispcode[a]+0x7f;
while(TI==0);
TI=0;
delay();
P1=0xf7&0x2f;
SBUF=dispcode[b];
while(TI==0);
TI=0;
delay();
}
}
void main(void)
{ EA=0;//关主中断
TMOD=0x51;//方式寄存器,TO定时,T1计数功能
TH0=0x3c; //0x3c 定时50ms
TL0=0xb0; //0xb0
TH1=0;
TL1=0;
ET0=ET1=1;//T0允许中断
EA=1;//开主中断
TR1=1;//T1计数
TR0=1;//T0定时
while(1)
{
display();
}
}
void time0(void) interrupt 1 using 1 //定时器0溢出中断模式2可重装载
{
TR0=0;
count++;
TH0=0x3c;
TL0=0xb0;
if(count==20)
{ count=0;
TR1=0;
pinlv=TH1*256+TL1;
//pinlv=pinlv*8;
TH1=0;
TL1=0;
TR1=0;
}
TR0=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -