简易数字电压表的设计
桂 林 电 子 科 技 大 学
微 机 综 合 设 计
设
计
报
告
指导老师:
学 生:黎金辉
学 号: 0700150313
桂林电子科技大学机电工程学院
《微机综合设计》设计报告
一、设计题目 二、设计内容与要求 三、设计目的意义 四、系统硬件电路图 五、程序流程图与源程序六、系统功能分析与说明七、设计体会 八、参考文献
基于AT89S51的简易数字电压表的设计
摘要:本课题是利用单片机设计一个数字电压表,能够测量0-5V 之间的直流电压值,四位数码管显示,使用的元器件数目较少。外界电压模拟量输入到A/D转换部分的输入端,通过ADC0809转换变为数字信号,输送给单片机。然后由单片机给数码管数字信号,控制其发光,从而显示数字。此外,本文还讨论了设计过程中的所用的软件硬件环境,调试所出现的问题等。
关键词:单片机; AT89S51;数字电压表; ADC0809,四位数码管
Abstract: This topic is the use of microcontroller design a digital voltmeter, capable of measuring between 0-5V DC voltage, four digital display, the use of fewer components. External analog voltage input to the A / D conversion part of the input of the conversion into a digital signal through the ADC0809, transmission to the microcontroller. And then by the microcontroller to the digital control digital signal, control the light, so the displayed number. In addition, the article also discusses the design process of software used in the hardware environment, debugging the problems and so on. Key words: SCM; AT89S51; digital voltmeter; ADC0809, four digital
一、设计题目
基于AT89S51的简易数字电压表的设计。
二、设计内容与要求
用AT89S51单片机和ADC0809组成一个数字电压表,要求能够测量0~5V 的直流电压值,并用四位数码管显示,并要求所用元器件最少。
三、设计目的意义
1. 通过亲身的设计应用电路,将所用的理论知识应用到实践中,增强实践动手能力,进而促进理论知识的强化。
2. 通过数字电压表的设计系统掌握51单片机的应用。掌握A/D转换的原理及软件编程及硬件设计的方法,掌握根据课题的要求,提出选择设计方案,查找所需元器,设计并搭建硬件电路,编程写入EPROM 并进行调试等。
四、系统硬件电路图
4.1 系统原理框图
选择AT89S51作为单片机芯片,选用四位8段共阴极LED 数码管实现电压显示,利用ADC0809作为数模转换芯片。将数据采集接口电路输入电压传入ADC0809数模转换元件,经转换后通过D0至D7与单片机P0口连接,把转换完的模拟信号以数字信号的信号的形式传给单片机,信号经过单片机处理从LED 数码显示管显示。P2口接数码管位选,P1接数码管,实现数据的动态显示,如图4.1所示。
图4.1 系统原理框图
4.2 AT89S51的结构
在本次课题设计中我们选择了AT89S51芯片。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
4.2.1 AT89S51内部结构概述
• 三级程序存储器保密锁定 • 128*8位内部RAM • 32条可编程I/O线 • 两个16位定时器/计数器 • 6个中断源 • 可编程串行通道
• 低功耗的闲置和掉电模式
• 片内振荡器和时钟电路
图 4.2 单片机(AT89S51)引脚及外观
4.2.2 CPU结构
CPU 是单片机的核心部件。它由运算器和控制器等部件组成。 1. 运算器
运算器以完成二进制的算术/逻辑运算部件ALU 为核心。它可以对半字节(4)、单字节等数据进行操作。例如,能完成加、减、乘、除、加1、减1、BCD 码十进制调整、比较等算术运算,完成与、或、异或、求反、循环等逻操作,操作结果的状态信息送至状态寄存器。
运算器还包含有一个布尔处理器,用以处理位操作。它以进位标志位C 为累加器,可执行置位、复位、取反、位判断转移,可在进位标志位与其他可位寻址的位之间进行位数据传诵等操作,还可以完成进位标志位与其他可位寻址的位之间进行逻辑与、或操作。
2. 程序计数器PC
PC 是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB ,PC 有自动加1功能,即完成了一条指令的执行后,其内容自动加1。
3. 指令寄存器
指令寄存器用于存放指令代码。CPU 执行指令时,由程序存储器中读取的指令代码送如指令寄存器,经指令译码器译码后由定时有控制电路发出相应的控制信号,完成指令功能。
4.2.3 存储器和特殊功能寄存器
1. 存储器(Memory )是计算机系统中的记忆设备,用来存放程序和数据。计算机中的全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。
2. 特殊功能寄存器
特殊功能寄存器(SFR )的地址范围为80H ~FFH 。在MCS -51中,除程序计数器PC 和四个工作寄存器区外,其余21个特殊功能寄存器都在这SFR 块中。其中5个是双字节寄存器,它们共占用了26个字节。各特殊功能寄存器的符号和地址见附表2。其中带*号的可位寻址。特殊功能寄存器反映了8051的状态,实际上是8051的状态字及控制字寄存器。用于CPU PSW便是典型一例。这些特殊功能寄存器大体上分为两类,一类与芯片的引脚有关,另一类作片内功能的控制用。与芯片引脚有关的特殊功能寄存器是P0~P3,它们实际上是4个八位锁存器(每个I/O口一个),每个锁存器附加有相应的输出驱动器和输入缓冲器就构成了一个并行口。MCS -51共有P0~P3四个这样的并行口,可提供32根I/O线,每根线都是双向的,并且大都有第二功能。其余用于芯片控制的寄存器中,累加器A 、标志寄存器PSW 、数据指针DPTR 等的功能前已提及。
4.2.4 P0-P3口结构
P0口功能 :P0口具有两种功能:第一,P0口可以作为通用I/O接口使用,P0.7—P0.0用于传送CPU 的输入/输出数据。输出数据时可以得到锁存,不需外接专用锁存器,输入数据可以得到缓冲。第二,P0.7—P0.0在CPU 访问片外存储器时用于传送片外存储器de 低8位地址,然后传送CPU 对片外存储器的读写
P1口 功能 :P1口的功能和P0口de 第一功能相同,仅用于传递I/O输入/输出数据。 P2口的功能 :P2口的第一功能和上述两组引脚的第一功能相同,即它可以作为通用I/O使用。它的第二功能和P0口引脚的第二功能相配合,作为地址总线用于输出片外存储器的高8位地址。
P3口功能 :P3口有两个功能:第一功能与其余三个端口的第一功能相同;第二功能作控制用,每个引脚都不同。
表4.1 P3口第二功能
4.2.5 时钟电路和复位电路
1. 时钟电路
单片机的时钟一般需要多相时钟,所以时钟电路由振荡器和分频器组成。
MCS-51内部有一个用于构成振荡器的可控高增益反向放大器。两个引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。在片外跨接一晶振和两个匹配电容C1、C2如图2.5所示。就构成一个自激振荡器。振荡频率根据实际要求的工作速度,从几百千赫至24MHz 可适当选取某一频率。匹配电容C1、C2要根据石英晶体振荡器的要求选取。
当晶振频率为12MHz 时,C1C2一般选30pF 左右。图2.5中PD 是电源控制寄存器PCON.1的掉电方式位,正常工作方式PD=0。当PD=1时单片机进入掉电工作方式,是一种节能工作方式。上述电路是靠MCS-51单片机内部电路产生振荡的。也可以由外部振荡器或时钟直接驱动MCS-51。
2. 复位电路
复位是单片机的初始化操作。其功能主要是将程序计数器(PC)初始化为0000H ,使单片机从0000H 单元开始执行程序,并将特殊功能寄存器赋一些特定值。复位是使单片机退出低功耗工作方式而进入正常状态一种操作。复位是上电的第一个操作,然后程序从0000H 开始执行。在运行中,外界干扰等因素可能会使单片机的程序陷入死循环状态或“跑飞”。要使其进入正常状态,唯一办法是将单片机复位,以重新启动。
复位后,程序计数器(PC)及各特殊功能寄存器(SFR)的值如表4.2所示。
图4.3 复位电路的内部及外部方式
表4.2 程序计数器及各特殊功能寄存器的复位值
RST 引脚是复位端,高电平有效。在该引脚输入至少连续两个机器周期以上的高电平,单片机复位。RST 引脚内部有一个斯密特ST 触发器(图2.10) 以对输入信号整形,保证内部复位电路的可靠,所以外部输入信号不一定要求是数字波形。使用时,一般在此引脚与VSS 引脚之间接一个8.2k Ω的下拉电阻,与VCC 引脚之间接一个约10μF 的电解电容,即可保证上电自动复位。
图4.4自动和手动复位电路图
上电或手动复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容C3的充电和反相门的作用,使RST 持续一段时间的高电平。当单片机已在运行当中时,按下复位键K 后松开,也能使RST 为一段时间的高电平,从而实现上电或手动复位的操作。
4.3器件的比较与选择
4.3.1显示器
本次设计中有显示模块,而常用的显示器件比较多,有数码管,LED 点阵,1602液晶,12864液晶等。
1. 数码管是最常用的一种显示器件,它是由几个发光二极管组成的8字段显示器件,其特点是价格非常的便宜,使用也非常的方便,显示效果非常的清楚。小电流下可以驱动每光,发光响应时间极短,体积小,重量轻,抗冲击性能好,寿命长。但数码管只能是显示0——9的数据。不能够显示字符。这也是数码管的不足之处。
2. LED点阵显示器件是由好多个发光二极管组成的。具有高亮度,功耗低,视角大,寿命长,耐湿,冷,热等特点,LED 点阵显示器件可以显示数字,英文字符,中文字符等。
3. 1602液晶是工业字符型液晶,能够同时显示16*2即32个字符。1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。使用时直接编写软件程序按一定的时序驱动即可。它的特点是显示字迹清楚,价格相对便宜。
4. 12864液晶也是一种工业字符型液晶,它不仅能够显示1602液晶所可以显示的字符,数字等信息,而且还可以显示8*4个中文汉字和一些简单的图片,显示信息也非常的清楚。使用时也直接编写软件程序按一定的时序驱动即可。不过它的价格比1602液晶贵了很多。
综合上述,根据本设计的要求和价格的考虑,选择数码管显示器。 单位数码管如图4.4所示,四位共阴极数码管如图4.5所示。
图4.5 四位共阴极数码管
4.3.2模数(A/D)芯片
A/D转换器是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。A/D转换的常用方法有:①计数式A/D转换,②逐次逼近型A/D转换,③双积分式A/D转换,④ V/F变换型A/D转换。在这些转换方式中,记数式A/D转换线路比较简单,但转换速度较慢,所以现在很少应用。双积分式A/D转换精度高,多用于数据采集及精度要求比较高的场合,如5G14433(31/2位),AD7555(41/2位或51/2位)等,但速度更慢。随着大规模集成电路的发展,目前不同厂家已经生产出了多种型号的A/D转换器,以满足不同应用场合的需要。如果按照转换原理划分,主要有3种类型,即双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。目前最常用的是双积分和逐次逼近式。
(1)A/D芯片的比较
双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点,比如ICL71XX 系列等,它们通常带有自动较零、七段码输出等功能。与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,比如ADC0808、ADC0809等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送单片机进行分析和显示。
1. AD0809是8位逐次逼近型A/D转换器,它是由一个8路的模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。些A/D转换器是的特点是8位精度,属于并行口,如果输入的模拟量变化大快,必须在输入之前增加采样电路。
2. AD0832也是8位逐次逼近型A/D转换器,可支持致命伤个单端输入通道和一个差分输入通道。它易于和微处理器接口或独立使用;可满量程工作;可用地址逻辑多路器选通各输入通道。
3. TLC2543C 是12位开关电容逐次逼近A/D转换,每个器件有三个控制输入端,片选,输入/
输出时钟以及地址输入端。它可以从主机高速传输转换数据。它有高速的转换,通用
的控制能力,具有简化比率转换,刻度以及模拟电路与逻辑电路和电源噪声隔离,耐高温等特点。
综合上述,逐次逼近型A/D转换既照顾了转换速度,有具有一定的精度,这里选用的是逐次逼近型的A/D转换芯片ADC0809。
图4.6 ADC0809内部结构
图4.6 ADC0809引脚图
(2)
ADC0809 的工作原理
1.IN0-IN7:8 条模拟量输入通道
ADC0809 对输入模拟量要求:信号单极性,电压范围是0-5V ,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:4条。ALE 为地址锁存允许输入线,高电平有效。当ALE 线为高电平时,地址锁存与译码器将A , B,C 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A ,B 和C 为地址输入线,用于选通IN0-IN7 上的一路模拟量输入。通道选择表如表4.3所示。
表4.3 ADC0809通道选择表
2. 数字量输出及控制线:11 条
ST 为转换启动信号。当ST 上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D 转换;在转换期间,ST 应保持低电平。EOC 为转换结束信号。当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D 转换。OE 为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE =1,输出转换得到的数据;OE =0,输出数据线呈高阻状态。D7-D0 为数字量输出线。
CLK 为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ ,
VREF (+),VREF (-)为参考电压输入。
3. ADC0809 应用说明
①ADC0809 内部带有输出锁存器,可以与AT89S51 单片机直接相连。
②初始化时,使ST 和OE 信号全为低电平。
③送要转换的哪一通道的地址到A ,B ,C 端口上。
④在ST 端给出一个至少有100ns 宽的正脉冲信号。
⑤是否转换完毕,我们根据EOC 信号来判断。
⑥当EOC 变为高电平时,这时给OE 为高电平,转换的数据就输出给单片机了。
AD0809的启动方式为脉冲启动方式,启动信号START 启动后开始转换,EOC 信号在
START 的下降沿10us 后才变为无效的低电平。这要求查询程序待EOC 无效后再开始查询, 转换完成后,EOC 输出高电平,再由OE 变为高电平来输出转换数据。我们在设计程序时 可以利用EOC 信号来通知单片机(查询法或中断法)读入已转换的数据,也可以在启动 AD0809 后经适当的延时再读入已转换的数据。AT89S51的输出频为晶振频的1/6(2MHZ ),AT89S1 与SUN7474连接经与7474的ST 脚提供AD0809 的工作时钟。AD0809 的工作频范围为10KHZ-1280KHZ, 当频率范围为500KHZ 时,其转换速度为128us 。
4.4 系统硬件及仿真图
4.4.1 系统仿真图
4.4.2 系统原理图
4.4.3 系统PCB 图
4.5 相关软件简介
4.5.1 Protel99
Protel99SE 是应用于Windows9X/2000/NT操作系统下的EDA 设计软件,采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D 模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源--地层和16个机加工层。
(1)Protel 99 SE的系统组成
按照系统功能来划分,Protel99se 主要包含以下俩大部分和6个功能模块。
1. 电路工程设计部分
①电路原理设计部分(Advanced Schematic 99):电路原理图设计部分包括电路图编辑器(简称SCH 编辑器)、电路图零件库编辑器(简称Schlib 编辑器)和各种文本编辑器。本系统的主要功能是:绘制、修改和编辑电路原理图;更新和修改电路图零件库;查看和编辑有关电路图和零件库的各种报表。
②印刷电路板设计系统(Advanced PCB 99):印刷电路板设计系统包括印刷电路板编辑器(简称PCB 编辑器)、零件封装编辑器(简称PCBLib 编辑器)和电路板组件管理器。本系统的主要功能是:绘制、修改和编辑电路板;更新和修改零件封装;管理电路板组件。
③自动布线系统(Advanced Route 99):本系统包含一个基于形状(Shape-based )的无栅格自动布线器,用于印刷电路板的自动布线,以实现PCB 设计的自动化。
(2)电路仿真与PLD 部分
①电路模拟仿真系统(Advanced SIM 99):电路模拟仿真系统包含一个数字/模拟信号仿真器,可提供连续的数字信号和模拟信号,以便对电路原理图进行信号模拟仿真,从而验证其正确性和可行性。
②可编程逻辑设计系统(Advanced PLD 99):可编程逻辑设计系统包含一个有语法功能的文本编辑器和一个波形编辑器(Waveform )。本系统的主要功能是;对逻辑电路进行分析、综合;观察信号的波形。利用PLD 系统可以最大限度的精简逻辑部件,使数字电路设计达到最简化。
③高级信号完整性分析系统(Advanced Integrity 99):信号完整性分析系统提供了一个精确的信号完整性模拟器,可用来分析PCB 设计、检查电路设计参数、实验超调量、阻抗和信号谐波要求等。
(3)Protel 99 SE的功能特性
①开放式集成化的设计管理体系
②超强功能的、修改与编辑功能
③强大的设计自动化功能
4.5.2 Keil Keil C51是美国Keil Software公司出品的51系列兼容单片机C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C 来开发,体会更加深刻。
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU 可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil 即可看出。Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision )将这些部分组合在一起。运行Keil 软件需要Pentium 或以上的CPU ,16MB 或更多RAM 、20M 以上空闲的硬盘空间、WIN98、NT 、WIN2000、WINXP 等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C 语言编程,那么Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
(1)系统概述
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。
(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 中。
使用独立的Keil 仿真器时,注意事项:
* 仿真器标配11.0592MHz 的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。
* 仿真器上的复位按钮只复位仿真芯片,不复位目标系统。
* 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM ,不能使用片外ROM ;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM (其CPU 的/EA引脚接至低电平)的目标系统中使用。
(3) Keil优点
Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
4.5.3 Protues
Protues 软件是英国Labcenter electronics 公司出版的EDA 工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA 工具软件的仿真功能,还能仿真
单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus 是世界上著名的EDA 工具(仿真软件) ,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB 设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR 、ARM 、8086和MSP430等,2010年即将增加Cortex 和DSP 系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR 、Keil 和MPLAB 等多种编译器。
(1)功能特点
Protues 软件具有其它EDA 工具软件(例:multisim )的功能。这些功能是:
1. 原理布图
2.PCB 自动或人工布线
3.SPICE 电路仿真
(2)革命性的特点
1. 互动的电路仿真
用户甚至可以实时采用诸如RAM ,ROM ,键盘,马达,LED ,LCD ,AD/DA,部分SPI 器件,部分IIC 器件。
2. 仿真处理器及其外围电路
可以仿真51系列、AVR 、PIC 、ARM 、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Protues 建立了完备的电子设计开发环境。
(3)四大功能模块
1. 智能原理图设计(ISIS )
丰富的器件库:超过27000种元器件,可方便地创建新元件;
智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;
智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间; 支持总线结构:使用总线器件和总线布线使电路设计简明清晰;
可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP 图纸,可以方便地供WORD 、POWERPOINT 等多种文档使用。
2.完善的电路仿真功能(Prospice )
①ProSPICE 混合仿真:基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真; ②超过27000个仿真器件:可以通过内部原型或使用厂家的SPICE 文件自行设计仿真器件,Labcenter 也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件; ③多样的激励源:包括直流、正弦、脉冲、分段线性脉冲、音频(使用wav 文件)、指数信号、单频FM 、数字时钟和码流,还支持文件形式的信号输入;
④丰富的虚拟仪器:13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI 调试器、I2C 调试器等;
⑤生动的仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动;
⑥高级图形仿真功能(ASF ):基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析;
3. 独特的单片机协同仿真功能(VSM )
①支持主流的CPU 类型:如ARM7、8051/52、AVR 、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp 、8086、MSP430等,CPU 类型随着版本升级还在继续增加,如即将支持CORTEX 、DSP 处理器;
②支持通用外设模型:如字符LCD 模块、图形LCD 模块、LED 点阵、LED 七段显示模块、键盘/按键、直流/步进/伺服电机、RS232虚拟终端、电子温度计等等,其COMPIM (COM 口物理接口模型)还可以使仿真电路通过PC 机串口和外部电路实现双向异步串行通信;
③实时仿真:支持UART/USART/EUSARTs仿真、中断仿真、SPI/I2C仿真、MSSP 仿真、PSP 仿真、RTC 仿真、ADC 仿真、CCP/ECCP仿真;
④编译及调试:支持单片机汇编语言的编辑/编译/源码级仿真,内带8051、AVR 、PIC 的汇编编译器,也可以与第三方集成编译环境(如IAR 、Keil 和Hitech )结合,进行高级语言的源码级仿真和调试;
4. 实用的PCB 设计平台
①原理图到PCB 的快速通道: 原理图设计完成后,一键便可进入ARES 的PCB 设计环境,实现从概念到产品的完整设计;
②先进的自动布局/布线功能:支持器件的自动/人工布局;支持无网格自动布线或人工布线;支持引脚交换/门交换功能使PCB 设计更为合理;
③完整的PCB 设计功能:最多可设计16个铜箔层,2个丝印层,4个机械层(含板边),灵活的布线策略供用户设置,自动设计规则检查,3D 可视化预览;
④多种输出格式的支持:可以输出多种格式文件,包括Gerber 文件的导入或导出,便利与其它PCB 设计工具的互转(如protel )和PCB 板的设计和加工。
(3)Protues提供了丰富的资源
1.Protues 可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
2.Protues 可提供的仿真仪表资源 :示波器、逻辑分析仪、虚拟终端、SPI 调试器、I2C 调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。
3. 除了现实存在的仪器外,Protues 还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。
4.Protues 可提供的调试手段 Protues提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。
(4)软件仿真
支持当前的主流单片机,如51系列、AVR 系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。 1. 提供软件调试功能
2. 提供丰富的外围接口器件及其仿真
RAM ,ROM ,键盘,马达,LED ,LCD ,AD/DA,部分SPI 器件,部分IIC 器件。这样很接近实际。在训练学生时,可以选择不同的方案,这样更利于培养学生。
3. 提供丰富的虚拟仪器
利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬件的调试能力。 4. 具有强大的原理图绘制功能 (5)电路功能仿真
在PROTUES 绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTUES 的原理图中看到模拟的实物运行状态和过程。
PROTUES 是单片机课堂教学的先进助手。PROTUES 不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTUES 提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台
随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTUES 也能茯得愈来愈广泛的应用。
- 21 -
五、程序流程图与源程序
5.1 程序流程图
- 22 -
图 5.1 程序流程图
图5.2主函数流程图
- 23 -
5.2 存储空间定义安排
(1)70H 用于存放A/D转换结果,71H 、72H 、73H 、74H 分别存储显示用的三位数据如表5.1所示。
表5.1存储空间定义表
(2)地址30H ~39H 存放显示在数码管上0~9的数。如表5.2所示。
表5.2 数码管表存储数据
- 24 -
5.3 汇编语言程序清单
QIAN EQU 71H BAI EQU 72H SHI EQU 73H GEWEI EQU 74H
;71H-74H 存放显示数据,依次为个位、十位、百位、千位
SHUJU EQU 70H ;地址70H 存放采集数据 ST BIT P3.0 ;START和ALE 共用一个端口 OE BIT P3.6 EOC BIT P3.7 CLK BIT P3.3 ORG 0000H LJMP START ORG 0030H
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH START:
MAIN: LCALL TEST ;数据采集函数
LCALL TURNDATA ;数据处理函数
LCALL DISPLAY ;显示函数 LJMP MAIN
/***************延时函数****************/ DELAY: MOV R7,#06H LOOP1: LOOP2:
/***************ADC0809采集函数*************/ TEST: CLR ST
CLR OE SETB ST
CLR ST ;ST端口下降沿,开始转换
SETB CLK ;由软件来提供ADC0809工作的时钟频率 CLR CLK
JNB EOC,LOOPCLK ;EOC=1时,退出循环 SETB OE
;转换后数据的传送
MOV P1,#0FFH ;P1端口读数据,需先给高电平
- 25 -
;约延时1.5ms
MOV R6,#0FFH DJNZ R6,LOOP2
DJNZ R7,LOOP1
RET
LOOPCLK:
CLR OE
MOV SHUJU,A ;存储数据到地址70H
RET
/**************数据处理函数***********/ TURNDATA: MOV A,SHUJU MOV B,#51
DIV AB ; MOV QIAN,A
CLR F0
MOV A,B
SUBB A,#1AH ;A MOV F0,C ; MOV A,#10 MUL AB MOV B,#51 DIV AB JB F0,LP1
ADD A,#5 ;LP1:
MOV BAI,A ;CLR F0
MOV A,B SUBB A,#1AH MOV F0,C MOV A,#10 MUL AB MOV B,#51 DIV AB
JB F0,LP2 ;F0=1 ADD A,#5 ;LP2:
MOV SHI,A ; CLR F0 MOV A,B SUBB A,#1AH MOV F0,C MOV A,#10
MUL AB
余数在B, 相除以后C=0
;储存千位
减去26,测试上面AB 相除时,余数与26相比较余数=26,百位加五 储存百位 时,转移 若AB 相除后B>=26,十位加五 储存十位 - 26 -
DIV AB
JB F0,LP3 ;F0=1时,转移 ADD A,#5 ;若AB 相除后B>=26,个位加五 MOV GEWEI,A ;储存个位
LP3:
RET
/***************显示函数*******************/ DISPLAY:
XIANSHI:
NOT_ONE:
RET END
MOV R1,#4 ;MOV R2,#0FEH
MOV R0,#71H ;MOV DPTR,#TAB
MOV A,@R0 MOVC A,@A+DPTR
CJNE R2,#0FEH,NOT_ONE ;ORL A,#80H ;MOV P0,A ;MOV P2,R2 ;LCALL DELAY ;MOV A,R2
RL A ;MOV R2,A
INC R0 ;DJNZ R1,XIANSHI
循环四次
存放显示初始地址 不是左边第一个数码管,则转移 左边第一个数码管显示小数点 数码管段选 数码管位选
延时 循环左移 选取下一个地址 - 27 -
5.4 C语言程序清单
#include sbit CLK=P3^3; sbit OE=P3^6; sbit ST=P3^0; sbit EOC=P3^7; unsigned int dianya; unsigned char code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};
/***************延时函数****************/ void delay(unsigned int z) { }
/***************ADC0809采集函数*************/ void ADC_0809() {
unsigned char temp=2; ST=0; OE=0; ST=0; while(z--);
ST=1; CLK=1; CLK=0; CLK=1; CLK=0;
while(!EOC) { CLK=1; } OE=1;
P1=0xff; //读取P1端口数据
- 28 -
CLK=0;
}
temp=P1; OE=0;
dianya=(unsigned int)temp*19.53;
/***************数据转换和显示函数*******************/ void Vpp_Show() { unsigned char qian,bai,shi,ge; qian=dianya/1000; bai=dianya%1000/100; shi=dianya%100/10; ge=dianya%10;
P2=0xfe;
P0=table[qian]|0x80; // delay(50); P2=0xfd;
P0=table[bai];
delay(50); P2=0xfb;
P0=table[shi]; delay(50); P2=0xf7; P0=table[ge];
}
void main() { while(1) {
ADC_0809();
Vpp_Show(); }
}
显示小数点 - 29 -
六、系统功能分析与说明
6.1 数字电压表的概述
数字电压表(Digital Voltmeter )简称DVM ,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC 进行实时通信。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由DVM 扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。
6.2 数字电压表的介绍
模拟电压表具有电路简单、成本低、测量方便等特点,但测量精度较差,特别是受表头精度的限制,即使采用0.5级的高灵敏度表头,读测时的分辨力也只能达到半格。再者,模拟式电压表的输入阻抗不高,测高内阻源时精度明显下降。数字电压表作为数字技术的成功应用,发展相当快。数字电压表(Digital VoIt Me-ter ,DVM ),以其功能齐全、精度高、灵敏度高、显示直观等突出优点深受用户欢迎。特别是以A /D 转换器为代表的集成电路为支柱,使DVM 向着多功能化、小型化、智能化方向发展。DVM 应用单片机控制,组成智能仪表;与计算机接口,组成自动测试系统。目前,DVM 多组成多功能式的,因此又称数字多用表(Digital Multi Meter,DMM )。
DVM 是将模拟电压变换为数字显示的测量仪器,这就要求将模拟量变成数字量。这实质上是个量化过程,即将连续的无穷多个模拟量用有限个数字表示的过程,完成这种变换的核心部件是A /D 转换器,最后用电子计数器计数显示,困此,DVM 的基本组成是A /D 转换器和电子计数器。
DVM 最基本功能是测直流电压,考虑到仪器的多功能化,可将其他物理量,如电阻、电容、交流电压、电流等,都变成直流电压,因此,还应有一个测量功能选择变换器,它包含在输入电路中。DVM 对直流电压直接测量时的测量精度最高,其他物理量在变换成直流电压时,受功能选择变换器精度的限制,测量精度有所下降。
6.3 数字电压表工作原理
数字电压表的系统工作原理:首先,被测电压信号进入A /D 转换器,单片机中控制信号线发出控制信号,启动A /D 转换器进行转换,其采样得到的数字信号数据在相应的码制转换模块中转换为显示代码。最后发出显示控制与驱动信号,驱动外部的数码管显示相应的数据。图2.1所示为DVM 的基本组成框图,需指出的是,图中将DVM 分成模拟和数字两大部分,从框图上看,A /D 转换器包含在模拟部分,这样划分并不严格,因为A /D 转换器本身具有数字电路的性质,特别是大规模集成化A /D 转换器是模拟与数字两系统相互结合的,就连逻辑控制也集成在其中。
- 30 -
图6.1 数字电压表基本组成框图
6.4 数字电压表发展及未来
回顾一下DVM 的发展过程,大致可以分为以下三个阶段。
1. 数字化阶段
20世纪50年代到60年代中期,DVM 的特点是运用各种原理实现模/数(A/D)转换,即将模拟量转化成数字量,从而实现测量仪表的数字化。1952年,第一台问世的数字电压表是采用电子管的伺服比较式;1956年出现谐波式V/T(电压/时间变换型) ;1961年出现全晶体管化的逐次逼近比较式;1963年出现电压/频率(V/F)变换型(单积分式);1966年出现双积分式(双斜式)等。这一时期的显示位数是3.5-5.5位
2. 高精度阶段
由于精密电测量的需要,DVM 开始向高准确、高位数方向发展,出现了所谓复合型原理的仪表。如1971年日本研制的TR-6567(三次采样积分式);1973年英国研制的SM-215(两次采样电感分压比较型);1972年日本研制的TR-6501型DVM 已达到了8位数。与此同时对积分方案进行了改进和提高,出现了如Dana 公司的6900型(7位)、Solartron 公司生产的7075型(8位),其准确度可达到百万分之几。
3. 智能化阶段
由于电子技术、大规模集成电路(LSI )及计算机技术的发展,是人们不久就研制出微处理器(P )数字电压表,实现了DVM 数据处理自动化和可编程序,因为带有存储器并使用软件支持,所以可以进行信息处理,可通过标准接口组成自动测试系统(ATS )例如,Fluke 公司的8506型、Solartron 公司的7065型和7081型、Datron 公司的1071和1281型,以及Fluke 公司的最新产品8508A 型等。它们除了完成原有DVM 的各种功能外,还能够自校、自检,保证了自动测量的高准确度,实现了仪器、仪表的智能化。当前,智能式仪表发展十分迅速,而微处理式DVM 在智能仪表中占的比重最大。智能化的DVM 为实现各种物理量的动态测量提供了可能。
6.5 软硬件调试
软件调试的任务是利用开发工具进行调试,发现和纠正程序的错误,同时也能发现硬件的故障。软件调试是一个模块接一个模块进行的。首先单独调试各子程序是否能够按照预期
的功能,接口电路的控制是否正常。最后调试整个程序。尤其注意的是各模块间能否正确的传递参数。
1. 检查数码管显示模块程序。观察数码管上是否能够显示相应的字符。
2. 检查A/D转换模块程序。可以在硬件电路的输入端输入已知的几个电压,分别观察数码管上是否显示相应的电压值。
3. 检查数据的转换模块程序。
程序可分为数据采集系统、数据转换系统、显示系统,这三部分先独立测试,然后整体调试。
①数据采集系统:因为ADC0809本身并没有内部时钟,需要外部时钟来提供工作的时钟频率。如果利用单片机ALE 端脚提供的频率为6MHZ ,而ADC0809工作的频率在10KHZ-1MHZ 。因此,需要增加含触发器功能的器件,从面增加了系统的复杂程度。后来,经过小组不断的讨论与思考,最终用软件编程来提供ADC0809工作的时钟频率,从而解决了这个问题。
②显示系统的调试:要显示的数据存放在71H 、72H 、73H 、74H 单元中,先在30H~39H分单元中存放0~9的数,运行显示程序,进行查表指令,察看显示的结果是否与存放值一样。在测试的过程中发现小数点没有显示,通过下面几条指令,把小数点显示出来。
MOVC A,@A+DPTR
CJNE R2,#0FEH,NOT_ONE ;不是左边第一个数码管,则转移 ORL A,#80H ;左边第一个数码管显示小数点
MOV P0,A ;数码管段选 NOT_ONE:
另外,发现四位数码管显示的亮度不一样,有时还存在闪烁的情况,后来经过调整各位数码管显示的间隔,调用延时函数解决了亮度不一的问题。
③整体测试:把三部分进行程序联调,编译程序,看是否存在错误。经过多次的尝试与查找相资料,最后做出并完善了整体的方案。
4. 系统进一步改进方案
进一步提高测量精度,把精确到小数点后一位改为精确到小数点后三位。
6.5系统功能分析
本课题是利用单片机设计一个数字电压表,能够测量0-5V 之间的直流电压值,四位数码显示,使用的元器件数目较少。外界电压模拟量输入到A/D转换部分的输入端,通过A/D转换变为数字信号,输送给单片机。然后由单片机给数码管数字信号,控制其发光,从而显示数字。
七、设计体会
经过近二周的单片机课程设计,终于完成了我的数字电压表的设计,基本达到设计要求。 对于此次课程设计,有许多的感触与体会,遇到的难题多,学习到的知识也就更多。 第一,硬件电路遇到了ADC0809无内部时钟,需外接外部时钟,如何解决这个问题,我们小组进行了多次讨论,最终确定了在程序中提供时钟信号,大大降低了硬件电路的复杂度。
第二,则是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。其中,我遇到了很多的问题,虽然以前还做过这样的设计,但是以前的都是用C 语言进行编程。而此次运用汇编语言编程,着实让我当头一棒,因为除了微机原理实验进行过相关编程,汇编语言的编程能力还停留在理论阶段。在此次编程中,首先,我是先用C 语言编程,进行调试后,成功的达到了课程设计的要求。其次,查找汇编语言的相关资料,经过不懈的努力与调试,终于将汇编语言版的成功编程出来。
第三,在一个课题中,要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,重要的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。
第四,在本次设计的过程中,我还学会了高效率的查阅资料、运用工具书、利用网络查找资料。我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整,这就要求我们应更加注重实践环节。
最后,还要在此感谢课程设计的指导老师们和我的组员们,他们在整个过程中都给予了我充分的帮助与支持。
八、参考文献
[1] 李华.MCS-51系列单片机实用接口技术[M].1989.
[2] 周立功. 单片机实验与实践. 北京:北京航空航天大学出版社.
[3] 吴国经. 单片机应用技术. 北京:中国电力出版社,2003.
[4] 徐惠民 安德宁 丁玉珍. 单片微型计算机原理、接口及应用. 北京:北京邮电大学出版
社,2007年.
[5] 徐爱钧. 《智能化测量控制仪表原理与设计》(第二版)[M].北京:北京航空航天大学出
版社,2004.