数字电压表

更新时间:2024-04-10 19:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

摘 要

一些传统测量仪器使用复杂,容易造成读数误差。人们想用更加直接的方式读取想要的数据,减小读数误差。为了解决这个问题,各种数字显示仪器应运而生。尤其是近年来,随着大规模集成技术的发展,测量仪器精度越来越高,并且使用更加方便。

本文提出基于AT89C51的数字电压表,将模拟电压量直接转换成数字量并用数码管显示。首先介绍所用单片机的基本功能,以及所用集成电路的各管脚功能。其次对设计方案做整体介绍,模拟电压量经过模数转换芯片ADC0809转换成数字量,送入单片机进行处理。最后输出的数据在经过CD4511译码直接驱动数码管显示电压大小。最后介绍程序设计方案,用汇编语言编写最终代码,并用KEIL和PROTUES联机调试进行仿真。调试完成之后进行硬件焊接,实地测试并行改进。

关键词:集成电路 单片机 模数转换 汇编语言 KEIL PROTUES

ABSTRACT

ABSTRACT

The method of using some traditional survey tools is very complex and some errors result from our eyes. So some people want to get the result in a more direct way. The error made by our eyes can be avoided. To solve this problem, some survey tools displaying its result in number have been produced. In resent years,with the development of the large integrated circuit,the survey tool is more convenient to use with high accuracy.

This thesis comes up with the digital voltmeter based on the chip microcomputer AT89C51. The digital quantity displayed by Nixie tube are converted from analog quantity directly. Firstly , this thesis introduce the based function of the microcomputer and the integrated circuit. The meaning of their pins will be explained in detail. Secondly , a overall summary will be made to introduce my design scheme. The analog quantity can be converted into the digital quantity by the analog to digital converter ADC0809. Then data processed by the chip microcomputer will be transmitted into the encoder CD4511. The result will be displayed on the digital tube drived by the encoder. Finally, this thesis introduces the program code wrote in the assembly language. The circuit will be simulated by the KEIL and PROTUES. Hardware circuit are made after the simulation. The worker should be tested in practise and improved.

Keyword: integrated circuit chip microcomputer analog to digital

assembly language KEIL PROTUES

目 录 i

目 录

第一章 绪论 ............................................ 1

1.1 数字电压表简介 ...................................... 1 1.2 数字电压表的优点 ..................................... 1 1.3 数字电压表发展趋势 .................................. 2 1.4 设计电压表基本工作原理 .............................. 2 第二章 总体方案设计 ..................................... 3

2.1 设计要求 ............................................ 3 2.2 设计思路 ............................................ 3 2.3设计方案.............................................. 3 第三章 硬件电路设计 .................................... 5

3.1 单片机统 ............................................. 5

3.1.1 单片机的定义 ................................... 5 3.1.2 AT89C51性能 ................................... 5 3.1.3 AT89C51各管脚功能 ............................. 6 3.2 复位电路和时钟电路 ................................... 8 3.2.1 复位电路 ........................................... 8

3.2.2 时钟电路设计 ................................... 9 3.3 A/D转换模块......................................... 10

3.3.1 逐次逼近式 A/D转换器工作原理 .................. 10 3.3.2 ADC0809 主要特征 .............................. 11 3.3.3 ADC0809外部引脚特征 .......................... 11 3.4 LED显示系统设计 ................................... 14

3.4.1 LED基本结构 .................................. 14 3.4.3 LED译码方式 .................................. 17 3.4.4 LED显示器与单片机接口设计 .................... 17 3.5总体电路设计......................................... 18 第四章 程序设计 .........................................21

4.1 程序设计总方案 ..................................... 21 4.2 系统子程序设计 ..................................... 21

4.2.1 初始化程序 ................................... 21 4.2.2 A/D转换子程序 ................................ 21 4.2.3 显示子程序 ................................... 22 4.3编程软件KEIL简介 ................................... 22

4.3.3 KEIL的优点 ................................... 23 4.4 protues仿真软件简介 ................................ 23

4.4.1 软件概述 ...................................... 23 4.4.2 软件的特点 ................................... 24 4.5汇编源程序代码....................................... 25 第五章 仿真与调试 .....................................27

5.1 软件仿真 ............................................ 27

ii 目录

5.2显示结果及误差分析 ................................... 27

5.2.1 显示结果 ....................................... 27 5.2.1 误差分析...................................... 29

第六章 总 结 ........................................... 31 致 谢 ............................................... 33 参考文献 ............................................... 35

第一章 绪论 1

第一章 绪论

1.1 数字电压表简介

在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本文重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力理。

1.2 数字电压表的优点

传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。数字电压表是诸多数字化仪表的核心与基础[2]。以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。

最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了

2 数字电压表

数字电压表的快速发展,并不断出现新的类型。数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC化),另一方面,精度也从0.01%到0.005%。

1.3 数字电压表发展趋势

目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面。A/D转换器分成四种:计数式A/D转换器、双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。

目前最常用的是双积分式A/D转换器和逐次逼近式A/D转换器,其中双积分式A/D转换器的主要优点是转换精度高,抗干扰性能好,价格便宜。但是其转换速度慢,因此这种转换器这种转换器主要用于速度要求不高的场合。而逐次逼近式A/D转换器转换速度快,但精度相对较差。因此未来的A/D转换器将兼顾精度和速度,成本也会随着集成电路的发展而降低。

1.4 设计电压表基本工作原理

本文介绍了一种基于单片机的简易数字电压表的设计。该设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。数据处理则由芯片AT89C51来完成,其负责把ADC0809传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着ADC0809芯片工作。

该系统的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。此数字电压表可以测量0-5V的1路模拟直流输入压 并通过一个两位一体的7段数码管显示出来。

第二章 总体方案设计 3

第二章 总体方案设计

2.1 设计要求

⑴以MCS-51系列单片机为核心器件,组成一个简单的直流数字电压表 ⑵采用1路模拟量输入,能够测量0-5V之间的直流电压值

⑶电压显示用两位一体的LED数码管显示,至少能够显示一位小数。 ⑷尽量使用较少的元器件。

2.2 设计思路

表电路尽量采用中、大规模集成电路。它主要由模拟电路和数字电路两大部分组成,模拟部分包括输入放大器、A/D转换器、和基准电源;数字部分包括计数器、译码器、逻辑控制器、振荡器和显示器。其中,A/D转换器将输入的模拟量转换成数字量,逻辑控制电路产生控制信号,按规定的时序将A/D转换器中各组模拟开关接通或断开,保证A/D转换正常进行。A/D转换结果通过计数译码电路变换成笔段码,最后驱动显示器显示相应的数值。

⑴根据设计要求,选择AT89C51单片机为核心控制器件。

⑵A/D转换采用ADC0808实现,与单片机的接口为P1口和P3口的高四 位引脚。

⑶电压显示采用两位一体的LED数码管。

⑷LED数码的段码输入,由并行端口P0产生:位码输入,用并行端口P2 低两位产生;小数点位由P2口产生。

2.3设计方案

硬件电路设计由6个部分组成; A/D转换电路,AT89C51单片机、LED显示系统、时钟电路、复位电路以及测量电压输入电路。硬件电路

4 数字电压表

设计框图如图2.1所示。

AT89C51 时钟电路 P1 P3 P0 复位电路 P2 显示 A/D转换 测量电压输入

图2.1 数字电压表总体设计方框图

第三章 硬件电路设计 5

第三章 硬件电路设计

3.1 单片机统

3.1.1 单片机的定义

单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。 3.1.2 AT89C51性能

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,它为很多

6 数字电压表

嵌入式控制系统提供了一种灵活性高且价廉的方案。

AT89C51功能性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:1000次写/擦循环;数据保留时间:10年;全静态工作:0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式。 3.1.3 AT89C51各管脚功能

AT89C51提供以下标准功能:4KB的Flash闪速存储器,128B内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时,AT89C51可降至0Hz静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作,掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有工作直到下一个硬件复位。AT89C51采用PDIP封装形式,引脚配置如图3.1所示。

图3.1 AT89C51的引脚图

AT89C51芯片的各引脚功能为:

P0口:这组引脚共有8条,P0.0为最低位。这8个引脚有两种不同的功能,分别适用于不同的情况,第一种情况是89C51不带外存储器,

第三章 硬件电路设计 7

P0口可以为通用I/O口使用,P0.0-P0.7用于传送CPU的输入/输出数据,这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是89C51带片外存储器,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.2 P3口各位的第二功能

P3口各位 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXT(串行口输入) TXD(串行口输出) /INT0(外部中断0输入) /INT1(外部中断1输入) T0(定时器/计数器0的外部输入) T1(定时器/计数器1的外部输入) /WR(片外数据存储器写允许) /RD(片外数据存储器读允许) Vcc为+5V电源线,Vss接地。

ALE:地址锁存允许线,配合P0口的第二功能使用,在访问外部存储器时,89C51的CPU在P0.0-P0.7引脚线去传送随后而来的片外存储

8 数字电压表

器读/写数据。在不访问片外存储器时,89C51自动在ALE线上输出频率为1/6震荡器频率的脉冲序列。该脉冲序列可以作为外部时钟源或定时脉冲使用。

/EA:片外存储器访问选择线,可以控制89C51使用片内ROM或使用片外ROM,

若/EA=1,则允许使用片内ROM, 若/EA=0,则只使用片外ROM。

/PSEN:片外ROM的选通线,在访问片外ROM时,89C51自动在/PSEN线上产生一个负脉冲,作为片外ROM芯片的读选通信号。

RST:复位线,可以使89C51处于复位(即初始化)工作状态。通常89C51复位有自动上电复位和人工按键复位两种。

XTAL1和XTAL2:片内震荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接89C51片内OSC(震荡器)的定时反馈回路。

3.2 复位电路和时钟电路

3.2.1 复位电路

单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,采用施密特触发输入。当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位[1]。复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只要RST恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自动复位和手动复位两种,图3.3是51系列单片机统常用的上电复位和手动复位组合电路,只要Vcc上升时间不超过1ms,它们都能很好的工作。

第三章 硬件电路设计 9

图3.3 复位电路

3.2.2 时钟电路设计

单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。MCS-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路[1]。

本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个晶振和 2个电容即可,如图3.4所示。

图3.4 时钟电路

电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是30±10pF,在这个系统中选择了30pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是6MHz,因而时钟信号的震荡频率为6MHz。

10 数字电压表

3.3 A/D转换模块

现实世界的物理量都是模拟量,能把模拟量转化成数字量的器件称为模/数转换器(A/D转换器),A/D转换器是单片机数据采集系统的关键接口电路,按照各种A/D芯片的转化原理可分为逐次逼近型,双重积分型等等。双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点。与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,比如ADC0809、ADC0808等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送到单片机进行分析和显示。一个n位的逐次逼近型A/D转换器只需要比较n次,转换时间只取决于位数和时钟周期,逐次逼近型A/D转换器转换速度快,因而在实际中广泛使用。 3.3.1 逐次逼近式 A/D转换器工作原理

逐次逼近型A/D转换器是由一个比较器、A/D转换器、存储器及控制电路组成。它利用内部的寄存器从高位到低位一次开始逐位试探比较。 转换过程如下:

开始时,寄存器各位清零,转换时,先将最高位置1,把数据送入A/D转换器转换,转换结果与输入的模拟量比较,如果转换的模拟量比输入的模拟量小,则1保留,如果转换的模拟量比输入的模拟量大,则1不保留,然后从第二位依次重复上述过程直至最低位,最后寄存器中的内容就是输入模拟量对应的二进制数字量。其原理框图如图3.5所示:

第三章 硬件电路设计 11

输入数字顺序脉冲发生器 逐次逼近寄存器 ADC 电压 比较器 输入电压

图3.5 逐次逼近式A/D转换器原理图

3.3.2 ADC0809 主要特征

ADC0809是CMOS单片型逐次逼近式A/D转换器,带有使能控制端,与微机直接接口,片内带有锁存功能的8路模拟多路开关,可以对8路0-5V输入模拟电压信号分时进行转换,由于ADC0809设计时考虑到若干种模/数变换技术的长处,所以该芯片非常适应于过程控制,微控制器输入通道的接口电路,智能仪器和机床控制等领域。

ADC0809主要特性:8路8位A/D转换器,即分辨率8位;具有锁存控制的8路模拟开关;易与各种微控制器接口;可锁存三态输出,输出与TTL兼容;转换时间:128μs;转换精度:0.2%;单个+5V电源供电;模拟输入电压范围0- +5V,无需外部零点和满度调整;低功耗,约15mW。 3.3.3 ADC0809外部引脚特征

ADC0809芯片有28条引脚,采用双列直插式封装,其引脚图如图3.6所示。

12 数字电压表

图3.6 ADC0809引脚图

下面说明各个引脚功能:

IN0-IN7(8条):8路模拟量输入线,用于输入和控制被转换的模拟电压。

地址输入控制(4条):

ALE:地址锁存允许输入线,高电平有效,当ALE为高电平时,为地址输入线,用于选择IN0-IN7上那一条模拟电压送给比较器进行A/D转换。

ADDA,ADDB,ADDC:3位地址输入线,用于选择8路模拟输入中的一路,其对应关系如表3.7所示:

表3.7 ADC0809通道选择表

地址码 对应的输入C B A 通道 0 0 0 IN0 0 0 1 IN1 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5 1 1 0 IN6 1 1 1 IN7 第三章 硬件电路设计 13

START:START为“启动脉冲”输入法,该线上正脉冲由CPU送来,宽度应大于100ns,上升沿清零SAR,下降沿启动ADC工作。

EOC: EOC为转换结束输出线,该线上高电平表示A/D转换已结束,数字量已锁入三态输出锁存器。

D1-D8:数字量输出端,D1为高位。

OE:OE为输出允许端,高电平能使D1-D8引脚上输出转换后的数字量。

REF+、REF-:参考电压输入量,给电阻阶梯网络供给标准电压。 Vcc、GND: Vcc为主电源输入端,GND为接地端,一般REF+与Vcc连接在一起,REF-与GND连接在一起.

CLK:时钟输入端。

3.3.4 ADC0809的内部结构及工作流程

ADC0809由8路模拟通道选择开关,地址锁存与译码器,比较器,8位开关树型A/D转换器,逐次逼近型寄存器,定时和控制电路和三态输出锁存器等组成,其内部结构如图3.8所示。

图3.8 ADC0809的内部结构

其中:

(1)8路模拟通道选择开关实现从8路输入模拟量中选择一路送给后面

14 数字电压表

的比较器进行比较。

(2)地址锁存与译码器用于当ALE信号有效时,锁存从ADDA、ADDB、ADDC 3根地址线上送来的3位地址,译码后产生通道选择信号,从8路模拟通道中选择当前模拟通道。

(3)比较器,8位开关树型A/D转换器,逐次逼近型寄存器,定时和控制电路组成8位A/D转换器,当START信号有效时,就开始对当前通道的模拟信号进行转换,转换完成后,把转换得到的数字量送到8位三态锁存器,同时通过引脚送出转换结束信号。

(4)三态输出锁存器保存当前模拟通道转换得到的数字量,当OE信号有效时,把转换的结果送出。 ADC0809的工作流程为:

(1)输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器从8路模拟通道中选通1路模拟量送给比较器。

(2)送START一高脉冲,START的上升沿使逐次寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。

(3)当转换结束时,转换的结果送入到输出三态锁存器中,并使EOC信号回到高电平,通知CPU已转换结束。

(4)当CPU执行一读数据指令时,使OE为高电平,则从输出端D0-D7读出数据。

3.4 LED显示系统设计

3.4.1 LED基本结构

LED是发光二极管显示器的缩写。LED由于结构简单、价格便宜、与单片机接口方便等优点而得到广泛应用。LED显示器是由若干个发光二极管组成显示字段的显示器件。在单片机中使用最多的是七段数码显示器。LED七段数码显示器由8个发光二极管组成显示字段,其中7个长

第三章 硬件电路设计 15

条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可用来显示各种数字。LED引脚排列如下图3.9所示:

图3.9 LED引脚排列

led数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等....,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。led数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用LED数码管内部引脚图

图3.10 10引脚的LED数码管

16 数字电压表

图3.10 这是一个7段两位带小数点 10引脚的LED数码管,本设计就选用了这样的数码管。

每一笔划都是对应一个字母表示 DP是小数点。

LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。 A、静态显示驱动:

静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O埠进行驱动,或者使用如BCD码二-十进位*器*进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O埠多,如驱动5个数码管静态显示则需要5×8=40根I/O埠来驱动,要知道一个89S51单片机可用的I/O埠才32个呢。故实际应用时必须增加*驱动器进行驱动,增加了硬体电路的复杂性。 B、动态显示驱动:

数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\,b,c,d,e,f,g,dp \的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。

透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O埠,而且功耗更低。

第三章 硬件电路设计 17

7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常泛。 因此本设计采用了动态显示的方案,减小系统对I/O的使用数量。 3.4.3 LED译码方式

译码方式是指由显示字符转换得到对应的字段码的方式,对于LED数码管显示器,通常的译码方式有硬件译码和软件译码方式两种。

硬件译码是指利用专门的硬件电路来实现显示字符码的转换。本方案采用了硬件译码的方式,使用了集成译码芯片CD4511。

软件译码就是编写软件译码程序,通过译码程序来得到要显示的字符的字段码,译码程序通常为查表程序。 3.4.4 LED显示器与单片机接口设计

由于单片机的并行口不能直接驱动LED显示器,所以,在一般情况下,必须采用专用的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作[7]。如果驱动电路能力差,即负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,LED显示器的驱动电路设计是一个非常重要的问题。

为了简化数字式直流电压表的电路设计,在LED驱动电路的设计上,可以利用单片机P0口上外接的上拉电阻来实现,即将LED的A-G段显示引脚和DP小数点显示引脚并联经过CD4511接到到P0口与上拉电阻之间,这样,就可以加大P0口作为输出口的驱动能力,使得LED能按照正常的亮度显示出数字,如图3.12所示。

18 数字电压表

RP1+5v1k1U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617+5v71263452345678U2ABCDLTBILE/STB4511QAQBQCQDQEQFQG131211109151418XTAL29RST293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51 图3.12 数码管与单片机之间的连接

3.5总体电路设计

经过以上的设计过程,可设计出基于单片机的简易数字直流电压表硬件电路原理图如图3,13所示。此电路的工作原理是:+5V模拟电压信号通过变阻器VR1分压后由ADC08009的IN0通道进入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低电平),经过模/数转换后,产生相应的数字量经过其输出通道D0-D7传送给AT89C51芯片的P1口,AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码传送给CD4511译码后驱动LED,同时它还通过其三位I/O口P2.0、P2.1、P2.2产生位选信号控制数码管的亮灭以及小数点位。此外,AT89C51还控制ADC0809的工作。其中,单片机AT89C51通过从ALE引脚输出方波,接到ADC0809的CLOCK,P3.0发正脉冲启动A/D转换,A/D转换完成产生中断,单片机进入中断程序,P3.1置高从P1口读取转换结果送给LED显示出来。

简易数字直流电压表的硬件电路已经设计完成,就可以选取相应的

第三章 硬件电路设计 19

芯片和元器件,利用Proteus软件绘制出硬件的原理,并仔细地检查修改,直至形成完善的硬件原理图。但要真正实现电路对电压的测量和显示的功能,还需要有相应的软件配合,才能达到设计要求。

+5V220RP11C1X1C230PF30PF+5V6M1819U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617+5V71263452345678U2ABCDLTBILE/STB4511QAQBQCQDQEQFQG1312111091514XTAL2R210K9RSTC310u293031PSENALEEAU4:A21374LS02STARTU3(CLOCK)+5VRV1V1P11P22P33P44P45P66P77P88P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51U4:B56U34OEV126272812345252423221216IN0IN1IN2IN3IN4IN5IN6IN7ADD AADD BADD CALEVREF(+)VREF(-)ADC0808CLOCKSTARTEOCOUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT81067212019188151417STARTINT1P1P2P3P4P5P6P7P8U4:C74LS02910874LS02INT11kSTART+5VOE9OE 图3.13 数字电压表整体原理图

20 数字电压表

第四章 程序设计 21

第四章 程序设计

4.1 程序设计总方案

根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图4.1所示。

开始 初始化 调用A/D转换子程调用显示子程结束

图4.1 数字式直流电压表主程序框图

4.2 系统子程序设计

4.2.1 初始化程序

所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等[9]。 4.2.2 A/D转换子程序

A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图4.2所示。

22 数字电压表

开始 启动转换 A/D转换结输出转换结果 数值转换 显示 结束

图4.2 A/D转换流程图

4.2.3 显示子程序

显示子程序采用动态扫描实现两位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms。由于用CD4511对数码管进行译码,所以显示子程序比较简单。只需将处理好的数据从P0口输出,经过CD4511译码直接驱动数码管显示最终电压。

4.3编程软件KEIL简介

4.3.1系统概述

Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,

第四章 程序设计 23

就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。

4.3.2 Keil C51单片机软件开发系统的整体结构

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

Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很

紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

4.4 protues仿真软件简介

4.4.1 软件概述

Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内

24 数字电压表

推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平

台,

其处

理器

模型

支持

8051、HC11、

PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、KEIL和MPLAB等多种编译。 4.4.2 软件的特点

Protues软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:原理布图 、PCB自动或人工布线 、SPICE电路仿真。其革命性的特点:(1)互动的电路仿真。用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。(2)仿真处理器及其外围电路。可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Protues建立了完备的电子设计开发环境。

在PROTUES绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。PROTUES 是单片机课堂教学的先进助手。PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTUES提供了实验室无法相

第四章 程序设计 25

比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。随着科技的发展“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTUES也能茯得愈来愈广泛的应用。

4.5汇编源程序代码

ORG 0000H JMP START

ORG 0013H

JMP INT10 //中断入口地址 ORG 0100H

START:MOV SP,#40H SETB IT1

SETB EA SETB EX1 //开中断 L1: CLR P3.0 CALL SDELAY

SDELAY:MOV R5,#7 DI: NOP NOP

DELAY:MOV R4,#60

SETB P3.0

CALL SDELAY

JMP L1 //启动ADC0809 MOV P0,R1 CALL DELAY MOV P2,#2 MOV P0,R2

CALL DELAY

RET //显示子程序

DISP:MOV P2,#5

DJNZ R5,DI

RET //短延时子程序

26 数字电压表

DELAY1:MOV R5,#100 DELAY2:NOP NOP

DJNZ R5,DELAY2

DJNZ R4,DELAY1

RET //长延时子程序

INT10:CLR IT1 MOV P1,#0FFH CLR P3.1 MOV A,P1 SETB P3.1 MOV B,#51

DIV AB

MOV R1,A MOV A,B MOV B,#5 MUL AB MOV B,#51 DIV AB PUSH B MOV B,#2 MUL AB

POP B

MOV R2,A MOV A,B SUBB A,#13

JC L2

INC R2 L2: CALL DISP

CLR P3.0 RETI

END

//电压的个位 //电压的小数位(四舍) //电压的小数位(五入)

//中断程序

第五章 仿真与调试 27

第五章 仿真与调试

5.1 软件仿真

软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。Proteus软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。Proteus支持的微处理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成单片机系统原理图电路绘制、PCB设计,更为显著点的特点是可以与u Visions3 IDE工具软件结合进行编程仿真调试。

5.2显示结果及误差分析

5.2.1 显示结果

1、当IN0口输入电压为零时,数码管显示0.0。显示结果如图5.1

RV11k+5V220V1RP11U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14393837363534333221222324252627+5V7126345U2ABCDLTBILE/STB4511QAQBQCQDQEQFQG1312111091514XTAL2RSTPSENALEEAU4:A2START图5.1 输入为零时的结果 V=0.00500024V12345678 28 数字电压表

2、当INT0输入为1.5V时,对应的显示结果如图5.2所示。 RV11k+5V220V1RP112345678U2P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A1439383736353433322122232425262728+5V7126345ABCDLTBILE/STB4511QAQBQCQDQEQFQG1312111091514U4:A2V=1.5V1图15.2 当输入为START1.5时对应的结果 3、当INT0口输入为5.0V时,对应的输出结果如图5.3所示。 RV11k+5V220V1RP112345678U2P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A133938373635343332212223242526+5V7126345ABCDLTBILE/STB4511QAQBQCQDQEQFQG1312111091514U4:A图3.3 当输入为5.0V时显示的结果 V=4.995V1 第五章 仿真与调试 29

5.2.1 误差分析

通过以上仿真测量结果可得到简易数字电压表与“标准”数字电压表对比测试表,如下表5.4所示:

表5.4简易数字电压表与“标准”数字电压表对比测试表

标准电简易电压压值/V 表测量值/V 0.0 0.0 0.5 0.5 1.0 1.0 1.5 1.5 2.0 2.0 2.5 2.5 3.0 3.0 3.5 3.5 4.0 4.0 4.99 5.0 绝对误差/V 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.01 由于单片机AT89C51为8位处理器,当输入电压为5.00V时,ADC0808输出数据值为255(FFH),因此单片机最高的数值分辨率为0.0196V(5/255)。这就决定了电压表的最高分辨率只能到0.0196V,从上表可看到,测试电压一般以0.01V的幅度变化。

从上表可以看出,简易数字电压表测得的值基本上比标准电压值偏大0-0.01V,这可以通过校正ADC0809的基准电压来解决。因为该电压表设计时直接用5V的供电电源作为电压,所以电压可能有偏差。当要测量大于5V的电压时,可在输入口使用分压电阻,而程序中只要将计算程序的除数进行调整就可以了。

30 数字电压表

第五章 仿真与调试 31

第六章 总 结 31

第六章 总 结

经过一段时间的努力,毕业论文-基于单片机的简易数字电压表基本完成。但设计中的不足之处仍然存在。这次设计是我第一次设计电路,并用Proteus实现了仿真。在这过程中,我对电路设计,单片机的使用等都有了新的认识。通过这次设计学会了Proteus和Keil软件的使用方法,掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程,积累了不少经验。

基于单片机的数字电压表使用性强、结构简单、成本低、外接元件少。在实际应用工作应能好,测量电压准确,精度高。系统功能、指标达到了课题的预期要求、系统在硬件设计上充分考虑了可扩展性,经过一定的改造,可以增加功能。本文设计主要实现了简易数字电压表测量一路电压的功能,详细说明了从原理图的设计、电路图的仿真再到软件的调试。

通过本次设计,我对单片机这门课有了进一步的了解。无论是在硬件连接方面还是在软件编程方面。本次设计采用了AT89C51单片机芯片,与以往的单片机相比增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。设计中还用到了模/数转换芯片ADC0809,以前在学单片机课程时只是对其理论知识有了初步的理解。通过这次设计,对它的工作原理有了更深的理解。在调试过程中遇到很多问题,硬件上的理论知识学得不够扎实,对电路的仿真方面也不够熟练。

总之这次电路的设计和仿真,基本上达到了设计的功能要求。在以后的实践中,我将继续努力学习电路设计方面的理论知识,并理论联系实际,争取在电路设计方面能有所提升。

32 数字电压表

致 谢 33

致 谢

经过一段时间的不懈努力,本次毕业设计即将接近尾声,由于是初次尝试设计电路,由于知识及经验的匮乏,难免遇到很多困难,如果没有导师的督促指导以及同学们的支持,很难顺利的完成此次毕业设计。从开始选题到论文的顺利完成,都离不开老师、同学、朋友给以的帮助,在这里请接受我的谢意!

首选,在本次毕业设计过程中,从选题、构思、资料收集到最后定稿的各个环节给予细心指引与教导,使我对课程的多方面的知识有了深刻的认识,使我得以最终完成毕业设计,在此表示衷心感谢。

其次,感谢一起做毕业设计的同学们,感谢你们给我的帮助和鼓励,感谢你们在我遇到困难时所给的帮助,正是有了你们的帮助和鼓励,此次毕业设计才得以顺利的完成。

本次设计得以顺利完成,也与学院其他老师的帮助分不开的,虽然他们没有直接参与我的论文指导,但在论文的形成过程中也给我提供了不少的意见,提出一些可行的建议,在此向他们表示感谢!同时也要感谢导师组的老师,他们在本文写作的各个阶段给出了许多宝贵意见。导师们的高深精湛的造诣与严谨求实的治学精神将永远激励着我。

最后,对大学四年以来曾经关心支持过我的老师、同学,特别是我的亲爱的室友们送上最真诚的谢意。对于给我们提供了良好学习环境的西安电子科技大学长安学院,更是充满了感激,由于母校的培养,才使我成长为一个合格的大学生。

34 数字电压表

参 考 文 献 35

参考文献

[1] 雷思孝、冯育长,《单片机系统设计及工程应用》,西安电子科技大学出版社 2009年10月

[2] 江晓安、董秀峰、杨颂华,《数字电路技术》 第三版,西安电子科技大学出版社 ,2010年1月

[3] 裘雪红、李伯成、刘凯,《微型计算机原理及接口技术》 第二版,西安电子科技大学出版社,2010年10月

[4] 谭浩强,《C程序设计》第三版,清华大学出版社,2008年11月 [5] 江小安、孙肖子,《模拟电子技术》,西北大学出版社,2010年1月 [6] 蔡美琴,《MCS-51系列单片机系统及其应用》, 高等教育出版 [7]于殿泓、王新年,《单片机原理与程序设计实验教程》,西安电子科技大学出版社,2007年5月

参 考 文 献 35

参考文献

[1] 雷思孝、冯育长,《单片机系统设计及工程应用》,西安电子科技大学出版社 2009年10月

[2] 江晓安、董秀峰、杨颂华,《数字电路技术》 第三版,西安电子科技大学出版社 ,2010年1月

[3] 裘雪红、李伯成、刘凯,《微型计算机原理及接口技术》 第二版,西安电子科技大学出版社,2010年10月

[4] 谭浩强,《C程序设计》第三版,清华大学出版社,2008年11月 [5] 江小安、孙肖子,《模拟电子技术》,西北大学出版社,2010年1月 [6] 蔡美琴,《MCS-51系列单片机系统及其应用》, 高等教育出版 [7]于殿泓、王新年,《单片机原理与程序设计实验教程》,西安电子科技大学出版社,2007年5月

本文来源:https://www.bwwdw.com/article/5vur.html

Top