#简易数字电压表的设计 下载本文

一、简易数字电压表的设计

l.功能要求

简易数字电压表可以测量0~5V的8路输入电压值,并在四位LED数码管上轮流显示或单路选择显示。测量最小分辨率为0.019 V,测量误差约为土0.02V。

2.方案论证

按系统功能实现要求,决定控制系统采用AT89C52单片机,A/D转换采用ADC0809。系统除能确保实现要求的功能外,还可以方便地进行8路其它A/D转换量的测量、远程测量结果传送等扩展功能。数字电压表系统设计方案框图如图1-1。

AT89C513.系统硬件电路的设

上电复位ADC0809P0计

简易数字电压测量电

串行通信P2路由A/D转换、数据处

理及显示控制等组成,电

LED显示器P1路原理图如图1-2所示。A电源电路/D转换由集成电路0809完

P3成。0809具有8路模拟输人

端口,地址线(23~25脚)可决定对哪一路模拟输入图1-1 数字电压表系统设计方案作A/D转换,22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存,6脚为测试控制,当输入一个2us宽高电平脉冲时,就开始A/D转换,7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平,9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从该端口输出,10脚为0809的时钟输入端,利用单片机30脚的六分频晶振频率再通过14024二分频得到1 MHz时钟。单片机的P1、P3.0~P3.3端口作为四位LED数码管显示控制。P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时选择通道。P0端口作A/D转换数据读入用,P2端口用作0809的A/D转换控制。

4.系统程序的设计 (1)初始化程序

系统上电时,初始化程序将70H~77H内存单元清0,P2口置0。 (2)主程序

在刚上电时,系统默认为循环显示8个通道的电压值状态。当进行一次测量后,将

显示通道百位aabbccddeeffgghh8550x44.7Kx4十位abcdefgh个位abcdefgh510x874244AT89C511 P1.02 P1.13 P1.24 P1.35 P1.46 P1.57 P1.68 P1.79 RST10 RXD11 TXD12 INT013 INT114 T015 T116 WR17 RD18 XTAL219 XTAL120 Vss Vcc 40P0.0 39P0.1 38P0.2 37P0.3 36P0.4 35P0.5 34P0.6 33P0.7 32EA 31ALE 30PSEN 29P2.7 28P2.6 27P2.5 26P2.4 25P2.3 24P2.2 23P2.1 22P2.0 21 5VADC080917 D014 D115 D28 D318 D419 D520 D621 D7IN0 26IN1 27IN2 28IN3 1IN4 2IN5 3IN6 4IN7 5Vcc 11VREF+ 12GND 13VREF- 161G 2G模拟输入(0-5V) 5V 5V 5V1Kx2 5V10uF8.2K12MHz30Px29 OE6 START22 ALE23 CCLOCK 1024 BEOC 725 A单路/循环通道选择 5V1418714024图1-2 数字电压表电路原理图显示每一通道的A/D转换值,每个通道的数据显示时间为1s左右。主程序在调用显示子程序和测试子程序之间循环,主程序流程图见图1-3。

(3)显示子程序 显示子程序采用动态扫描法实现四位数码管的数开始值显示。测量所得的A/D转换数据放在70H~77H

初始化内存单元中,测量数据在显示时需转换成为十进制

BCD码放在78H~7BH单元中,其中7BH存放通道标志数。寄存器R3用作8路循环控制,R0用作显示调用A/D转换子程序 数据地址指针。

(4)模/数转换测量子程序

调用显示子程序模/数转换测量子程序用来控制对ADC0809八路模拟输入电压的A/D转换,并将对应的数值移入70H~77H内存单元。其程序流程见图1-4。 图1-3 主程序流程5.调试及性能分析 (1)调试与测试

采用WaveE2000编译器进行源程序编译及仿真调试,同时进行硬件电路板的设计制作, 烧好程序后进行软硬件联调,最后进行端口电压的对比测试,测试对比表见表1-1。表中标准电压值采用UT56数字万用表测得。

从表中可以看出,简易数字电压表与“标准”数字电压表测得的绝对误差均在0.02 V以内,这与采用8位A/D转换器所能达到的理论误差精度相一致,在一般的应用场合可完全满足要求。

表1-1 简易数字电压表与“标准”数字电压表对比测试表

标准值/V 简易电压表测得值/V 绝对误差/V 标准值/V 简易电压表测得值/V 绝对误差/V 0.00 0.00 0.00 3.00 3.0l 0.15 0.17 0.85 0.86 1.00 1.02 1.25 1.26 1.75 1.76 1.98 2.00 2.32 2.33 2.65 2.66 +0.02 +0.01 +0.02 +0.01 +0.01 +0.02 +0.01 +0.01 3.45 3.47 3.55 3.56 4.00 4.01 4.50 4.52 4.60 4.62 4.70 4.72 4.8l 4.82 4.90 4.92 +0.01 +0.02 +0.01 +0.01 +0.02 +0.02 +0.02 +0.01 +0.02 (2)性能分析 ●由于单片机为8位处理器,当输入电压为5.00 V时,输出数据值为255(FFH),因此单片机最大的数值分辨率为0.0196V(5/255)。这就决定了该电压表的最大分辨率(精度)只能达到0.0196 V。测试时电压数值的变化一般以0.02的电压幅度变化,如要获得更高的精度要求,应采用12位、13位的A/D转换器。

●简易电压表测得的值基本上均比标准值偏大0.01~0.02V。这可以通过校正ADC0809的 基准电压来解决,因为该电压表设计时直接用 7805的供电电源作为基准电压,电压可能有偏差。另外可以用软件编程来校正测量值。

●ADC0809的直流输入阻抗为1MΩ,能满足一般的电压测试需要。另外,经测试 ADC0809可直接在2 MHz的频率下工作,这样可省去分频器14024。

6.控制源程序清单

以下是简易数字电压表的单片机控制源程序。

;*************************************** ;* 简易数字电压表 * ;*************************************** ;测量电压最大值为5V,显示最大值为5.00V

开始起动测试(TESTART)A/D转换结束 ?P3.7=1 ?Y取数据(P2.5=1)N0809地址加1Y地址数小于8 ?N结束图1-4 A/D转换测量程序流程;70H~77H存放采样值,78H~7BH存放显示数据,依次为个位、十位、百位、通道标志位 ;P3.5作单路显示—循环显示转换按键用,P3.6作单路显示时选择通道按键用。 ; *************************************** ;* 主程序和中断程序入口 * ;***************************************

ORG LJMP ORG RETI

0000H START 0003H