旧式的指针式电压表目前已不再适合大多数领域的测量电路。因为指针式电压表读数容易因为读数的角度不同而读出不同的数值,导致高误差,而且读出的数据非精确值误差非常大,同时它的功能单一只能测量某些简单电路。而基于单片机的数字电压表,不仅拥有以上所述的优点外,同时还可以与PC之间实时的通信。因而,当前对由各类单片机和A/D转换器构成的数字电压表作全盘深刻的学习是很有必要的。
本文主要的研究内容是基于单片机的数字电压表设计,核心思想是通过A/D转换模块、数据处理模块、数据显示模块三个模块分工合作来实现电压表系统运行的全过程,从而最终完成电压的测量。
2 设计总体方案
2.1设计要求
(1)设计一个基于单片机的直流数字电压表。
(2)选用1路模拟量电压信号输入,测量直流电压值,可测电压范围为0—5V。
(3)电压值用4--LED数码管显示,且读数能精确两位小数。
(4)尽可能使用较少的元器件。
2.2 设计思路
(1)选用AT89C51芯片来完成数据处理和控制功能。
(2)A/D转换选用ADC0809芯片。
(3)将P1口的高四位引脚与P2口的高四位引脚同单片机接口。
(4)电压显示则选用4-LED数码管。
(5)LED数码的段码输入,由并行端口P0产生:位码输入,用并行端口P2低四位产生。
2.3 设计方案
硬件电路设计结构框图。如图2.1所示:
图2.1 数字电压表系统的硬件设计框图
3 硬件电路设计
3.1 总体电路设计
基于单片机的数字电压表的设计原理图。如图3.1所示:
数字电压电路图
由电路图可知,基于单片机的数字电压表的硬件电路主要由A/D转换芯片ADC0809、数据转换AT89C51、四位一体的LED数码管及复位电路和时钟电路组成。
此电路的工作原理为:+5V模拟电压信号通过变阻器VR1分压后由ADC08009IN0通道进入,经过模/数转换后,产生相应的数字量经过其输出通道D0-D7传送给AT89C51芯片的P1口,AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码传送给四位LED,同时它还通过其四位I/O口P2.0、P2.1、P2.2、P2.3产生位选信号控制数码管的亮灭。此外,AT89C51还控制ADC0809的工作。其中,单片机AT89C51通过定时器中断从P2.4输出方波,接到ADC0809的CLOCK,P2.6发正脉冲启动A/D转换,P2.5检测A/D转换是否完成,转换完成后,P2.7置高从P1口读取转换结果送给LED显示出来[3]。
3.2 A/D转换模块
在现实生活中,单片机的控制输出,一部分(与开关量有关)经过开关量输出通道,作用于执行机构;另外一部分(与模拟量有关)则经过模拟量输出通道,经过隔离、数/模转换、驱动,作用于执行机构。模拟量的输出通道主要由A/D转换完成。
A/D转换器是将模拟量转换为数字量的器件,常用ADC表示。依据A/D转换器的原理可将它分为两大类:一直接型A/D转换器;二是间接型A/D转换器;直接型中经常运用的逐次逼近型和串联方式等。间接型主要运用双重积分型和单重积分型等等。
在双积分式模/数转换器中具有抗干扰能力强、转换精度高、价格便宜等优点,但是转换速度慢。而逐次逼近式A/D转换的特点是转换速度更快,同时精度更高,因而在实际中得到了更广泛的应用。本设计采用逐次逼近型A/D转换器,利用数字量试探的进行D/A转换、比较判断,从而实现A/D转换功能。