📄 数字电压报警表.c
字号:
#include "at89x51.h" //头文件
unsigned char tab[]={0xFC,0x60,0xDA,0xF2, 0x66,0xB6,0xBE,0xE0,
0xFE,0xF6}; //段代码表
unsigned char tabbit[]={0xfe,0xfd,0xfb,0xf7}; //位代码
unsigned char bitcode=0,digital[4]={0,0,0,0}; // 数码管显示组
unsigned char outcode=0,dispcount=0,tempcount=0;
unsigned int timecount=0,voltcode=0,
tempdate1=0,tempdate2=0,tempdate3=0;
float volt=0;
sbit START=P3^2;sbit EOC=P3^4;sbit OE=P3^3;
void delay()
{
unsigned char m,n;
for(m=0;m<200;m++)
for(n=0;n<200;n++);
}
void t0(void) interrupt 1 using 1
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
if(volt<=0.1){timecount++;if(timecount==12000){timecount=0;P1=0x00;}}
if(volt>0.1&&timecount<12000) {timecount=0;P1=tab[digital[bitcode]];}
P2=tabbit[3-bitcode];
bitcode++;
if(bitcode==4) {bitcode=0;}
}
//主程序
void main(void)
{
P3_7=0;
TMOD=0x01; //定时器0,方式1定时初值5ms
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
EA=1; //打开中断,打开定时计数器1,启动定时器1
ET0=1;
TR0=1;
while(1)
{
START=0; //通过指令周期给ADC0809一个启动高点平
START=1;
START=0;
while(EOC==0) //转换结束
{
OE=1; //允许数据输出
outcode=P0; //转换值赋给outcode
volt=outcode/255.0*5.0; //将最终处理数据赋给voit
voltcode=(int)(volt*1000);
if(!dispcount)
{
digital[3]=(voltcode/1000)&0xfe;
digital[2]=voltcode%1000/100;
digital[1]=voltcode%100/10;
digital[0]=voltcode%10;
}
}
if(P3_5==0) {delay();if(P3_5==0)delay();
{tempcount++;if(tempcount==4){tempcount=0;}}
switch(tempcount)
{
case 1:tempdate1=voltcode;break;
case 2:tempdate2=voltcode;break;
case 3:tempdate3=voltcode;break;
}
}
if(P3_6==0){delay();if(P3_6==0)delay();
{dispcount++;if(dispcount==4){dispcount=0;}}
switch(dispcount)
{
case 1:digital[3]=(tempdate1/1000)&0xfe;
digital[2]=tempdate1%1000/100;
digital[1]=tempdate1%100/10;
digital[0]=tempdate1%10;
break;
case 2:digital[3]=(tempdate2/1000)&0xfe;
digital[2]=tempdate2%1000/100;
digital[1]=tempdate2%100/10;
digital[0]=tempdate2%10;
break;
case 3: digital[3]=(tempdate3/1000)&0xfe;
digital[2]=tempdate3%1000/100;
digital[1]=tempdate3%100/10;
digital[0]=tempdate3%10;
break;
}
}
if(volt>=5.0){P3_7=1;delay();delay();delay();delay();delay();}
else {P3_7=0;}
}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -