简易数字电压表课程设计.docx
《简易数字电压表课程设计.docx》由会员分享,可在线阅读,更多相关《简易数字电压表课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
![简易数字电压表课程设计.docx](https://file1.bdocx.com/fileroot1/2023-7/16/f3ee7245-3184-40b8-978b-2a49f90b8d4e/f3ee7245-3184-40b8-978b-2a49f90b8d4e1.gif)
简易数字电压表课程设计
电子测量结课作业
简易数字电压表
指导教师:
学院:
专业班级:
姓名:
学号:
摘要
本文介绍了一种基于单片机的简易数字电压表的设计。
该设计主要由三个模块组成:
A/D转换模块,数据处理模块及显示模块。
A/D转换主要由芯片ADC0832来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
数据处理则由芯片AT89C52来完成,其负责把ADC0832传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着ADC0832芯片工作。
该系统的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。
此数字电压表可以测量0-5V的1路模拟直流输入电压值,并通过一个LCD1602液晶屏显示出来。
关键词:
单片机;数字电压表;A/D转换;AT89C52;ADC0832
1数字电压表的简介
1.1数字电压表简介
在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
1.2数字电压表的的背景与意义
电压表已经有100多年的发展历史,虽然不断改进与完善,仍然无法满足现代电子测量的需求,近二十年,微电子技术,计算机技术,集成技术,网络技术等高新技术得到了迅猛发展。
这一背景和形势,不断地向仪器仪表提出了更高、更新、更多的要求,如要求速度更快、灵敏度更高、稳定性更好、样品量更少、遥感遥测更远距、使用更方便、成本更低廉、无污染等。
同时也为仪器仪表科技与产业的发展提供了强大的推动力,并成了仪器仪表进一步发展的物质、知识和技术基础。
数字电压表(Digital Voltmeter简称DVM)自1952年问世以来,显示出强大的生命力,现已成为在电子测量领域中应用最广泛的一种仪器。
数字电压表可以显示清晰、直观,读数准确,准确度高,分辨力强,测量范围广,扩展能力强,测量速度快,输入阻抗高,集成度高,微功耗和抗干扰能力强等优点,独占电压表产品的熬头。
DVM的高速发展,使它已成为实现测量自动化、提高工作效率不可缺少的仪表,数字化是当前计量仪器发展的主要方向之一,而高准度的DC-DVC的出现,又使DVM进入了精密标准测量领域。
随着现代化技术的不断发展,数字电压表的功能和种类将越来越强,越来越多,其使用范围也会越来越广泛。
采用智能化的数字仪器也将是必然的趋势,它们将不仅能提高测量准确度,而且能提高电测量技术的自动化程序,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表(如:
温度计、湿度计、酸度计、重量、厚度仪等),几乎覆盖了电子电工测量、工业测量、自动化仪表等各个领域。
从而提高计量检定人员的工作效。
目前数字电压表的内部核心部件是A/D转换器,转换器的精度很大程度上影响着数字电压表的准确度,本毕业设计A/D转换器采用ADC0832对输人模拟信号进行转换,控制核心AT89C52再对转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号。
2设计总体方案
该设计主要由三个模块组成:
A/D转换模块,数据处理模块及显示模块。
A/D转换主要由芯片ADC0832来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块;数据处理则由芯片AT89C52来完成,其负责把ADC0832传送来的数字量经过一定的数据处理;产生相应的显示码送到显示模块进行显示。
2.1设计要求
1、以MCS-52系列单片机为核心器件,组成一个简单的直流数字电压表。
2、采用1路模拟量输入,能够测量0-5V之间的直流电压值。
3、电压显示采用LCD1602液晶屏显示,至少能够显示两位小数。
4、所用的元件较少,成本低,且测量精度和可靠性较高。
2.2设计思路
1、根据设计要求,选择AT89C52单片机为核心控制器件。
2、A/D转换采用ADC0832实现,与单片机的接口P1的部分口连接。
3、电压显示采用LCD1602液晶屏显示。
4、LCD1602数据传输接口是单片机的P0口,单片机P0需要接上拉电阻。
为方便移植,只需将LCD1602三个控制端口与P2口连接即可。
2.3设计方案
本设计硬件电路设计由6个部分组成:
A/D转换电路,AT89C52单片机系统,LCD显示系统、时钟电路、复位电路以及测量电压输入电路。
总体硬件电路框图如图2.1所示。
图2.1系统硬件设计框图
3硬件电路设计
3.1A/D转换模块
现实世界的物理量都是模拟量,能把模拟量转化成数字量的器件称为模/数转换器(A/D转换器),A/D转换器是单片机数据采集系统的关键接口电路,按照各种A/D芯片的转化原理可分为逐次逼近型,双重积分型等等。
双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点。
与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,比如ADC0809、ADC0808等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送到单片机进行分析和显示。
一个n位的逐次逼近型A/D转换器只需要比较n次,转换时间只取决于位数和时钟周期,逐次逼近型A/D转换器转换速度快,因而在实际中广泛使用。
(1)逐次逼近型A/D转换器原理
逐次逼近型A/D转换器是由一个比较器、A/D转换器、存储器及控制电路组成。
它利用内部的寄存器从高位到低位一次开始逐位试探比较。
转换过程如下:
开始时,寄存器各位清零,转换时,先将最高位置1,把数据送入A/D转换器转换,转换结果与输入的模拟量比较,如果转换的模拟量比输入的模拟量小,则1保留,如果转换的模拟量比输入的模拟量大,则1不保留,然后从第二位依次重复上述过程直至最低位,最后寄存器中的内容就是输入模拟量对应的二进制数字量。
其原理框图如图3.1所示:
图3.1逐次逼近式A/D转换器原理图
(2)ADC0832主要特性
ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。
其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。
芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。
独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。
通过DI数据输入端,可以轻易的实现通道功能的选择。
(3)ADC0832的外部引脚排列如图3.2所示。
各引脚说明如下:
图3.2ADC0832的引脚图
● CS——片选端,低电平有效。
● CH0,CH1——两路模拟信号输入端。
● DI——两路模拟输入选择输入端。
● DO——模数转换结果串行输出端。
● CLK——串行时钟输入端。
● Vcc/REF——正电源端和基准电压输入端。
● GND——电源地。
(4)单片机对ADC0832的控制原理
一般情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。
但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。
当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。
当要进行A/D转换时,须先将CS端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK提供时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。
在第1个时钟脉冲到来之前DI端必须是高电平,表示启动位。
在第2、3个时钟脉冲到来之前DI端应输入2位数据用于选择通道功能,其功能项见表3.1所示。
表3.1功能表
如表3-1所示,当配置位2位数据为1、0时,只对CH0 进行单通道转换。
当配置2位数据为1、1时,只对CH1进行单通道转换。
当配置2位数据为0、0时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。
当配置2位数据为0、1时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。
到第3个时钟脉冲到来之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。
从第4个时钟脉冲开始由DO端输出转换数据最高位D7,随后每一个脉冲DO端输出下一位数据。
直到第11个脉冲时发出最低位数据D0,一个字节的数据输出完成。
也正是从此位开始输出下一个相反字节的数据,即从第11个时钟脉冲输出D0。
随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D转换的结束。
最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了,图3.3为ADC0832时序图。
图3.3ADC0832时序图
3.2单片机系统
(1)AT89C52性能
AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C52功能性能:
与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:
1000次写/擦循环;数据保留时间:
10年;全静态工作:
0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式。
(2)AT89C52各引脚功能
AT89C52提供以下标准功能:
4KB的Flash闪速存储器,128B内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时,AT89C52可降至0Hz静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作,掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有工作直到下一个硬件复位。
AT89C52采用PDIP封装形式,引脚配置如图3.4所示。
图3.4AT89C52的引脚图
AT89C52芯片的各引脚功能为:
P0口:
这组引脚共有8条,P0.0为最低位。
这8个引脚有两种不同的功能,分别适用于不同的情况,第一种情况是89C52不带外存储器,P0口可以为通用I/O口使用,P0.0-P0.7用于传送CPU的输入/输出数据,这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是89C52带片外存储器,P0.0-P0.7在CPU访问片外存储器时先传送片外存储器的低8位地址,然后传送CPU对片外存储器的读/写数据。
P0口为开漏输出,在作为通用I/O使用时,需要在外部用电阻上拉。
P1口:
这8个引脚和P0口的8个引脚类似,P1.7为最高位,P1.0为最低位,当P1口作为通用I/O口使用时,P1.0-P1.7的功能和P0口的第一功能相同,也用于传送用户的输入和输出数据。
P2口:
这组引脚的第一功能与上述两组引脚的第一功能相同即它可以作为通用I/O口使用,它的第一功能和P0口引脚的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但并不是像P0口那样传送存储器的读/写数据。
P3口:
这组引脚的第一功能和其余三个端口的第一功能相同,第二功能为控制功能,每个引脚并不完全相同,如下表3.2所示:
表3.2P3口各位的第二功能
P3口各位
第二功能
P3.0
RXT(串行口输入)
P3.1
TXD(串行口输出)
P3.2
/INT0(外部中断0输入)
P3.3
/INT1(外部中断1输入)
P3.4
T0(定时器/计数器0的外部输入)
P3.5
T1(定时器/计数器1的外部输入)
P3.6
/WR(片外数据存储器写允许)
P3.7
/RD(片外数据存储器读允许)
Vcc为+5V电源线,Vss接地。
ALE:
地址锁存允许线,配合P0口的第二功能使用,在访问外部存储器时,89C52的CPU在P0.0-P0.7引脚线去传送随后而来的片外存储器读/写数据。
在不访问片外存储器时,89C52自动在ALE线上输出频率为1/6震荡器频率的脉冲序列。
该脉冲序列可以作为外部时钟源或定时脉冲使用。
/EA:
片外存储器访问选择线,可以控制89C52使用片内ROM或使用片外ROM,
若/EA=1,则允许使用片内ROM,若/EA=0,则只使用片外ROM。
/PSEN:
片外ROM的选通线,在访问片外ROM时,89C52自动在/PSEN线上产生一个负脉冲,作为片外ROM芯片的读选通信号。
RST:
复位线,可以使89C52处于复位(即初始化)工作状态。
通常89C52复位有自动上电复位和人工按键复位两种。
XTAL1和XTAL2:
片内震荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接89C52片内OSC(震荡器)的定时反馈回路。
3.3复位电路和时钟电路
(1)复位电路设计
单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。
MCS-51单片机有一个复位引脚RST,采用施密特触发输入。
当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位。
复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只要RST恢复低电平后,单片机才能进入其他工作状态。
单片机的复位方式有上电自动复位和手动复位两种,图3.5是51系列单片机统常用的上电复位和手动复位组合电路,只要Vcc上升时间不超过1ms,它们都能很好的工作。
图3-5复位电路
(2)时钟电路设计
单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。
CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。
MCS-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路。
本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个晶振和2个电容即可,如图3.6所示。
图3.6时钟电路
电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是30±10pF,在这个系统中选择了22pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率。
3.4LCD显示系统设计
(1)LCD的选择
在应用系统中,设计要求不同,使用的LCD显示器的位数也不同,因此就生产了位数,尺寸,型号不同的LCD显示器供选择,在本设计中,选择采用LCD1602液晶屏显示。
LCD1602是字符型液晶,显示字母和数字比较方便,控制简单,成本较低。
(2)LCD1602显示器的管脚功能
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3.3所示。
表3.3引脚接口说明表
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
(3)LCD显示器与单片机接口设计
由于单片机的并行口不能直接驱动LCD显示器,所以在一般情况下,必须采用专用的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作。
如果驱动电路能力差,即负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,LCD显示器的驱动电路设计是一个非常重要的问题。
为了简化数字式直流电压表的电路设计,在LCD驱动电路的设计上,可以利用单片机P0口上外接的上拉电阻来实现,即将LCD的D0-D7段显示引脚与P0口并联到上拉电阻之间,这样,就可以加大P0口作为输出口德驱动能力,使得LCD能按照正常的亮度显示出数字。
3.5总体电路设计
经过以上的设计过程,可设计出基于单片机的简易数字直流电压表硬件电路原理图如图3.7所示。
图3.7简易数字电压表电路图
此电路的工作原理是:
+5V模拟电压信号通过变阻器VR1分压后由ADC0832的IN0通道进入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低电平),经过模/数转换后,产生相应的数字量经过其输出通道D0-D7传送给AT89C52芯片的P1口,并且此时单片机AT89C52负责把接收到的数字量经过数据处理,产生正确的信号传给LCD1602,LCD1602经过正确的线段显示。
此外,AT89C52还控制ADC0832的工作。
数字直流电压表的硬件电路设计完成,就可以选取相应的芯片和元器件,Proteus软件绘制出硬件的原理,并仔细地检查,直至形成完善的硬件原理图。
但要真正实现电路对电压的测量和显示的功能,还需要有相应的软件配合,才能达到设计要求。
4程序设计
系统的软件程序中主函数含有初始化程序,同时分别调用AD0832转换程序、数据转换程序、显示函数,在显示程序中包含LCD1602驱动程序。
以此完成整个系统的运行。
4.1程序设计总方案
根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图4.1所示。
图4.1数字式直流电压表主程序框图
4.2系统子程序设计
(1)初始化程序
所谓初始化,是对将要用到的MCS_52系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。
(2)显示子程序
显示子程序采用字符型液晶显示,此模块模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。
在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现11μs定时,通过软件延时程序来实现5ms的延时。
(3)A/D转换子程序
A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图4.2所示。
图4.2A/D转换流程图
5仿真
5.1软件调试
软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。
Proteus软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。
Proteus支持的微处理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。
Proteus可以完成单片机系统原理图电路绘制、PCB设计,更为显著点的特点是可以与uVisions3IDE工具软件结合进行编程仿真调试。
本系统的调试主要以软件为主,其中系统电路图的绘制和仿真采用的是Proteus软件,而程序方面,采用的是C语言,用Keil软件将程序写入单片机。
5.2显示结果及误差分析
5.2.1显示结果
1.当IN0口输入电压值为0V时,显示结果如图5.1所示,测量误差为0.01V。
图5.1输入电压为0V时,LCD的显示结果
2.当IN0输入电压值为2.10V时,显示结果如图5.2所示。
测量误差为0.01V。
图5.2输入电压为2.10V时,LCD的显示结果
3.当IN0口输入电压值为5.00V时,显示结果如图5.3。
测量误差为0V。
图5.3输入电压为5.00V时,LCD的显示结果
5.2.2误差分析
通过以上仿真测量结果可得到简易数字电压表与“标准”数字电压表对比测试表,如下表5.1所示:
表5.1简易数字电压表与“标准”数字电压表对比测试表
标准电压值/V
简易电压表测量值/V
绝对误差/V
0.00
0.00
0.01
0.50
0.50
0.00
1.00
1.00
0.00
1.50
1.50
0.00
2.10
2.11
0.01
2.50
2.50
0.00
3.00
3.00
0.00
3.55
3.56
0.01
4.00
4.00
0.00
5.00
5.00
0.00
由于单片机AT89C52为8位处理器,当输入电压为5.00V时,ADC0832输出数据值为255(FFH),因此单片机最高的数值分辨率为0.0196V(5/255)。
这就决定了电压表的最高分辨率只能到0.0196V,从上表可看到,测试电压一般以0.02V的幅度变化。
从上表可以看出,简易数字电压表测得的值基本上比标准电压值偏大0-0.01V,这可以通过校正ADC0832的基准电压来解决。
因为该电压表设计时直接用5V的供电电源作为电压,所以电压可能有偏差。
当要测量大于5V的电压时,可在输入口使用分压电阻,而程序中只要将计算程序的除数进行调整就可以了。
结论
经过一段时间的努力,毕业论文-基于单片机的简易数字电压表基本完成。
但设计中的不足之处仍然存在。
这次设计是我第一次设计电路,并用Proteus实现了仿真。
在这过程中,我对电路设计,单片机的使用等