标题:
89C51, ADC0808为A/D转换芯片 微型电压表
[打印本页]
作者:
happy112
时间:
2016-6-7 17:57
标题:
89C51, ADC0808为A/D转换芯片 微型电压表
0.png
(11.77 KB, 下载次数: 112)
下载附件
2016-6-7 17:53 上传
仿真图:
以89C51单片机为基础,ADC0808为A/D转换芯片, 量程为0.00-5.00V,适合测试蓄电池和干电池。
原代码:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code led[10]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uint volt;
sbit CLK=P3^3;
sbit START=P3^0;
sbit EOC=P3^1;
sbit OE=P3^2;
void delay(uint z)
{ uchar x,y;
for(x=z;x>0;x--)
for(y=250;y>0;y--);
}
void ADC()
{
START=0;
START=1;
START=0;
while(EOC==0);
OE=1;
volt=P1;
OE=0;
volt=volt*196;
}
void display()
{
P0=0XFF;
P2=0x01;
P0=led[volt/10000]&0x7F;
delay(2);
P0=0XFF;
P2=0x02;
P0=led[(volt/1000)%10];
delay(2);
P0=0XFF;
P2=0x04;
P0=led[(volt/100)%10];
delay(2);
P0=0XFF;
P2=0x08;
P0=led[(volt/10)%10];
delay(2);
}
void main()
{
EA=1;
TMOD=0x02;
TH0=0XF6;
TL0=0XF6;
ET0=1;
TR0=1;
while(1)
{
ADC();
display();
}
}
void timer() interrupt 1
{
CLK=~CLK;
}
复制代码
全部资料(压缩包)下载:
微型电压表.rar
(16.5 KB, 下载次数: 41)
2016-6-7 17:55 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
yzwzfyz
时间:
2016-6-7 18:18
这样做电压表很浪费,练习做单片机还可以。
作者:
shunde117
时间:
2016-6-7 19:46
多谢无私奉献的人!!!!!!!!!!!!!
作者:
fengzhongmima
时间:
2016-6-12 10:57
yzwzfyz 发表于 2016-6-7 18:18
这样做电压表很浪费,练习做单片机还可以。
如果要扩大量程到100 V 怎么修改
作者:
yzwzfyz
时间:
2016-6-12 19:10
由于IC的输入对电压有限制,所以:
1、可以加电阻分压.
2、要有办法通知到CPU,以区分是否输入被分压了,CPU在显示时,就可以决定:是否按比例扩大显示值。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1