《基于单片机的直流稳压电源的设计毕业设计论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的直流稳压电源的设计毕业设计论文.doc(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、*大学毕业设计(论文)毕业设计论文基于单片机的直流稳压电源的设计摘 要直流稳压电源是电子技术常用的设备之一,广泛的应用于教学、科研等领域。传统的直流稳压电源几乎都是用旋纽开关调节电压,调节精度不高、难控制、体积大、结构复杂,而且经常跳变,使用麻烦。将单片机数字控制技术融入直流稳压电源的设计中,设计出的数字化直流稳压电源具有数码显示、数字输入调压、电压调节精度高的特点。而且通过软件编程,易于实现功能的扩展。数控电源目前的发展,主要朝着更高的数控精度和分辨率及更好的动态特性;更好的环保性能;智能化与高可靠性;更广泛的应用方向发展。本设计利用AT89S51作为主控芯片,控制数模转换模块DAC0832
2、的输出电压,通过运算放大器OPA552放大输出。设置四个按键,来实现电压的增减,并带有数码显示模块。可以达到每步0.1V的精度,输出电压范围015V,电流可以达到200mA。关键词:数控电源;AT89S51;DAC0832;OPA552AbstractDirect current voltage-stabilized power supply is one of the commonly used equipment in electronic technology. Its widely used in teaching, researching and other fields.Most
3、of the traditional direct current voltage-stabilized power supply use the knob switch to adjust the voltage.It has the trouble of low-precision and difficult to control. The structure is complex and the volume is large.The numerical control technique of single chip microcomputer is adopted in the de
4、sign of direct current voltage-stabilized power supply for a digitalized.Having numeral display,the direct current power can adjust voltage programmably and differentiate voltage precisely.Moreover,its easy to have its function enlarged through the programmer.Numerical control direct current voltage
5、-stabilized power supply mainly toward to high-precision,high-resolution,better dynamic characteristics,better environmental performance,intelligent,high reliability and wider application direction.In this design,using the AT89S51 as main module to control the output voltage of DAC0832. The voltage
6、is magnified by amplifier OPA552. In this system, the step of voltage is control by four keys, and the display module is also designed.The step precision is 0.1V,the output voltage is range from 0V to 15V and the current is up to 200mA.Key words: Numerical control power;AT89S51;DAC0832;OPA552目 录摘要IA
7、bstractII第1章 绪论11.1 课题的背景和意义11.2 数控电源的发展1第2章 方案设计3第3章 系统硬件电路设计43.1 主要电路的设计43.2 具体电路介绍43.2.1 主控单元电路43.2.2 信号处理电路83.2.3 电压放大电路123.2.4 按键电路143.2.5 显示电路15第4章 系统软件设计184.1 程序运行原理184.2 程序流程194.2.1 延时子程序流程194.2.2 拆分送显存子程序流程194.2.3 显示子程序流程204.2.4 主程序流程21第5章 设计仿真及调试225.1 WAVE6000集成调试软件简介225.2 程序调试的步骤23第6章 电路调
8、试及实验分析256.1 实验仪器256.2 电路焊接和调试256.3 实际电压与显示电压对比分析256.4 系统误差分析26结论27参考文献28附录1 电路原理图29附录2 程序清单30附录3 实物图35致谢3636第1章 绪 论1.1 课题的背景和意义电源技术尤其是数控电源技术是一门实践性很强的工程技术,服务于各行各业。电力电子技术是电能的最佳应用技术之一。当今电源技术融合了电气、电子、系统集成、控制理论、材料等诸多学科领域。随着计算机和通讯技术发展而来的现代信息技术革命,给电力电子技术提供了广阔的发展前景,同时也给电源提出了更高的要求。随着数控电源在电子装置中的普遍使用,普通电源在工作时产
9、生的误差,会影响整个系统的精确度。电源在使用时会造成很多不良后果,世界各国纷纷对电源产品提出了不同要求并制定了一系列的产品精度标准。只有满足产品标准,才能够进入市场。数控电源是从80年代才真正的发展起来,期间系统的电力电子理论开始建立。这些理论为其后来的发展提供了一个良好的基础。在以后的一段时间里,数控电源技术有了长足的发展。但其产品存在数控程度达不到要求、分辨率不高、功率密度比较低、可靠性较差的缺点。因此数控电源主要的发展方向,是针对上述缺点不断加以改善。单片机技术及电压转换模块的出现为精确数控电源的发展提供了有利的条件1。到90年代,随着新的变换技术和控制理论的不断发展,各种类型专用集成电
10、路、数字信号处理器件的研制应用,己经出现了数控精度达到0.05V的数控电源,功率密度达到每立方英寸50W的数控电源2。从组成上,数控电源可分成器件、主电路与控制等三部分。目前在电力电子器件方面,传统的直流稳压电源通常采用电位器和波段开关来实现电压的调节,并由电压表指示电压值的大小。因此,电压的调整精度不高,读数欠直观,电位器也易磨损,而且经常跳变,使用麻烦。而基于单片机控制的直流稳压电源能较好地解决以上传统稳压电源的不足。数控技术方面的发展是以51系列单片机为主控单元电路的发展和软开关技术等电子技术的完善为主要标志。数字化则应属于控制方面的重要发展方向,随着信息技术的突飞猛进,将对数控电源技术
11、的发展起到巨大推进作用。数控电源目前的发展,主要朝着更高的数控精度和分辨率及更好的动态特性;更好的环保性能;智能化与高可靠性;更广泛的应用等方向发展3。1.2 数控电源的发展20世纪80年代,出现了一种开关式稳压电源,这种电源是采用功率半导体器件作为开关,通过控制开关的占空比调整输出电压。开关型稳压电路中的调整管工作在开关状态,因而功耗小,电路效率高。开关电源的种类很多,按调整管与负载的连接方式可分为串联和并联型,串连开关稳压电路是降压型电路,并联开关型稳压电路是升压型电路。按稳压的控制方式可分为脉冲宽度调制型(PWM)、脉冲频率调制型(PFM)和混合调制型。这其中尤以PWM最为盛行,这种电源
12、在稳压方面功能非常优越,但在电压输出精度方面仍存在缺陷,旋钮式电源远不能满足工业需求,数控技术的发展给电源的发展注入新的活力,数控逐渐成为一种趋势4。随着人们生活水平的不断提高,数字化控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数控直流稳压电源就是一个很好的典型例子,但人们对它的要求也越来越高,要为现代人工作、科研、生活提供更好的,更方便的设施就需要从数字电子技术入手,一切向数字化,智能化方向发展。近年来出现了不少的数控电源产品,例如数控三步仿金电镀电源,具有自动稳压功能和软启动功能,时间在030秒内可调;具有稳压限流功能,稳压状态下输出电流超过正常电流10%,电源会自
13、动进入限流状态;具有高可靠的过流,短路保护功能,输出电流超过额定值的50%时,电源自动封锁输出,同时发出声和光报警5。随着数控技术以及可编程器件的发展,出现了一种可编程直流数控电源,其中最典型的就是3645A型数控电源,它是一种输出电压范围在036V,负载工作电流可以达到3A的直流稳压电源,电压及电流均可任意调节。其主要功能有:电压设定、电流上限设定、电源输出电压上限设定、通讯设定、键盘锁定功能、功率上限设定、保存选项设定等功能,电压、电流、功率均以LCD显示,画面清晰、直观,操作方便。数控程度已很高,但成本太贵,不利于大批生产6。第2章 方案设计方案设计原理框图如图2-1所示。图2-1 方案
14、设计原理框图本方案是采用AT89S51芯片作为主控单元。AT89S51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash程序存储器和128 bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的AT89S51为本设计提供了高性价比的解决方案。设置四个按键来实现电压的+0.1V、0.1V、+1V、1V。该系统使用3个数码管,采用动态扫描驱动方式,通过软件编程的方法,可以显示三位数,一个小数位,比如可以显示10.5V。从整个原理框图来看,
15、该方案思路非常清晰,就是通过单片机控制DA的输出电压,通过运算放大器放大输出,而电压大小在三位数码管上显示。采用软件方法来解决电压的步进控制和电压的显示,使系统硬件更加简洁,各类功能易于实现。所以选择本方案。第3章 系统硬件电路设计3.1 主要电路的设计系统硬件电路部分主要包括:主控单元电路:采用51系列单片机AT89S51为主控单元。信号处理电路:数模转换模块DAC0832。电压放大电路:集成运算放大器OPA552。人机接口电路:按键电路。显示部分电路:8位并行数码显示管。附属电路:包括晶体振荡电路、重启电路、参考电压电路、滤波电路等。3.2 具体电路介绍3.2.1 主控单元电路采用51系列
16、单片机AT89S51为主控单元。AT89S系列单片机是ATMEL公司研制生产的,优越的性能价格比使其成为颇受欢迎的单片机。AT89S系列与MCS-51系列单片机相比有两大优势:第一,片内程序存储器采用闪存存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片(AT89S2051/1051),使整个硬件电路的体积更小。AT89S系列单片机有4种型号:AT89S51、AT89S52、AT89S2051、AT89S4051,其中AT89S2051/4051是ATMEL公司AT89S系列的新成员。它以较小的体积,良好的性能价格比受青睐,在家电产品、工业控制、计算机产品、医疗器械、汽车工业等应用方面成
17、为用户降低成本的首选器件。这里以AT89S51为代表对AT89S系列单片机做一阐述。AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4k bytes的可系统编程的Flash只读程序存储器,器件采用高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。AT89S51单片机集Flash程序存储器和通用8位微处理器于单片芯片中,功能强大,价位低,可为许多应用场合提供高性价比的解决方案,可灵活应用于各种控制领域7。AT89S51芯片的引脚图如图3-1所示:图3-1 AT89S51引脚图主要性能参数: 与MCS-51产品指令系统完全兼容 4k字节在系统编程(IS
18、P)Flash闪速存储器 1000次擦写周期 4.0-5.5V的工作电压范围 全静态工作模式:0Hz-33MHz 三级程序加密锁 128*8位内部RAM 32个可编程I/O口线 两个16位定时/计数器 5个中断源 全双工串行UART通道 低功耗的闲置和掉电模式 中断可从空闲模式唤醒系统 看门狗(WDT)及双数据指针 掉电标识和快速编程特性 片内振荡器和时钟电路 管脚说明:VCC:供电电压。GND:接地。P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。每位能驱动8个TTL逻辑门电路。当对管脚写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分
19、时转换地址的低8位和数据总线复用。在FIASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,此时P0外部须接上拉电阻。P1口:P1口是一个带内部提供上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL逻辑门电路。P1口管脚写入1后,通过内部的上拉电阻把端口拉到高电平,此时可用作输入口,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉电阻的缘故。在FLASH编程和校验时,P1口接收低八位地址。 P2口:P2口是一个带有内部上拉电阻的8位双向I/O口,P2口的输出缓冲级可驱动4个TTL逻辑门电路,当P2口被写入“1”时,其管脚被内部上拉电阻拉高,此时可作为输入口。作为输
20、入口时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉电阻的缘故。当P2口访问外部程序存储器或外部数据存储器时,P2口输出地址的高八位。在访问8位地址的外部数据存储器时,P2口线上的内容,在整个访问期间不改变。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口,P3口输出缓冲级可驱动4个TTL逻辑门电路。当P3口写入“1”后,它们被内部上拉电阻拉为高电平,并可作为输入端口。作输入端时,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉电阻的缘故。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能可作为AT
21、89S51的一些特殊功能口:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 (外部中断0)P3.3 (外部中断1)P3.4 T0(定时器0)P3.5 T1(定时器1)P3.6 (外部数据存储器写选通)P3.7 (外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上的高电平将使单片机复位。ALE/:当访问外部存储器时,地址锁存允许管脚的输出电平用于锁存地址的低8位字节。在FLASH编程期间,此引脚用于输入编程脉冲。即使不访问外部存储器,ALE端仍以时钟振荡频率的1/6输出正脉冲信号,因此它可用
22、作对外部输出脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址单元上置0。此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚会被略微拉高,单片机在执行外部程序时,应设置ALE无效。:外部程序存储器的选通信号。在由外部程序存储器取指令期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。/VPP:当保持低电平时,则在此期间访问外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,将内部锁定为RESET;当端保持高电平时,此期间访问内部程序存储
23、器。在FLASH编程期间,此引脚也用于施加12V编程电压VPP。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:反向振荡放大器的输出端。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石英晶体振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。由于输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平符合要求的宽度。芯片擦除:在并行编程模式,利用控制信号的正确组合并保持ALE/引脚200ns-500ns的低电平脉冲宽度即可完成擦除操作。在串行编程模式,芯片擦除
24、操作是利用擦除指令进行。在这种方式,擦除周期是自身定时的,大约为500ms。此外,AT89S51设有稳态逻辑,可以在零频率的条件下进入静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作,但RAM,定时器,计数器,串行口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所有其他芯片的功能,直到下一个硬件复位为止。3.2.2 信号处理电路D/A转换器(DAC0832)引脚及功能介绍8:DAC0832为电压输入、电流输出的R-2R电阻网络型的8位D/A转换器,采用CMOS和薄膜Si-Cr电阻相容工艺制造,温漂低,逻辑电平输入与TTL电平兼容。它可直接与微处理器相连
25、,采用双缓冲寄存器,这样可在输出的同时,采集下一个数字量,以提高转换速度。DAC0832的内部功能框图如图3-2所示。图3-2 DAC0832的内部功能框图引脚排列如图3-3所示。图3-3 DAC0832的引脚排列图DAC0832的组成:DAC0832主要由3部分组成,第一部分是8位D/A转换器,输出为电流形式;第二部分是两个8位数据锁存器构成双缓冲形式;第三部分是控制逻辑。单片机可利用控制逻辑通过数据总线向输入锁存器存数据,因控制逻辑的连接方式不同,可使D/A转换器的数据输入具有双缓冲、单缓冲和直通3种方式。当、及接低电平时,ILE接高电平,即不用写信号控制,使两个寄存器处于开通状态,外部输
26、入数据直通内部8位D/A转换器的数据输入端,这种方式称为直通方式。当、接低电平,使DAC0832中2个寄存器中的一个处于开通状态,只控制一个寄存器,这种工作方式叫做单缓冲工作方式。当ILE为高电平,和为低电平,8位输入寄存器有效,输入数据存入寄存器。当D/A转换时,、为低电平,使8位D/A寄存器有效,将数据置入D/A寄存器中,进行D/A转换。2个寄存器均处于受控状态,输入数据要经过2个寄存器缓冲控制后才进入D/A转换器。这种工作方式叫做双缓冲工作方式9。DAC0832管脚定义说明如下:片选输入端,低电平有效,与ILE共同作用,对信号进行控制。ILE:输入的锁存信号,高电平有效,当ILE=1且和
27、均为低电平时,8位输入寄存器允许输入数据;当ILE=0时,8位输入寄存器锁存数据。:写信号1,低电平有效,用来将输入数据送入寄存器中;当=1时,输入寄存器的数据被锁定;当=0,ILE=1时,在为有效电平的情况下,才能写入数字信号。:写信号2,低电平有效,与组合,当和均为低电平时,输入寄存器中的8位数据传送给8位DAC寄存器;=1时8位DAC寄存器锁存数据。:传输控制信号,低电平有效,控制有效。DI0DI7:8位数字量输入端,其中DI0为最低位,DI7为最高位。Iout1:DAC电流输出1端,当DAC寄存器全为1时,输出电流Iout1为最大;当DAC寄存器中全都为0时,输出电流Iout1最小。I
28、out2:DAC电流输出2端,输出电流Iout1+Iout2常数。Rfb:芯片内的反馈电阻引出端,用来作为外接运算放大器的反馈电阻。在构成电压输出DAC时,此端应接运算放大器的输出端。Vref:参考电压输入端,通过该引脚将外部的高精度电压源与片内的R-2R电阻网络相连,其电压范围为-10+10V。VCC:电源电压输入端,电源电压范围为+5+15V,最佳状态为+15V。DGND:数字电路接地端。AGND:模拟电路接地端,通常与DGND相连。为了将模拟电流转换为模拟电压,需把DAC0832的两个输出端Iout1和Iout2分别接到运算放大器的两个输入端,经过一级运放得到单极性输出电压U1。当需要把
29、输出电压转换为双极性输出时,可由第二级运放对U1及基准电压Vref反相求和,得到双极性输出电压U2。如图3-4所示,电路为8位数字量DI0DI7经D/A转换器转换为双极性电压输出的电路图10。图3-4 D/A转换双极性输出电路图第一级运放的输出电压为:其中,D为数字量的十进制数。第二级运放的输出电压为:当R1=R2=2R3时,则DAC0832与AT89S51的连接:DAC0832是一种典型的8位转换器,内部为双缓冲寄存器即输入寄存器和DAC寄存器,和分别为相应两个寄存器的写信号控制端,ILE为输入锁存使能端,高电平有效,为片选端,为传输控制端,它和共同控制DAC寄存器的工作状态。DAC0832
30、有两个接地端AGND(模拟信号接地端)和DGND(数字信号接地端),一般情况下,这两个地端均应并联接地。DAC0832有三种工作方式:直通工作方式,单缓冲工作方式,双缓冲工作方式,在设计中选用单缓冲工作方式。DAC0832的D/A转换电路为倒T型R-2R电阻网络,有Iout1和Iout2两个电流输出端,根据不同的电路组成,该芯片可以有两种输出模式,一种为电流输出模式,这种模式基准电压加在Vref端,由Iout1和Iout2输出的电流经运算放大器相加后输出;另一种为电压输出模式,这种模式基准电压加在Iout1和Iout2之间,模拟电压从Vref端输出。本电路采用后一种模式,其基准电压通过电阻和L
31、M336-5.0精密基准电压源组成的稳压电路提供,其基准电压为5.12V,作为电路设计的程序设计编码基准电压。由于DAC0832为8位转换器,所以采取把5.12V电压等分256份,得出DAC0832每一步进输出的电压值为0.02V。即:5.12V/256=0.02V。DAC0832与AT89S51的连接图如图3-5所示。图3-5 DAC0832与AT89S51的连接图该电路采用单缓冲模式,电压输出方式。DI0-DI7接单片机对应的P0.0-P0.7,和相连接P2.0,和相连共同接地,ILE接+5V,Iout1接参考电压,Iout2接地,Rfb空置不用,而Vref作为电压输出端接集成放大器11。
32、DAC0832的11脚Iout1接参考电压,参考电压电路如图3-6所示。图3-6 参考电压电路通过调节可调电阻调节LM336的输出电压为5.12V,所以在DAC的8脚输出电压的分辨率为5.12V/256=0.02V,也就是说DAC0832输入数据端每增加1,电压增加0.02V。3.2.3 电压放大电路OPA552功能介绍12:OPA552是高电压,大电流,低成本的运算放大器。它的最优化增益是5或者更大,转换率为24v/us,带宽为12MHz。适合于电话,音频,伺服,及测试应用中。主要特性: 宽供电范围:4V至30V 高输出电流:最大输出200mA 低噪声:14nV/ 充分保护:热关闭 输出电流
33、限制:热关闭指示 快速转换率:24V/us 宽频带宽度:12MHzOPA552的引脚图如图3-7所示。图3-7 OPA552的引脚图OPA552的典型应用电路如图3-8所示。图3-8 OPA552的典型应用电路OPA552与DAC0832的连接:OPA552与DAC0832的连接图如图3-9所示图3-9 OPA552与DAC0832的连接图从电路图可知,放大器输出信号就是电源的输出电压,根据需要选择不同的DAC0832输入的数字量的值即可获得不同的控制电压(DAC0832输出电压),进而可获得所需的输出电压值。DAC0832的电压输出端Vref接放大器OPA552的输入端,放大器的放大倍数为(
34、10K+40K)/10K=5,输出的电压分辨率=0.02V5=0.1V。3.2.4 按键电路本设计利用四个按键来控制输出电压的变化。按键电路如图3-10所示:图3-10 按键电路KEY1为+0.1V按键,与单片机的P2.1相连,该键每按一次输出电压将在上一输出值的基础上增加0.1V。 KEY2为-0.1V按键,与单片机的P2.2相连,该键每按一次输出电压将在上一输出值的基础上减少0.1V。KEY3为+1V按键,与单片机的P2.3相连,该键每按一次输出电压将在上一输出值的基础上增加1V。KEY4为-1V按键,与单片机的P2.4相连,该键每按一次输出电压将在上一输出值的基础上减少1V。3.2.5
35、显示电路74LS164的引脚及功能介绍13:74LS164是串行输入/并行输出移位寄存器,有两个串行数据DA、DB输入端,使用时一般把它们连在一起;为清零输入端,低电平有效,当该端加入低电平时,寄存器输出Q0Q7全为低电平。在正常情况下,清零输入端接高电平,当CP信号上升沿到来时,数据右移一位;Q0Q7为并行数据输出端,同时Q7端也是串行数据输出端,对于串行输入的数据,最先输入的从Q7输出,最后进入的从Q0输出。CP为移位脉冲。74LS164的管脚排列如图3-11。图3-11 74LS164的管脚排列显示电路的连接:显示电路连接图如图3-12所示。图3-12 显示电路连接图显示电路由三个共阴级
36、的数码管和一个74LS164组成。三个数码管分别组成显示电路的十位、个位、小数点位,比如可以显示10.5V。由于三个数码管至少需要21根I/O线,为节约资源,采用串行输入并行输出的74LS164进行驱动输出。单片机的两个并行口P1.4和P1.5分别作为74LS164的信号输入口和时钟控制信号。P1.0、P1.1、P1.2分别接十位、个位、小数位的片选端。Q0Q7(第36和1013引脚)并行输出端分别接在LED显示器的a-dp各段对应的引脚上。LED的8个段选端通过电阻和74LS164的并行输出口即8根选线相连接。采用动态扫描驱动方式14。显示数据以串行方式从AT89S51的P1.4口输出送往移
37、位寄存器74LS164的A、B端,然后将变成的并行数据从输出端Q0Q7输出,选中LED相应的段。位选码由AT89S51的P1.0P1.2口输出低电平,以对数码管LED1LED3进行位选控制,这样,3个数码管便轮流显示。由于人眼的残留效应,这3个数码管看上去几乎是同时显示。第4章 系统软件设计4.1 程序运行原理软件要实现的功能是:键盘对单片机输入数据,单片机对获得的数据进行处理,送到8位数模转换器(DAC0832),再送到数码管显示,实现数字量对电压的控制。本程序的设计思路是:当电源打开的时候,单片机进行复位,寄存器清零,DAC0832清零,再转换成BCD码送到数码显示部分,电源应该显示零。这
38、时候程序循环检测是否有按键信号,如果KEY1按下,电压值加0.1V,把它送到DAC0832并且显示。如果KEY2按下,电压值减0.1V,把它送到DAC0832并且显示。如果KEY3按下,电压值加1V,把它送到DAC0832并且显示。如果KEY4按下,电压值减1V,把它送到DAC0832并且显示。该系统的软件编程采用MCS51系列单片机汇编语言完成。本程序的运行原理是:设计中CPU的工作任务是单一的,程序的工作过程是当系统上电复位后,默认输出0伏电压,然后扫描KEY1,KEY2,KEY3,KEY4键,当KEY1,KEY2,KEY3,KEY4有键按下时,程序跳转至相应的按键处理程序,经按键程序处理
39、后,再调用显示子程序。完成显示与输出操作后,继续扫描此四个按键。程序设计需要考虑的主要问题有两个方面。一方面要找出数字量与输出电压的关系,这是程序设计的依据;另一方面要建立显示值与输出电压值的对应关系,这是程序设计是否成功的标志。因为在本系统中,显示的输出电压值不是直接从输出电路中通过检测得到的,因此显示与输出并不存在直接联系。为了使显示值与实际输出值相一致,在程序编写时,必须人为地将两者建立某种关系。采用的方法是:在程序存储器中建立WORDTAB表格,存放数码显示器0-9字符所对应的数据15。编写拆分送显存子程序BIN_BCD,把要显示的数据按位拆分,送入不同的显存单元。分别存放在内存RAM
40、中32H单元,31H单元和30H单元。这三个单元分别存放数码显示器十位的字符,个位的字符和小数位的字符。这样就能使显示值与输出值保持一一对应的关系,即显示器能准确地显示出电源输出电压值的大小,达到电路设计的目的。由于理论计算与实际情况还存在着一定的差异,为了使显示值更加接近实际输出值,本电路在装配时需要对输出电压进行校正。方法是:将输出电压调至15V(显示器显示值)选用精确度较高的数字万用表对实际输出电压值进行校正,通过调整可调电阻使实际输出电压达到15V;然后再将输出电压调至0V (均为显示器显示值),同样用数字表进行校正。如此反复校正几次,就能使显示器的显示值和实际的输出值一致,达到较好的
41、效果。具体程序见附录。4.2 程序流程4.2.1 延时子程序流程图4-1 延时子程序流程图4.2.2 拆分送显存子程序流程图4-2 拆分送显存子程序流程图4.2.3 显示子程序流程图4-3 显示子程序流程图4.2.4 主程序流程图4-4 主程序流程图第5章 设计仿真及调试5.1 WAVE6000集成调试软件简介WAVE6000集成调试软件在以前的版本基础上增加了许多功能,特别是在窗口管理、项目管理和源文件编辑工具上做了较大改进,在WAVE6000环境下的所有窗口均可以放在窗口的同一块区域,各窗口可以直接切换,节省了窗口的面积,使窗口管理更有效。WAVE6000还增强了项目管理和源文件编辑方面的
42、功能,使得项目、文件切换更方便,有效地后退、前进功能使得修改程序更方便。新增加的书签窗口和断点窗口可以有效地管理断点和书签,使得程序员无需在众多的代码和断点中逐行查询,断点信息和书签信息在各自的窗口中显示一目了然16。项目窗口是用户和源程序文件、目标文件和用户设置等的桥梁,通过项目窗口可以建立项目、设置项目、添加源程序到项目、编译项目等项目操作。信息窗口显示项目操作和文件操作后的详细信息,例如打开项目、保存项目、项目编译过程以及出错信息等等。在一个项目调试之前,必须经过新建项目、设置项目、添加模块和包含文件、保存项目、编译项目,最后进入调试项目,其中的所有成功和错误信息都会在该窗口中显示,因此
43、用户在调试项目前,需要观察此窗口是否有错误信息,待排除错误后方可正确调试项目。观察窗口用于显示项目中的所有变量和用户自定义变量,能显示常量、函数入口地址、数组变量、结构变量、共用体变量、指针变量等多种复杂的数据类型。用户可以添加用户变量、设置变量类型,使用结合影子存储器、时效分析等功能分析用户程序、数据。变量一旦被修改,将很醒目的显示被修改过;支持直接修改变量的值,以方便程序的局部调试。断点窗口用于记录、显示用户在上次退出环境时设置的所有断点的信息(包括无效断点),例如所在的文件、所在行的行号、PC值、是否有效等信息。在该窗口用户可以删除任意一个断点,或者迅速查找到该断点所在程序的位置。书签窗
44、口同断点窗口类似,书签窗口用来管理用于记录、显示用户在上次退出环境时的所有书签的信息,例如所在文件、所在行的行号;用户可以在窗口中删除任意一个书签、迅速查找所在行。外设(包括端口、定时器、串行口、中断)菜单和相应的窗口是由SFR窗口寄生出来的外设菜单,专门用来显示外部设备的状态和相应的设置,可以通过该窗口生成用户修改设置后的汇编源码、C源码,用户可以脱离常用的手册直接修改各外设的工作方式,然后产生源码。设置文本编辑器窗口根据用户的喜好,可以设置文本编辑区的颜色属性和文本属性。5.2 程序调试的步骤1、建立新程序。选择文件新建文件,出现一个文件名为NONAME1的源程序窗口,在此窗口中输入源程序
45、。2、保存程序。选择文件保存文件或文件另存为,给出文件所要保存的位置,例如:C:WAVE6000SAMPLES文件夹,再给出文件名MY1.ASM。保存文件,文件保存后,程序窗口上文件名变成了:C:WAVE6000SAMPLESMY1.ASM3、建立新项目。选择文件新建项目,新建项目会自动分三步走:加入模块文件。在加入模块文件的对话框中选择刚才保存的文件MY1.ASM,按打开键。如果是多模块项目,可以同时选择多个文件再打开。加入包含文件。在加入包含文件对话框中,选择所要加入的包含文件(可多选)。如果没有包含文件,按取消键。保存项目。在保存项目对话框中输入项目名称。MY1无须加后缀。软件会自动将后
46、缀设成“.PRJ”。按保存键将项目存在与源程序相同的文件夹下。项目保存好后,如果项目是打开的,可以看到项目中的“模块文件”已有一个模块“MY1.ASM”,如果项目窗口没有打开,可以选择窗口项目窗口来打开。可以通过仿真器设置快捷键或双击项目窗口第一行选择仿真器和要仿真的单片机。4、设置项目选择设置仿真器设置或按“仿真器设置”快捷图标或双击项目窗口的第一行来打开“仿真器设置”对话框。在“仿真器”栏中,选择仿真器类型和配置的仿真头以及所要仿真的单片机。在“语言”栏中,“编译器选择”根据本设计程序选择为“伟福汇编器”。5、编译程序选择项目编译或按编译快捷图标或F9键,编译项目。在编译过程中,如果有错可以在信息窗口中显示出来,双击错误信息,可以在源程序中定位所在行。纠正错误后,再次编译直到没有错误。在编译之前,软件会自动将项目和程序存盘。在编译没有错误后,就可调试程序了。6、调试程序选择执行跟踪或按跟踪快捷图标或按F7键进行单步跟踪调试程序。单步跟踪就是一条指令一条指令地执行程序,若有子程序调用,也会跟踪到子程序中去。可以观察程序每步执行的结果,“”所指的就是下次将要执行的程序指令。由于条件编译或高级语言优化的原因,不是所有的源程序都能产生机器指令。源程序窗口最左边的“o”代表此行为有效程序,此行产生了可以执行的机器指令。将光标移到程序想要暂停的地方,选择执行执行到光标处或