标题:
ADC0809数字电压表 带PROTEUS仿真和程序
[打印本页]
作者:
18692899115
时间:
2016-4-18 18:03
标题:
ADC0809数字电压表 带PROTEUS仿真和程序
用51单片机实现的ADC0809数字电压表的PROTEUS仿真图:
0.png
(30.74 KB, 下载次数: 145)
下载附件
2016-4-18 18:23 上传
本实例为AD转换,运用AD芯片将电压模拟量转换成数字量,然后显示在数码管上。
ADC0809数字电压表51单片机程序:
#include<reg52.h>
#include"common.h"
#include"delay.h"
uint8 smg_du[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit oe = P1^0; //输出使能
sbit eoc = P1^1; //结束转换
sbit st = P1^2; //开始信号
sbit clk = P1^3; //时钟信号
void smg_display(uint8 dat)
{
uint8 i;
dat = (uint16)dat * 50 / 255;
for(i=0;i<3;i++)
{
P0 = 0x00;
switch(i)
{
case 0:
P0 = smg_du[dat%10];
P2 = 0xf7;
break;
case 1:
P0 = smg_du[dat/10%10] + 0x80;
P2 = 0xfb;
break;
case 2:
P0 = smg_du[dat/100];
P2 = 0xfd;
break;
}
delay1ms(5);
}
}
void main()
{
TMOD = 0x02; //定时器中断方式2 自动重装8位定时器
TH0 = 0; //定时256us
TL0 = 0;
EA = 1;
ET0 = 1;
TR0 = 1;
P1 = 0x3f; //通道3
while(1)
{
st = 0;
st = 1;
st = 0; //开始转换标志
while(!eoc ); //等待转换完成
oe = 1;
smg_display(P3);
oe = 0;
}
}
void timer0() interrupt 1
{
clk = ~clk;
}
复制代码
1.png
(29.83 KB, 下载次数: 102)
下载附件
2016-4-18 18:24 上传
ADC0809数字电压表全部资料下载:
19 ADC0809模数转换与显示电压.rar
(48.42 KB, 下载次数: 168)
2016-4-18 18:03 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
冯xx
时间:
2020-6-11 10:06
厉害厉害0.0.
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1