基于51单片机的数字电压表系统设计

一、设计要求:

设计一个基于单片机的分辨率为0.02V,量程为0.00~5.00V的数字电压表

二、设计方案的选择

四位共阳数码管,用于显示含单位的电压值。

a.为什么选择共阳数码管?

因为共阳数码管可以利用单片机本身的驱动能力,不需要外加一些驱动电路,可以简化电路。

选择并行输出的ADC0809芯片将输入的模拟量转化为数字量输出。

单片机选择AT89C51。(位选四根线,控制四根线,ADC和单片机通信需要8根线,数码管和单片机通信也需要八根线,故选择有大于24根线的单片机)

如下图1为本次系统设计的总流程图:


图1数字电压表系统设计流程图

三、实验原理说明

1.数码管与单片机的通信方式

器件与器件之间的通信方式主要分为两类:串行通信和并行通信。

由于本次实验设计不加译码器电路,故采用并行通信。若采用译码器电路,则需采用串行通信。

a.并行通信、串行通信优缺点:

并:8根数据线+一些控制线,传输速度快,编程简单

串:2根数据线和一些控制线,线少,硬件简单,但需要按照串行通信协议进行编程,程序复杂,传输速度慢

2.ADC0809芯片功能介绍

路模拟信号分时采集:输入端可以接八路模拟信号

b.八位模数转换(即2^8=256级,即0~255):把八位模拟信号转换为256级的数字信号

c.转换时间约100us(8路转换即800us)

d.转换过程:输入电压与各级参考电压进行逐次逼近比较。

若输入电压等于5V,输出为数字255(0xFF)

若输入电压介于0~255之间,则输出跟它最接近的那个数值。

计算ADC0809是否达到精度设计要求?

ADC0809的芯片使用方法可查阅上一条博客,前面的博客都是为能更好的理解本次系统设计所做的理论铺垫。

A/D转换器的主要技术指标及其应用

由上文“A/D转换器的主要技术指标及其应用”,我们可知,参考电压5V分成255等分,所以其精度为1/(2^n)=1/(2^8)=0.0196V/Div,本作品显示到2位小数,最后一位如有波动则会按0.02V增减变化。

特别说明,本例适用于转换0~5V的电压,Vref+接VCC,最终数据测量准不准确还跟我们的VCC的稳定性、准确性有关。为了提高精度,建议做一个精准的参考电压源。

查阅上文“A/D转换器的主要技术指标及其应用”,我们也会知道,精度主要与量程和位数有关,因此若要进一步完善实验,如本实验的后续将会探索提高系统精度,更换芯片等,以此设计出一个更加精确的电压表。更多内容敬请等待后续更新。

ADC0809芯片原理图可见下图:

ADC0809芯片原理图

单片机和ADC的相互通信步骤:

单片机和ADC的相互通信步骤

四、proteus仿真

1.proteus仿真注意事项

a.画原理图的时候要选择ADC0808芯片,并且要选择如下图Library列显示的ANALOG那一项的芯片,否则proteus运行时会显示“SimulationFAILEDduetopartitionanalysiserrors""nomodelspecifiedforU2"的仿真错误。原因在于proteus中ADC0809和ADC0808(Library:NATDAC)这些元件没有仿真模型。

ADC0808芯片的选择

和ADC0808的区别:

ADC0808是ADC0809的简化版本,功能基本相同,一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。从proteus的原理图上器件选择后的结果也可得知,使用方法几乎没有差别。

五、原理图及其电路讲解

总原理图

电路分析:D0~D7接受AD转换数据,OE\ST\EOC\CLK控制ADC0809,P0口用于输出数码管段码,因为P0口是漏极开路或是集电极开路,因此需要加上拉电阻再接高电平。P2口用于输出数码管的位选信号。ADC0809选择IN0作为输入端,并将ADDA、B、C三根地址线确定为000。IN0接出的电容为了是输出电压平滑。

发布于 2024-11-10
67
目录

    推荐阅读