《简易数控直流电流源毕业设计.doc》由会员分享,可在线阅读,更多相关《简易数控直流电流源毕业设计.doc(35页珍藏版)》请在三一办公上搜索。
1、 目录摘要3Abstract4第1章 绪论51.1 课题背景1.2 技术发展历程1.3 本文的研究目的意义及主要工作1.4 小结第2章 方案设计2.1 方案比较与论证2.1.2系统设计方案选择2.1.2压控恒流源的选择2.1.3显示方案选择2.2 总体设计方案2.3本章小结第3章 硬件电路设计3.1 电源电路设计3.1.1 TL7660简介3.1.2 电源电路设计3.2 控制电路3.2.1 单片机时钟电路3.2.2 单片机复位电路3.2.3 控制电路设计3.3 D/A转换电路3.4 压控恒流源电路3.4.1 LM324简介3.4.2压控恒流源电路设计3.5 显示电路3.5.1 74LS164简
2、介3.5.2 显示电路设计3.6 本章小结第4章 软件程序设计4.1 主程序设计流程4.2 程序设计4.3 本章总结结论致谢参考文献附录A 基于AT89S51单片机的电路原理图附录B 基于AT89S51单片机的源程序摘要 随着电子技术的飞速发展,电子设备越来越多,而电子设备要工作都需要有电源能够为其通电。性能好的电子设备,首先就离不开稳定的电源,电源的稳定度越高,电子设备机器外围条件越优越,设备的寿命就更长。而各种不同的电子设备所需要的供电电源不是统一的,所以,对于数控恒定电流源的研究与开发就显得相当重要了。现在数控恒压技术已经很成熟,但在恒流方面尤其是在数控恒流方面的技术还有待发展,高性能的
3、数控电流源的研究与开发非常重要。本文介绍了一种基于单片机的数控电流源的设计方法,系统以STC89C51单片机为中心控制器,利用按键设置输出电流,单片机将该电流值送数码管显示,同时,通过与D/A转换器的数据通信端口将输出电流的数字量送入D/A转换器,D/A转换器将数字量转换为模拟量后输出,再通过压控恒流电路得到稳定输出的电流。D/A转换器采用DAC0832。本文提供的数控电流源具有很高的精度值,可满足多种电流源的试验要求,且电路精炼、简单易懂、成本低廉、实用价值和开发价值大。关键字:数控电流源,STC89C51,D/A转换器 AbstractAs electronic technology in
4、 recent years, electronic devices and electronic equipment work will need to have the power of electricity. the perform a numerical controlled of electronic equipment is first and foremost from a stable source of stability, the higher the external condition, an electronic device, machine equipment o
5、f the more, it will be long. And a variety of electronic equipment needed the supply of power is not unified, so for Numerical controlled constant current research and development is very important. it is a constant pressure numerical controlled technology have a ripe, constant flow in the field, es
6、pecially at a constant stream numerical controlled skills to development, perform a numerical controlled numerical controlled current research and development is very important .This article describes a revivification of numerical controlled current design methods and systems to at89s51 monolithic i
7、ntegrated circuits to control, the button for the output, the current monolithic integrated circuits current take the tube, At the same time, and d a converter data communications port output of the current number of tier d a converter, d a converter will be converted to numbers measure for simulati
8、ng after the output, run by a constant flow of electrical a steady output of electricity. d a converter adopt dac0832.This article provides numerical controlled current source of very high precision, a number of current trials, circuits, refining, simplicity, low cost, or useful value. DevelopingKey
9、words:Numerical controlled current source; AT89S51; Digital-To- Analog conversion第1章绪论1.1 课题背景在现实生活中,人们经常要用到电子器件,而电子电路要正常工作,电源的作用是不可忽视的,电源性能的好坏,对电路、电子仪器和电子设备的使用寿命、使用性能等影响很大,尤其在带有感性负载的电路和设备中,对电源的性能要求更高。电源技术尤其是数控电源技术是一门实践性很强的工程技术,服务于各行各业。电力电子技术是电能的最佳应用技术之一。当今电源技术融合了电气、电子、系统集成、控制理论、材料等诸多学科领域。随着计算机和通讯技术
10、发展而来的现代信息技术革命,给电力电子技术提供了广阔的发展前景,同时也给电源提出了更高的要求。近年来,随着电力电子技术的不断发展,数控电源在以往使用线性电源的场合中也获得日益广泛的应用。在一些工业场合需要提供电压源和电流源,而且要求范围广,纹波低。如果采用多台功能单一电源设备,体积和重量都会增加很多,不经济,也不能满足工作的要求。因此研究开发多功能、宽范围、可调节的数控电源很有意义。性能好的电子设备,首先离不开稳定的电源,电源稳定度越高,设备和外围条件越优越,那么设备的寿命更长。基于此,人们对数控恒定电流器件的需求越来越迫切当今社会,数控恒压技术已经很成熟,但是恒流方面特别是数控恒流的技术才刚
11、刚起步有待发展,高性能的数控恒流器件的开发和应用存在巨大的发展空间。1.2 技术发展历程数控电源是从80年代才真正的发展起来的,期间系统的电力电子理论开始建立。这些理论为其后来的发展提供了一个良好的基础。在以后的一段时间里,数控电源技术有了长足的发展。但其产品存在数控程度达不到要求、分辨率不高、功率密度比较低、可靠性较差的缺点。因此数控电源主要的发展方向,是针对上述缺点不断加以改善。单片机技术及电压转换模块的出现为精确数控电源的发展提供了有利的条件。新的变换技术和控制理论的不断发展,各种类型专用集成电路、数字信号处理器件的研制应用,到90年代,已出现了数控精度达到0.05V的数控电源,功率密度
12、达到每立方英寸50W的数控电源。从90年代末起,随着对系统更高效率和更低功耗的需求,电信与数据通讯设备的技术更新推动电源行业中直流/直流电源转换器向更高灵活性和智能化方向发展。在80年代的第一代分布式供电系统开始转向到20世纪末更为先进的第四代分布式供电结构以及中间母线结构,直流/直流电源行业正面临着新的挑战,即如何在现有系统加入嵌入式电源智能系统和数字控制。早在90年代中,半导体生产商们就开发出了数控电源管理技术,而在当时,这种方案的性价比与当时广泛使用的模拟控制方案相比处于劣势,因而无法被广泛采用。由于数控电源管理的更广泛应用和行业能源节约和运行最优化的关注,电源行业和半导体生产商们便开始
13、共同开发这种名为“数控电源”的新产品。 现今随着直流电源技术的飞跃发展, 整流系统由以前的分立元件和集成电路控制发展为微机控制, 从而使直流电源智能化, 具有遥测、遥信、遥控的三个功能, 基本实现了直流电源的无人值守。从组成上,数控电源可分成器件、主电路与控制等三部分。目前在电力电子器件方面,几乎都为旋纽开关调节电压,调节精度不高,而且经常跳变,使用麻烦。数字化智能电源模块是针对传统智能电源模块的不足提出的,数字化能够减少生产过程中的不确定因素和人为参与的环节数,有效地解决电源模块中诸如可靠性、智能化和产品一致性等工程问题,极大地提高生产效率和产品的可维护性。1.3 本文的研究目的意义及主要工
14、作随着电子技术的不断进步对电子仪器的要求不断提高,电源作为电路的动力源泉扮演着越来越重要的角色,不论是学校实验室还是维修中心都离不开实验电源,但是传统的电源不论是在控制精度还是输出特性上都不能满足要求。首先从精度上来看传统电流源的调整大多采用旋转电位器的方式,在调整时电流值主要从电位器的刻度读出,容易产生读数误差。从可操作性来看传统电流源电位器上的刻度有限,读书范围不大,不可能非常精细,仅仅靠电位器上的几个刻度对操作者的技巧要求比较高,同时误差也比较大。由于单片机技术的不断发展和D/A元件的普及使得数控电源成为可能,数控电源不论是在控制精度还是在可操作性上都有传统电源无法比拟的优势,由于单片机
15、使用的普遍化,使得数控电源与传统电源的成本日益接近。本设计中需要完成了以下几项内容:1. 单片机控制按键设定输出电流值;2. 设定的电流值还将通过数码管显示电路显示;3. 本设计通过恒流电路输出稳定的电流;4. 最终输出的电流值为20mA-2000mA;1.4 小结本章说明了基于单片机的数控电流源的课题背景,随后介绍了数控电流源的技术发展历程,最后提到研制基于AT89S52单片机的意义和本设计所要满足课题要求。第2章 方案设计2.1 方案比较与论证2.1.2系统设计方案选择方案一:采用各类数字电路来组成调节设置输出电流的电路,通过信号处理实现数控电流源,如选用CPLD等可编程逻辑器件,设计方框
16、图如图2-1所示。 本方案电路复杂,灵活性不高,效率低,不利于系统的扩展,对信号处理比较困难,而且CPLD器件普遍比较昂贵,设计成本高。方案二:采用STC89C51单片机作为系统的控制单元,通过D/A转换将预定值送入恒流源得到恒定电流,同时通过A/D送单片机显示实际值,系统还可实现步进控制功能。此方案各类功能易于实现,能很好的满足题目的设计要求。设计方框图如图2-2所示。负载STC89C52单片机系统12864液晶显示器4*4键盘A/D转换V/I转换D/A转换稳压电源图2-2方案2设计方案图综上两图,应当选择方案2图形进行设计。2.1.2恒流源的选择方案一:采用恒流二极管或者恒流三极管,优点是
17、精度比较高,但这种电路能实现的恒流范围很小,只能达到几十毫安,不能达到设计要求。方案二:采用集成运放的线性恒流源,该输出的电流与负载无关,通过使用两块构成比较放大环节,利用晶体管平坦的输出特性和深度的负反馈电路可以得到稳定的恒流输出和高输出阻抗,实现电压电流转换。综合考虑,采用方案二,使用低噪音、高速宽带运放OP27BJ和大林顿管TIP122构成一个恒流源电路。2.1.3显示方案选择方案一:采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形,显示多样,清晰可见,功率消耗极小,但缺点是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。方案二:使用LCD显示。LCD
18、具有轻薄短小,可视面积大,方便显示汉字数字。分辨率高,抗干扰能力强,功耗小,且设计方便等特点 ,原理图如图2-3所示。图2-3显示原理图综上所述,选择方案二 ,采用12864汉字图形点阵液晶显示模块同时显示电流给定值和实测值。2.2 总体设计方案系统原理图本设计以AT89C51单片机为中心控制器,单片机控制按键设定输出电流值,按键包括“+”键和“-”键,用于设定电流值,该电流值通过单片机送入D/A转化器DAC0832转换为模拟量输出,该输出为电流值,再通过运算放大器转换为电压值,该电压值通过恒流电路得到稳定输出的电流。同时设定的电流值还将通过数码管显示器电路显示,以便于观察。系统设计框图如下图
19、2-4所示。12864液晶显示器4*4键盘A/D转换V/I转换D/A转换稳压电源STC89C52单片机系统负载图2-4系统原理图2.3本章小结本章首先介绍了硬件设计中设计方案的选择,接着阐述了硬件中压控恒流模块和显示模块的优缺点。并最终确定了最终的设计方案和主要模块的选择,即采用AT89S51单片机作为系统的控制单元。第3章 硬件电路设计3.1 电源电路设计电源部分提供整个电路所需各种电压,由电源变压器、整流电路、滤波电路及辅助稳压输出构成,电源变压器的功率由需要输出的电流大小决定,确保有充足功率余量。交流电经过二极管整流之后,方向单一了,但是大小(电流强度)还是处在不断地变化之中。这种脉动直
20、流一般是不能直接用来给无线电装供电的。要把脉动直流变成波形平滑的直流,还需要再做一番“填平取齐”的工作,这便是滤波。换句话说,滤波的任务,就是把整流器输出电压中的波动成分尽可能地减小,改造成接近恒稳的直流电。直流电压纹波的大小与滤波电路的电解电容的关系是电容越大纹波越小,小功率电路一般应满足:R*C=2T(R是负载电阻的阻值,C是滤波电容的容值,T是被滤波交流信号的周期)。一、电容滤波电容器是一个储存电能的仓库。在电路中,当有电压加到电容器两端的时候,便对电容器充电,把电能储存在电容器中;当外加电压失去(或降低)之后,电容器将把储存的电能再放出来。充电的时候,电容器两端的电压逐渐升高,直到接近
21、充电电压;放电的时候,电容器两端的电压逐渐降低,直到完全消失。电容器的容量越大,负载电阻值越大,充电和放电所需要的时间越长。这种电容器两端电压不能突变的特性,正好可以用来承担滤波的任务,电容量越大,滤波效果越好,输出波形越趋于平滑,输出电压也越高,适于各种整流电路。二、电感滤波利用电感对交流阻抗大而对直流阻抗小的特点,可以用带铁芯的线圈做成滤波器。电磁滤波输出电压较低,相输出电压波动小,随负载变化也很小,适用于负载电流较大的场合。三、复式滤波器把电容按在负载并联支路,把电感或电阻接在串联支路,可以组成复式滤波器,达到更佳的滤波效果。这种电路的形状很像字母,所以又叫型滤波器。电磁与电容组成的LC
22、滤波器,其滤波效能很高,几乎没有直流电压损失,适用于负载电流较大、要求纹波很小的场合。但是,这种滤波器由于电感体积和重量大(高频时可减小),比较笨重,成本也较高,一般情况下使用得不多。由电阻与电容组成的RC滤波器这种复式滤波器结构简单,能兼起降压、限流作用,滤波效能也较高,是最常用的一种滤波器。 所以本设计使用电容滤波。稳压电路有分立元件稳压电路和集成稳压电路两种,其中集成稳压电路主要用于低电压小电流的整流电路,具有体积小,电路简单,稳压精度高,使用调试方便等特点,本设计使用集成稳压电路。3.1.1 稳压源电路设计电路如图3-1所示。市电经过由二极管1N4007组成的整流桥后再经 过电容滤波进
23、入稳压块,滤波电路采用电解电容和小容量无极性电容并联的方式,大电解电容用于滤掉大部分的低频成分,稳压范围宽、效果好 ,小容量电容滤掉脉动直流中的高次谐波。由于电路中要用到+5V和-5V的供电,所以在电路LM78稳压得到+5V的电压,再通过TL7660正负电压转换器得到-5V的供电电压。LM78和LM79系列分别是正电压和负电压串联稳压集成电路,体积小、集成度高、线性调整率和负载调整率高,在线性电源时代占领了很大市场。LM7805为固定+5 V输出稳压集成电路 (采取特殊方法也可使输出高于5 V),最大输出电流为1 A,标准封装形式有TO-220、TO-263。78和79系列集成电路应用相对固定
24、,电路形式简单,只是正负直流电压输出时应注意变压器最小输出功率和最小输出电压,如图3-1所示。图3-1 LM7805和LM7905构成的正负电压输出电源3.2 控制电路本电路采用AT89C51单片机,AT89C51单片机应用普遍,价格便宜。MCS-51内核结构单片机的数据存储器分为内部数据存储器和外部数据存储器。MCS-51单片机的外部数据存储器(RAM/IO)空间为64KB(地址为0000H0FFFFH),一般通过16位数据指针DPTR来访问,且外部RAM和外部I/O的地址安排是统一编址的。MCS-51的内部数据存储器为128B或256B(AT89C51的内部数据存储器为128B,地址空间为
25、00H7FH,8032、8052和8752的内部数据存储器为256B,地址空间为00H0FFH)。AT89C51将内部数据存储器中的不同区域从功能和用途方面来划分,可以分为3个区域,即工作寄存器区(00H1FH)、位寻址区(20H2FH)、堆栈和数据缓冲器区(30H7FH或30H0FFH)。3.2.1 单片机时钟电路单片机时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。1、内部振荡方式:AT89C51单片机内部带有时钟电路,因此,只需要在片外通过XTAL1和XTAL2引脚接入定时控制元件(晶体振荡器和微调电容),即可构成一个稳定的自激振荡器。2、外部振荡方式:把外部已有的时钟信号引
26、入单片机内。这种方式适宜用来使单片机的时钟与外部信号保持同步。在本设计中采用第一种方式,用晶振和电容构成谐振电路。C3和C4虽然没有严格要求,但电容的大小影响振荡器振荡的稳定性和起振的快速性,通常选择在1030pF左右。而晶体振荡器一般选择6MHz和12MHz。本时钟电路在XTAL1和XTAL2引脚分别接一个22pF的电容,两个引脚之间接入一个12MHz的晶振,电路如图3-2所示。3.2.2 单片机复位电路复位时单片机的初始化操作,其主要功能是PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行时出错或操作错误使系统处于死锁状态时,为使单片
27、机正常工作,也需要按复位键以重新启动。RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间持续24个振荡脉冲周期(即两个机器周期)以上。复位操作有上电自动复位、按键电平复位、外部脉冲复位和自动复位四种方式。在本设计中复位电路采用按键电平方式,电路如图3-3所示,使RST引脚(图中悬空脚)经过10u电解电容与VCC电源接通,同时经过电阻与地连接而实现。3.2.3 单片机控制电路本设计中的单片机控制电路设计如图3-4所示。单片机的P0口用于控制显示单元电路中的数码管的选定,P1口控制按键,P2口作为D/A的8位数据线端口,单片机的P3.0和P3.1 引脚控制显示电路中的74LS164的时
28、钟端和数据端。按键的功能是实现输出电流的设置。按键1,2,3,4的功能分别是:设定、移位、加1和减1。当单片机的P1口检测到有按键按下时,启动数码管显示器电路开始显示数值,按下加1键显示数字加1,按下移位键时移动数码管位数调整下一位数字。输出电流设定好后单片机将电流数字量通入P2口送入到D/A转换器中,D/A转换器将其转换为数字量后输出。图3-4单片机控制电路 3.3 D/A转换电路DAC0832是一种8分辨率的典型的D/A转换集成芯片,与微处理器完全兼容。内部为双缓冲寄存器即输入寄存器和DAC寄存器。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点在单片机应用系统中得到广泛的应用。DA
29、转换器是由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及控制电路构成。 该部分电路设计如图3-5所示。D/A转换器是接收数字量,输出一个与数字量相对应的电流或电压信号的模拟量接口。本设计中D/A转换器采用DAC0832芯片。AT89S51的P2口作为数据端口与DAC0832的8位数据线相连。DAC0832采用单缓冲工作方式,使芯片的、均与地相接,由单片机的P1.7口控制。DAC0832由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及控制电路构成。数字量从DAC0832的D0-D78个数据输入端口输入。DAC0832与单片机的连接方式有两种:即单缓冲工作方式和双缓冲工作方式。在单
30、缓冲工作方式下,一个寄存器工作于直通状态,一个工作于受控锁存器状态,在不要求多相D/A同时输出时,可以采用单缓冲方式,此时只需要一次写操作,就开始转换,可以提高D/A的数据吞吐量;在双缓冲工作方式下,两个寄存器均工作于受控锁存器状态,当要求多个模拟量同时输出时,可采用这种方式。本设计选用单缓冲工作方式,单片机的P1.7引脚来控制DAC0832的转换工作,原理图如图3-5所示。图3-5D/A转换电路原理图3.4 恒流源电路恒流源 ,是一种能向负载提供恒定电流之电路 .它既可以为各种放大电路提供偏流以稳定其静态工作点 ,又可以作为其有源负载 ,以提高放大倍数 .并且在差动放大电路、脉冲产生电路中得
31、到了广泛应用 。恒流源是能够向负载提供恒定电流的电源 ,因此恒流源的应用范围非常广泛 ,并且在许多情况下是必不可少的。例如在用通常的充电器对蓄电池充电时 ,随着蓄电池端电压的逐渐升高 ,充电电流就会相应减少。为了保证恒流充电 ,必须随时提高充电器的输出电压 ,但采用恒流源充电后就可以不必调整其输出电压 ,从而使劳动强度降低 ,生产效率得到了提高。恒流源还被广泛用于测量电路中 ,例如电阻器阻值的测量和分级 ,电缆电阻的测量等 ,且电流越稳定 ,测量就越准确。恒流源的设计方法有多种 ,最简单的恒流电路是 FET或恒流二极管 ,但其电流值有限且稳定度也较差。分别论述线性恒流源、开关恒流源和集成稳压器
32、恒流源电路的结构原理及特点。3.4.1恒流源原理及电路图恒流源模块电路的设计是本系统硬件设计的核心,它是用电压来控制电流的变化。为了能产生恒定的电流,我们采用电压闭环反馈控制。恒流源电路原理图如图2所示,该电路由运算放大器、大功率 达林顿管,采样电阻RS、负载电阻RL等组成。取样电阻RS从输出端进行取样,再与基准电压比较,并将误差电压放大后反馈到调整管,使输出电压在电网电压变动的情况下仍能保持稳定。电路中调整管采用大功率达林顿管TIPl27,既能满足输出电流最大达到2A的要求,也能较好地实现电压近似线性地控制电流。R选用热稳定性好的康铜丝,并选取较大的阻值(2Q),使得在电流较低时也能获得较大
33、的电压值。运算放大器采用高精度的OP-27作为电压跟随器。当UI一定时,运算放大器的UI=UF,Io=Is=U1/Rs,达林顿管的,ICIE。(基极电流相对很小,可忽略不计),所以Io=Is=UI/RS正因为I0=UI/RS,电路输入电压配UI控制电流Io,即I0不随RL的变化而变化,从而实现电压控制恒流的作用。3.5 显示电路3.5.1 74LS164简介74LS164为8位移位寄存器,管脚图如图3-8所示。当清除端(MR)为低电平时,输出端(Q0-Q7)均为低电平。串行数据输入端(A,B)可控制数据。当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。
34、真值表如表3-1所示。 Inputs OutputsClearClockA BQ0 Q1 . Q7 L H H H HXL X X X XH HL XX L L L . LQA0 QB0 . QH0 H QAn . QGnL QAn . QGnL QAn . QGn 表3-1 74LS164真值表H高电平,L低电平,X任意电平,低到高电平跳变,QA0、QB0、QH0规定的稳态条件建立前的电平,Qan、QGn时钟最近的前的电平。3.5.2 显示电路设计 该部分电路设计如图3-9所示。LED数码管由八只发光二极管组成,编号是a、b、c、d、e、f、g、h,分别和同名管脚相连,当发光二极管导通时发光
35、。每个二极管就是一个笔划,若干个二极管发光时,就构成一个显示字符。若将单片机的I/O口与数码管的a-g和h相连,高电平(对应共阴极数码管)或低电平(对应共阳极数码管)的位对应的发光二极管就会亮,这样,I/O口输出不同的代码就可以控制数码管显示不同的字符。为节约资源,选用4位一体数码管,采用串行输入并行输出的8位移位寄存器74LS164进行驱动输出,单片机的两个并行口分别作为输出口和时钟控制信号。74LS164将输入的串行数据锁存在并行输出端,通过这些并行口线驱动数码管的各字段。数码管选用共阳型,当74LS164的输出端口某线为低电位时,对应的字段被点亮。软件设计中采用循环送显的方式,单片机通过
36、控制9012来选择要送显的数码管,与三极管连接的引脚置高,三极管导通,即可选中该位数码管。单片机控制74LS164的数据端和时钟端,74LS164的输出Q0-Q7分别对应接到数码管的a-h端口,从而实现单片机控制数码管显示的功能。本章小结本章首先介绍了供电电源电路的设计,然后是介绍了硬件电路的核心部分控制电路,D/A转换电路和压控恒流源电路。其中供电电源电路是给整个硬件系统供电的,按键设定好输出电流后单片机将电流数字量通过P2口送入到D/A转换器中,D/A转换器将其转换为数字量后输出,在由压控恒流源模块转化为恒定的电流值,单片机控制74LS164的数据端和时钟端,且74LS164的输出Q0-Q
37、7分别对应接到数码管的a-h端口,从而实现单片机控制数码管显示的功能。从而完成整个硬件电路的设计。第4章 软件程序设计4.1 主程序设计流程单片机初始化引脚和中断,当单片机的P1口检测到有按键按下时,如果是S3键按下电流值加1,如果是S4键按下,则电流值减1。启动数码管显示电路开始显示数值,输出电流设定好后单片机将电流数字量通过P2口送入到D/A转换器中,D/A转换器将其转换为数字量后输出。本设计主程序流程图如图4-1所示。4.2 程序设计AT89S51单片机内部主要由9个部件组成:1个8位中央处理器;4KBFlash存储器;128B的数据存储器;32条I/O口线;2个定时器/计数器;1个具有
38、6个中断源、4个优先级的中断嵌套结构;用于多处理机通信、I/O扩展或全双工UART的串行口;特殊功能寄存器;1个片内振荡器和时钟电路。AT89S51系列单片机完全继承了MCS-51的指令系统,共有111条指令,按其功能可分为五大类:数据传送类指令、算术运算类指令、逻辑运算类指令、控制转移类指令、布尔操作。AT89S51具有4K的内置Flash可在线编程程序存储器,对于这样内部有4KB的程序存储器的芯片,若引脚接VCC(+5V),则PC的值在00FFFH(4KB)之间时,CPU取指令时访问内部的程序存储器。若PC值大于0FFFH时,则访问外部的数据存储器。如果引脚接Vss(地),则内部的程序存储
39、器被忽略,即CPU只能访问外部的数据存储器。程序存储器的操作完全由PC控制。对于内部有程序存储器(ROM或EPROM)的芯片,引脚可接高电平也可接低电平,而对于内部无程序存储器(如8031和8032)的芯片,必须扩展外部程序存储器,引脚必须接地。本设计中通过引脚定义设定单片机控制其他器件的引脚。4.2.1 按键扫描本设计中按键采用查询方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,有按键按下时,转向相应的子程序。对于每一个按键,都有一个接口电路与单片机相连,单片机查询到哪一个键按下,然后通过跳转指令转入该按键编码子程序,根据编码方式控制NE555的起振时间。按键按下或释放时,由于机
40、械弹性作用的影响,通常伴有一定时间的触点机械抖动,然后其触点才稳定下来,抖动时间的长短与开关的机械特性有关,一般为5-10ms。在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面考虑。在按键数比较少时,可采用硬件去抖动,按键数比较多时,采用软件去抖动。硬件可采取在键输出端加R-S触发器或单稳态触发器构成去抖动电路。软件上采取的措施是:在检测到有按键按下时,执行一个10ms左右的延时程序后,再确认,该按键电平是否仍处于闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭
41、合状态,同理,在检测到该键释放后,也采用相同的步骤进行确认,从而消除抖动的影响。本设计中采用软件延时方法去按键抖动。 4.2.2 D/A转换DAC0832进行D/A转换,可以采用两种方法对数据进行锁存:第一种方法是使输入寄存器工作在锁存状态,而DAC寄存器工作在直通状态,就是使和都为低电平,DAC寄存器的锁存选通端得不到有效电平而直通。此外,使输入寄存器的控制信号ILE处于高电平,处于低电平,这样当端来一个负脉冲时,就可以完成1次转换。第二种方法是使输入寄存器工作在直通状态,而DAC寄存器工作在锁存状态,使和为低电平,ILE为高电平,这样,输入寄存器的锁存选通信号处于无效状态而直通。当和端输入
42、1个负脉冲时,使得DAC寄存器工作在锁存状态,提供锁存数据进行转换。根据以上DAC0832的输入寄存器和DAC寄存器不同的控制方法,DAC0832有如下3种工作方式:单缓冲方式:单缓冲方式是控制输入寄存器和DAC寄存器同时接受资料,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用于只有一路模拟量输出或几路模拟量异步输出的情形。双缓冲方式:双缓冲方式是先使输入寄存器接受资料,再控制输入寄存器的输出资料到DAC寄存器,即分 两次锁存输入资料。此方式适用于多个D/A转换同步输出的情形。直通方式:直通方式是资料不经两级锁存器锁存,即、均接地,ILE接高电平。此方式适用于连续反馈控制线路,不过
43、在使用时,必须通过另加I/O接口与MCU连接,以匹配MCU与D/A转换。本设计中选用的是第一种数据锁存方法单缓冲工作方式,将和直接接低电平,接低电平,由单片机P1.7引脚控制。该部分子程序流程图如图4-2所示。4.2.3 数码管显示根据数码管的驱动方式不同,数码管送显方式有两种:静态送显和动态送显。静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动4个数码管,静态显示则需要32根I/O端口来驱动,实际应用时必须增加译码驱动器
44、进行驱动,增加了硬件电路的复杂性。动态显示驱动:数码管动态显示接口是单片机中应用最广泛的显示方式之一。动态驱动是将所有数码管的8个码段“a、b、c、d、e、f、g、dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字型码时,所有数码管都接收到相同的字型码,那个数码管显示该字形由单片机对位选通电路的控制,所以将欲显示的数码管的位选通端选通,该数码管就显示,其它数码管均不会亮。通过轮流控制各个数码管的选通断使数码管轮流显示。在显示过程中,每个数码管的显示时间为1-2ms,由于人们的视觉暂留现象及发光二极管的余晖效应,只要扫描的速度
45、够快,给人的印象就是同时点亮的,而且不会有闪烁感。动态显示与静态显示的效果是一样的,但是动态显示能节省大量的I/O口,而且功耗更低。本设计中选用动态显示驱动方式,数据通过74LS164的数据端送至数码管显示。先按照74LS164的时钟时序写入8段码,写完后送入数码管,子程序流程图如图4-3所示。子程序代码如下: void write_164(uchar lx) uchar i,j;j=lx;for(i=0;i1; delay(2);void disp_all(void) uchar i,j; for(i=0;i20;i+) for(j=0;j4;j+) P0=0X0F; write_164(DISP_SAVEj); P0=LED_TABj; delay(50); P0=0X0F; write_164(0xff);4.3 本章总结一个完整的系统都是由硬件和软件构成的,在前两章介绍了课题的硬件设计的原理和电路,这一章主要介绍课题的软件设计。本章介绍了软件设计的流程图