摘要:由于纯硬件数字电压表结构复杂,测量精度低,价格高,而在日常使用中,使用频率高,导致万用表经常损坏,故障率高,给使用和维修带来很多不便。为了设计一种高精度数字电压表,采用AT89C52单片机和ADC0809模/数转换相结合的方法,做了大量Proteus仿真实验,获得了普通纯硬件数字电压表无法达到的测量效果。实验结果证明,使用软硬件相结合设计的数字电压表,具有结构简单,测量精度高,故障率低等功能。
关键词:数字电压表;测量精度;AT89C52;ADC0809
0 引言
在电子测量中,电压值的测量显得尤其重要。然而测量电压的仪表很多,有各种类型和款式的数字电压表,它们大多数都是采用传统的纯硬件电路设计的,由于结构复杂、测量精度低、日后维修麻烦、成本高等缺点,因此,木文设计了一种数字电压表,采用软件和硬件相结合的设计模式,利用单片机和A/D转换,对现场电压进行采集和测量,可以实现测量数据的传递,又可借助PC进行测量数据的处理。所以,这种类型的数字电压表具有结构简单、精度高、维护方便、成本低、故障率低等优点,无论在功能和实际应用上都具有传统数字电压表无法比拟的优点,使得它的开发和应用都具有良好的前景。
1 系统硬件电路构成
本设计硬件电路大体可分为单片机最小系统电路、稳压电路、A/D转换电路及数码显示电路,其原理图如图1所示,由于单片机具有体积小、重量轻、价格便宜、控制灵活等特点,所以本系统采用AT89C52单片机作为控制核心器件,ADC0809作为模拟信号转换为数字信号用。
ADC0809是8位的模/数转换芯片,片内有8路模拟选通开关以及相应的通道锁存译码电路,转换时间大约为100μs左右。在电路应用中,首先要指定ADC0809的数据通道,当外部电压进入芯片后,STATR信号由高到低,在脉冲的下降沿ADC0809开始转换,同时管脚EOC电平变低,表示转换正在进行,转换完成之后,管脚EOC的电平变高,表示一次转换结束。
2 系统软件实现与主程序流程
软件采用单片机C语言编写,C语言具有通俗易懂、修改方便、语句简单等优点,本设计通过ADC0809把直流电压(模拟量)转换为数字量再通过AT89C52单片机进行数据处理,通过数码管显示。主程序一开始进行初始化,设置并启动A/D转换以及键盘扫描,检测是否有键按下,并分析。当有按键按下,通道数加一,并在第一位数码管上显示当前的通道数,然后调用显示子程序,在数码管上显示当前的电压值,主
程序流程图如图2所示。
3 A/D转换子程序
A/D转换子程序用来控制对输入的模拟电压信号进行采集测量,并将对应的数值存入相应的内存单元,驱动数码管进行显示,流程图如图3所示。
4 系统程序代码和实验数据
4.1 部分源代码
部分源代码如下:
4.2 实验测试数据
实验测试数据如表1所示。
表1中电压值由直流稳压电源提供,输入电压值均为数字万用表读数,测量值均为设计样品数码管显示值。数据真实可靠,达到预期效果。
5 Proteus仿真结果
在Proteus仿真软件下得出的结果如图4所示。
对该样品随机测试9个电压值,仿真结果与输入电压实际值非常接近,图示为输入电压值为3.75 V时,仿真结果为3.74 V,绝对误差为0.01 V,达到设计要求。
6 结语
上述实验方案证明,采用单片机设计数字电压表是可行的,其显示偏差可以通过校正ADC0809的基准参考电压来解决,或用软件编程来校正其测量值。在设计过程中通过Proteus仿真软件的调试,电路简单,具有成本低,精度高,速度快和性能稳定等特点。
实践证明,该仪表的各项指标都能达到预期效果,在仪器仪表中采用软硬件相结合的方式,使电路大为简化,充分体现了单片机应用的灵活性和实用性.具有一定的实用价值。