基于51单片机的数字电压表(PCF8591)(Proteus仿真+程序)

编号:32

基于51单片机的数字电压表(PCF8591)

功能描述:

        本设计由51单片机最小系统+PCF8591模块+四路模拟量输入模块+一路DA输出+液晶1602显示模块
1、主控制器是89C82单片机。
2、PCF8591模数转换器进行A/D转换,读取四路电压数据,电压检测范围0-5V 精度(8位);实现一路数模转换(D/A)输出电压范围0-5V(8位)。
3、利用四个个电位器模拟 模拟量输入,D/A输出电压。
3、液晶1602显示四路电压值。

Proteus7.8以上版本均可使用

视频演示链接:

32、基于51单片机的数字电压表(PCF8591)

仿真图:

程序源码:

#include "reg52.h"
#include "LCD1602.h"
#include "delay.h"
#include "PCF8591.h"


void main(void)
{
	
	unsigned char BUF[4];              	//接收数据缓存区 

	unsigned int Voltage0 = 0;
	unsigned int Voltage1 = 0;
	unsigned int Voltage2 = 0;
	unsigned int Voltage3 = 0;
	
	Lcd1602_Init();		  //LCD1602液晶初始化
	Lcd1602_String(0,0,"             ");
	Lcd1602_String(0,1,"             ");
	while(1)
	{			
		PCF8591_DAC(PCF8591_DAC,128);
		BUF[0] = PCF8591_Read_ADC(PCF8591_ADC_Channel0);//ADC0 模数转换
		BUF[1] = PCF8591_Read_ADC(PCF8591_ADC_Channel1);//ADC1 模数转换
		BUF[2] = PCF8591_Read_ADC(PCF8591_ADC_Channel2);//ADC2 模数转换
		BUF[3] = PCF8591_Read_ADC(PCF8591_ADC_Channel3);//ADC3 模数转换
			
		Voltage0 = (long)BUF[0] * 500/ 255;  //转换为电压值
		Voltage1 = (long)BUF[1] * 500/ 255;  //转换为电压值
		Voltage2 = (long)BUF[2] * 500/ 255;  //转换为电压值
		Voltage3 = (long)BUF[3] * 500/ 255;  //转换为电压值

		Lcd1602_String(0,0,"V0:");	  		//显示电压
		Lcd1602_Write_Data(Voltage0/100+0x30);
		Lcd1602_Write_Data('.');
		Lcd1602_Write_Data(Voltage0%100/10+0x30);
		Lcd1602_Write_Data(Voltage0%100%10+0x30);


		Lcd1602_String(8,0,"V1:");	  		//显示电压
		Lcd1602_Write_Data(Voltage1/100+0x30);
		Lcd1602_Write_Data('.');
		Lcd1602_Write_Data(Voltage1%100/10+0x30);
		Lcd1602_Write_Data(Voltage1%100%10+0x30);


		Lcd1602_String(0,1,"V2:");	  		//显示电压
		Lcd1602_Write_Data(Voltage2/100+0x30);
		Lcd1602_Write_Data('.');
		Lcd1602_Write_Data(Voltage2%100/10+0x30);
		Lcd1602_Write_Data(Voltage2%100%10+0x30);


		Lcd1602_String(8,1,"V3:");	  		//显示电压
		Lcd1602_Write_Data(Voltage3/100+0x30);
		Lcd1602_Write_Data('.');
		Lcd1602_Write_Data(Voltage3%100/10+0x30);
		Lcd1602_Write_Data(Voltage3%100%10+0x30);

		delay_ms(100);


	}
}

软件免费下载地址:

1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包

链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w 
提取码:2756 

2、KEIL4 C51软件安装包

链接:https://pan.baidu.com/s/1CTZBqDsPsyIbjCIjI_birA 
提取码:sy2a 

文件下载:

https://pan.baidu.com/s/1VQnVV2sl2etj209QY5QQQA?pwd=gsrr

介绍了一种基于STC89C51单片机数字电压表的设计方法。该方案根据数据采集的工作原理来实现数字电压的测量, 然后完成单片机PC的通信, 以将所测量的电压值通过串口传送给PC, 并在PC上进行显示。   数字电压表的设计和开发已有很多类型和款式, 传统的数字电压表有自己的特点, 它们适合在现场做手工测量, 而要完成远程测量并对测量的数据做进一步处理, 运用传统的数字电压表是无法完成的。为此, 本文设计了基于PC通信的数字电压表, 该表既可以完成测量数据的传递, 又可借助PC进行测量数据的处理。所以, 这种类型的数字电压表无论在功能和实际应用上, 都具有传统数字电压表无法比拟的优点, 这使得它的开发和应用都具有良好的前景。   本系统主要由硬件和软件两部分构成, 硬件主要包括数据采集电路, 单片机最小数据采集系统, 单片机PC机的接口电路等。软件主要有单片机数据采集程序单片机上位机通信程序,以及上位机数据处理程序。   该新型数字电压表测量的电压类型为直流,测量范围为0 ~5 V, 下位机采用的单片机为STC89C51, AD转化采用的是最常见的ADC0809,可通过RS232串行口PC机进行通信, 以传送所测量的直流电压数据。图1所示是该数字电压表的数据采集电路。电路的设计已做到了最小化,即没有用任何附加逻辑器件做接口电路, 便可实现单片机对ADC0809转换芯片的操作。图1中的ADC0809是8位的模数转化芯片, 片内有8路模拟选通开关以及相应的通道锁存译码电路, 转化时间大约为100 μs左右。在电路应用中, 首先要指定ADC0809的数据通道, 当外部电压进入芯片后, STATR 信号由高到低, 在脉冲的下降沿ADC0809开始转换, 同时管脚EOC电平变低, 表示转化正在进行, 转化完成之后, 管脚EOC的电平变高, 表示一次转化结束。
数字电压表就是采用数字化技术,把需要测量的直流电压转 换成数字形式, 并显示出来。 通过单片机技术,设计出来的数字电压表具有精度 高, 抗干扰能力强的特点。 通过网上资料显示, 目前由各种 A/D 转换器构成的数 字电压表已经广泛的应用于电工测量,工业自动化仪表等各个领域。 在电量的测量中, 电压、电流和频率是最基本的三个被测量,其中电压量的 测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所 以数字电压表就成为一种必不可少的测量仪器。数字电压表简称 DVM,它是采用 数字化测量技术,把连续的模拟量转换成不连续、 离散的数字形式并加以显示的 仪表。由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而 得到广泛应用。 目前,数字电压表的内部核心部件是 A/D 转换器,转换的精度很大程度上影 响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成 本这两个方面。 本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模 块:转换模块、数据处理模块及显示模块。其中,A/D 转换采用 ADC0809对输入 的模拟信号进行转换, 控制核心 STC89C52RC再对转换的结果进行运算处理, 最后驱动输出装置 LCD1602显示数字电压信号。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机技能设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值