基于51单片机的数字电压表(ADC0809)
资料包括有原理图、0809芯片使用资料、89C52单片机、毕业设计开题报告、参考论文、原理图等。
具体组成如下图所示:
该图为Proteus仿真图,采集的电压由滑动变阻器模拟,其原理就是利用ADC0908AD转换芯片对采集的模拟量进行转换为数字量,再通过数码管显示出来
下面是该系统实现的功能的具体演示过程和介绍:
测量0-5V的直流电压,并通过数码管显示,显示小数点后两位
实现过程为:
通过ADC0809采集模拟电压信号,将信号传入89C52单片机处理后送到数码管显示。其中0-5V的电压对应模拟量为0-255.
仿真图如下:
仿真电压表显示是2.80V,数码管对应显示2.80V
实物制作图:
图中黑色数据线为电源线
黑红双线为所要测量电源的正负极,将正负极搭接在所要测量的电压源两端即可测量
下图是实物上电初始状态:显示0.00V
下面是测量一节干电池的效果图:显示1.52V
下图是测量两节干电池的实物图:显示3.07V
下面是部分代码:
//程序头函数
#include <reg52.h>
//宏定义
#define uint unsigned int
#define uchar unsigned char
//P1口读取0809的数据
#define Data_ADC0809 P1
sbit buzz=P3^7;//蜂鸣器接口
uint dianya=300;//超过3v报警
//ADC0809相应的引脚
sbit ST=P3^2;
sbit EOC=P3^3;
sbit OE=P3^1;
sbit DIAN = P0^5; //小数点
//定义全局变量
unsigned char dis[3]; //显示数值
unsigned int sum=0;
unsigned int temp=0;
unsigned int dat=0;
//共阴LED段码表
unsigned char code tab[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0x5e/*字母U*/}; //gc.debfa
//函数功能:AD转换子程序
//ADC0809读取信息
uchar ADC0809()
{
uchar temp_=0x00;
//初始化高阻太
OE=0;
//转化初始化
ST=0;
//开始转换
ST=1;
ST=0;
//外部中断等待AD转换结束
while(EOC==0)
//读取转换的AD值
OE=1;
temp_=Data_ADC0809;
OE=0;
return temp_;
}
//延时子程序
void delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<121;j++);
}
//数码管显示子程序
void display(void)
{
P0=~tab[dis[0]];
P2=0xfe; //11111110 W1
DIAN=0;
delay(1);
P2=0xff;
P0=~tab[dis[1]];
P2=0xfb; //11111011 W2
delay(1);
P2=0xff;
P0=~tab[dis[2]];
P2=0xef; //11101111 W3
delay(1);
P2=0xff;
+
P0=~tab[10];
P2=0xbf; // 10111111 W4
delay(1);
P2=0xff;
}
//主程序
void main(void)
{
unsigned char p=0;
buzz=0;//蜂鸣器初始化关闭
while(1) //主循环
{
for(p=0;p<20;p++) //采集20次电压取平均值
{
sum=sum+ADC0809();
display();
}
dat=sum/20;
convdata(dat); //数据转换
sum=0;//进行一次数据转换完成后需要清零
display(); //显示数值
}
}
下面是百度网盘资料下载链接文章来源:https://www.toymoban.com/news/detail-476669.html
http://链接:https://pan.baidu.com/s/1-9aYlZi2DVN10cGmrywHNA?pwd=6y7y 提取码:6y7y文章来源地址https://www.toymoban.com/news/detail-476669.html
到了这里,关于基于单片机的数字电压表设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!