介绍
ADC0808实时转换电压
以十进制显示在数码管上
Proteus仿真效果运行图
源程序
主函数
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
/*引脚定义*/
sbit ST =P2^5;
sbit EOC=P2^6;
sbit OE=P2^7;
sbit L3=P2^0;
sbit L2=P2^1;
sbit L1=P2^2;
sbit L0=P2^3;
uchar code mode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint V=0;
/*延时函数*/
void Delaytms(uint time)
{
uint j=0;
for(time=0;time<100;time++)
for(;j<125;j++);
}
/*数码管显示*/
void Display()
{
uint GeWei,ShiFenWei,BaiFenWei;
GeWei=V/51;
ShiFenWei=(V*10/51)%10;
BaiFenWei=(V*100/51)%10;
L3=0;
P0=mode[0];
Delaytms(5);
L3=1;
L0=0;
P0=mode[BaiFenWei];
Delaytms(5);
L0=1;
L1=0;
P0=mode[ShiFenWei];
Delaytms(5);
L1=1;
L2=0;
P0=mode[GeWei]|0x80;
Delaytms(5);
L2=1;
}
void main()
{
while(1)
{
ST=0;
ST=1;
ST=0;
while(EOC==0);
OE=1;
V=P1;
OE=0;
Display();
}
}