1、 摘 要本设计完成了以AT89S51单片机和DAC0832数模转换芯片为核心的数控直流电源。该设计由供电模块、44键盘模块、单片机控制模块、数模转换模块、功率放大模块、过流保护模块和显示模块组成。44键盘是一个程控键盘,作为数控电源的输入端。单片机控制的D/A转换芯片与功率放大模块是本电源的执行单位,实现了输出电压的数控功能。输出的电压值由两位的数码管动态显示。当输出电流超过200mA时,立即实行过流保护,关闭输出。论文主要介绍了上述各模块的工作原理及其实现方法。重点介绍了如何运用AT89S51控制DAC0832芯片实现数控电压源。同时,也详细介绍了程控键盘与过流保护的实现方法。最后,论文还对
2、用本方案做出来的数控电源产品进行了数据测试与分析,结果均符合设计要求。关键词 数控直流电源;程控键盘;动态显示;过流保护;数模转换AbstractA Digital DC Power Supply is introduced in this paper, which bases on the microcontroller of the AT89S51 and the digital-to-analog chip of the DAC0832. The design is composed of power supply module, 44 keyboard module, microcon
3、troller control module, D/A converter module, power amplifier module, over-current protection module and display module. The 44 keyboard as the input of the Digital DC Power Supply is a Program-Controlled Keyboard. The D/A converter chip controlled by microcontroller and the power amplifier module a
4、re the executive unit of this design, which achieves the digital control of the output voltage. The output voltage is dynamically displayed by a two bits digitron. When the output current exceeds 200mA, the design will run over-current protection immediately, and closed the output.The principle and
5、the implementation of every module are introduced in the paper. And the method of how to use the AT89S51 to control the DAC0832 for carrying out the Numerical Control Direct Current Power Supply is emphasized. In addition, the paper also tells the realization method of the Program-Controlled Keyboar
6、d and the over-current protection. A data analysis of the production is given at last. It proves that the result matches the design requirements very well.Key words Digital DC Power Supply Program-Controlled Keyboard Dynamic Display Over-Current Protection D/A Conversion摘要IAbstractII 第1章 绪论11.1 研究背景
7、及意义11.2 国内外研究现状11.3 设计内容与要求2第2章 硬件电路的原理与设计32.1 概述32.2 供电模块32.3 键盘模块52.4 单片机控制模块62.4.1 AT89S51简介62.4.2 单片机电路92.5 数模转换模块102.6 功率放大模块132.7 过流保护模块142.8 显示模块152.9 本章小结15第3章 软件设计163.1 系统主程序设计163.2 键盘按键识别程序183.3 键盘编码识别与处理程序183.4 数码管显示子程序193.5 电压输出子程序203.6 过流保护程序213.7 本章小结21第4章 安装调试224.1 硬件电路的调试224.1.1 供电电路
8、的检测224.1.2 各芯片供电情况与连接情况检测224.1.3 按键功能的检测234.2 软件调试234.3 软硬件联调244.4 本章小结24第5章 数据测试与分析255.1 数据测试255.1.1 输出端空载时实际输出电压255.1.2 输出带载0.2A时实际输出电压255.1.3 稳压电源负载特性255.2 系统误差分析265.3 本章小结27结论28参考文献29致谢30附录1 总程序31附录2 总电路图37附录3 元件清单38附录4 底层PCB图39附录5 顶层PCB图40附录6 顶层与底层混合PCB图41附录7 实物图42IV第1章 绪论1.1 研究背景及意义直流稳压电源是电子技术
9、常用的设备之一,广泛地应用于日常生活、教学、科研等领域。现在许多家庭都进入了数码化时代,各式各样的电子产品出现在每家每户,而这些电子产品需要各种不同参数的直流稳压电源为它们供电,因此,研究开发简易、稳定可靠、精度高、体积小的电源变得尤为重要。传统的多功能直流稳压电源功能简单、难控制、可靠性低、干扰大、精度低且体积大、复杂度高。这些直流稳压电源品种很多,但均存在以下两个问题:(1)输出电压是通过粗调(波段开关)及细调(电位器)来调节。这样,当输出电压需要精确输出或需要在一个小范围内改变时(如1. 05 1. 07V ),困难就较大。另外,随着使用时间的增加,波段开关及电位器难免接触不良,对输出会
10、有影响。(2)稳压方式均是采用串联型稳压电路,对过载进行限流或截流型保护,电路构成复杂,稳压精度也不高1。在家用电器和其他各类电子设备中,通常都需要电压稳定的直流电源供电。但在实际生活中,都是由220V 的交流电网供电。这就需要通过变压、整流、滤波、稳压电路将交流电转换成稳定的直流电。滤波器用于滤去整流输出电压中的纹波,一般传统电路由滤波扼流圈和电容器组成,若由晶体管滤波器来替代,则可缩小直流电源的体积,减轻其重量,且晶体管滤波直流电源不需直流稳压器就能用作家用电器的电源,这既降低了家用电器的成本,又缩小了其体积,使家用电器小型化。而基于单片机控制的直流稳压电源就能较好地解决以上传统稳压电源的
11、不足,并使稳压电源也进入了数字化时代1。1.2 国内外研究现状从上世纪九十年代末起,随着对系统更高效率和更低功耗的需求,电信与数据通讯设备的技术更新推动电源行业中直流/直流电源转换器向更高灵活性和智能化方向发展。在80年代的第一代分布式供电系统开始转向到20世纪末更为先进的第四代分布式供电结构以及中间母线结构,直流/直流电源行业正面临着新的挑战,即如何在现有系统加入嵌入式电源智能系统和数字控制系统1。 早在20世纪90年代中,半导体生产商们就开发出了数控电源管理技术,而在当时,这种方案的性价比与当时广泛使用的模拟控制方案相比处于劣势,因而无法被广泛采用。由于板载电源管理的更广泛应用,行业对能源
12、节约和运行最优化的关注,电源行业和半导体生产商们便开始共同开发这种名为“数控电源”的新产品。从组成上,数控电源可分成器件、主电路与控制等三部分。电源采用数字控制,具有以下明显优点:(1)易于采用先进的控制方法和智能控制策略,使电源模块的智能化程度更高,性能更完美。(2)控制灵活,系统升级方便,甚至可以在线修改控制算法,而不必改动硬件线路。(3)控制系统的可靠性提高,易于标准化,可以针对不同的系统(或不同型号的产品),采用统一的控制板,而只是对控制软件做一些调整即可。(4)系统维护方便,一旦出现故障,可以很方便地通过RS232接口或RS485接口或USB接口进行调试,故障查询,历史记录查询,故障
13、诊断,软件修复,甚至控制参数的在线修改、调试;也可以通过MODEM远程操作。(5)系统的一致性好,成本低,生产制造方便。由于控制软件不像模拟器件那样存在差异,所以其一致性很好。由于采用软件控制,控制板的体积将大大减小,生产成本下降。(6)容易组成高可靠性的多模块逆变电源并联运行系统。为了得到高性能的并联运行逆变电源系统,每个并联运行的逆变电源单元模块都采用全数字化控制,易于在模块之间更好地进行均流控制和通讯,或者在模块中实现复杂的均流控制算法(不需要通讯),从而实现高可靠性、高冗余度的逆变电源并联运行系统。现今随着直流电源技术的飞跃发展,整流系统由以前的分立元件和集成电路控制发展为微机控制,从
14、而使直流电源智能化,具有遥测、遥信、遥控的三遥功能,基本实现了直流电源的无人值守。1.3 设计内容与要求本设计研究的主要内容是利用AT89S51单片机,控制电压输出、显示和数模转换芯片DAC0832,从而制作出一个数控直流稳压电源,实现如下具体参数:1、输出电压:范围09.9V,步进0.1V,纹波不大于10mV;2、输出电流:0200mA;3、输出电压值由数码管显示;4、由“”、 “”两键分别控制输出电压步进增减;5、由键盘输入输出电压的预置初值。6、制作一个稳压直流电源,输出电压为15V、+ 5V,为本设计供电。同时,研究的主要内容还包括44程控键盘的实现,动态显示的实现,单片机控制算法的编
15、写,双面板的制作方法等。第2章 硬件电路的原理与设计2.1 概述本设计由7个模块组成,它们分别是:供电模块、44键盘模块、AT89S51单片机控制模块、数模转换模块、功率放大模块、过流保护模块与显示模块(如图2-1所示)。其中,单片机控制模块和数模转换模块是设计的核心部分2。各模块的功能如下:供电模块:提供15V和+5V的直流稳压电源,为各模块供电。44键盘模块:用于设定预置电压值,作为控制输出的信号输入端。单片机控制模块:控制核心,协调各部分的工作。数模转换模块:随输入数据的变化,提供准确、稳定、线性的电流变化,从而实现数控电压、0.1V步进等功能。功率放大模块:对数模转换部分得到的电压、电
16、流进行放大,从而实现功率放大。过流保护模块:实现输出过流保护,保证本电源与用电器件的安全。显示模块:用于显示预置电压值与输出电压值,过流时会突然熄灭,作为警示信号之一。图2-1 本设计的方框图2.2 供电模块供电模块要求输入220V、50Hz的交流电,输出+15V,15V,+5V三种电压(电路如图2-2所示)。+5V主要供单片机模块、数模转换芯片与显示模块使用,电流大约为600mA;15V作为运放的负电源,电流较小,不超过100mA;+15V作为运放的正电源,同时也是稳压输出电路的主电源,最大电流约为800mA。因此,在本设计中都选用了最大输出电流为1A的稳压管(LM系列)。对于滤波电容的选择
17、,要考虑三点: 整流管的压降; 7815与7915最小允许压降; 电网波动10% 3。(1)15V电源(器件为LM7815与LM7915并以通过1A电流计算)由上述3要素计算允许波纹的峰-峰值 (2-1)按近似电流放电计算,并设(通角)则: (2-2)故选取滤波电容。Potell图(略)图2-2 供电模块的电路(2)+5V电源(器件为LM7805并以通过1A电流计算)计算允许的最大波纹峰-峰值 (2-3)则: (2-4)故选取滤波电容 。注:图2-2中的LED灯用作电源指示灯。当电路通电时,指示灯亮;当电路断电时,指示灯熄灭4。R18为分压电阻,调整其阻值会使LED灯变暗或者变亮。2.3 键盘
18、模块键盘的实现电路如图2-3所示。这是一个44已编码的键盘电路,采用程控扫描方式工作。当键盘工作时,先让P1口高四位输出低电平,低四位输出高电平(即00001111)。当有按键按下时,P1口的低四位中,总有一位的电平被拉低,变为低电平,这时读取P1口的状态,得到低四位状态的数据。再让P1口高四位输出高电平,低四位输出低电平(即11110000)。同理高四位中,总有一位的电平被拖低,变为低电平,这时再一次读取P1口的状态,得到高四位状态的数据。将两次得到的数据进行或操作后,再与已编好的码值进行比较,就可以知道是哪个键被按下,接着识别该键的键名值,并做该键指示的相应操作。编码值、键名、键名值对照表
19、与程序工作流程会在第3章详细介绍。Potell图(略)图2-3 44键盘电路例如:当5键被按下,单片机P1.1与P1.6脚同时为低电平。先让P1口输出00001111,读取P1口数据,得到(00001101)。再让P1口输出11110000,再读取P1口数据,得到(10110000)。将这两个数据相或操作后得到(10111101)。通过码值比较,可以知道被按下的键是5,接着做相应操作。为了保证单片机对按键的一次闭合仅作一次处理,必须实现去抖动,等待输入键释放后才对输入键进行处理。键盘操作过程:1、 电路上电工作,数码管显示0.0值后,首先在键盘上输入两位的预置电压值,这时键盘上只有数字键起作用
20、,按下其他按键均无效。2、 再按下“ENTER”键,作为预置电压值确认。这时可在数码管上看到预置电压值,同时键盘开放“+” “”键功能与“OPEN” “CLOSED”键功能,关闭数字键与“5V”键功能。3、 输出电压途中可以按“+” “”键控制输出电压0.1V的步进增减(这时不需要按“ENTER”键作确认)。而且这时按下数字键应无效。4、 按“OPEN”与“CLOSED”键可以控制输出(电压)开启与关闭。2.4 单片机控制模块单片机控制模块是本设计的控制核心,它连接着各个主要模块,并控制其工作状态。本设计选用的单片机是ATMEL公司的AT89S51芯片。它是一块价廉、功能强大的单片机,内部含有
21、4KB的Flash Memory,因此,对于本设计来说不必外接存储器,脚接高电平。本设计中单片机采用12MHz的晶振,复位电路采用手动按钮复位电路,P3口只用到了P3.2脚,P0口与P2口均用上,具体情况如图2-7所示。2.4.1 AT89S51简介2.4.2 单片机电路本设计中用到了AT89S51的P0口、P1口、P2口和外部中断0即P3.2等I/O接口,并只用了AT89S51片内的4KB程序存储器,没有外接程序存储器。具体情况如图2-7。Potell图(略)图2-7 单片机控制模块的电路其中,P1口用于程控键盘电路控制;P0口用作数码管显示与数模转换的数据输出端;P2口用于数码管与数模转换
22、模块选通控制,还接上了一个蜂鸣器(作过流警示用);P3.2是外部中断0输入脚,过流时产生中断。由于用P0口驱动数码管等器件,要求P0口外接上拉电阻,并加上锁存器。因此P0口的外围电路如图2-8所示。考虑到省电问题,上拉电阻用了10K的电阻,而锁存器选用74ALS573。锁存器74ALS573的功能表如表2-3所示。表2-3 74ALS573的功能表输入输出LEDQLHHHLHLLLLQoHZPotell图(略)图2-8 P0口外围电路2.5 数模转换模块本部分主要由8位D/A转换器DAC0832与运放OP-07组成(如图2-9所示)。设计参数要求电压输出范围09.9V,步进0.1V,因此共有1
23、00种状态。而8位字长的D/A转换器具有256种状态,能够满足要求。设计中用两个电压控制字代表0.1V,当电压控制字从0、2、4、6、196、198时,电源输出电压为0.0V,0.1V,0.2V,0.3V,9.8.V,9.9V。电路选用的D/A转换芯片是DAC0832,该芯片价廉且精度较高。DAC0832属于电流输出型D/A,输出的电流随输入的电压控制字线性变化。若要得到电压,还需要外接一块运放来实现电流到电压的转换。该运放输入端的输入电流对转换精度影响很大,DAC0832输出的电流有几十微安的变化,如果运放输入端的输入电流为0.1A,则会引入相当于12个电压控制字的误差,因此应选用高输入阻抗
24、的运放,如JFET输入的运放OP-07,它的输入电流可以忽略。Potell图(略)图2-9 数模转换模块电路DAC0832需外接基准电压,此基准电压的性能决定了输出电压的性能,要求基准电压具有高稳定度和低波纹,故用了10V稳压二极管作为基准源。当DAC0832采用10V基准电压时,D/A转换电路的满幅输出为10.0V(这时电压控制字为255)。由于实际用到的最大电源控制字为198,因此D/A转换模块最大输出电压为:其通式可写为: (2-5)DAC0832的介绍图2-10 DAC0832结构框图DAC0832是采用CMOS工艺,可以直接与单片机接口,不需要外加I/O接口芯片,其结构如图2-10所
25、示。DAC0832是单电源供电,在+5+15V范围内均可正常工作,基准电压的范围为10V,电流建立时间为1S。它由三大部分组成:一个8位输入寄存器,一个8位DAC寄存器和一个8位D/A转换器。DAC0832器件由于有两个可以分别控制的数据寄存器,使用时有较大的灵活性。可以根据需要接成多种工作方式。它的工作原理简述如下。在图2-10中,为寄存器命令。当时,寄存器的输出随输入变化;时,数据锁存在寄存器中,不随输入数据的变化而变化。其逻辑表达式为 由此可知,当,时,允许数据输入,而当时,数据被锁存。能否进行D/A转换,除了取决于以外,还要依赖于。由图可知,当和均为低电平时,此时允许D/A转换,否则,
26、停止D/A转换。在使用时可以采用双缓冲方式(两级输入锁存),也可以用单缓冲方式(只用一项输入锁存,另一级始终保持直通的形式)。因此,这种转换器使用非常方便灵活。DAC0832引脚功能DAC0832有20根引脚,采用双列直插式封装,其引脚排列如图2-11所示。各引脚功能说明如下:(1) :转换数据输入端。D0是最低位,D7为最高位。(2) :片选信号,低电平有效。(3) :数据锁存允许信号,高电平有效。(4) :写信号1端,低电平有效。当为低电平时,用来将输入数据传送到输入锁存器;当为高电平时,输入锁存器中的数据被锁存;当ILE为高电平,又必须和同时为低电平时,才能将锁存器中的数据进行更新。以上
27、3个控制信号构成了第一级输入锁存。 图2-11 DAC0832引脚图(5) :写信号2端,低电平有效。该信号与配合,可使锁存器中的数据传送到DAC寄存器中进行转换。(6) :数据传送控制信号,低电平有效。与配合使用,构成第二级锁存。(7) :电流输出1端,当DAC寄存器中各位全为 1时,电流最大;而各位全为 0时,电流为0。(8) :电流输出2端,在电路中作用为保证。在单极性输出时, 常接地。(9) :反馈电阻端,为外部运算放大器提供一个反馈电压。可由内部提供,也可由外部提供,片内集成的电阻为15 K。(10) :参考电压输入端,要求外部接一个精密的电源。当为10V时,可获得满量程四象限的可乘
28、操作。(11) :数字地。(12) :模拟地。这是两种不同的地,在同一块电路板上,如果同时有模拟和数字信号元件时,一般把所有模拟信号元件的地端接在一起,所有数字信号元件的地端接在一起,最后再将模拟地与数字地用一根导线连接在一起。这样可以防止模拟信号与数字信号相互干扰。2.6 功率放大模块Potell图(略)图2-12 功率放大模块与过流保护模块电路D/A转换部分输出电压作为电源功放级的输入电压。功放级由LF356、TIP122和TIP127构成闭环推挽输出电路,如图2-12所示。该电路属于典型的电压串联负反馈电路。电压从R14进入功率放大电路,R14是一个限流电阻。因此LF356的3脚电压也是
29、。接着运放LF356对输入电压进行放大,由TIP122和TIP127构成的闭环推挽电路对输入电流进行放大,从而实现了功率放大。其中RP2用于控制运放的温漂,R13与C14用于设定TIP122和TIP127的静态工作点。根据集成运放的“虚短”与“虚断”概念:1、集成运放两个输入端之间的电压通常接近于零,即,若把它理想化,则有,但不是短路,故称为虚短。2、集成运放两输入端几乎不取用电流,即,如把它理想化,则有,但不是断开,故称虚断。于是可以写出输出电压(令为)与输入电压的关系式,即 (2-6)将式(2-5)代入式(2-6)得: (2-7)当 = 7.7647V , R17 = 10K ,R15 =
30、 2.4K ,= 9.9V时 由上述方程可求得Rp3 = 150.00 。选取Rp3 = 470的电位器。当单片机输入电压控制字(10111100)2 =(198)10时, = 7.7647V, 调节Rp3使= 9.9V。则实现了本设计的要求。2.7 过流保护模块在图2-12中,三极管9014、9015构成过流保护电路。具体电路如图2-13所示。正常工作时,9015截止,其集电极电平为15V,使得9014截止,A点(单片机的INT0脚)输出高电平,不触发中断。当输出电流过大时(例如Io 200mA),取样电阻R8上的压降大于0.75V。可以调节RP1使9015的基极电压Ube 0.6V,这时9
31、015管会导通,9015的集电极电平提高了,于是9014也导通,A点呈现低电平,触发单片机外部中断0,执行过流保护程序6 7 8。过流保护执行完后,关闭了输出,R8上没有压降了,一切恢复初始状态。Potell图(略)图2-13 过流保护电路取样电阻R8的阻值越大,输出电流的被限值会越小。因此要合理计算R8的阻值。而RP1可起到一个微调作用。R8上的压降计算式为: (2-8)其中为允许输出的最大电流值,而Ud则要大于0.75V过流保护才能起作用。因此由式(2-8)有: (2-9)本设计按最大电流200mA计算,得到,所以采用3.9的电阻。2.8 显示模块Potell图(略)图2-14 显示模块电
32、路显示部分电路如图2-14所示,在设计中用了一个两位的共阴数码管作为输出电压值的显示。其位选择由单片机的P2.3与P2.4控制(低电平有效)。数码管使用动态显示,并且两个位用两套输出编码9。最大输出值显示为9.9,而最小输出值显示为0.0。2.9 本章小结 本章详细介绍了本设计中各模块的电路,包括元件如何选择,参数如何确定,相关的电流电压如何计算,要实现什么样的功能等。此外,还详细地介绍了AT89S51单片机与数模转换芯片DAC0832的功能、参数和使用方法。第3章 软件设计本系统的软件设计主要由以下程序组成:主程序、键盘按键识别程序、键盘编码识别与处理程序、数码管显示子程序、电压输出子程序、
33、过流保护程序。下面将对各个部分的程序作介绍。3.1 系统主程序设计在主程序里,需要完成对单片机输入输出端口的初始化、程控键盘的初始化、各中间变量的初始化、显示输出与电压输出的初始化等。在本程序的设计中,R0表示个位要显示的数值;R1表示十分位要显示的数值;R2表示单片机要输出的电压控制字的值。初始化完成后,数码管显示0.0,输出电压为0V。完成初始化后,主程序就开始不停地检测键盘,等待预置电压值。先是个位上的值,后是十分位上的值。当成功键入时,数码管显示相应的数值。显示个位预置数时,十分位灯会熄灭,等到十分位也输入后,显示整个预置值。然后计算出R2的值,公式为: R2 = R020 + R12
34、 (3-1)在输入预置电压值前,按键盘上任何一个非数字键均无效。为方便电压预置,本设计设立了一个“5V”键,按一下即可完成5V电压输出的预置操作。完成预置后,CPU等待“ENTER”键的按下,以确认预置值,并输出预置电压,开放“+”、“”键功能等。流程图如图3-1所示。这时,我们可以通过“+”、“”键控制输出电压的大小,通过“OPEN”和“CLOSED”键控制输出电压的开与关。此时,按数字键、“5V”键、“ENTER”键均无效。当主程序接收到过流保护信号后启动蜂鸣器,警示过流了,请求迅速按下复位键重新设定。为完成上述功能,程序中设立了一些位变量。其位地址与对应功能如下列出:02H判断是否按下“
35、5V”键,置位时代表按下。03H判断按下“+”“”键是否有效,置位时代表按了有效。04H判断是否按下“ENTER”键,置位时代表按下。05H判断是个位赋值还是十分位赋值,复位时为个位赋值,置位时为十分位赋值。06H判断按下“ENTER”键是否有效,置位时代表按了有效。07H判断按下数字键是否有效,复位时代表按了有效。08H过流保护标志,如果置位则蜂鸣器不停地响,提示过流。本设计中,数码管采用动态显示,因此要求主程序适时调用显示子程序,确保数码管有显示输出。过流保护时,数码管随蜂鸣器的启动而熄灭。如图3-1所示。图3-1 主程序流程图 图3-2 键盘按键识别程序流程图3.2 键盘按键识别程序本设
36、计的键盘是已编码的程控键盘。其编码与键名对照表如表3-1所示。表3-1 键名与按键编码值对照表键名01234567键名值01234567编码值07EH0BEH0DEH0EEH07DH0BDH0DDH0EDH键名89+5VOPENCLOSEDENTER键名值89101112131415编码值07BH0BBH0DBH0EBH077H0B7H0D7H0E7H上一节已经描述了键盘的操作步骤,本节不再详述。本节与下一节将会介绍这些操作步骤及其功能在程序中是如何实现的。在键盘按键识别程序中,实现了以下功能:当有按键按下时,CPU通过比对,很快可以判断是哪个键被按下,并将该键的编码记下,储存于B寄存器里(详
37、细工作过程见2.3节键盘电路)。同时,本程序设立了一个变量R4用于储存键名值。因为程序将按键编码按照键名值顺序排好,所以只要通过查表指令就能知道键名是什么,并将其键名值保存于R4中。如:键“3”的键名值为3,则可以用键名值代替键名;键“+”的键名值为10,则当R4中的值为10时,表示“+”键按下了,等待下一步的操作。这个程序还实现了防抖动功能、保证单片机对按键的一次闭合仅作一次处理,等待输入键释放后才进行输入键的相关操作。流程图如图3-2所示。3.3 键盘编码识别与处理程序本程序主要是通过对R4值的判断,执行上一程序中按键要求的具体操作。其中的操作有(参照表3-1): 当R4值等于09时,是数
38、字键按下,如果允许,则对个位或十分位赋R4的值; 当R4值等于10时,是“+”键按下,如果允许,则进行步进0.1V操作; 当R4值等于11时,是“”键按下,如果允许,则进行步进0.1V操作; 当R4值等于12时,是“5V”键按下,完成5V电压预置的所有操作; 当R4值等于13时,是“OPEN”键按下,开电压输出; 当R4值等于14时,是“CLOSED”键按下,关电压输出; 当R4值等于15时,是“ENTER”键按下,确认预置值,并输出电压9。本程序的流程图如图3-3所示。图3-3 键盘编码识别流程图3.4 数码管显示子程序在显示子程序里,要实现个位、十分位的数值显示功能。由于两个数位对小数点的
39、要求不同,所以用了两套LED编码。工作流程是:用P2.3与P2.4脚对数码管进行选通操作,从P0口输出LED编码。每当调用本程序时,程序会将R0与R1的值分别输出。如:输出R0值,先将P2.3脚变为低电平,程序接到R0值后,查找LED1表,然后将查表结果从P0口输出。本显示程序采用动态显示。根据人的视觉停留时间,在每个数码管输入数据之后,程序会延时1ms然后才继续工作。其流程如图3-4所示。 图3-4 数码管显示子程序流程图 图3-5 电压输出子程序流程图 图3-6 过流保护程序流程图3.5 电压输出子程序本程序实现单片机对数模转换芯片DAC0832的控制,从而输出所需电压值。工作过程:通过单
40、片机的P2.5与P2.6脚对DAC0832实现功能控制,P0口输出要转换的数据,转换数据输出后,控制DAC0832锁存转换数据。流程图如图3-5所示。P2.5脚:DAC0832的片选脚,低电平有效。P2.6脚:低电平时,允许D/A转换;高电平时,禁止D/A转换。3.6 过流保护程序本程序实现过流保护功能。外部中断0采用低电平触发。当外部中断0接收到中断信号后(P3.2脚变为低电平),转入中断服务子程序。首先调用电压输出子程序,使输出电压为0V(即关闭输出),接着置位警示变量08H,让位08H告诉主程序发出过流警示。流程图如图3-6所示。3.7 本章小结本章介绍了软件设计的各个子程序及其实现的功
41、能,给出了各个部分的流程图。具体程序见附录1。第4章 安装调试由于本设计用到的集成块比较多,可能会出现很多导线交叉的情况,所以用双面敷铜板来实现本设计比较合适。双面铜板的制作流程:设计PCB图用“塑料黄纸”打印PCB图把纸上的PCB图熨到铜板上腐蚀铜板钻孔(完成)。其中,需要注意以下几点:1、对准孔要多,均匀分布,并且适当的小;2、打印PCB图时,不要打印定位孔;3、不要用敷铜区;4、熨板时两面分开来熨,时间不能多于8分钟。这样就可以很容易地做出高质量的双面电路板了。由于做的是双面板,因此调试的时候应该先检查一下连线的好坏。下面具体介绍调试过程。4.1 硬件电路的调试把铜板做好以后,焊上元件,
42、接着一步一步测试电路。其中+5V、15V供电线路都要引出一个测试点来,便于检查;各个集成块要求都加上插座,焊接时只焊插座,等调试时才加上芯片。4.1.1 供电电路的检测把元件焊接完成以后,先不要插上芯片,连通电源。开启电源,同时很快的摸一下稳压管7805、7815、7915和整流堆,看它们有没有过热,如果有,则发热的那个元件可能接错脚,立刻关闭电源,检查电路;如果没有,则证明管子连接正确,继续下一步检测。用万用表测量三个稳压管的输出电压看是否正确,如果不正确,看看管子是不是坏了要更换(一般稳压管都不会出现问题的),或者电路有没有出错;如果正确,则供电部分测试完成。此外,也可以测一测输出电压的波
43、纹,看看达到了设计要求没有。4.1.2 各芯片供电情况与连接情况检测电压为5V的管脚AT89S51:1、2、3、4、12、28、31、32、33、34、35、36、37、38、39、4074ALS573:2、3、4、5、6、7、8、9、11、20DAC0832:19、20电压为10V的管脚DAC0832:8电压为+15V的管脚OP-07:7 LF356:7电压为15V的管脚OP-07:4LF356:1、4、5用万用表检查上面管脚的电压。电压检测完成以后,根据原理图,用万用表检测各芯片的I/O口连接情况,确保各端口都连接正确。检查达林顿管、三极管各管脚的静态工作电压,看是不是正常工作,如果不是,
44、逐一情况排除,找到原因,完成检测。4.1.3 按键功能的检测根据电路图,分别按下各个按键,看电气连接是否正常。如“6”键,先检测单片机5脚,看是否为低电平,再按下“6”键,看是否变为高电平,如果是则一切正常,否则检查连线有无导通。这样,硬件电路调试基本完成。4.2 软件调试图4-1 Keil uVision2开发环境本设计的程序是用汇编语言来写的。用Keil uVision2作为软件开发环境,用SP0604S51单片机学习板作为调试的操作平台。如图4-1所示。当程序编写完毕,用Keil uVision2进行编译后下载到学习板上,看能否实现预期功能。不行则返回程序修改;当程序的一切问题都解决后,
45、就可以把程序下载到单片机里,进行软硬件联调。在调试之前,也可以写一些简单的程序,检查一下各芯片能否正常地联合工作。如:要求数码管输出3.3;要求DAC0832输出某个电压值;检查按键能否输入;直接让蜂鸣器响等。4.3 软硬件联调硬件、软件都分别调试过之后,就可以联调了。步骤如下:1、将下载了程序的单片机、74ALS573、数码管插上电路对应的插座上。开启电路电源,看数码管亮了没有,测试每个按键能否正常工作。如果一切正常,则这部分电路成功了。如果不行,则慢慢找出原因。主要检查一下单片机的工作状况。2、再插上DAC0832和OP-07测试。不停变化预置数,看OP-07的6脚有没有电压变化,有则可以了,没有就要找原因。(一般来说,第1步成功了,这步也会成功通过。)3、插上LF356测试。如上同样变化预置数,看总输出有没有电压变化,有则可以了,没有就要找原因,着重检查LF356和TIP122、TIP127 。4、将电压预置数设为9.9V,并启动输出。调节RP3