您的当前位置:首页正文

单片机八路数字电压表设计

2023-02-26 来源:年旅网
简易数字电压表的设计

随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。传统的模拟电压表,已有百年的发展历史,虽然经过改进,但是仍然远远不能满足测量的需要。近几十年来随着电子技术的发展,经常需要测量高精度的电压,因此数字电压表应运而生,发展的数度很快。数字电压表作为数字仪表的基础和核心,毫无疑问是电子测量最重要的环节。

电压表是测量仪器中不可缺少的设备,目前广泛应用的是采用专用集成电路实现的数字电压表。在测量仪器中,电压表是必须的,而且电压表的好坏直接影响到测量精度。具有一个精度高、转换速度快、性能稳定的电压表才能符合测量的要求。为此,我们设计了数字电压表,本系统以AT89C51单片机为核心,以逐次逼近式A/D转换器ADC0808、七段数码管为主体,设计了一款简易的数字电压表,能够测量0.00~5.00V的直流电压,最小分辨率为0.02V。

关键词:AT89C51单片机;

电压测量;

A/D转换;

七段数码管

Ι目

摘引

要.................................................................................................................................0言.................................................................................................................................11.1单片机控制模块设计............................................................................................2

1.1.1时钟电路......................................................................................................21.1.2AT89C51芯片功能简介..............................................................................21.2逐次逼近式A/D转换模块设计...........................................................................51.3七段数码管简介....................................................................................................61.4路数电压显示转换控制电路...............................................................................71.5A/D转换电路总体设计.......................................................................................7

1硬件设计..........................................................................................................................2

2软件设计..........................................................................................................................93PROTEUS软件仿真........................................................................................................10

3.1PROTEUS软件简介...........................................................................................10

3.1.1ProteusISIS的启动....................................................................................103.1.2ProteusISIS的工作界面............................................................................113.2KEIL简介.............................................................................................................113.3利用ProteusISIS仿真与调试............................................................................12总结...................................................................................................................................14参考文献...........................................................................................................................15附录

系统源程序...........................................................................................................16

唐山学院课程设计

引言

数字电压表的基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。较之于一般的模拟电压表,数字电压表具有精度高、测量准确、读数直观、使用方便等优点。

在测量仪器中,电压表是必须的,而且电压表的好坏直接影响到测量精度。具有一个精度高、转换速度快、性能稳定的电压表才能符合测量的要求。为此,我们设计了数字电压表,此作品主要由A/D0808转换器和单片机AT89C51构成,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、七段数码管为主体,构造了一款简易的数字电压表,能够实现自动和手动测量8路0.00~5.00V的直流电压,最小分辨率为0.02V。

1唐山学院课程设计

1硬件设计

1.1单片机控制模块设计单片机控制模块的作用是为控制各单元电路的运行并完成数据的换算或处理,主要由单片机、时钟电路、复位电路组成。

1.1.1时钟电路

单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XYAL2两个管脚接一只晶振及两只电容就构成了单片机的时钟电路,电路中电容器C1和C2对振荡频率有微调作用,通常取(30±10)pF石英晶体选择6MHz或12MHz都可以。时钟电路如图1-1所示。

图1-1系统时钟电路1.1.2AT89C51芯片功能简介

主要功能:1.8位CPU;

2.片内振荡器频率范围1.2-12MHZ;3.128字节片内数据存储器;

2唐山学院课程设计

4.4KB片内程序存储器5.程序存储器寻址范围64KB;6.片外数据存储器寻址范围64KB;7.21字节专用寄存器;

8.4个8位并行I/O口:P0P1P2P3;9.1个全双工串行I/O口;10.2个16位定时器/计数器;

11.中断系统有5个中断源,可编程为2个优先级;12.111条指令;

13.有很强的位寻址、位处理能力;14.片内单总线结构;15.单一+5V电源。

MCS-51系列单片机是双列直插式封装的40引脚芯片。如图1-3。

图1-3AT89C51引脚图VCC:电源GND:地

P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱

3唐山学院课程设计

动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。

P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89C51特殊功能(第二功能)使用,在flash编程和校验时,P3口也接收一些控制信号。

RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地DISRTO默认状态下,址8EH)上的DISRTO位可以使此功能无效。复位高电平有效。

ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。ALE将被微弱拉高。否则,这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89C51从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。

EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。

4唐山学院课程设计

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。

1.2逐次逼近式A/D转换模块设计逐次逼近型A/D转换器属于直接型A/D转换器,它能把输入的模拟电压直接转换为输出的数字代码,而不需要经过中间变量。主要由比较器、环形分配器、控制门、寄存器与D/A转换器组成。1.ADC0808引脚功能

图1-4ADC0808引脚图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转换已完成。2.ADC0808内部结构图

逐次逼近型A/D转换器ADC0808由八路模拟开关、地址锁存与译码器、比较器、D/A转换器、寄存器、控制电路和三态输出锁存器等组成。其内部结构如图1-5所示。

5唐山学院课程设计

图1-5ADC0808内部结构1.3七段数码管简介7段LED数码管,是在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。如图1-6。

LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。右图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。

将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如将\"b\"和\"c\"段接上正电源,其它端接地或悬空,那么\"b\"和\"c\"段发光,此时,数码管显示将显示数字“1”。而将\"a\"、\"b\"、\"d\"、\"e\"和\"g\"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。依此类推。

6唐山学院课程设计

图1-67段LED数码管1.4路数电压显示转换控制电路在电路中电压示数是循环显示的,也可以固定显示,转换的自动和手动模式转换可以通过转换开关按钮来控制。按下转换开关后电压路数固定要想读取相应的电压值可以按下相应的控制按钮来切换。如下图1-7显示

图1-7单路数字电压表实现电路1.5A/D转换电路总体设计利用AT89C51和ADC0809附加一些外围电路设计出可以采样模拟信号并将其转换成数字电压值在数码管上显示出来,从而可实现测量电压的功能,实现电路如图1-8。

7唐山学院课程设计

图1-8数字电压表实现电路8唐山学院课程设计

2软件设计

根据硬件电路编写相应的程序,实现电压的采集、转换、处理、显示几个功能,从而实现测量电压的效果。另外利用外部中断一实现通道的手动和自动之间的转换,这是本软件设计的思想。具体程序参见附录一。主设计流程如图2-1。

要实现的功能有:

1.可以测量0~5V范围内的8路直流电压值。

2.在4位LED数码管上轮流显示各路电压值或单路选择显示,其中3位LED数码管显示电压值,显示范围为0.00V~5.00V,1位LED数码管显示路数,8路分别为1-8。

3.测量最小分辨率为0.02V。

开始设置初值启动A/D转换转换是否结束?Y读取A/D转换结果N调转换为查表偏移量的子程序调显示子程序N是否转完一次八个通道?Y图2-1数字电压表程序设计流程9唐山学院课程设计

3PROTEUS软件仿真

3.1PROTEUS软件简介ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

3.1.1ProteusISIS的启动

双击桌面上的ISIS6Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus6Professional”→“ISIS6Professional”,出现如图3-1所示屏幕,表明进入ProteusISIS集成环境。

图3-1启动时的屏幕10唐山学院课程设计

3.1.2ProteusISIS的工作界面

ProteusISIS的工作界面是一种标准的Windows界面,如图3-2所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。

图3-2ProteusISIS的工作界面3.2KEIL简介1.系统概述

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。

KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍KeilC51开发系统各部分功能和使用。

11唐山学院课程设计

2.KeilC51单片机软件开发系统的整体结构

C51工具包的整体结构,如图(1)所示,其中uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

使用独立的Keil仿真器时,注意事项

(1)仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。

(2)仿真器上的复位按钮只复位仿真芯片,不复位目标系统。

(3)仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。

3.3利用ProteusISIS仿真与调试1.将所设计的硬件电路用Proteus画出来,联好各个引脚,图如图1-7。2.在keil里面将编写的程序编译并调试好,没有错误后生成一个*.hex的文件。3.在Proteus中将keil中生成的*.hex的文件软件下载到AT89C51芯片中,保存并运行,看结果是否正确,有问题的话继续调试软硬件,直到结果与预期的基本一致。仿真结果举例如图3-3、3-4。

转换的自动和手动模式转换可以通过按钮SB1和SB0来切换。

12唐山学院课程设计

图3-3用ProteusISIS的数字电压表仿真(通道七)图3-4用ProteusISIS的数字电压表仿真(通道二)13唐山学院课程设计

总结

做了一周的课程设计,我基本上圆满的完成了课设的相关任务,达到了课程设计的技术要求,相信这对以后也是有帮助的。通过课程设计这一实践环节,我对这个学期以来所学到知识有了更深层的理解,而且自己分析问题和解决实际问题的能力也有一定的提高。

同时在这个过程中我也发现了自己许多的不足,包括对所学的基础知识理解不是很透彻,以至于电路设计了很长时间,最后还得连夜赶着写论文。还有对理论知识的运用不很灵活,常常在一个问题想半天,结果还是换一个角度好一点。

本设计以AT89C51单片机为控制核心,通过集成摸数转换芯片ADC0808将被测信号转换成数字信号,经单片机内部程序处理后,由七段数码管显示测量结果。仿真测试表明,系统性能良好,测量读数稳定易读、更新速度合理,直流电压测量范围为0.00~5.00V,最小分辨率为0.02V,满足任务书指标要求。但是,该系统也存在一定程度的不足,例如:输入电压易发生干扰不稳定,且驱动能力可能存在不足,需在被测信号的输入端加上一部分驱动电路,比如将量程转换电路改成带放大能力的自动量程转换电路,将幅值较小的信号经适当放大后再测量,可显著提高精度。

认真的做完这次课程设计实践后,我自己感觉在这些都有了很大的提高。但由于时间原因,这次课程设计没能达到自己预想那么好,但所幸的是功夫不负有心人,所有功能指标都已基本实现了。在接下来的时间里,我会继续把它做好。最后我还总结出了一个结论,当认真的投入到一项工作中时,不但会得到许多收获,还会感觉到很大的乐趣。

14唐山学院课程设计

参考文献

[1]徐爱钧.智能化测量控制仪表原理与设计(第二版).北京:北京航空航天大学出版社,2004[2]吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用.北京:清华大学出版社,2002[3]黄智伟.全国大学生电子设计竞赛训练教程.北京:电子工业出版社,2004[4]汪德彪.MCS-51单片机原理及接口技术(第一版).北京:电子工业出版社,2003[5]张刚毅,彭喜元.单片机原理与应用设计.北京:电子工业出版社,200815唐山学院课程设计

附录

系统源程序

WIN1EQU30HWIN2EQU31HWIN3EQU32HWIN4EQU33HBBCEQU35HSTBITP2.5OE

BITP2.7

CLOCKBITP2.4

ORG0000HLJMPSTARTORG000BHLJMPSTT0ORG001BHLJMPSTT1ORG0030H

INIT:MOVWIN1,#00H

MOVWIN2,#00HMOVWIN3,#00HMOVWIN4,#00H

;初始化子程序;存储单元清零

16唐山学院课程设计

MOVTMOD,#12HMOVTH0,#245MOVTL0,#245MOVTH1,#3CHMOVTL1,#0B0HMOVR1,#20MOV

R0,#0

MOVIE,#8AHSETBTR0RET

;主程序

START:LCALLINITLOOP:

MOVA,#0F0HMOV

P3,A

MOVA,P3ORLA,#0FHCPLAJZ

LOOPLCALL

DELAY

MOVA,#0F0HMOVP3,AMOVA,P3

;定时器初始化

17唐山学院课程设计

MOVR4,AORLA,#0FHCPLAJZ

LOOP

MOVA,#0FHMOVP3,AMOVA,P3ORLA,R4MOV34H,AMOVR5,#00HLOOP1:MOV

A,R5MOVDPTR,#TAB1MOVCA,@A+DPTRCJNEA,34H,LOOP2CJNEA,#1BH,LOOP3LJMPWATLOOP3:MOV

P1,R5LJMPWAIT1LOOP2:INC

R5

LJMPLOOP1

WAT:MOVP1,R5

18唐山学院课程设计

SETBTR1

WAIT1:CLRST

SETBSTCLRSTMOVR7,#60HDJNZR7,$SETBOEMOVBBC,P0CLROE

ZH:MOVA,BBC;将转化结果变为可显示的BCD码存入相应的单元

MOVB,#51DIVABMOVWIN3,AMOVA,BMOVB,#02HMULABMOVR3,AANLA,#0FHMOVWIN2,AMOVA,R3SWAP

A

19;启动AD转换

;延时等待转换结束

;个位存放在32H

唐山学院课程设计

ANLA,#0FHMOVWIN1,ALCALLEXP0

30

LCALLEXP01LJMP

LOOP

STT1:MOVTH1,#3CH

MOVTL1,#0B0HDJNZR1,SSMOVR1,#20INCR0MOVA,R0CJNEA,#8,LP1MOVR0,#0LP1:MOVP1,R0SS:RETI

STT0:CPLCLOCK

RETI

;显示子程序

EXP0:MOVDPTR,#TAB

MOVA,WIN3

;小数点后第二位存放在

;显示子程序

20唐山学院课程设计

MOVCA,@A+DPTRCLRP2.3ADDA,#80HMOVP1,ALCALLDELAYSETBP2.3MOVA,WIN2MOVCA,@A+DPTRCLRP2.2MOVP1,ALCALLDELAYSETBP2.2MOVA,WIN1MOVCA,@A+DPTRCLRP2.1MOVP1,ALCALLDELAYSETBP2.1RET

EXP01:MOVWIN4,R0

MOVA,WIN4MOVCA,@A+DPTR

21唐山学院课程设计

CLRP2.0MOVP1,ALCALLDELAYSETBP2.0RET

DELAY:MOVR7,#100

DJNZR7,$RET

TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHTAB1:DB36H,35H,33H,2EH,2DH,2BH,1EH,1DH,1BH

END

22

因篇幅问题不能全部显示,请点此查看更多更全内容