利用AT89C52和ADC0808制作三位数字(两位小数点)电压表,并用数码管显示
代码如下
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit ST =P2^5;
sbit EOC=P2^6;
sbit OE=P2^7;
sbit L2=P2^1;
sbit L1=P2^2;
sbit L0=P2^3;
uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint res=0;
void delay(uint time)
{
uint j=0;
for(time=0;time<100;time++)
for(;j<125;j++);
}
void disp()
{
uint gw,sf,bf;
gw=res/51;
sf=(res*10/51)%10;
bf=(res*100/51)%10;
L0=0;
P0=led[bf];
delay();
L0=1;
L1=0;
P0=led[sf];
delay();
L1=1;
L2=0;
P0=led[gw]|0x80;
delay();
L2=1;
}
void main()
{
while(1)
{
ST=0;
ST=1;
ST=0;
while(EOC==0);
OE=1;
res=P1;
OE=0;
disp();
}
}