毕业论文—数控直流恒流源的设计_第1页
毕业论文—数控直流恒流源的设计_第2页
毕业论文—数控直流恒流源的设计_第3页
毕业论文—数控直流恒流源的设计_第4页
毕业论文—数控直流恒流源的设计_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西北第二民族学院学士学位论文论文题目: 数控直流恒流源的设计 院(部)名 称: 电气信息工程学院 学 生 姓 名: 专 业: 信息工程 学 号: 指导教师姓名: 论文提交时间: 论文答辩时间: 学位授予时间: 西北第二民族学院教务处制摘 要直流恒流源是提供稳定直流电流的电源装置,是科学实验和设备调试中的一种必备设备。本文介绍了采用AT89C51单片机为主控制器,通过键盘来设置直流恒流源的输出电流,并由数码管显示电流设定值的数控直流恒流源。本系统由单片机程控设定数字信号经过D/A转换器输出模拟量,再经过V/I转换电路的转换输出不同的电流。输出电流范围为10100mA,电流设置步进为1mA,输出电流调整率2%。本文主要分析了数控直流恒流源系统的设计需求,阐述了数控直流恒流源的软硬件的设计原则,介绍了数控直流恒流源各模块电路的功能及设计思路,完成了数控直流恒流源系统的全部设计,给出了完整的电路图和程序。本文设计的重点是单片机主控系统和D/A转换电路,设计的难点是高线性、高稳定度的电压/电流转换电路(V/I转换电路)。测试结果表明,本系统能满足需要高稳定度的小功率直流恒流源领域的应用要求。关键词 数控 恒流源 V/I转换ABSTRACTNumerical control DC constant current source is to provide a stable DC power devices, and equipment for scientific experiments debugging necessary equipment. This paper instructed the numerical control DC constant current source which makes use of the AT89C51 version single chip microcontroller is the main controller in this system, while the set value and the real output current can be displayed by LED. In this system, the digitally programmable signal from Single Chip Micro controller is converted to analog value by D/A converter, and then transited by voltage/current converter circuit, so adjustable output different current. Output current range of 10100mA, current set of 1mA step, the output current adjustment rate of less than 2%.This paper analyzes the numerical control DC constant current source system design needs, expounded numerical-controlled DC constant current source of the hardware and software design principles, instructed the numerical-controlled DC constant current source circuit of the module function and design ideas, completed the numerical-controlled DC current source of all design, and the circuit is complete and procedures. This paper focuses on the design of the control system microcontroller and D/A Conversion Circuit, The difficulty in the design of high linearity, high stability of the voltage/current converter circuit (V/I Conversion Circuit). The test results have showed that it can be applied in need areas of constant current source with high stability and low power.KEY WORDS numerical control constant current source V/I convert目 录前 言1第1章系统总体设计21.1系统设计任务与要求21.1.1系统设计任务21.1.2系统设计要求21.2重点研究内容与实现方法21.2.1重点研究内容21.2.2实现途径及方法31.3系统总体方案设计31.3.1主控模块31.3.2键盘与显示模块41.3.3恒流源模块41.3.4存储器扩展模块41.3.5电源模块51.3.6系统原理框图5第2章系统硬件各功能模块的设计62.1主控模块的设计62.1.1AT89C51单片机简介62.1.2D/A转换电路的设计72.1.3恒流源电路的设计92.1.4数据存储器的扩展102.1.5系统资源分配112.2人机接口的设计122.2.1键盘的设计122.2.2显示电路的设计142.3系统抗干扰设计152.3.1看门狗电路的设计152.3.2电源供电系统的设计162.3.3基准电压的设计17第3章控制软件的设计193.1主程序的设计193.1.1读写EEPROM子程序的设计193.1.2键盘处理子程序的设计203.1.3D/A转换子程序的设计203.2键盘中断服务程序的设计213.3显示中断服务程序的设计213.1.1正常显示程序模块213.1.2闪烁显示程序模块21第4章系统调试284.1硬件仿真调试284.2软件的调试314.3数据测试及误差分析35第5章结论41致 谢42参考文献43附录1:电路原理图44附录2:源程序48附录3:英文原文62附录4:中文译文69II西北第二民族学院学士学位论文数控直流恒流源的设计前 言直流恒流源是提供稳定直流电流的电源装置,是科学实验和设备调试中的一种必备设备。所谓恒流源,是指对应于一定的负载变化其所产生的电流变化趋于零。它能在外部电路的阻抗特性发生变化时,仍输出恒定的电流,具有很高的动态输出电阻。目前使用的直流恒流源大部分都是利用分立器件组成,其体积大,效率低,可靠性差,操作使用不方便,自我保护功能不够完善,故障率较高。随着电子技术的发展和数字电路应用领域的扩展,现今社会产品智能化、数字化已成为其发展的趋势。数控直流恒流源作为测试/调试仪器在生产实际中有着广泛的用途,如:工业上的电控调节阀,其阀门开度受输入的控制电流大小控制,对于型表来说这个电流是010mA,对于型表来说这个电流是420mA。恒流源成为这些设备调试的必备工装。在科学实验、电磁学测量、传感器供电等领域都需要恒流源提供稳定的标准电流。以单片机系统为核心而设计的新一代数控直流恒流源不但电路简单、结构紧凑、价格低廉,而且单片机具有计算和控制能力,可对各种采样数据进行处理,控制其输出电路,从而可减少或排除由于干扰信号引起的输出电流波动,提高输出电流的稳定性。目前国内一般使用的恒流电流源往往是固定的一种电流值,或只能设定有限数值的电流值,普遍存在着调节范围小、热稳定性差等缺点。本设计结合单片机的控制技术、D/A转换技术和集成电路技术,设计一种数控的直流恒流源。它利用单片机作为核心控制器,通过键盘设置所需要的电流值。电流值取值精度高,使用方便灵活,它可以提供10100mA 的恒流输出,并具有1mA的步进电流调整功能,在0100负载下输出电流调整率2。基于单片机的数控直流恒流源在科研和生产实际中应用前景广阔,可作为实验仪器或生产的必备工装在各种需要的场合推广使用。第1章 系统总体设计1.1 系统设计任务与要求1.1.1 系统设计任务该数控直流恒流源采用51系列单片机为主控芯片,通过D/A转换实现对输出电流的控制。主要技术指标:输出电流直流10100mA可调整(0100负载下,以1mA为步进单位);在0100负载下输出电流调整率2。该恒流源由单片机系统、D/A转换器、受控恒流源、键盘与显示电路、看门狗电路和电源电路等构成。1.1.2 系统设计要求根据设计任务,详细分析数控直流恒流源的设计需求,并进行软硬件的总体设计。在完成总体设计后,进行硬件功能模块的设计,利用电子CAD软件完成数控直流恒流源全部电路的设计工作,同时进行控制软件的流程设计及编制工作。利用Keil51软件完成数控直流恒流源全部控制软件的仿真调试工作。利用Proteus软件完成大部分功能模块的电路仿真。1.2 重点研究内容与实现方法1.2.1 重点研究内容本设计包括硬件设计和软件设计。硬件设计主要包括单片机主控系统、D/A转换器、受控恒流源、键盘与显示电路、看门狗电路和电源电路等,其中硬件设计重点是单片机主控系统和D/A转换器,设计难点包括高线性、高稳定度的电压/电流转换电路(V/I转换电路)。软件设计主要包括主控程序和中断服务程序。主要完成系统初始化、键盘扫描、数据处理、电流值显示、输出电流控制和看门狗电路控制等工作,同时还应考虑如何实现断电后保存最后一次设定的电流值的问题。1.2.2 实现途径及方法本系统主要通过资料查找、系统需求分析、系统总体设计,软硬件总体设计、详细的软件与硬件设计、系统仿真与调试、资料整理等步骤来完成。本系统利用Protel软件完成硬件电路设计工作,利用Keil51软件完成系统控制软件的编译调试工作,通过Proteus软件完成所有功能模块的电路仿真。1.3 系统总体方案设计按照系统设计要求,在保证实现的基础上,要尽可能降低系统成本。整个系统从功能上划分为5个模块,并分别对每个模块进行方案论证比较。1.3.1 主控模块方案一:采用各类数字电路来组成键盘控制系统,进行信号处理,如选用CPLD等可编程逻辑器件。本方案不利于系统的扩展,对信号处理比较困难。方案二:采用MCS-51单片机作为整机的控制单元,通过改变D/A的输入数字量来改变其输出电压,通过V/I变换电路间接地改变输出电流的大小。此系统比较灵活,采用软件方法来解决数据的预置以及电流的步进控制,使系统硬件更加简洁,各类功能易于实现,能很好地满足题目的要求1。比较以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,能达到题目的设计要求,故本设计采用方案二来实现。1.3.2 键盘与显示模块常用的非编码键盘有两种实现方案,一种是独立式键盘,另一种是行列式键盘。独立式键盘电路配置灵活,软/硬件结构简单,但每个按键占用一根I/O口线,在按键较多时,I/O口线浪费较大。行列式键盘一般采用锁存器和可编程并行I/O接口芯片组成,软/硬件结构复杂2。考虑到系统实现及成本等综合因素,同时为了方便用户使用,共设计了6个功能键,按键数量不多,因此本系统中采用独立式键盘。在单片机的应用系统中,通常使用LED(发光二极管)和LCD(液晶显示器)来观察和监视单片机的运行情况以及运行中间的结果及状态等信息。LED显示器具有主动发光、配置简单及使用寿命长等优点,在本系统中需要显示3位电流值,因此采用3个七段LED数码管显示设定的电流值。1.3.3 恒流源模块方案一:采用四端可调恒流源,这种器件靠改变外围电阻元件参数,从而使电流达到可调的目的,这种器件能够达到12000毫安的输出电流。改变输出电流,通常有两种方法:一是通过手动调节来改变输出电流,这种方法不能满足题目的数控调节要求;二是通过数字电位器来改变需要的电阻参数,虽然可以达到数控的目的,但不够方便调节输出电流。方案二:压控恒流源,通过改变恒流源的控制电压,利用电压的大小来控制输出电流的大小。电压控制电路采用数控的方式,利用单片机送出数字量,经过D/A转换转变成模拟信号,再送到运算放大器进行V/I转换。当改变负载大小时,基本上不影响电流的输出。该方案通过软件方法实现输出电流稳定,易于实现,便于操作,故选择此方案。1.3.4 存储器扩展模块在单片机应用系统中,对某些状态参数,不仅要求能够在线修改,而且断电后能保存,以便上电恢复系统上一次的工作状态。断电数据保护方法可选用具有断电保护功能的RAM和电可擦除存储器EEPROM。具有断电保护功能的RAM容量大,速度快,但占用口线多,成本高。EEPROM适合数据交换量较少对速度要求不高的场合。EEPROM有并行和串行之分。并行EEPROM速度比串行快,容量大,但在本系统中并不需要这么大的容量。串行芯片成本低,接口简单,工作可靠,占用单片机I/O口线资源少3。在本系统中只需要存储3位电流值,数据量少,故采用串行EEPROM来存储设置数据。1.3.5 电源模块方案一:用开关稳压电源给整机供电,此方案能够完成本设计直流恒流源的供电,但开关电源比较复杂,且输出中带有较大的高频干扰。方案二:单片机控制系统以及外围芯片供电采用78系列三端稳压器件,通过全波整流,然后进行滤波稳压。电流源部分由于要给外围测试电路提供比较大的功率,因此必须采用大功率器件。考虑到该电流源输出电压在24V以内,最大输出电流不大于100mA,由公式可以粗略估算电流源的功耗为2.4W。同时考虑到恒流源运算放大器部分的功耗,需要预留功率余量,因此供电电源要求能输出5W以上。由于串联稳压电路的输出纹波小,符合恒流源的需求,故选用由78系列三端稳压器件构成的稳压电源4。此方案输出电压能满足系统要求,而且简单实用。1.3.6 系统原理框图数控直流恒流源系统原理框图如图1-1所示。图1-1 数控直流恒流源系统原理框图第2章 系统硬件各功能模块的设计2.1 主控模块的设计2.1.1 AT89C51单片机简介单片机系统是整个数控直流恒流源系统的核心部分,它负责键盘处理、数据处理和实时调整输出电流。主要包括AT89C51单片机、8位数/模转换芯片DAC0832、串行EEPROM AT24C01芯片、译码芯片74LS138及数码管驱动芯片74LS273等器件。主控模块是以单片机为核心的一个单片机应用系统。本系统采用ATMEL公司的AT89C51单片机,该型号单片机采用CMOS工艺,功耗低,因其与MCS-51单片机的完全兼容性、优良的工作性能、使用的灵活性以及较高的性价比成为AT89系列单片机的主流机型,在嵌入式控制系统中获得广泛应用1。AT89C51单片机与Intel8051单片机在引脚排列、工作特性、硬件组成、指令系统等方面完全兼容,引脚排列如图2-1所示。其主要工作特性为:l 内含4KB的Flash存储器,擦写次数达1000次;l 内含128字节的RAM;l 具有32根可编程I/O线;l 具有2个16位可编程定时器;l 具有6个中断源、5个中断矢量、2级优先权的中断结构;l 具有1个全双工的可编程串行通信接口;l 具有1个数据指针DPTR;l 两种低功耗工作模式,即空闲模式和掉电模式;l 具有可编程的3级程序锁定位;l 工作电源电压为51.2V,典型值为5V;l 最高工作频率为24MHz。图2-1 AT89C51引脚排列(PDIP)2.1.2 D/A转换电路的设计根据设计要求,所设计的直流恒流源应具有数控功能,输出电流为10100mA,步进为1mA。由于本设计的直流电流源为压控电流源,因此采用“单片机D/A”的方式来实现数控功能最为合适。根据指标要求,D/A转换芯片的位数至少为8位,故而选择8位的D/A转换芯片。由于单片机接口资源充足,所以选择并行D/A转换芯片,以提高转换速度。DAC0832是使用较多的一种8位D/A转换芯片,其转换时间为1us,工作电压为+5V+15V,基准电压为+5V5。其引脚排列如图2-2所示。各引脚功能如下:l DI0DI7:数据输入线,TTL电平,有效时间大于90ns;l ILE:数据锁存允许控制信号输入线,高电平有效;l CS:片选信号输入端,低电平有效;l WR1:输入寄存器的写选通输入端,低电平有效;l XFER:传送控制信号输入线,低电平有效;l WR2:DAC寄存器写选通输入线,负脉冲有效;l IOUT1:输出电流1,当输入数据为全1时,IOUT1最大;l IOUT2:输出电流2,当输入数据为全1时,IOUT2最小;l Rfb:运算放大器外接反馈电阻引线端;l Vcc:芯片电源电压,其值为+5V+15V;l Vref:基准电压输入线,其值为-10V+10V;l AGND:模拟地,为模拟信号和基准电源的参考地;l DGND:数字地,为工作电源地和数字逻辑地。图2-2 DAC0832引脚排列DAC0832利用WR1、WR2、ILE、XFER控制信号可以构成三种不同的工作方式,分别为直通方式、单缓冲方式和双缓冲方式6。在本设计中,因为只有一路模拟量输出,所以采用单缓冲方式。DAC0832与单片机的接口如图2-3所示。图2-3 DAC0832单缓冲方式与单片机的接口电路2.1.3 恒流源电路的设计在本设计中,恒流源电路采用压控电流源来实现。压控电流源的核心就是电压/电流(V/I)转换电路,主要由给定与比较放大单元、功率放大单元组成7。其电路原理图如图2-4所示。在输出回路中引入一个反馈电阻,输出电流经反馈电阻得到一个反馈电压,经、加到运算放大器的两个输入端。由电路可知,其反相端和同相端的电压分别为、。式中为反相端的电压,为同相端的电压,为输入电压(来自D/A输出)。图2-4 电压/电流转换电路对于运算放大器,有,故有由于,则若令,则有。略去反馈回路的电流,则有,可见当运算放大器增益足够大时,输出电流与输入电压成正比,其比值只决定于反馈电阻而与负载电阻的大小无关,因而具有恒流性能8。当在范围内时,输出电流在直流范围内线性地与直流输入电压相对应。2.1.4 数据存储器的扩展在本设计中由于只需要存储最后一次电流设定值,数据量少,所以扩展一片AT24C01芯片(引脚排列如图2-5所示)。图2-5 AT24C01引脚排列各引脚功能说明如下:l A0、A1、A2:片选或页面选择地址输入;l WP:写保护,用于硬件数据保护功能;l SDA:串行数据输入/输出端;l SCL:串行时钟端,用于对输入和输出数据的同步。AT24C01芯片是由ATMEL公司生产的串行电可擦除的可编程CMOS只读存储器,其容量为1KB,自定时周期包括自动擦除时间不超过10,典型时间为5,读写寿命达100万次,数据保存达100年,采用单一电压+5V,低功耗工作电流1,备用状态时只有109。由于只用一片AT24CO1因而将A0A2接地;WP接到GND,可以正常读写;串行时钟线SCL和串行数据线SDA分别与单片机I/O口的P1.6、P1.7相连。由于SCL和SDA管脚是漏级开路驱动,而单片机P1口内部有上拉电阻,因此可以直接与单片机连接。AT24C01与单片机的接口电路如图2-6所示。图2-6 AT24C01与单片机的接口电路2.1.5 系统资源分配在单片机应用系统设计中,常用的地址译码方法有两种,线选法和部分译码法。线选法是直接以系统的几根高位地址线作为芯片的片选信号,把选定的地址线和芯片的片选端直接相连。线选法的特点是连接简单,不必专门设计译码电路,但芯片占的存储空间不连续,并且地址空间利用率低,一般用于简单系统的扩展。部分译码法是用译码器对系统的部分高位地址线进行译码,译码电路将地址空间划分若干块,其输出做为扩展芯片的片选信号。这样既充分利用了存储空间,又避免了地址空间分散的缺点,还可以减少I/O口线的占用。在本设计中采用部分译码法为D/A芯片和三个数码管提供地址译码信号,译码器采用74LS138(芯片引脚排列如图2-7所示)。图2-7 74LS138引脚排列单片机的、分别接74LS138的E3、A、B、C。当、时单片机选通74LS138进行译码。系统中各扩展芯片的地址见表2-1。表2-1 系统资源地址分配表系统地址分配部件地址片选读写有效电平D/A芯片8000H87FFHY0只写低数码管个位8800H8FFFHY1只写低十位9000H97FFHY2百位9800H9FFFHY3系统管脚分配键盘设置键P1.074LS138AA11加一键P1.1BA12减一键P1.2CA13左移位键P1.3A14右移位键P1.4E3A15确认键P1.5WRAT24C01SCLP1.6键盘中断INT0SDAP1.7看门狗电路的喂狗信号输入P3.52.2 人机接口的设计2.2.1 键盘的设计在本设计中的独立式键盘采用中断方式(如图2-8所示)。当P1口外接的6个按键中任何一个按键被按下时,与之相连的输入线即被置为低电平,则会引起中断请求,CPU进入中断处理。键盘分布如图2-9所示。图2-8 键盘与单片机的接口电路各按键功能说明如下:l 设置键:进入设置状态;l 加1键:在设置状态下,按一次数值加1;l 减1键:在设置状态下,按一次数值减1;l 左移位键:在设置状态下,按一次左移1位;l 右移位键:在设置状态下,按一次右移1位;l 确认键:在设置状态下,使设置电流值生效并退出设置状态。图2-9 键盘分布2.2.2 显示电路的设计本系统采用3个七段共阴极LED数码管作为显示器,其引脚排列如图2-10所示,其字符段码如表2-2所示。LED数码管采用静态显示方式,数码管的共阴极点连接在一起接地。为了使七段数码管的每一段的亮度一致,并避免工作电流过大而缩短数码管的寿命,在其公共端与地之间接入了一个限流二极管。一片74LS273锁存器驱动一个LED数码管,只要把数据送给锁存器,则该位就能一直保持相应的显示符。74LS273锁存器的CLK引脚接片选信号,LED数码管与单片机的接口电路如图2-11所示。表2-2 共阴极字符段码表字符段码字符段码03FH67DH106H707H25BH87FH34FH96FH466H80H56DH熄灭00H图2-10 LED数码管引脚排列图2-11 LED数码管与单片机的接口电路2.3 系统抗干扰设计2.3.1 看门狗电路的设计在实际应用中系统可能由于受到干扰而失控,引起程序跑飞,也可能使程序陷入“死循环”。指令冗余技术、软件陷阱技术不能在任何情况下都使失控的程序摆脱“死循环”。为保证系统的稳定工作,通常采用程序监视技术,即“看门狗”技术,使程序脱离“死循环”。“看门狗”技术就是不断监视程序循环运行时间,若发现时间超过已知的循环设定时间,则认为系统陷入了“死循环”,然后强迫程序返回到上电复位的入口,使系统运行纳入正轨。“看门狗”技术既可由硬件实现,也可由软件实现,还可以由两者结合来实现。硬件“看门狗”技术实现方案主要有:l 由计数器构成的“看门狗”;l 由定时器构成的“看门狗”;l 由专门芯片构成的“看门狗”。10本设计采用第一种方案,由两片CD4020计数器构成的“看门狗”电路如图2-12所示,计数器CD4020为14位二进制计数器。在本系统中,单片机晶振为6MHz,则ALE信号周期为1。U107计数器的Q14脚定时时间为。主程序在循环过程中,P3.5脚定时发出清0负脉冲使U108计数器Q4端输出为低电平,程序正常运行。当程序进入“死循环”超过时,Q4为高电平,使系统复位。图2-12 由计数器构成的看门狗电路2.3.2 电源供电系统的设计在对电源进行设计时我采用直流稳压电源。从系统对纹波电流的要求出发,我选择了用78系列集成三端稳压器构成的稳压电源。其优点是:(1)可以进行预稳压,以提高输出电流对输入交流电源电压变化的稳定度;(2)为压控电流源电路提供具有稳压特性且纹波电流很小的高质量工作电源,以有效降低输出电流纹波系数11。本系统需要四组电源,即+5V、12V、+24V和为D/A转换芯片提供的+5V基准电压电源。220V交流电源经过电源变压器、整流滤波器和集成三端稳压器产生出系统所需的各种电源。在本设计中采用以78系列三端固定输出集成稳压器为核心的稳压电源,另外加上保护电路。为防止220V电源掉电后三端稳压器的输出电压高于输入电压,造成三端稳压器的损坏,在三端稳压器的输入端和输出端之间跨接了一个保护二极管。系统电源原理图如图2-13所示。图2-13 系统电源电路2.3.3 基准电压的设计D/A转换芯片是恒流源系统中的重要部分,D/A输出电压值的精度直接影响恒流源系统输出电流值的精度。D/A输出电压值的精度不仅与二进制数码有关,还与基准电压有关。在本设计中采用运算放大器OP07来产生所需的+5V基准电压,而基准电压源则采用MC1403。MC1403是美国摩托罗拉公司生产的高精确度、低温漂的基准电压源10。基准电压电路如图2-14所示。输入电压,(典型值),可达。输出电压,其中是负反馈电阻,是反相输入端电阻。当时,。图2-14 基准电压电路第3章 控制软件的设计3.1 主程序的设计在本系统中,主程序负责的工作有初始化系统、读写EEPROM、D/A转换及处理键盘。主程序的循环部分是查询各个按键的标志位,并根据标志位的状态转到相应的按键处理程序。由于系统启动后需要输出的电流为上次系统关闭时的电流设定值,因此当系统初始化之后则先执行一次读EEPROM子程序,然后执行D/A转换子程序输出电流。主程序流程如图3-1所示。3.1.1 读写EEPROM子程序的设计AT24C01存储器传输时序符合总线协议,要特别说明的是SCL要求的频率范围100kHz400kHz,SDA的起始和停止时间为4.7。只要时钟线为高电平,数据线都必须保持稳定,否则数据线上的变化会被当作“启动”或“停止”信号。每个数据的传输都是由启动信号开始,停止信号结束。在开始与停止信号之间传输的字节数由计算机决定,从理论上说对字节数没有限制1。串行EEPROM读操作一般分两步进行:(1)单片机发出一个开始信号,通过写操作设置EEPROM的芯片地址和EEPROM存储单元地址。(2)单片机重新发送一个开始信号,然后发送含读操作的控制字节;EEPROM发回应答信号后,要读取的数据就从SDA上输出。串行EEPROM写操作可分为字节写和数据块写两种形式。由于本系统需要写的数据不多,故采用字节写。在这种方式下,单片机发出开始信号后,紧接着发送控制字节到SDA总线上,待EEPROM芯片发回一个应答信号后,单片机发出存储单元地址码,并被写入EEPROM片内的地址指针。单片机接收到EEPROM发回的一个应答信号后,才发送1字节的数据,并把数据暂存入数据缓冲器。EEPROM再一次发出应答信号,单片机便产生停止信号,然后把接收到的8位数据写入指定的EEPROM存储单元。为了不影响键盘处理子程序和显示中断服务程序的数据,读/写EEPROM子程序使用3区工作寄存器。读/写EEPROM子程序流程如图3-2所示。3.1.2 键盘处理子程序的设计键盘处理子程序是根据相应的标志位来执行相关的程序模块。因为本系统最大输出电流是100mA,所以该子程序兼有检查电流值设置合法性的功能。当设置电流值超过100mA时,程序会强制把百位清0,并继续保持系统处于设置状态。在本设计中,系统退出键盘处理子程序前分别调用一次D/A转换子程序和写EEPROM子程序。这样做的目的是避免主程序循环体重复调用D/A转换子程序和写EEPROM子程序造成输出电流不稳定及频繁写EEPROM而缩短EEPROM的寿命。本设计中编写的键盘处理子程序,主要注重了以下3个问题:l 如何减少按键的使用次数,以提高按键的使用寿命;l 如何更快捷,更方便地给出设定值;l 如何更有利于主程序的整体调度。键盘处理子程序使用0区工作寄存器,指示闪烁位数据在RAM中的地址存在R0中,个、十、百位的数据分别存在32H、31H、30H内存单元中。键盘处理子程序流程如图3-3所示。3.1.3 D/A转换子程序的设计D/A转换程序的核心部分是如何将电流设定值转换成D/A输入值。在编写这部分程序时我考虑了两种方案,一是采用运算法,二是采用查表法。经过比较论证,在本设计中两种方法的转换精度是一样的,但查表法的程序更加简洁高效,因此本设计采用查表法。转换关系为0mA对应00H,100mA对应FFH,转换倍率为2.55。D/A转换程序的另一重要组成部分是BCD码转成十六进制程序模块。从键盘输入的数值是十进制数,以BCD码形式表示。但在单片机内部都是以二进制表示,单片机并不知道编程者的意图,因此必须先把BCD码转换成十六进制数,再给单片机进行处理。由于D/A转换子程序和读/写EEPROM子程序不会同时运行,所以D/A转换子程序也使用3区工作寄存器。D/A转换子程序流程如图3-4所示。3.2 键盘中断服务程序的设计由于本系统的键盘采用外部中断0方式与单片机连接,因此键盘程序采用了中断方式。当没有键按下时,CPU执行其它任务,而不用重复调用键盘扫描程序。当键盘上有任一个键按下时,均向CPU申请中断,CPU响应中断请求后,判断是哪个键按下,并置该按键的标志位,然后退出中断服务程序。如果是按键抖动,则直接退出中断服务程序。在本设计中,考虑到使用方便及防止误操作因素,只有在系统进入设置状态,程序才会转到相应的按键处理程序模块。键盘中断服务程序流程如图3-5所示。3.3 显示中断服务程序的设计3.1.1 正常显示程序模块本设计的显示程序采用T0定时中断来实现静态显示,定时时间为50ms,使LED数码管显示内容定时刷新。系统启动后默认进入正常显示方式。正常显示时程序将熄灭无效零。3.1.2 闪烁显示程序模块当系统进入设置状态时进入闪烁显示,闪烁周期为1秒。闪烁通过累计10次T0定时中断来实现。首次进入默认个位闪烁,闪烁位表示当前设置位,可通过移位键来改变闪烁位。为了使闪烁显示位与键盘操作同步,闪烁显示程序也使用默认0区工作寄存器。显示中断服务程序流程如图3-6所示。图3-1 主程序流程图3-2 读/写EEPROM子程序流程图3-3 键盘处理子程序流程图3-4 D/A转换子程序流程图3-5 键盘中断服务程序流程图3-6 显示中断服务程序流程第4章 系统调试4.1 硬件仿真调试由于时间和条件的限制,本设计没有进行实际样品试制,我仅用Proteus软件进行了系统仿真。Proteus嵌入式系统仿真与开发平台由英国Labcenter公司开发,是目前世界上最先进最完整的嵌入式系统设计与仿真平台。Proteus软件可以实现数字电路、模拟电路及微控制器系统与外设的混合电路系统的电路仿真、软件仿真、系统协同仿真和PCB设计等全部功能11。利用Proteus进行电路原理图设计的流程如图4-1所示。由于Proteus软件没有提供DAC0832芯片仿真库,所以仿真时用理想DA芯片代替。电路原理图布线完毕后先建立网络表,然后进行电气规则检测,电器规则检测报告如图4-2所示。在绘制的过程中要特别注意设置好元器件的参数,否则即便布线正确并通过电气检查,在仿真时也看不到预期结果。仿真电路可以不要晶振电路和看门狗电路,在电气规则检测时会发出警告,但不影响仿真,故在仿真电路中没有绘出。在实际电路原理图中则必须加上它们。绘制完毕的仿真电路原理图如图4-3所示。图4-1 仿真电路原理图设计流程图4-2 电气规则检测报告图4-3 仿真电路4.2 软件的调试软件调试的步骤如下:l 根据系统各功能模块流程图编写汇编源程序;l 对各功能模块进行逐一编译调试;l 各功能模块调试正常后,进行联合编译调试。此时要注意的问题是地址的分配、程序的连贯性及各功能的相互搭配。l 对全部程序进行调试编译,调试成功后,要对程序进行精简优化,在完成各功能的前提下,剔除多余程序代码。在本设计中,我用keil51软件来编写汇编程序和初步编译调试程序。在这个过程中主要解决的问题是代码的合法性及调试部分未涉及硬件的程序。在Keil51下调试没有错误后用Proteus软件进行软硬件结合调试。程序通过Keil51编译如图4-4所示。图4-4 程序在Keil51环境下通过编译截图使用Proteus调试时首先选择“Source”菜单下的“Define Code Generation Tools”选项来添加代码产生工具(如图4-5所示),然后“Source”菜单下的“Add/Remove Source files”选项来添加汇编程序源文件,并选择“Code Generation Tools”为“ASEM”(如图4-6所示);再选择“Source”菜单下的“Build ALL”选项进行编译(如图4-7),通过编译之后将十六进制文件(后缀名为.HEX)灌入单片机(如图4-8所示)。通过这些步骤后就可以单步或者连续仿真运行了。图4-5 添加代码产生工具图4-6 选择源程序和代码产生工具图4-7 程序通过编译图4-8 把目标文件灌入单片机在最初设计程序时,我把键盘处理部分放在键盘中断服务程序里面。经过调试发现如下几个问题:l 程序进入键盘中断程序后LED数码管就没有显示;l 进入闪烁显示时,闪烁频率没有按预定的时间进行闪烁,而是忽快忽慢;l 系统不能准确识别每一次按键动作。通过分析发现,由于键盘采用外部中断0,显示采用T0定时中断,而系统默认外部中断0的中断级别比T0定时中断的高,故进入键盘中断程序后显示中断程序没有得到系统响应,应把T0定时中断设置为高级中断。闪烁频率不正常是由于键盘中断服务程序内的消抖延时造成的。由于最初的程序设计只在读设置键时调用消抖延时程序,所以在按其它键时,系统就没能准确识别。经过逐步调试发现把键盘处理程序放到主程序中,而键盘中断服务程序只对按键标志进行置位,这样可解决上述问题。主程序就根据按键标志位来调用相应的按键处理程序模块,既优化了程序结构,又提高了程序执行效率。D/A转换程序在开始设计时是放在主程序的循环体内,这样系统总是不停地在进行D/A转换,然后输出给D/A,从而造成输出电流不够稳定。后来改在键盘中断服务程序里调用D/A转换程序,这样做的好处是只有在退出设置状态时才进行一次D/A转换。在调试读写EEPROM程序时发现只能对EEPROM写入数据,而不能读出数据。通过检查发现是自己没有正确理解总线协议造成的。在编写随机读操作程序需要注意随机读有两个步骤:一是执行伪写入把字节地址送入EEPROM,以确定需要读的字节地址;二是执行读出根据字地址读出对应内容。当EEPROM芯片接收了芯片地址及字地址时,在芯片产生应答信号ACK之后,单片机必须产生一个起始信号,执行当前地址读,这时单片机再发出芯片地址并令,则EEPROM应答芯片地址并串行输出被读数据。单片机接收数据完毕后,必须产生停止信号以结束随机读过程。对各个功能模块程序进行单独调试成功后,把各个程序模块组合起来进行调试。在这个过程中发现在当系统第二次进入设置状态后,程序就陷入死循环。经过分析发现,只是由于EEPROM读写程序与键盘处理程序模块使用的工作寄存器冲突引起。把EEPROM读写程序使用的工作寄存器改为3区,键盘处理程序使用0区工作寄存器即可解决问题。全部程序调试成功后打开PROGRAM.LST文件可知程序的长度为0423H(如图4-9所示),也就是1059字节(约为1KB),而AT89C51单片机内含4KB的Flash程序存储器足够存储本程序。图4-9 程序编译后的长度4.3 数据测试及误差分析数据测试是反映系统性能的重要指标,因此我对本系统进行了全面的输出电流测试。负载电阻为50时测试数据如表4-1所示。本次测试采用的仪表为Proteus软件提供的虚拟电表。电流设定值为10mA、50mA和100mA时的仿真分别如图4-10、图4-11和图4-12所示。另外我还进行了负载调整率测试。当负载电阻为0时,电流设定值为10mA、50mA和100mA的负载调整率测试情况分别如图4-13、图4-14和图4-15所示。当负载电阻为100时,电流设定值为10mA、50mA和100mA的负载调整率测试情况分别如图4-16、图4-17和图4-18所示。表4-1 测试数据统计电流设定值(mA)实际电流输出值(mA)误差电流(mA)电流设定值(mA)电流测试值(mA)误差电流(mA)0002525.00.011.170.172625.80.221.950.052726.90.133.120.122827.70.343.900.12928.90.155.070.073030.10.165.860.143130.90.177.030.033232.00.087.810.093332.80.298.980.023434.00.01010.20.23534.80.21110.90.13635.90.11212.10.13736.70.31312.90.13837.90.11414.10.13938.70.31514.80.24039.80.21616.00.04141.00.01716.80.24241.80.21818.00.04343.00.01918.70.34443.70.32019.90.14544.90.12121.10.14645.70.32221.90.14746.90.12323.00.04847.60.42423.80.24948.80.2电流设定值(mA)实际电流输出值(mA)误差电流(mA)电流设定值(mA)电流测试值(mA)误差电流(mA)5050.00.07675.80.25150.80.27776.50.55251.90.17877.70.35352.70.37978.50.55453.90.18079.70.35554.70.38180.80.25655.80.28281.60.45756.60.48382.80.25857.80.28483.60.45958.60.48584.70.36059.80.28685.50.56160.90.18786.70.36261.70.38887.50.56362.90.18988.70.36463.70.39089.80.26564.80.29190.60.46665.60.49291.80.26766.80.29392.60.46867.60.49493.70.36968.70.39594.50.57069.90.19695.70.37170.70.39796.50.57271.90.19897.60.47372.60.49998.40.67473.80.210099.60.47574.60.4图4-10 电流设定值为10mA时的仿

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论