基于单片机的直流数字电压表设计本科学位论文.docx

上传人:b****8 文档编号:9339525 上传时间:2023-02-04 格式:DOCX 页数:37 大小:393.85KB
下载 相关 举报
基于单片机的直流数字电压表设计本科学位论文.docx_第1页
第1页 / 共37页
基于单片机的直流数字电压表设计本科学位论文.docx_第2页
第2页 / 共37页
基于单片机的直流数字电压表设计本科学位论文.docx_第3页
第3页 / 共37页
基于单片机的直流数字电压表设计本科学位论文.docx_第4页
第4页 / 共37页
基于单片机的直流数字电压表设计本科学位论文.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

基于单片机的直流数字电压表设计本科学位论文.docx

《基于单片机的直流数字电压表设计本科学位论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的直流数字电压表设计本科学位论文.docx(37页珍藏版)》请在冰豆网上搜索。

基于单片机的直流数字电压表设计本科学位论文.docx

基于单片机的直流数字电压表设计本科学位论文

河北大学工商学院

本科生毕业论文(设计)

 

题目:

基于单片机的直流数字电压表

 

学部信息科学与工程学部

学科门类工学

专业电气工程及其自动化

学号2008480358

姓名牛传贝

指导教师李梅

 

2012年5月21日

基于单片机的直流数字电压表

摘  要

本文介绍一种基于AT89C51单片机为主要控制器件,采用ADC0809高精度、逐次逼近式A/D转换器的8路直流式数字电压表。

主要包括硬件电路设计和软件设计两部分。

硬件电路主要由四个模块组成:

通路选择模块、A/D转换模块、数据处理模块以及显示模块。

通路选择模块主要由按键选择电路组成,负责8路模拟通道的选择。

A/D转换模块采用ADC0809完成,负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。

数据处理模块则由AT89C51完成,其对ADC0809传送来的数字量进行一定的数据处理,产生相应的显示码送到显示模块进行显示,并负责控制ADC0809和读取按键的工作。

输出显示模块采用4位一体的7段LED数码管,负责将所选通道数以及该通道电压值显示在数码管上。

软件设计部分主要包括主程序以及初始化程序,按键读取程序,中断程序,显示程序等几个子程序模块。

通过按键的选择,该数字电压表可以测量8路模拟电压值,在多点巡回检测和过程控制、运动控制中应用十分广泛。

关键词:

单片机;数字电压表;A/D转换;ADC0809

 

DesignofDCDigitalVoltmeterBasedonSingle-chipMicrocontroller

Abstract

ThispaperintroducesakindofnewmethodaboutDCdigitalvoltmeterwhichtakestheMicroControllerUnitAT89C51astheprimarycontrolcomponentandusesthehigh-precision,successiveapproximationA/DconverterADC0809.Itmainlyincludedhardwarecircuitdesignandsoftwaredesign.Thehardwarecircuitismainlycomposedbyfourmodules:

pathselectionmodule,A/Dconversionmodule,dataprocessingmoduleanddisplaymodule.Channelselectionmodulecomposedofakeyselectioncircuit,whichisusedfortheselectionof8analogchannels.A/DconversionmoduleusesADC0809tofinish.Itputstheanalogconversionforthedigitalquantity,andthentheresultistransmittedtothedataprocessingmodule.ThedataprocessingmoduleiscompletedbytheAT89C51.Ononehand,theADC0809sendsthedigitalquantitytocertaindataprocessingtoproduceacorrespondingdisplaycodeswhicharesenttothedisplaymodulefortheshowofvoltage.OntheotherhandtheAT89C51isresponsibleforthecontrolofADC0809andreadingthekey.OutputdisplaymoduleiscomposedofaLEDdigitaltube,whichisusedfordisplayingtheselectedchannelandthevoltagevalueofthischannel.Whilethesoftwaresystemconsistsofmainprocedure,initializationprocedure,keyreadingprogram,interruptprogram,displayprogramandsubroutinemodule.Thisdigitalvoltmetercanmeasurethevoltagevalueof8waysbythechoiceofakey.Itiswidelyusedinthemulti-circuitdetectionandprocesscontrol,motioncontrol.

Keywords:

Single-chipmicrocontroller;Digitalvoltmeter;A/Dconverter;ADC0809

 

目  录

1 前言1

2 总体设计2

2.1 系统设计任务2

2.2 系统总体设计思路2

3 硬件电路设计3

3.1 A/D转换模块设计3

3.2 数据处理模块简介5

3.3 输出显示模块8

3.4 按键选择电路9

4 系统软件程序设计10

4.1 主程序10

4.2 初始化程序10

4.3 A/D转换子程序10

4.4 LED显示子程序11

4.5 中断按键查询程序12

5 仿真电路设计14

5.1 仿真环境简介14

5.2 仿真设计结构与思路14

5.3 仿真电路测试与性能分析15

6 系统设计的实现18

6.1 开发环境简介18

6.2 原理图设计18

6.3 印刷电路板设计19

6.4 系统的安装与调试21

6.5 实际电路测试与性能分析21

7 结论23

参考文献24

致谢25

附录26

1  前言

在现代测量技术中电压测量有着非常重要的意义。

不论是在科学研究还是生产生活中,我们都离不开电压测量。

电压、电流、功率是电气测量的三个基本参数,而电流和功率的测量通常又需要借助电压测量来转换得到[1]。

即使是很多非电测量,如质量、压力、温度、速度等的测量,往往也需要转换为电压的测量。

作为电测量和非电测量的基础,电压测量技术一直备受关注。

数字式电压表(DigitalVoltmeter)简称DVM,是指把被测电压的数值通过数字技术变换成数字量,然后用数码管以十进制数字显示被测量电压值。

数字电压表最早由美国NLS公司研制成功。

高速数字信号处理的需求对电压测量提出了更高的要求,传统的模拟电压表已经不能满足其要求。

现代数字电压表具有更高的分辨率,更快的响应速度,更精湛的制造工艺,这些往往是模拟电压表所不能比拟的。

在抗电磁干扰、可扩展性和可集成性上数字式电压表也有很大的优越性,现代生产生活中,数字式电压表正在不断的取代模拟指针式电压表。

目前,数字式电压表已经广泛应用于电力电子测量、工业自动化仪表、自动测试系统等智能化测量领域,并显示出强大的生命力。

因此,对于数字电压表的研究具有重要的现实意义。

本设计主要研究以51系列单片机为核心的电压测量系统,通过对ADC0809进行控制将模拟量转换为数字量,并加以显示。

通过按键的选择可以实现一个电压表测量多路电压的目的,大大节省了资源,在多点巡回检测和过程控制、运动控制中应用十分广泛。

 

2  总体设计

2.1 系统设计任务

(1)可以测量8路0-5V范围的直流输入电压值;

(2)通过按键选择模拟量输入通道;

(3)测量结果显示在4位7段LED数码管上,测量结果包括通道数以及该通道测量的电压值,其中1位LED数码管显示通道数,3位LED数码管显示电压值;

2.2 系统总体设计思路

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

A/D转换器采用ADC0809完成,ADC0809的数字量输出端与单片机的接口为P0。

为了方便布线,本设计采用4位一体7段LED数码管进行显示,高1位显示通道数,低3位显示该通道的电压值。

单片机在没有外接存储器的情况下,ALE产生振荡频率为1/6晶振频率的方波。

因此,本设计中ADC0809的CLK由单片机的ALE经过7474四分频后得到500kHz的方波。

首先通过按键选择8路模拟通道中的一路,将模拟电压送入ADC0809,ADC0809将采集来的模拟信号转换为数字信号,然后传给单片机。

单片机将转换后的结果保存到片内存储区,并对数据进行处理转换为LED数码管显示所需要的数据,最后将结果以十进制形式显示在LED数码管上。

总体系统框图如图2-1所示。

图2-1  系统框图

 

3  硬件电路设计

3.1 A/D转换模块设计

3.1.1 ADC0809芯片简介

ADC0809是一种典型的8位逐次逼近型A/D转换器,由一个8路模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成[2]。

其内部结构如图3-1所示。

多路开关可以选通8路模拟量通道,允许8路模拟量分时输入。

三态输出锁存器用来锁A/D转换完成的数字量,OE为高电平时才能取走转换完的数据。

ADC0809需要5V单电源供电,转换时间为100us左右,由于其内部没有时钟电路,需要在外部提供500kHz的时钟信号。

图3-1  ADC0809内部结构

3.1.2 ADC0809引脚结构

(1)VCC:

+5V工作电压。

(2)GND:

地。

(3)IN0-IN7:

8路模拟量输入端,通过3根地址译码线A、B、C选通其中的一路。

(4)D0-D7:

8位数字量输出端口,为三态可控输出,可以直接和微处理器数据线连接。

D7为高位,D0为低位。

(5)REF(+)、REF(-):

正、负参考电压输入端,为片内ADC电阻网络的基准电压。

(6)ALE:

地址锁存允许信号输入端,高电平有效。

(7)EOC:

转换结束信号输出端,当EOC为高电平时表明A/D转换结束,否则,表明正在进行A/D转换。

(8)A、B、C:

模拟通道选择地址信号输入端,A为低位,C为高位。

地址信号与所选择通道的对应关系如表3-1所示。

表3-1  地址信号与选中通道的对应关系

地址

选中

通道

ADDC

ADDB

ADDA

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

IN0

IN1

IN2

IN3

IN4

IN5

IN6

IN7

(9)START:

A/D转换启动信号输入端,ST为上升沿时内部寄存器清零,为下降沿时,进行A/D转换,转换时ST应保持低电平。

(10)OE:

输出允许控制引脚,为高电平时输出转换得到的数据,为低电平时输出数据线呈现高阻状态。

(11)CLK:

时钟信号输入端,通常使用频率为500KHZ。

ADC0809引脚结构如图3-2所示。

图3-2  ADC0809引脚结构

3.1.3 ADC0809的转换原理

ADC0809进行A/D转换时,可以采用查询或者中断的方式判断A/D转换是否完成。

本设计采用查询EOC的标志信号来检测A/D转换是否结束,如果转换结束则把数据送给单片机,经过数据处理现实在数码管上。

A/D转换之前首先选择通道数,锁定地址,令ST=0,ST=1,ST=0产生启动转换的正脉冲信号,开始转换。

EOC信号为低电平时表示转换正在进行中,等到转换结束后EOC变为高电平。

单片机检测到EOC为高电平后,置位OE输出允许,打开三态门,读取转换结果。

其转换时序图如图3-3所示。

图3-3  ADC0809工作时序图

3.2 数据处理模块简介

3.2.1 AT89C51单片机简介

AT89C51是美国ATMEL公司生产,低电压、高性能CMOS8位微处理器,片内含有4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory),128字节随机存储器。

该器件采用ATMEL高密度非易失存储技术制造,与MCS-51指令集和输出引脚相兼容[3]。

作为本设计中的核心部件之一,AT89C51负责检查通道选择按键,控制ADC0809芯片,以及对A/D转换结果进行数据处理,使转换结果和通道数显示在四位七段LED数码管上。

下图3-4为双列直插型AT98C51单片机的实物图

 

图3-4  双列直插型AT89C51

3.2.2 AT89C51的引脚介绍

本设计中采用ATMEL89C51单片机,采用40引脚双列直插封装(DIP)方式。

(1)电源引脚

VCC(40引脚):

接+5V电源。

GND(20引脚):

接地。

(2)时钟电路

XTAL1(19引脚)和XTAL2(20引脚):

片内振荡器输入线,应用中常见的连接方式有内部方式和外部方式,如图3-5所示。

本设计采用的是内部方式,即这两个引脚用来外接石英晶体和微调电容。

图3-5  电源接入方式

(3)RST(9引脚)

复位信号引脚,当此引脚上出现至少两个机器周期的高电平脉冲时单片机复位。

复位电路通常可以分为上电复位和按键复位两种方式,为了方便调试,本设计中采用的是按键复位。

(4)

/

(31引脚)

外部程序存储器访问允许控制端。

EA=1时,先访问内部程序存储器,超过容量再自动转向外部程序存储器。

EA=0时,不管是否有内部程序存储器,都只访问外部程序存储器。

(5)

/

(30引脚)

地址锁存允许信号端。

当访问外部存储器时,用于锁存地址低位字节(P0口输出)。

在平时,ALE不断的以振荡器频率1/6的频率周期输出固定的脉冲信号,可以用作对外输出的脉冲。

本设计中正式利用这一点,将ALE产生的脉冲信号经过7474进行四分频得到ADC0809所需要的500KHZ脉冲。

分频电路将在下面介绍7474芯片时介绍。

(6)

(29引脚)

片外程序存储器选通信号。

由外部程序存储器取指令(或常数)时,每个机器周期两次低电平有效。

由于本设计中并没有应用外部存储器,所以该引脚做悬空处理。

(7)P0.0-P0.7输入输出引脚,即P0口。

P0是一个8位漏极开路型双向I/O口。

由于P0口内部没有上拉电阻,是开漏的,不管它的驱动能力多大,相当于它是没有电源的,需要外部电路提供,绝大多数情况下读P0口时必须加上拉电阻。

在访问外部程序和外部数据存储器时,P0口作为地址/数据复用,不需要外接上拉电阻。

(8)P1.0-P1.7输入输出引脚,即P1口,是一个普通8位双向I/0口,内部含有上拉电阻,用于传送用户数据和输出数据。

(9)P2.0-P2.7输入输出引脚,即P2口。

P2口是一个带内部上拉电阻的8位双向I/O口。

扩展外部存储器时,当做地址总线使用,做一般I/O口时,内部有上拉电阻。

它的第一功能可以和P0口引脚的第二功能配合使用,用于输出片外存储器的高8位地址,共同选中片外存储器单元。

  (10)P3.0-P3.7输入输出引脚,即P3口。

P3口第一功能和上面介绍的三个端口的第一功能相同,除了第一功能这8个引脚还有专门的控制功能。

各个引脚的第二功能如表3-2所示。

 

表3-2  P3口各引脚第二功能

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(片外数据存储器读允许)

3.3 输出显示模块

3.3.1 LED数码管的模型

为了方便布线,本设计中采用4位一体共阴7段LED数码管,型号为LG5641AH,模型如图3-6所示。

其中a、b、c、d、e、f分别为LED各段的公共输出端,1、2、3、4分别为LED每一位的位选端,dp为小数点引出端。

由于4位LED阴极的各段已经在内部连接在一起,所以必须采用动态扫描方式显示。

LG5641的第一位显示所测量模拟量的通道数,后三位显示电压值,其中前一位显示电压的整数位,后两位显示电压的小数位。

图3-6  LED数码管模型

3.3.2 LED数码管接口及驱动简介

由于AT89C51没有足够的驱动能力直接驱动LED数码管,所以,通常需要采用专门的驱动芯片产生足够的电流,使数码管正常工作。

本设计中LED数码管段选端口A-G分别与AT89C51的P1.1-P1.7口连接,为了提供足够的驱动,本设计中P1口加上拉电阻,位选端口分别通过驱动芯片7404连接至P2.0-P2.3口。

如图3-7所示。

 

图3-7  LED与AT89C51接口及驱动电路

3.4 按键选择电路

由于ADC0809提供一个8通道的模拟多路开关和通道寻址逻辑,本设计充分利用这一点,通过按键控制可以对8个端口的模拟信号分时进行A/D转换。

该设计在多点巡回检测和过程控制、运动控制中得到十分广泛的应用。

按键选择电路如图3-8所示。

图3-8  按键选择电路

 

4  系统软件程序设计

本设计中软件程序设计采用C语言编写,主要由主程序、A/D转换子程序、LED显示子程序、中断按键查询子程序、初始化子程序和延时子程序组成。

系统软件的代码见附录1所示。

4.1 主程序

主程序包含初始化子程序、A/D转换子程序、LED显示子程序。

主程序流程图如图4-1所示。

图4-1  主程序流程图

4.2 初始化程序

初始化即对将要用到的AT89C51单片机内部部件进行初始工作状态设定。

初始化子程序主要的工作是设置定时器工作方式,初始值设置,打开中断,打开定时器等。

4.3 A/D转换子程序

A/D转换子程序用来对ADC0809的8路通道模拟量进行A/D转换,将转换结果保存到含8元素的数组中,供显示模块使用。

程序流程图如图4-2所示。

 

图4-2  A/D转换子程序流程图

4.4 LED显示子程序

本设计采用动态显示方式,LED显示器每一位数码管的8根段选线并联在一起,由8位I/O口P1控制,位选线由P2的低四位分别控制。

由于段选线并联,所以各位显示器的位选线分时轮流选通,否则,各位数码管就会显示相同的字符。

为了稳定,在某一个时刻只能选通显示器的某一位,并送出相应的段码,另一时刻选通另一位,再送出其相应的段码,依次循环。

由于人眼存在视觉暂留效应,每位数码管显示的时间间隔需要足够短就可以给人以多为数码管同时显示的假象。

但是,这个时间间隔也不能太短,太短就会使发光二极管导通时间不够,从而显示不清楚。

由于51系列单片机不擅长于处理浮点运算,该模块中进行了一定的数据处理。

LED数码管显示子程序流程图如图4-3所示。

图4-3  LED显示程序流程图

4.5 中断按键查询程序

本设计采用机械式弹性按键,因而存在机械触点的弹性作用,使得按键在闭合和断开的瞬间有一连串的抖动。

抖动时间由按键的机械特性决定,一般为5ms至10ms。

在抖动的过程中引起电平信号的波动,从而导致CPU误判为多个按键操作,带来不必要的麻烦。

因此消除按键抖动的影响十分有必要。

按键的消抖通常分为硬件消抖和软件消抖,本设计采用采用软件消抖的方式。

当检测到有按键按下时延时10ms,然后再确认电平是否仍然保持闭合状态电平,如果保持闭合状态电平,则确认为真正有按键按下。

当按键释放时,同样也要延时10ms,然后再判断按键是否是真正的释放了按键。

为了提高系统的实时性和效

率本设计采用中断方式判断按键状态,程序流程图如图4-4所示。

图4-4  中断按键查询程序流程图

 

5  仿真电路设计

5.1 仿真环境简介

Proteus是由英国Labcenterelectronics公司出版发行的EDA工具软件,不仅具有其它EDA工具软件所具有的一般仿真功能,还能仿真单片机及其外围器件,是目前最好的单片机及外围器件的仿真工具之一[4]。

Proteus具有其它EDA工具软件(如multisim),可以实现原理布图、PCB自动或人工布线、SPICE电路仿真。

此外,Proteus还具有其独特的优点。

它可以实现互动的电路仿真,用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。

可以仿真51系列、AVR、PIC、ARM、等常用主流单片机,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

而且能够直接在虚拟原型上编程,配合显示及输出,可以观察运行后输入输出的效果。

在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

由于其功能丰富且易于操作,受到广大单片机爱好者以及从事单片机开发的科技工作者的青睐。

作为一款世界著名的EDA工具,Proteus可以做到从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。

它不但设计灵活,结果和过程统一,而且大大缩短了设计时间,减少了开发耗资,同时还可以降低工程制造的风险。

Proteus主要分为四大功能模块,智能原理图设计(ISIS),完善的电路仿真功能(Prospice),独特的单片机协同仿真功能(VSM),实用的PCB设计平台[5]。

Proteus包含丰富的器件库,有超过27000种元器件。

拥有智能的器件搜索功能,可以通过模糊搜索实现快速定位所需器件。

能够智能化连线,使连接导线简单快捷,大大缩短了绘图时间。

使用总线器件和总线布线可以使电路设计简明清晰。

通过个性化设置,可以生成可供WORD、POWERPOINT等使用的BMP图纸。

包含多样的激励源,包括直流、正弦、脉冲、音频、FM、数字时钟等。

具有丰富的模拟仪器,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、频率计数器等。

此外还包含高级图形仿真功能,可以精确分析电路的多项指标,如频率特性、噪声、失真、傅里叶频谱分析等。

支持通用外设模型,如LCD模块、LED七段数码管、按键、电动机、电子温度计等。

支持单片机汇编语言的仿真,内带8051、AVR、PIC的汇编编译器,也可以与第三方编译环境结合,进行高级语言的仿真调试。

本设计采用第二种方式,结合Keil集成编译环境,采用C语言进行仿真调试。

由于本设计的PCB设计部分在Protes99SE环境中设计完成,Proteus的PCB设计平台不作详细说明。

5.2 仿真设计结构与思路

本数字电压表应用系统硬件部分由单片机、分频器、A/D转换器、按键处理电路、数码管显示电路组成。

由于ADC0809进行A/D转换需要合适的CLK信号,为充分利用已有资源,本设计将单片机ALE产生的方波经7474四分频得到500kHz的方波。

本设计中ADC0809的参考电压VREF为5V,转换后的数据要由单片机进行处理,然后将结果显示在数码管上。

显示的电压值应为D*5/255*Vin,ADC0809把模拟

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1