基于单片机的数字电压表的设计毕业设计.docx
《基于单片机的数字电压表的设计毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字电压表的设计毕业设计.docx(26页珍藏版)》请在冰豆网上搜索。
基于单片机的数字电压表的设计毕业设计
基于单片机的数字电压表的设计
【摘要】
本设计主要用于测量0-5V的直流电压,把连续的模拟量(直流输入电压)转换成离散的数字形式,并利用数码管进行显示。
整个系统主要由控制电路、基准电源、A/D转换电路、测试电路和显示电路等几部分组成。
通过AT89C52单片机实现系统控制功能,利用单片机的P1口、P3.0-P3.3口控制4位LED数码管实现动态显示,P3.5端口用作控制单路/循环显示转换按钮,P3.6端口用作单路显示时的通道选择,P0端口用作A/D转换数据读入,P2端口用作ADC0809的A/D转换控制,A/D转换电路主要由ADC0809模/数转器件片完成。
此外,设计的数字电压表在实现单路测量的基本功能之外,还可以方便进行多路电压的同时测量,通过按键选择实现单一或多路循环显示。
【关键词】:
AT89C52、ADC0809、A/D转换、数据处理、控制显示
ABSTRACT
Thedesignismainlyusedformeasuring0-5VDCvoltage,thecontinuousanalog(DCinputvoltage)intoadiscretedigitalform,andtheuseofdigitalcontroltodisplay.Theentirecircuitismainlybythecontrolcircuit,referencepower,A/Dconvertercircuit,thetestcircuitanddisplaycircuitcomposedofseveralparts.
AT89C52MCUthroughthesystemcontrolfunctions,theuseofthemicrocontrollerportP1,P3.0-P3.3Port4-bitLEDdigitalcontrolofdynamicdisplay,P3.5portasasingledisplay/cyclethroughtheConvertbutton,P3.6displayedasasingleportchannelselection,P0portforA/Dconverterdataread,P2portfortheADC0809A/Dconversioncontrol;A/DconvertercircuitmainlybytheADC0809analog/digitalswitchdevicetocompletepiece.
Inaddition,thedesignofthedigitalvoltmetersinglemeasurementintherealizationofthebasicfunctions,itcanalsofacilitatethesimultaneousmeasurementofmultiplevoltagebyselectionforasingleormultiplebuttonstocycle.
【KEYWORD】:
AT89C52,ADC0809,A/Dconversion,dataprocessing,controlanddisplay
朗读
显示对应的拉丁字符的拼音
字典-查看字典详细内容
目录
引言1
一、方案论证1
(一)控制芯片1
(二)显示部分2
二、总体设计思想2
三、硬件电路的设计2
(一)硬件设计原理2
(二)AT89C52单片机的概述3
1.AT89C52单片机组成3
2.AT89C52单片机引脚结构4
3.AT89C52单片机的最小系统5
(1)时钟电路5
(2)复位电路6
(三)A/D转换电路6
1.A/D转换器工作过程6
2.A/D转换电路8
(四)数码显示电路9
四、系统的程序设计10
(一)软件设计思想框图10
(二)子程序原理和框图11
1.显示子程序11
2.A/D转换子程序12
五、调试及性能分析14
(一)测量与调试14
(二)性能分析14
六、总结16
附录一数字电压表总原理图17
附录二源程序18
附录三PCB图23
附录四实物图24
参考文献25
致谢26
引言
数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度较低,不能满足数字化时代的需求。
采用以单片机为平台开发的数字电压表,具有精度高、抗干扰能力强,可扩展性强、集成方便,可与PC进行实时通信等方面的优点,能够在很大程度上优化测量结果,提高使用者的工作效率。
数字化电压表的广泛应用,符合和满足了现代化测量技术的需要。
目前,由各种单片机和A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等多智能化测量领域,并且显示出强大的作用和生命力。
与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电子测量以及相关联的非电子测量技术提高到了一个崭新的水平。
新型数字电压表以及由电压表扩展而成的各种通用及专用仪表以其高准确度、高可靠性、高性能分析、高分辨率、高性价比等优良特性,给使用者带来了轻松便捷的操作和高效良好的性能分析能力,赢得了广大使用者的青睐。
在新兴科学技术不断涌现的今天和未来,随着数字化时代的进程,随着测试需求的多样化和复杂化,电子测试测量的仪器系统也朝着以软件为核心的模块化方向发展,并且必将得到广泛的应用。
本设计的硬件是通过51系列单片机控制ADC0809A/D转换器进行信号接收和转换,并将转换后的信号输送至单片机,通过单片机进行处理,并控制数码管显示,是关于单片机内部定时器、并行I/O口、中断系统等相关功能,以及LED显示、A/D转换器、译码器、驱动器、基准电源等的综合性研究。
软件设计包括显示扫描子程序、1ms延时子程序、通道选择子程序、ADC0809转换子程序。
经过测量设计原理和显示方式的深度变革,使测量结果通过数码形式的直观显示,有效避免了因使用传统测量仪表时的视差和视觉疲劳等一些不良因素造成的测量误差,在极大的程度上提高了使用者的工作效率和作业的精确性,进而对提高工程项目的质量有非常大的帮助。
一、方案论证
(一)控制芯片
方案一:
选用专用电压转换芯片INC7107实现电压的测量和显示。
缺点是测量的精度比较低,信号的转换在芯片内部完成,不可控制,灵活性差。
优点是价格低廉。
方案二:
选用单片机AT89C52和A/D转换芯片ADC0809实现电压的转换和控制,用4位数码管显示出最后的转换结果。
测量转换的精度高,通过控制转换和显示电路,实现单路或多路电压同时测量。
基于设计功能方面考虑,方案二为较佳选择。
(二)显示部分
方案一:
选用4位8段LED共阳数码管,与单片机口的I/O连接进行控制,动态显示测量结果。
优点是价格比较便宜,并且可以满足测量精度的要求。
方案二:
通过LCD1602显示测量结果。
虽然1602可以显示数字和字符的内容丰富,但是器件引脚较多,并且价格比较昂贵。
基于综合考虑,选择方案一。
经过控制芯片和显示器件的综合类比分析,设计的数字电压表认定通过ATC89C52单片机控制ADC0809模/数转换器件,利用4位数码管显示测量结果的方案为最佳方案。
二、总体设计思想
设计的数字电压表由模拟电路和数字电路两部分组成,数字电路部分主要包括系统控制和运算显示模块,模拟电路部分主要由基础电源、信号采集和测量等部分构成。
总体设计思想为:
AT89C52单片机是数字电压表系统的控制核心。
将需要测量的模拟信号(直流电压)直接输送到A/D转换电路进行A/D转换,由单片机对转换后的信号进行数据处理,最终将处理后的数字信号经过显示驱动电路和数码管显示进行测量结果的直观显示。
设计的数字电压表除了可以同时进行多路模拟信号的测量外,也可以通过通道选择电路对单片机进行控制,用来实现信号的单路测量和多路测量的切换。
数字电压表的系统框图如图2.1所示。
图2.1系统框图
三、硬件电路的设计
(一)硬件设计原理
设计的数字电压表主要用于测量0-5V的直流电压,通过单片机控制A/D转换器将连续的模拟信号转换成离散的数字信号,并对转换后的信号进行运算比较,最终通过数码管显示测量结果。
整个电路主要由控制电路、A/D转换电路、数码显示电路、复位电路、选择电路、基准电源、测试电路等几部分组成。
设计的数字电压表是基于AT89C52单片机和A/D转换器件的应用基础之上,AT89C52单片机和A/D转换模块是本次设计的核心,通过单片机控制A/D转换器,实现对模拟信号的接收和转换:
P0口连接A/D转换器的数字端口,作A/D转换器数据读入端,接收转化后的数字信号并进行处理;单片机的P1口、P3.0-P3.3口作为4位7段LED数码管显示控制端,P3.5端口用作单路/循环显示转换控制按钮,P3.6端口用作单路显示时选择显示的通道。
数字电压表硬件设计方案框图如3.1所示。
图3.1数字电压表硬件逻辑框图
单片机是制作在一块集成电路芯片上的计算机,它包括中央处理器(CPU)、用RAM构成的数据存储器、用ROM构成的程序存储器、定时器/计数器、各种I/O接口、时钟电路和中断系统等,它们通过地址总线(AB)、数据总线(DB)和控制总线(CB)连接起来,通过I/O口线与外部设备及外围芯片连接,以及单片机系统中的系统操作软件和用户应用软件,实现对整个电路系统的控制作用。
(二)AT89C52单片机概述
1.AT89C52单片机组成
图3.2AT89C52单片机组成结构图
设计采用的AT89C52单片机是MCS-51系列单片机的一个型号,它是由ATMEL公司生产的。
AT89C52单片机内包含有1个8位的CPU、1个片内振荡器及时钟电路、8KB的ROM程序存储器、256B的RAM数据存储器、3个16位的定时器/计数器、可寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路、4个8位并行I/O端口、2个可编程全双工串行口、6个中断源、两个优先级嵌套中断结构。
AT89C52单片机组成结构如图3.2所示。
2.AT89C52单片机引脚结构
(1)电源引脚
Vcc(40脚):
接+5V电源。
Vss(20脚):
接地。
(2)时钟引脚
XTAL1(19脚):
内部振荡电路反向放大电路的输入端,外接晶体的一个引脚。
当采用外部振荡器时,此引脚接地。
XTAL2(18脚):
内部振荡电路反向放大电路的输出端,外接晶体的另一端。
当采用外部振荡器时,此引脚接外部电源。
(3)I/O口引脚
P0口(P0.0-P0.7):
P0.7是最高位,P0.0是最低位,有两种功能如下。
通用I/O口:
无片外存储器时,P0口可以做为通用I/O口使用;
地址/数据口:
在访问外部存储器时,用作地址总线的低8位和数据总线。
P1口(P1.0-P1.7):
P1.7是最高位,P1.0是最低位,仅用作I/O口。
P2口(P2.0-P2.7):
P2.7是最高位,P2.0是最低位,有两种功能如下。
通用I/O口:
无片外存储器时,P2口可以做为通用I/O口使用;
地址口:
在访问外部存储器时,用作地址总线的高8位。
P3口(P3.0-P3.7):
P3.7是最高位,P3.0是最低位,有两种功能如下。
通用I/O口:
用于串行口、中断源输入、计数器、片外RAM选通。
(4)控制引脚
引脚图如图3.3所示。
图3.3AT89C52的引脚图
①RST/VPD(9脚)
RST为RESET,VPD为备用电源。
该引脚为单片机的上电复位或掉电保护端。
当振荡器工作时,RST引脚出现两个机器周期以上高电平,将使单片机复位。
当VCC发生故障,该引脚可接上备用电源为内部RAM供电,以保证RAM中的数据不丢失。
②ALE/PROG(30脚)
地址锁存有效信号输出端。
ALE在每个机器周期内输出两个脉冲。
在访问片外程序存储器期间,下降沿由于控制P0输出的低8位地址;在不访问片外程序存储器期间,可作为对外输出的时钟脉冲或用于定时目的。
③PSEN(29脚)
片外程序存储器选通信号输入端,低电平有效。
当从外部程序存储器读取指令或常数期间,该信号在每个机器周期两次有效,以通过数据总线P0口读回指令或常数。
在访问片外程序存储器期间,PSEN信号将不再出现。
④EA/VPP(31脚)
外部程序存储器地址允许输入端/编程电压输入端。
当EA接高电平时,CPU执行片内ROM指令,但当PC值超过0FFFH时,将自动转去执行片外ROM指令;当EA接低电平时,CPU只执行片外ROM指令。
3.AT89C52单片机的最小系统
图3.4AT89C52最小系统
(1)时钟电路
单片机的时钟信号用来提供单片机内部各种操作的时间基准,时钟电路用来产生单片机工作所需要的时钟信号。
单片机内部有一个高增益的反相放大器,其输入端XTAL1和XTAL2用于外接晶体和电容,以构成自激振荡器,其发出的脉冲直接送入内部的时钟电路,内接电路如图3.5所示。
外部时钟方式是把外部已有的时钟信号引入到单片机内,如图3.6所示。
本设计的数字电压表采用的是内部时钟电路。
图3.5内部方式时钟电路图3.6外部方式时钟电路
(2)复位电路
单片机复位时,使CPU和系统中的其他功能部件恢复为初始状态,就像计算机的重启,并从这个状态开始工作。
要实现复位操作,必须是RES引脚至少保持两个机器周期(24个振荡器周期)的高电平。
CPU在第二个机器周期内执行内部复位操作,以后每一个机器周期重复一次,直至RES端电平变低。
复位期间不产生ALE及PSEN(非)信号,即ALE=1和PSEN(非)=1。
这表明单片机复位期间不会有任何取指操作。
当RES引脚返回低电平后,CPU从0000H地址开始执行程序。
图3.7上电复位图3.8按键复位
单片机常见的复位电路主要有上电复位电路和按键复位电路。
上电复位电路如图3.7所示,由RC构成微分电路,在上电瞬间,产生一个微分脉冲,其宽度若大于两个机器周期,单片机将复位。
为了保证微分脉冲宽度足够大,RC时间常数应大于两个机器周期,一般取22uF电容、1KΩ电阻。
按键复位电路如图3.8所示,该电路除具有上电复位功能外,若要复位,必须按下图中的REST键,R1、C2仍构成微分电路,使RST端产生一个微分脉冲复位,复位完毕C2经R2放电,等待下一次按下复位按钮。
本设计的数字电压表采用的是按键复位方式。
(三)A/D转换电路
1.A/D转换器工作过程
A/D转换器实际上是将模拟信号转换成数字量的装置,其转换过程主要包括采样、量化、编码三个步骤。
(1)采样、量化部分
采样就是周期性地测量一种连续信号或连续过程信号,测量的周期称为采样周期Ts,采样周期的倒数称为采样频率
(3-1)
在对模拟信号进行模数转换时,A/D转换器从启动变换到转换完成需要一定的转换。
当输入信号频率较高时,由于转换时间的存在,会造成较大的转换误差。
为了防止这种现象的产生,必须在A/D转换开始时将信号电平保持住。
A/D转换器输出数字量的大小只能是某个规定的最小单位的整数倍,即必须把采样电压转化为这个最小数值单位的整数倍,这个转化过程叫做量化,所取的最小数量单位叫做量化单位,其大小等于输出的数字信号最低有效位1所代表的数量大小。
把量化的结果用代码表示出来称为编码。
采样保持电路能将采样后的模拟信号暂时存储起来,保持一个采样周期。
(2)量化、编码部分
量化编码部分是A/D转换器的核心组成部分。
所谓量化,就是采用一组数码来逼近离散模拟信号的幅值,将其转换为数字信号。
将采样信号转换为数字信号的过程称为量化过程。
执行量化动作的装置为A/D转换器。
在实际应用中,串行A/D转换芯片具有占用单片机的引脚资源少,可以简化单片机系统,降低成本的优点,所以串行工作方式的A/D转换器在单片机系统中有着广泛的应用。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8个单断模拟输入信号中的一个进行A/D转换。
ADC0809是最常用的8位A/D转换器,属于逐次逼近型。
ADC0809由单一+5V电源供电,片内带有锁存功能的8路模拟电子开关,可对0~+5V八路的输入电压信号分时进行转换,输出具有TTL三态锁存缓冲器,直接与MCS-51系列单片机数据总线相连,通过适当的外接电路,还可对0~+5V的双极性模拟信号进行A/D转换。
ADC0809片内集成了8路模拟多路开关、地址锁存与译码、8位A/D转换器以及8位三台输出锁存器四部分组成。
ADC0809内部组成结构框图如图3.9所示。
图3.9ADC0809内部组成结构框图
2.A/D转换电路
ADC0809双列直插式封装的引脚配置如图3.10所示。
图3.10ADC0809引脚图
ADC0809具有8路模拟量输入通道IN0---IN7,通过3位地址输入端C、B、A进行选择,用于选通8路模拟输入中的一路。
地址锁存控制端ALE,当输入为高电平时,C、B、A引脚输入的地址锁存于ADC0809内部的锁存器中,经内部译码电路译码选中相应的模拟通道。
启动转换控制端START,其上升沿用于清除ADC内部寄存器,下降沿用于启动控制内部逻辑,使ADC0809开始对输入通道的模拟量进行转换。
A/D转换器,当开始转换时,EOC信号为低电平,经过一段时间,转换结束,转换结束信号EOC输出高电平,转换结果存放于ADC0809内部的输出数据寄存器中。
OE为A/D转换数据输出允许控制端,当OE为高电平时,才能打开输出三态门,将存放于输出数据锁存器中的数据通过ADC0809的数据线D0-D7输出。
ADC0809的时钟信号输入端CLOCK,它的频率决定了A/D转换器的转换速度。
在此,它的频率不能高于640kHz,对应的转换速度为100us。
图3.11A/D转换电路
REF(+)和REF(-)是D/A转换器的参考电压输入线,要求REF(-)不得为负值,REF(+)不得高于Vcc,并且1/2[REF(+)+REF(-)]与1/2Vcc之差不得大于0.1V。
Vcc为+5V电源,GND为接地端。
在连接时,ADC0809的数据线D0-D7端与AT89C52单片机的P0口相连接,ADC0809的地址引脚、地址锁存端ALE、启动信号START、数据输出允许控制端OE与AT89C52的P2口相连接,转换结束信号EOC与AT89C52的P3.7口相连接。
时钟信号输入端CLOCK信号,由单片机的地址锁存信号ALE得到,通过软件实现。
通过SW1和SW2轻触按钮开关给单片机提供选择信号,由单片机控制ADC0809地址输入端,选中相应的模拟通道进行测量。
ADC0809与单片机的连接电路如图3.11所示。
(四)数码显示电路
数码管显示分为动态显示和静态显示两种方式。
所谓静态显示,就是当数码管显示某一个字符时,相应的发光二极管恒定的导通或截止。
这种显示方式,优点是编程简单,显示亮度高,缺点是每一位都需要有一个8位输出口控制,所以占用的硬件较多,所以一般用于数码管比较少的场合。
数码管动态显示是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示段“a,b,c,d,e,f,g,dp”的相同端连接在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示。
在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,虽然实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,达到和静态显示同样的显示效果。
动态显示能够节省大量的I/O口,而且功耗更低。
设计的数字电压表要求可以同时测量8路0-5V的直流电压,测量最大分辨率为0.0196V,并要求最高位用于显示测量电压的地址范围,所以要求数码管至少采用4位显示的数码管。
图3.124位共阳数码管内部引脚分布图
为了方便和减少设计的复杂度,设计采用的是4位共阳数码管来进行测量结果的显示,数码管的内部结构及引脚分布如图3.12所示。
数码管每位的8个LED阳极连接到一个公共端口COM,分别为COM1,COM2,COM3,COM4,把每位相同位置LED段的阴极连接到一个公共端口,分别为a,b,c,d,e,f,g,dp口。
如果采用静态显示方式,则需要4×8=32个I/O口,应用时必须增加扩展芯片和较多驱动器进行驱动,这将很大程度上增加了硬体电路设计的复杂性。
若采用静态显示的方式,只需要12个I/O,其中8个I/O用于连接每位数码管的8位显示段,作为数据端口;另外4个I/O口用于连接每位数码管显示段的公共端,作为扫描端口,控制数字显示。
数码显示电路如图3.13所示。
图3.13数码管动态显示电路
四、系统的程序设计
(一)软件设计思想框图
系统上电时,初始化程序主要用来执行70H-77H内存单元清0和P2口置0等准备工作。
初始化后,单片机片选A/D转换器,然后发出信号启动A/D转换,此时单片机内部定时器/计数器也开始工作,不断扫描A/D转换器结束端口有无结束信号。
如果存在,则启动信号采集,对A/D转换器数据输出口输出的数值进行存储,定时器/计数器重新置零,准备下一次的采集,如果没有,则继续扫描等待。
扫描结束后,进行数据处理,同时进行下一次扫描。
数据处理完之后,利用查表法将电压数值送到数码管显示器进行显示。
在刚上电时,系统默认为循环显示8个通道的电压值状态。
当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间在1s左右。
主程序在调用显示
子程序与测量子程序之间循环。
程序的流程框图如图4.1所示。
图4.1主程序框图
(二)子程序原理和框图
1.显示子程序
显示子程序采用动态扫描法实现4位7段数码管的数值显示。
测量所得的A/D转换数据放在70H-77H内存单元中,测量数据在显示时须经过转换成为十进制BCD码放在78H-7BH单元中,其中7BH存放通道标志数。
寄存器R3用作8路循环控制,R0用作显示数据地址指针。
显示子程序流程图如图4.2所示。
图4.2显示子程序流程图
显示扫描子程序分析如下
voidscan()
{
uchark,n;
inth;
dis[3]=0x01;//通道初值为1
for(n=0;n<8;n++)//每次显示8个数据
{
dis[2]=ad_data[n]/51;//测得值转换为3位BCD码,最大为5.00V
dis[4]=ad_data[n]%51;//余数暂存
dis[4]=dis[4]*10;//计算小数第一位
dis[1]=dis[4]/51;
dis[4]=dis[4]%51;
dis[4]=dis[4