简易数字电压表设计
}
该延时函数被主函数调用。
2、中断程序:
void t1(void) interrupt 3 using 1 { }
3、显示函数:
void Display() { }
P1=dispbitcode[dispbuf[3]]; P2=0x01; Delay(5);
P1=0xff; //消隐
P1=dispbitcode[dispbuf[2]]&0X7F; //并开小数点 P2=0x02; Delay(5);
P1=0xff; //消隐 P1=dispbitcode[dispbuf[1]]; P2=0x04; Delay(5);
P1=0xff; //消隐 P1=dispbitcode[dispbuf[0]]; P2=0x08; Delay(5);
P1=0xff; //消隐
TH1=(65536-200)/256; TL1=(65536-200)%6; CLK=~CLK;
该函数通过用点燃LED数码管来显示电压值。
- 16 -
简易数字电压表设计
4主函数:
void main() {
unsigned char getdata; unsigned int temp;
TMOD=0x10;
TH1=(65536-200)/256; TL1=(65536-200)%6; EA=1; ET1=1; TR1=1; while(1) {
START=0; OE=0;
START=1; //上升沿清除1次AD转换结果 ADDA=0; ADDB=0; ADDC=0;
START=0; //下降沿用以启动内部控制逻辑,使A/D转换器开始工作 while(EOC==0); //等待转换完毕 OE=1; getdata=P0; OE=0;
temp=getdata*(1.0/255)*500; dispbuf[3]=temp/1000; dispbuf[2]=temp/100; dispbuf[1]=temp/10; dispbuf[0]=temp;
- 17 -
//转换时钟频率为765KHz
//发送地址000,选择通道0
//允许输出
//电压计算
简易数字电压表设计
}
}
Display();
该函数主要实现A/D转换的功能,START=0时,下降沿用以启动内部控制逻辑,使A/D转换器开始工作,当OE=1时,允许输出。
- 18 -