毕业设计 基于Proteus的数字电压表的设计

更新时间:2024-01-22 10:57:01 阅读量: 教育文库 文档下载

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

毕 业 设 计 [论 文]

题目: 基于proteus的数字 电压表的设计

系 别: 电气与电子工程系 专 业: 电子信息工程 姓 名: 周朝阳 学 号: 123408157 指导教师: 陈英

河南城建学院

2012年 5月22 日

河南城建学院本科毕业设计(论文) 目录

目录

摘要 ................................................................ I Abstract ........................................................... II 1 绪论 .............................................................. 1

1.1 选题的目的意义 ............................................... 1 1.2 国内外研究综述 ............................................... 1 1.3 毕业设计(论文)所用的方法 ................................... 2 2 系统方案设计 ...................................................... 3

2.1 设计思路 ..................................................... 3 2.2 设计方案 ..................................................... 5 3 硬件电路设计 ...................................................... 7

3.1 时钟电路 ..................................................... 7 3.2 复位电路 ..................................................... 8 3.3 数据采集电路 ................................................. 8 3.4 显示电路 ..................................................... 9 3.5 总设计原理图 ................................................ 11 4 软件设计 ......................................................... 12

4.1 主程序流程图 ................................................ 12

4.1.1 主程序流程图 .......................................... 12 4.1.2 主程序代码 ............................................ 12 4.2 显示子程序流程图 ............................................ 14

4.2.1 显示子程序流程图 ...................................... 14 4.2.2 显示子程序代码 ........................................ 15 4.3 A/D转换子程序流程图 ........................................ 16

4.3.1 A/D转换子程序流程图 ................................... 16 4.3.2 A/D转换子程序代码 ..................................... 17 4.4 数据处理子程序流程图 ........................................ 17

4.4.1 数据处理子程序流程图 .................................. 17 4.4.2 数据处理子程序代码 .................................... 18

5 软件仿真 ......................................................... 19

5.1 调试与仿真 .................................................. 19

5.1.1 仿真软件简介 .......................................... 19

III

河南城建学院本科毕业(设计)论文 目录

5.1.2 仿真步骤 .............................................. 20 5.2 误差分析与仿真 .............................................. 20

5.2.1 仿真误差分析 .......................................... 20 5.2.2 仿真图 ................................................ 20

结论 ............................................................... 24 参考文献 ........................................................... 25 致谢 ............................................................... 26 附录 A ............................................................. 27

IV

河南城建学院本科毕业设计(论文) 摘要

摘要

在现代检测技术中,传统的指针式电压表功能单一、精度低,不能满足数字

化时代的需求,因此常用高精度数字电压表进行检测。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。将检测到的数据送入微型计算机系统,完成计算、存储、控制等功能。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,显示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。

本文中数字电压表的控制系统采用AT89C51单片机,A/D转换器采用ADC0808为主要硬件,实现数字电压表的硬件电路与软件设计。该系统的数字电压表电路简单,所用的元件较少,成本低,调节工作可实现自动化,还可以方便地进行8路A/D转换的测量等功能。数字电压表可以测量0~5V的电压值,并在四位LED数码管上轮流显示, 并且应用Proteus的ISIS软件进行单片机系统设计与仿真。

关键词:单片机,数字电压表,DVM,A/D转换ADC0808,Proteus

I

河南城建学院本科毕业设计(论文) Abstract

Abstract

In modern measuring technology, analog voltage meter features a traditional single, low accuracy,can not meet the digital age, so it is often required to conduct site measuring with a digital voltmeter. Digital voltage meter (Digital Voltmeter) referred to as DVM, it is the use of digital measuring technology, the continuous analog (DC input voltage) into a non-continuous, discrete digital form and to display the instrument. The data measured will then be input into the micro-computer system to execute such functions like calculating, storing, controlling, and displaying. At present, by a variety of single A / D converter consisting of digital voltage meter, has been widely used in intelligent measuretement such as electronic and electrical measurement, industrial automation, instrumentation, automated test systems, showing strong vitality. At the same time, the DVM extension to the various general and specific digital instruments, but also the power and non-power measurement up to a new level.

The digital voltmeter control system described in this paper makes use of AT89C51 Single chip computer and ADC0808 A/D converter to fulfill the designing of the software as well as the electrical circuit. The voltmeter features in simple electrical circuit, lower use of elements, low cost and automatic regulation, while it can also easily carry out the duties of measuring A/D converted values from 8 routes and remote transfer of measuring data. The meter is capable of measuring voltage from 0 to 5 volt, and displaying the measurements in turn on the four digital LED ,and use software ISIS of Proteus to realize the circuit design and simulation.

Keywords: Single chip microcomputer,digital Voltmeter,DVM,A/D switch

ADC0808,Proteus

II

河南城建学院本科毕业设计(论文) 绪论

1 绪论

1.1 选题的目的意义

数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,显示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。

数字电压表是诸多数字化仪表的核心与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,这有别于传统的以指针加刻度盘进行读数的方法,避免了读数的视差和视觉疲劳。目前数字电压表的内部核心部件是A/D转换器,转换器的精度很大程度上影响着数字电压表的准确度,本文A/D转换器采用ADC0808对输入模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号。

随着微机测量与控制技术的发展,以单片机为核心的字电压表已占有很大的优势。 设计主要是研制直流输入数字电压表,以单片机AT89C51为核心部件,具有实时显示测量值的功能。单片机体积小、重量轻、价格便宜,电路外围器件少,大大地降低了成本。

1.2 国内外研究综述

数字电压表出现在上世纪50年代初,60年代末发展起来的电压测量仪表,

简称DVM,它采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后通过显示器件显示。这种电子仪表之所以出现,一方面是由于电子计算 机的应用推广到系统的自动控制信号的实验领域,提出了各种被观测量或被控制量转换成数字量的要求,即为了实时控制和数据处理的要求;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的发展,为数字化仪表的出现提供了条件。所以,数字化测量仪表的产生与发展与电子计算机的发展是密切相关的。

如今,数字电压表已经绝大部分取代了传统的模拟指针式电压表,因为传统

1

河南城建学院本科毕业设计(论文) 绪论

的模拟指针式电压表功能单一,精度低,读数的时候非常不方便还经常出错,而采用单片机的数字电压表由于测量精度高,速度快,读数时也非常方便,抗干扰能力强,可扩展性强等优点已被广泛应用与电子和电工测量,工业自动化仪表,自动测量系统等领域,显示出强大的生命力。

数字电压表最初是伺服步进电子管比较式,其优点是准确度比较高,但是采样速度较慢,体积重达几十公斤。继之出现了谐波式电压表,它的速度方面稍有提高但准确度低,稳定性差,再后来出现了比较式仪表改进逐次渐进式结构,它不仅保持了比较值准确度高的优点,而且速度也有了很大的提高,但它有一缺点就是抗干扰能力差,很容易受到外界因素的影响。随后,在谐波式的基础上引申出阶梯波式,它的唯一进步就是成本降低了,可是准确度,速度及抗干扰能力都未提高。而数字电压表的发展已经非常成熟,就原理来讲,它从原来的一两种已经发展到多种,在功能上讲,它从测单一的参数发展到能测多种参数;从制作原件看,发展到集成电路,准确度已经有了很大的提高,精度已经达到1nV,读数速度达到每秒几万次,而相对以前价格已经降低了很多。

例如国内上海乾丰电子仪器有限公司生产的PZ158A系列直流数字电压表,该型号电压表具有6?位显示,可测量0.1μV—1000V直流电压。该表由于采用了微处理器和脉冲调宽模数转换技术,自动校零,数字模拟滤波等技术,从而赋予本表极其稳定的零位和良好的线性和抗干扰能力,本表还带有RS232C接口,可方便地与计算机系统相连接,组成数据采集系统。采用八位VFD或LED显示,其中PZ158A/1为单量程(0.2V)VFD显示,读数清晰,光色柔和,适宜在科研、工业、国防等各种领域内使用。

目前实现电压数字化测量的方法仍然是模—数(A/D)转换的方法。数字电压表分类繁多,日常生活中一般根据原理的不同进行分类,大致分为:比较式,电压—时间变换式,积分式等。

1.3 毕业设计(论文)所用的方法

①利用MCS-51系列来作为程序的载体,通过C语言或汇编语言来设计程序对所采集到的信息进行存储和处理;

②通过模数转换器将模拟电压值转化为数字信号; ③通过数码管来显示数据。

2

河南城建学院本科毕业设计(论文) 系统方案设计

2 系统方案设计

2.1 设计思路

①本系统的控制电路采用AT89C51芯片,AT89C51是一种带4K字节Flash存储器的低电压、高性能CMOS8位微处理器,可与工业标准的MCS-51指令集和输出管脚相兼容。

1)该芯片提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,该芯片可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

2)该芯片管脚说明: VCC:供电电压; GND:接地;

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在Flash编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高;

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在Flash编程和校验时,P1口作为第八位地址接收;

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号;

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故;

3

河南城建学院本科毕业设计(论文) 系统方案设计

P3口也可作为AT89C51的一些特殊功能口,如下所示: P3.0 RXD(串行输入口); 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(外部数据存储器读选通);

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST/Vpd:RST即为RESET,Vpd为备用电源,所以该引脚为单片机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平就可实现复位操作,使单片机恢复到初始状态。当Vcc发生故障、降低到低电平规定值或掉电时,该引脚可接上备用电源Vpd为内部RAM供电,以保证RAM中的数据不丢失;

ALE/PROG:当访问外部存储器时,ALE(地址锁存允许信号)以每机器周期两次的信号输出,用于锁存出现在P0口得低8位地址。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效;

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现;

/EA/Vpp:/EA为访问外部程序存器控制信号,当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP);

XTAL1:接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器,当采用外部时钟时,对于HMOS单片机,该引脚接地;对于CHMOS单片机,该引脚作为外部振荡信号的输入端;

XTAL2:接外部晶体的另一端。在单片机的内部,接至片内振荡器的反相放大

4

河南城建学院本科毕业设计(论文) 系统方案设计

器的输出端。当采用外部时钟时,对于HMOS 单片机,该引脚作为外部振荡信号的输入端;对于CHMOS芯片,该引脚悬空不接。

②电压是模拟量,而数码管显示需要的是数字量,故需要采用A/D转换模拟

信号为数字信号供显示电路显示出来。本系统采用ADC0808芯片,通过ADC0808采集数据,输入到单片机内,再输入到显示电路显示。ADC0808是典型的8位8通道逐次逼近式A/D转换器,采用CMOS工艺制造。ADC0808的主要特性:8路输入通道,8位A/D转换器,即分辨率为8位;具有转换起停控制端;转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时);单个+5V电源供电;模拟输入电压范围0~+5V,不需零点和满刻度校准;工作温度范围为-40~+85摄氏度;低功耗,约15mW。

③显示电路采用四位8段LED数码管来显示数据,满足本系统2%的精度要求。数码管显示方法有静态显示和动态显示两种。

1)静态显示:即在同一时刻只显示一种字符,或者说被显示的字符在同一时刻是稳定不变的,其显示方法是将显示段码送至段码口,并把位控字送至位控口即可;

2)动态显示:利用人眼的视觉残留效应,采用动态扫描显示的方法,逐个的循环点亮个位数码管,每位显示1ms左右,使人看起来就好像在同时显示不同的字符一样。

在进行动态扫描时,往往事先并不知道应显示什么内容,这样也就无从选择被显示字符的显示段码。为此,一般采用查表的方法,由显示的字符通过查表得到其对应的显示段码。

2.2 设计方案

本系统利用AT89C51单片机设计简易数字电压表测量0~5v的8路输入电压值,并在四位LED数码管上轮流显示,测量误差约为±0.02V。

本设计主要分为两部分:硬件电路及软件程序。而硬件电路又大体可分为时钟电路、复位电路、数据采集电路、LED显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;软件程序的设计使用汇编语言编程,利用KEIL和PROTEUS 软件对其编译和仿真,详细的设计算法将会在程序设计部分详细介绍。系统设计方框图如图2.1所示:

5

河南城建学院本科毕业设计(论文) 系统方案设计

时钟电路显示电路复位电路AT89C51数据采集模拟信号

图2.1 系统设计方框图

6

河南城建学院本科毕业设计(论文) 硬件电路设计

3 硬件电路设计

3.1 时钟电路

XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频。本系统的时钟电路设计是采用的内部方式。晶振的频率可以在1MHz-24MHz内选择,电容取30PF左右。晶振在电气上可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容。时钟电路原理图如图3.1所示:

图3.1 时钟电路图

7

河南城建学院本科毕业设计(论文) 硬件电路设计

3.2 复位电路

89C51单片机的复位是由外部的复位电路来实现的。最简单的上电自动复位电路,是通过外部复位电路的电容充电来实现的。只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位。

除上电复位外,有时还需要按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平方式复位是通过RST端经电阻和电源Vcc接通而实现的。本系统采用电平方式按键手动复位电路,按键没有按下时,RST端接电容下极板是低电平,按键按下时,RST 端接在电阻上端变为高电平,达到复位的目的。电容选20uF左右,电阻选1K欧姆。复位电路原理图如图3.2所示:

图3.2 复位电路图

3.3 数据采集电路

本系统模拟转换采用ADC0808芯片。ADC0808具有8路模拟量输入信号引脚IN0~IN7(1~5、26~28脚),地址线C、B、A(23~25脚)决定哪一路模拟输入信号进行A/D转换,本电路将A、B、C脚分别置0、1、0,即选择通道2。22号脚ALE为地址锁存允许控制信号,高电平有效。6号脚START为启动控制信号,高电平有效,脉冲上升沿使0808复位,下降沿启动A/D转换。本电路将ALE脚和START脚接到一起,共同由单片机的P3.2脚控制。7号脚EOC为A/D转换结束信

8

河南城建学院本科毕业设计(论文) 硬件电路设计

号,输出正脉冲表示转换结束,本电路将7号脚与P3.1连接。9号脚OE为A/D转换数据输出允许控制信号,高电平有效,本电路将9号脚与P3.0脚连接。10号脚CLOCK为实时时钟输入端,在proteus软件中仿真采用DCCLOCK时钟源提供时钟脉冲。数字量输出端8个引脚OUT1~OUT8接到单片机的P1口。本设计采集数据电路为了便于仿真分析,采用滑线电阻器分压,通过调节滑线电阻器的触头,来调节输入电压值,模拟不同大小的输入信号,采集信号通过ADC0808的IN2端接入芯片的通道2。数据采集电路原理图如图3.3所示:

图3.3 数据采集模块电路图

3.4 显示电路

本电路采用LED数码管显示,由于单片数码管占用单片机口线较多,而本设计中需要四个数码管显示不同信息,因此采用数码管的动态扫描显示原理,利用人眼的视觉暂留特性,达到较好的显示效果,而且采用动态扫描法与单片机连接时,占用口线较少,方便进行程序编写和控制。本设计中采用proteus仿真元件库中的7SEG-MPX4-CC型数码管来显示,7SEG-MPX4-CC为八段四位共阴极数码管,其中ABCDEFG共八个引脚为字形码控制输入端,DP为小数点控制输入端一段用于显示小数点,1234共四个引脚为数码管字位码控制输入端。数码管的所有段码输入端均为高电平有效,位码输入端均为低电平有效,其中ABCDEFG脚在程序设计时

9

河南城建学院本科毕业设计(论文) 硬件电路设计

应输入数字字形码原码。上拉电阻RP1的公共端接高电平,其余端接控制线,以提供足够的输入电流,使数码管正常显示。数码管位选端连接单片机的P0口,同时连接上拉电阻以增强驱动能力;片选段连接单片机的P2.0~P2.3口。显示电路原理图如图3.4所示:

图3.4 显示电路图

10

河南城建学院本科毕业设计(论文) 硬件电路设计

3.5 总设计原理图

图3.5 总设计电路原理图

11

河南城建学院本科毕业设计(论文) 软件设计

4 软件设计

4.1 主程序流程图

4.1.1 主程序流程图

主程序包含初始化部分,调用A/D转换子程序,调用数据处理子程序和调用显示子程序,初始化部分包含存通道数据缓冲区初始化和显示缓冲区初始化。主程序流程图如图4.1所示:

开始初始化调用A/D转化程序调用数据处理程序调用显示程序

图4.1 主程序流程图

4.1.2 主程序代码

LED1 EQU 30H ;初始化定义 LED2 EQU 31H

LED3 EQU 32H ;存放三个数码管的段码 ADC EQU 35H ;存放转换后的数据 ST BIT P3.2 OE BIT P3.0

EOC BIT P3.1 ;定义ADC0809的功能控制引脚 ORG 0000H

LJMP MAIN ;跳转到主程序执行 ORG 0030H

MAIN: MOV LED1,#00H

12

河南城建学院本科毕业设计(论文) 软件设计

MOV LED2,#00H

MOV LED3,#00H ;寄存器初始化 CLR P3.4 SETB P3.5

CLR P3.6 ;选择ADC0809的通道2 WAIT: CLR ST SETB ST

CLR ST JNB EOC,$ SETB OE MOV ADC,P1 CLR OE MOV A,ADC MOV B,#51 DIV AB

MOV LED1,A MOV A,B MOV B,#5 DIV AB

MOV LED2,A MOV LED3,B LCALL DISP AJMP WAIT

DISP: MOV R1,#LED1 CJNE @R1,#5,GO MOV LED2,#0H MOV LED3,#0H GO:MOV R2,#3 MOV R3,#0FDH DISP1:MOV P2,#0FFH MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR CJNE R2,#3,GO1 ;在脉冲下降沿启动转换 ;等待转换结束 ;允许输出信号 ;暂存A/D转换结果 ;关闭输出

;将转换结果放入A中,准备个位数据转换 ;变换个位调整值51送B ;将变换后的个位值送显示缓冲区LED1 ;将变换结果的余数放入A中,准备十分位变换 ;变换十分位调整值5送B ;将变换后的十分位值送LED2 ;最后的余数作百分位值送LED3 ;调用显示程序 ; 显示子程序

;@R1=5V?是往下执行,否,则到GO ;是5V,即最高值,将小数的十分位清零 ;将小数的百分位清零

;显示位数赋初值,用到3位数码管 ;扫描初值送R3

;关闭显示,目的防止乱码 ;显示值送A

;送表首地址给DPTR ;查表取段码

;判断是否个位数码管?否则跳到GO1

13

河南城建学院本科毕业设计(论文) 软件设计

ORL A,#80H ;将整数的数码管显示小数点 GO1:MOV P0,A ;送段码给P0口 MOV A,R3

MOV P2,A ;送位码给P2口 LCALL DELAY ;调用延时 MOV R3,A

RL A ;改变位码 MOV R3,A

INC R1 ;改变段码

DJNZ R2,DISP1 ;三位是否显示完?否则调到DISP1 RET

DELAY:MOV R6,#10 ;延时5S程序: D1:MOV R7,#250 DJNZ R7,$ DJNZ R6,D1 RET

TAB: DB 3FH, 06H,5BH,4FH,66H;共阴极数码管显示0-4 ;显示数据表: DB 6DH,7DH,07H,7FH,6FH;显示5-9 END

4.2 显示子程序流程图

4.2.1 显示子程序流程图

ADC0808转换之后输出的结果是8位二进制数。显示子程序采用动态扫描实现四位数码管的数值显示。显示子程序流程图如图4.2所示:

14

河南城建学院本科毕业设计(论文) 软件设计

开始

置高,P2置低初始化,P0 P0到A 输出显示 P2=P2+1 P0到A 输出显示 P2=P2+1 P0到A输出显示 置位P0.7点亮小数点 P0到A输出显示 束结图4.2 显示子程序流程图

4.2.2 显示子程序代码

DISP: MOV R1,#LED1 ; 显示子程序

CJNE @R1,#5,GO ;@R1=5V?是往下执行,否,则到GO MOV LED2,#0H ;是5V,即最高值,将小数的十分位清零 MOV LED3,#0H ;将小数的百分位清零

GO: MOV R2,#3 ;显示位数赋初值,用到3位数码管 MOV R3,#0FDH ;扫描初值送R3

DISP1:MOV P2,#0FFH ;关闭显示,目的防止乱码 MOV A,@R1 ;显示值送A MOV DPTR,#TAB ;送表首地址给DPTR

15

河南城建学院本科毕业设计(论文) 软件设计

MOVC A,@A+DPTR ;查表取段码

CJNE R2,#3,GO1 ;判断是否个位数码管?否则跳到GO1 ORL A,#80H ;将整数的数码管显示小数点 GO1:MOV P0,A ;送段码给P0口 MOV A,R3

MOV P2,A ;送位码给P2口 LCALL DELAY ;调用延时 MOV R3,A

RL A ;改变位码 MOV R3,A

INC R1 ;改变段码

DJNZ R2,DISP1 ;三位是否显示完?否则调到DISP1 RET

DELAY:MOV R6,#10 ;延时5S程序 D1:MOV R7,#250 DJNZ R7,$ DJNZ R6,D1 RET

TAB: DB 3FH, 06H,5BH,4FH,66H ;共阴极数码管显示0-4 ;显示数据表: DB 6DH,7DH,07H,7FH,6FH ;显示5-9 END

4.3 A/D转换子程序流程图

4.3.1 A/D转换子程序流程图

A/D转换子程序用来对模拟输入信号进行采集和转换,将采集到的模拟电压信号转换为八位二进制数字信号并进行存储,改变数据存储地址指针,便于下次数据信号的采集和存储。

A/D转换子程序流程图如图4.3所示:

16

河南城建学院本科毕业设计(论文) 软件设计

开始初始化启动A/D转化NP3.1=1?YP3.0置位,允许输出,将转化的数据保存结束图4.3 A/D转换子程序流程图

4.3.2 A/D转换子程序代码

WAIT: CLR ST SETB ST

CLR ST ;在脉冲下降沿启动转换 JNB EOC,$ ;等待转换结束 SETB OE ;允许输出信号 MOV ADC,P1 ;暂存A/D转换结果 CLR OE ;关闭输出

4.4 数据处理子程序流程图

4.4.1 数据处理子程序流程图

ADC0808转换之后输出的结果是 8位二进制数。由于单片机进行数学运算时结果只取整数部分,必须把小数部分保留。本系统数据处理方法是:如果小数点后保留两位,取个位整数时将转换数据代入公式(1)取商值,取十分位数时将上次运算余数代入公式(2),商值为十分位数,余值为百分位数。

17

河南城建学院本科毕业设计(论文) 软件设计

VI=Dout/255×5 (1)

VI=Dout/255×5×10=Dout×10/51 (2) 数据处理子程序流程图如图9所示:

开始 从35H中取数据,得到的数据BCD化,将数据存入A 转化双字节十六进制整数 NBCD码带进位自身相加,十进制调整 R2=0? Y数据输入显示结束 图4.4 数据处理子程序流程图

4.4.2 数据处理子程序代码

MOV A,ADC ;将转换结果放入A中,准备个位数据转换

MOV B,#51 ;变换个位调整值51送B DIV AB

MOV LED1,A ;将变换后的个位值送显示缓冲区LED1 MOV A,B ;将变换结果的余数放入A中,准备十分位变换 MOV B,#5 ;变换十分位调整值5送B DIV AB

MOV LED2,A ;将变换后的十分位值送LED2 MOV LED3,B ;最后的余数作百分位值送LED3 LCALL DISP ;调用显示程序 AJMP WAI T

18

河南城建学院本科毕业设计(论文) 软件仿真

5 软件仿真

5.1 调试与仿真

5.1.1 仿真软件简介

① Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等。

设计者可以利用Proteus设计出各种模拟电路、数字系统、专用IC及各种芯片,并在仿真过程中给设计者以最大程度上的视觉感受,它为电子产品的开发和电子系统工程提供了一种全新的手段和便捷的途径。Proteus强大的单片机硬件仿真能力使设计更加简便易行,节省资源。

Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。Proteus 产品系列也包含了革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。

1)Proteus软件功能特点:

a.原理布图;

b.PCB自动或人工布线; c.SPICE电路仿真;

d.互动的电路仿真:用户甚至可以实时采用诸如RAM、ROM、键盘、

马达、LED、LCD、AD/DA、部分SPI器件、部分IIC器件;

e.仿真处理器及其外围电路:可以仿真51系列、AVR、PIC、ARM、

等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。

2)proteus软件功能模块: a. 智能原理图设计(ISIS);

b. 完善的电路仿真功能(Prospice);

19

河南城建学院本科毕业设计(论文) 软件仿真

c. 独特的单片机协同仿真功能(VSM); d. 实用的PCB设计平台。

②Keil是一款很流行的单片机软件仿真软件,可用于多种不同公司的不同系列的单片机的软件仿真,并达到较好的软件仿真与调试效果。将Keil与Proteus结合使用能很好地模拟单片机实验开发环境。

5.1.2 仿真步骤

本设计过程中采用Keil与Proteus结合进行编译与仿真,过程如下: ①新建Proteus工程,绘制系统电路图;

②新建Keil工程,该工程与Proteus工程处于同一文件夹下。为新建的Keil工程选择设备,即选择单片机型号,注意与Proteus电路图中的单片机型号一致,本设计中选用AT89C51单片机。

③新建文件,输入程序代码,保存为.ASM文件,将其添加到Keil工程的Source Group1中。设置Keil中目标Targe1属性,勾选输出选项卡生成HEX文件;

④将Proteus中单片机的属性中Program Files中选择刚才编译好的HEX文件,之后在Proteus中进行仿真与调试。调节变阻器RV1改变触头处的分压值从而改变输入电压信号,通过比较LED显示值和Proteus系统提供的DC电压表测量值作对比以比较设计系统的精度和效果。

5.2 误差分析与仿真

5.2.1 仿真误差分析

通过大量的软件仿真结果分析,发现本次设计误差为?0.02v以内,误差主要取决于两个方面:一是ADC0808模/数转换芯片采集和转换过程产生的误差;二是数据处理算法过程产生难免的误差。

5.2.2 仿真图

①调节滑动变阻器的位置,可以测出相应的电压值,如图5.1所示,当调整滑动变阻器触头位置改变电压值为1.60v时,数码管显示值为1.62v:

20

河南城建学院本科毕业设计(论文) 软件仿真

图5.1 测量电压仿真图

21

河南城建学院本科毕业设计(论文) 软件仿真

②该电路测量的误差在约为±0.02v,如图5.2所示当采集电压为4.65v时,数码管显示为4.63v:

图5.2 测量电压仿真图

22

河南城建学院本科毕业设计(论文) 软件仿真

③该电路可测得电压范围是0-5V,最大电压值5.00V,如图5.3所示:

图5.3 测量电压仿真图

23

河南城建学院本科毕业设计(论文) 结论

结论

经过一段时间的努力,我的毕业论文—基于proteus的数字电压表的设计基本完成,但设计中的不足之处仍然存在。本文给出了利用单片机进行数字电压表设计的一个实例,利用仿真功能强大、仿真元件模型丰富的Proteus软件对数字电压表各个单元电路和整体电路进行了设计和详尽的仿真分析,缩短了设计周期,提高了设计效率,降低了设计成本。采用KEIL和proteus软件结合使用进行仿真,取得了较好的仿真效果。在这次设计过程中,我对电路设计、单片机的使用等都有了新的认识。通过这次设计学会了Proteus和KEIL软件的使用方法,掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程,积累了不少经验。

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

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

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

24

河南城建学院本科毕业设计(论文) 参考文献

参考文献

[1]张毅坤,陈善久,裘雪红.单片机微型计算机原理及应用[M].西安:西安电子科技大学出版社,2008:19-344.

[2]童诗白,华成英.模拟电子技术基础[M].北京:高等教育出版社,2006:74-138. [3]阎石.数字电子技术基础[M].北京:高等教育出版社,2006:.

[4]吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用[M].北京:清华大学出版社,2002:53-113.

[5]余文俊.8051C语言实习[M].北京:中国水利水电出版社,2003:89-90. [6]赵静,刘少聪,丁浩.基于单片机的数字电压表设计.数字技术及应用[J],2011(06):127,131.

[7] 宋悦孝,王俊杰,徐连孝.基于单片机的数字电压表设计[J].潍坊学院学报 ,2011(04):18-20.

[8]吴昌东,吴学杰.基于单片机的新型数字式电压表设计[J].微计算机信息,2008,(08):133-134.

[9]王伟,刘晓平.高精度数字电压表方案设计[J].仪表技术,2007,(4):36-39. [10]刘小燕,基于AT89C52的某数字电压表的设计[J].微计算机信息,2008,(25):199-200.

[11]孙军,李国忠.基于89C51单片机的数字电压表设计[J].制造业自动化,2007,(02):89-90.

[12]Tyler, B.Digital. voltmeters[J].Students’Quarterly Journal,1964, (138):103.

[13] Bakken, Christopher. Proteus[J]. Paris Review, 2000,(157):38. [14] Krause, P. H.. The PROTEUS Project[J].Technological Forecasting and Social Change, 2002,(5):479-484.

25

河南城建学院本科毕业设计(论文) 致谢

致谢

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

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

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

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

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

26

河南城建学院本科毕业设计(论文) 附录 A

附录 A

电路设计总原理图:

27

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

Top