简易数字电压表课程设计 下载本文

简易数字电压表设计

}

该延时函数被主函数调用。

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 -