单片机数字电压表.docx
《单片机数字电压表.docx》由会员分享,可在线阅读,更多相关《单片机数字电压表.docx(17页珍藏版)》请在冰豆网上搜索。
![单片机数字电压表.docx](https://file1.bdocx.com/fileroot1/2023-2/9/fbaa7ee5-52f9-45b0-b028-f58d846036b1/fbaa7ee5-52f9-45b0-b028-f58d846036b11.gif)
单片机数字电压表
第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章系统总体方案设计
实现数字电压表的方案较多,目前广泛采用的是基于74系列逻辑器件方案,本设计将介绍基于单片机实现的方案。
74系列逻辑器件方案采用双积分电路+液晶显示器+逻辑电路+定时采样电路+数据处理实现,被测电压信号由信号输入端加到测量系统,进行预处理后送到后级电路。
单片机系统方案采用输入处理电路+ADC0808+AT89C51+液晶显示实现,被测信号由ADC0808模拟输入端输入,电压围为0-51V进行采集,并在4位LED上进行显示,测试精度为0.02V。
数字电压表主要由模数转换电路,单片机控制电路,时钟、复位电路和LED显示电路组成。
其中数模转换电路由ADC0809芯片构成,将输入的模拟信号进行取样、转换,然后再将转换的数字信号送进单片机;单片机控制电路主要实现对数据进行程序处理;显示电路主要用于将单片机的信号数据转换后显示测量结果。
第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端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时选择通道。
P0端口作A/D转换数据读入用,P2端口用作0808的A/D转换控制。
第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的时钟信号。
图4.1AT80C51单片机的引脚图
4.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所示。
图4-2时钟电路与复位电路
4.3LED显示电路设计与器件选择
单片机应用系统中,通常都需要进行人机对话。
这包括人对应用系统的状态干预与数据输入,以及应用系统向人们显示运行状态与运行结果。
显示器、键盘电路就是用来完成人机对话活动的人机通道。
LED显示器的驱动是一个非常重要的问题,此设计不采用段驱动芯片和位驱动芯片,直接由单片机的P1,P2口驱动,实验证明可行。
在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此生产厂家就生产了多种位数、尺寸、型号不同的LED显示器。
在我们的设计中,选择4位一体的共阳极时钟型LED显示器,采用动态显示方式。
图4-2为本系统LED显示电路,采用P1口作为LED的段码输出信号,P2口的低四位作为LED位码的输出控制信号。
图4-3LED显示原理图
4.4A/D转换电路和测量电路设计
1.ADC0808引脚功能
图ADC0808引脚图
IN0~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转换器、寄存器、控制电路和三态输出锁存器等组成。
A/D转换电路设计
图ADC0808与单片机的连接
第5章软件设计与说明
5.1系统软件设计(流程图)
图5.1为程序软件设计流程图其中(a)为主程序流程图,(b)为A/D转换子程序流程图。
图中A/D转换子程序是将0808转化后的数字量,需通过转化子程序转化成工程量并通过查表送到P1口送给LED显示。
5.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转换,并将对应的数值移入70H~77H存单元。
第6章系统仿真与调试
简易数字电压表与“标准”数字电压表测得的绝对误差应在0.2V以。
在进行电路的局部调试之后,我又进行了系统整机调试。
首先为ADC0808接上+51V的电压,为其它芯片接上+5V的工作电压。
另外还要输入待测的模拟电压,该电压从0V电压开始输起,依次增大,直到达到待测电压的上限50V为止,记录测量数据并分析系统性能。
6.1系统仿真
调好程序后将目标程序导入Proteus进行软硬件调试,基于单片机实现的数字电压表测试值见表6-1所示。
表6-1 测试值与真实值
标准电压值/V
0.00
5.10
10.2
20.4
25
30
40.2
45.4
50.0
简易电压表测得值/V
0.00
5.20
10.2
20.4
25
30.1
40.3
45.4
50.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转换器。
(2)简易电压表测得的值基本上均比标准值偏大0.1~0.2V。
这可以通过校正0809的基准电压来解决,因为该电压表设计时直接用7805的供电电源作为基准电压,电压可能有偏差。
另外可以用软件编程来校正测量值。
6.3调试结论
仿真测试表明,系统性能良好,测量读数稳定易读、更新速度合理,直流电压测量围为0~51V,最小分辨率为0.2V,满足任务书指标要求。
但是,该系统也存在一定程度的不足,例如:
1、输入电压易发生干扰不稳定,且驱动能力可能存在不足,需在被测信号的输入端加上一部分驱动电路,比如将量程转换电路改成带放大能力的自动量程转换电路,将幅值较小的信号经适当放大后再测量,可显著提高精度;
2、输出量可用平均值算法来改善,使测量准确度更高。
3、若能将测量的电压值实时保存,使用时将更方便。
4、ADC0808可实现对8个通道的输入信号轮流转换,本设计仅仅使用了其中一个通道,造成了较大的资源浪费。
若能对电路稍加改进,实现对多路信号的轮流测量并自动保存相应结果,其应用价值将会更大。
第7章设计总结
两周的单片机课程设计很快就过去了。
在这短短的两周中,我们完成了课题的选择到查找相关资料、确定设计方案、硬件设计、编写程序、调试程序到最后运行成功。
虽然期间遇到了很多问题,经历了不少挫折,但是我们最后尝到了成功的甜。
最重要的是,我们充分运用了所学知识,也学到了很多书本外的知识。
首先,我们从任务书得知本次设计是做一个简易数字电压表,测量围是0-51V,可以通过A/D转换把模拟量转换成数字量。
然后我参照《单片机应用与实践》,把程序分为初始化程序,A/D转换子程序和显示子程序三个大的部分,一个一个的编写,分别调试和仿真。
第一次的程序有很多错误,我利用我所学到的单片机知识认真排查错误,同时也向同学请教,终于能够运行成功。
在连电路图的时候由于自己的不细心,使得出现了很多本不应该出现的错误,比如刚刚开始发现LED显示管怎么也不亮,我把程序反复研究也没发现问题,最后终于找到原因,原来是我把显示管的电源接反了。
在这短短两个星期,虽然有过郁闷、烦躁、苦恼的时候,但最重要的是我们都克服了。
我们不仅强化了理论知识,也增强了独立思考问题和团结协作的能力。
通过这次课程设计,同时也开阔了我们的视野,加强了我们合作的意识,为我们以后从事相关工作增强了自信心以及经验。
在此,我要感我搭档的帮助和支持,当然还有老师的指导。
第8章参考文献
1、《51系列单片机应用与实践教程》周向红编北航
2、《单片机应用系统设计》何立民编北航
3、《单片机原理及应用》王迎旭主编机械工业
4、《51系列单片机设计实例》楼然苗等编北航
5、《51单片机应用系统开发典型实例》戴家等编中国电力
6、《单片微型计算机原理及接口技术》光东等编
华中科技大学
7、《单片机实用系统设计技术》房小翠编国防工业
附录A:
系统电路原理图
附录B:
程序清单
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
ANLP1,#0C0H
W1:
MOVXR0,A
SETBP2.1
CALLDISP
CLRP2.1
FB:
CPLP2.0
ACALLDL
JBP3.0,ADC
SJMPFB
DL:
RET
WAIT:
CALLDISP
JMPWAIT
ADC:
MOVXA,R0
CALLY1
MOVR1,#05H
DISP1:
CALLDISP
DJNZR1,DISP1
JMPW1
Y1:
CLRC
MOVR5,#00H
MOVR4,#00H
MOVR3,#08H
NEXT:
RLCA
MOVR2,A
MOVA,R5
ADDCA,R5
DAA
MOVR5,A
MOVA,R4
ADDCA,R4
MOVR4,A
MOVA,R2
DJNZR3,NEXT
MOVA,R5
ADDA,R5
DAA
MOVR5,A
MOVA,R4
ADDCA,R4
DAA
MOVR4,A
RET
DISP:
MOVA,#10H
MOVP2,A
MOVA,R5
ANLA,#0FH
MOVDPTR,#TABLE1
MOVCA,A+DPTR
MOVP1,A
LCALLDELAY
MOVA,#20H
MOVP2,A
MOVA,R5
ANLA,#0F0H
SWAPA
MOVDPTR,#TABLE2
MOVCA,A+DPTR
MOVP1,A
LCALLDELAY
MOVA,#40H
MOVP2,A
MOVA,R4
ANLA,#0FH
MOVDPTR,#TABLE1
MOVCA,A+DPTR
MOVP1,A
LCALLDELAY
CLRA
RET
TABLE1:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0D8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH
TABLE2:
DB40H,79H,24H,30H,19H,12H,02H,58H,00H,10H,08H,03H,46H,21H,06H,0EH
DELAY:
MOVR6,#10
DE1:
MOVR7,#248
DJNZR7,$
DJNZR6,DE1
RET
END