您好,欢迎访问三七文档
1第1章概述本次设计是利用单片机的原理和A/D转换来设计一个简易数字电压表。数字电压表的基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。较之于一般的模拟电压表,数字电压表具有精度高、测量准确、读数直观、使用方便等优点。电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量,完成这种转换的电路叫模数转换器(A/D)。数字电压表的核心部件就是A/D转换器,由于各种不同的A/D转换原理构成了各种不同类型的DVM。一般说来,A/D转换的方式可分为两类:积分式和逐次逼近式。积分式A/D转换器是先用积分器将输入的模拟电压转换成时间或频率,再将其数字化。根据转化的中间量不同,它又分为U-T(电压-时间)式和U-F(电压-频率)式两种。逐次逼近式A/D转换器分为比较式和斜坡电压式,根据不同的工作原理,比较式又分为逐次比较式及零平衡式等。斜坡电压式又分为线性斜坡式和阶梯斜坡式两种。在高精度数字电压表中,常采用由积分式和比较式相结合起来的复合式A/D转换器。本设计以AT89C51单片机为核心,以逐次比较型A/D转换器ADC0808、液晶显示器LCD为主体,构造了一款简易的数字电压表,能够测量1路0~51V直流电压,最小分辨率0.2V。2第2章系统总体方案设计实现数字电压表的方案较多,目前广泛采用的是基于74系列逻辑器件方案,本设计将介绍基于单片机实现的方案。74系列逻辑器件方案采用双积分电路+液晶显示器+逻辑电路+定时采样电路+数据处理实现,被测电压信号由信号输入端加到测量系统,进行预处理后送到后级电路。单片机系统方案采用输入处理电路+ADC0808+AT89C51+液晶显示实现,被测信号由ADC0808模拟输入端输入,电压范围为0-51V进行采集,并在4位LED上进行显示,测试精度为0.02V。数字电压表主要由模数转换电路,单片机控制电路,时钟、复位电路和LED显示电路组成。其中数模转换电路由ADC0809芯片构成,将输入的模拟信号进行取样、转换,然后再将转换的数字信号送进单片机;单片机控制电路主要实现对数据进行程序处理;显示电路主要用于将单片机的信号数据转换后显示测量结果。3第3章系统方框图与工作原理3.1系统方框图基于单片机系统的电压表的基本结构如下图所示单片机部分作为控制系统,显示部分显示测量结果,模数转换采集电压以及电阻值发送到单片机,通过改变滑动变阻器的阻值,可以改变电压表的值。3.2工作原理A/D转换由集成电路0808完成,0808具有8路模拟输入端口,地址线(23~25脚)可决定对哪一路模拟输入作A/D转换。22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。6脚为测试控制,当输入一个2μS宽高电平脉冲时,就开始A/D转换。7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从端口输出10脚为0808的时钟输入端,利用单片机30脚的六分频晶振频率再通过14024二分频得到1MHz时钟。单片机的P1、P3.0~P3.3端口作为四位LED数码管显示控制。P3.5端口用作单时钟电路复位电路单片机A/D转换LED显示电路4路显示/循环显示转换按钮,P3.6端口用作单路显示时选择通道。P0端口作A/D转换数据读入用,P2端口用作0808的A/D转换控制。5第4章各单元硬件设计说明4.1单片机功能及选用系统设计使用MCS-51单片机8051芯片。8051芯片由以下部分组成:中央处理器、256单元的内部数据存储器、4KB的程序存储器、定时器/计数器、四个八位的I/O口,中断控制系统及时钟电路。图4.1所示为采用双列直插式封装的8051AH芯片管脚图。P0.0-P0.7接ADC0808的OUT1-OUT8,作为数字量的输入端口,P1.0-P1.7接数码显示管,P2.0接ADC0808的时钟信号。XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51图4.1AT80C51单片机的引脚图64.2时钟电路与复位电路的设计时钟电路是计算机最核心的部分,它控制着计算机的工作MCS-51单片机允许的时钟频率典型值为12MHZ。80C51单片机内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为XTAL1,输出端为XTAL2,分别是80C51的19脚和18脚。在XTAL1和XTAL2两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器。石英晶振起振后要能在XTAL2线上输出一个3V左右的正弦波,使MCS-51片内的OCS电路按石英晶振相同频率自激震荡。通常,OCS的输出时钟频率fosc为0.5MHZ~16MHZ,典型值为12MHZ电容器C1和C2通常取30pF左右,对震荡频率有微调作用。调节它们可以达到微调震荡周期fosc的目的。单片机的RST管脚为主机提供一个外部复位信号输入端口。复位信号是高电平有效,高电平有效的持续时间应为2个机器周期以上。单片机的复位方式有上电自动复位和手工复位两种。图4-2所示是51系列单片机常用的上电复位电路,只要Vcc上升时间不超过1ms,它们都能很好地工作。复位以后,单片机内各部件恢复到初始状态。电阻电容器件的参考值:R1=200Ω,R2=1KΩ,C3=22μF。RET按键可以选择专门的复位按键,也可以选择轻触开关。电路图如图4-2所示。7图4-2时钟电路与复位电路4.3LED显示电路设计与器件选择单片机应用系统中,通常都需要进行人机对话。这包括人对应用系统的状态干预与数据输入,以及应用系统向人们显示运行状态与运行结果。显示器、键盘电路就是用来完成人机对话活动的人机通道。LED显示器的驱动是一个非常重要的问题,此设计不采用段驱动芯片和位驱动芯片,直接由单片机的P1,P2口驱动,实验证明可行。在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此生产厂家就生产了多种位数、尺寸、型号不同的LED显示器。在我们的设计中,选择4位一体的共阳极时钟型LED显示器,采用动态显示方8式。图4-2为本系统LED显示电路,采用P1口作为LED的段码输出信号,P2口的低四位作为LED位码的输出控制信号。图4-3LED显示原理图4.4A/D转换电路和测量电路设计1.ADC0808引脚功能2-1MSB21ADDB24ADDA25ADDC23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START62-58EOC7OUTPUTENABLE9CLOCK10VCC112-220GND132-7142-6152-8LSB172-4182-319IN228IN127IN026ALE22图ADC0808引脚图9IN0~IN7:8路模拟量输入。A、B、C:3位地址输入,2个地址输入端的不同组合选择八路模拟量输入。ALE:地址锁存启动信号,在ALE的上升沿,将A、B、C上的通道地址锁存到内部的地址锁存器。D0~D7:八位数据输出线,A/D转换结果由这8根线传送给单片机。OE:允许输出信号。当OE=1时,即为高电平,允许输出锁存器输出数据。START:启动信号输入端,START为正脉冲,其上升沿清ADC0808的内部的各寄存器,其下降沿启动A/D开始转换。EOC:转换完成信号,当EOC上升为高电平时,表明内部A/D转换已完成。ADC0808内部结构图图ADC0808内部结构逐次逼近型A/D转换器ADC0808由八路模拟开关、地址锁存与译码器、比较器、D/A转换器、寄存器、控制电路和三态输出锁存器等组成。10A/D转换电路设计图ADC0808与单片机的连接11第5章软件设计与说明5.1系统软件设计(流程图)图5.1为程序软件设计流程图其中(a)为主程序流程图,(b)为A/D转换子程序流程图。图中A/D转换子程序是将0808转化后的数字量,需通过转化子程序转化成工程量并通过查表送到P1口送给LED显示。开始初始化调用A/D转换子程序调用显示子程序开始开始模数转换转换是否完成取得模数转换结果并转化为工程量显示转化结果结束(a)主程序流程图(b)A/D转换子程序流程图调用延时程序125.2程序设计(1)初始化程序系统上电时,初始化程序将70H~77H内存单元清0,P2口置0。(2)主程序在刚上电时,系统默认为循环显示8个通道的电压值状态。当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间为1s左右。主程序在调用显示子程序和测试子程序之间循环,主程序流程图见图5-1图5-1主程序流程图(3)显示子程序显示子程序采用动态扫描法实现四位数码管的数值显示。测量所得的A/D转换数据放在70H~77H内存单元中,测量数据在显示时需转换成为十进制BCD码放在78H~7BH内存单元中,其中7BH存放通道标志数。寄存器R3用作8路循环控制,R0用作显示数据地址指针。(4)模/数转换测量子程序模/数转换测量子程序用来控制对0808八路模拟输入电压的A/D转13换,并将对应的数值移入70H~77H内存单元。14第6章系统仿真与调试简易数字电压表与“标准”数字电压表测得的绝对误差应在0.2V以内。在进行电路的局部调试之后,我又进行了系统整机调试。首先为ADC0808接上+51V的电压,为其它芯片接上+5V的工作电压。另外还要输入待测的模拟电压,该电压从0V电压开始输起,依次增大,直到达到待测电压的上限50V为止,记录测量数据并分析系统性能。6.1系统仿真调好程序后将目标程序导入Proteus进行软硬件调试,基于单片机实现的数字电压表测试值见表6-1所示。表6-1测试值与真实值标准电压值/V0.005.1010.220.4253040.245.450.0简易电压表测得值/V0.005.2010.220.42530.140.345.450.0绝对误差/V+0.00+0.1+0.00+0.00+0.00+0.1+0.1+0.00+0.00从表中可以看出,电压表测得值误差均在0.2V以内,这与采用8位A/D转换器所能达到的理论误差精度相比较接近,因此在一般的应用场合都可以满足要求。6.2性能分析(1)由于单片机为8位处理器,当输入电压为51V时,输出数据值为255(FFH),因此单片机最大的数值分辨率为0.2V(51/255)。这就决定了该电压表的最大分辨率(精度)只能达到0.2V。测试时电压数值的变化一般以0.2的电压幅度变化,如要获得更高的精度要求,应采用12位、13位的A/D转换器。15(2)简易电压表测得的值基本上均比标准值偏大0.1~0.2V。这可以通过校正0809的基准电压来解决,因为该电压表设计时直接用7805的供电电源作为基准电压,电压可能有偏差。另外可以用软件编程来校正测量值。6.3调试结论仿真测试表明,系统性能良好,测量读数稳定易读、更新速度合理,直流电压测量范围为0~51V,最小分辨率为0.2V,满足任务书指标要求。但是,该系统也存在一定程度的不足,例如:1、输入电压易发生干扰不稳定,且驱动能力可能存在不足,需在被测信号的输入端加上一部分驱动电路,比如将量程转换电路改成带放大能力的自动量程转换电路,将幅值较小的信号经适当放大后再测量,可显著提高精度;2、输出量可用平均值算法来改善,使测量准确度更高。3、若能将测量的电压值实时保存,使用时将更方便。4、ADC080
本文标题:单片机-数字电压表
链接地址:https://www.777doc.com/doc-6372419 .html