毕业设计(论文)基于单片机控制的智能稳压电源设计.doc

上传人:laozhun 文档编号:4149750 上传时间:2023-04-07 格式:DOC 页数:27 大小:360KB
返回 下载 相关 举报
毕业设计(论文)基于单片机控制的智能稳压电源设计.doc_第1页
第1页 / 共27页
毕业设计(论文)基于单片机控制的智能稳压电源设计.doc_第2页
第2页 / 共27页
毕业设计(论文)基于单片机控制的智能稳压电源设计.doc_第3页
第3页 / 共27页
毕业设计(论文)基于单片机控制的智能稳压电源设计.doc_第4页
第4页 / 共27页
毕业设计(论文)基于单片机控制的智能稳压电源设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《毕业设计(论文)基于单片机控制的智能稳压电源设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机控制的智能稳压电源设计.doc(27页珍藏版)》请在三一办公上搜索。

1、 机电专科学校基于单片机的智能稳压电源设计姓名: 班级: 学号: 专业: 基于单片机控制的智能电源 第1节 引 言通信电源是保证通信畅通的基础,其基础地位确保了电源专业将长久的兴旺发展并保持其专业的稳定性和独立性,特殊的作用不会被其它专业所取代,所以自60年代以来通信电源事业一直方兴未艾,技术在不断的进步,设备在不断的更新,专业地位日益得到提高,特别是进入90年代以来,随着通信事业超常规的快速发展,电源专业尤为得到了长足的进步,新型的电子器件、新设备、微电子技术、计算机集中监控技术等正在广泛的被通信电源所采用。全球通信电源技术发展呈现以下几大趋势:(1)高效率,高功率密度,高的使用环境温度;运

2、营商的设备不断增多、用电量加剧、机房面积紧张等客观因素的存在,对电源产品提出了高效率、高功率密度、宽的使用环境温度的要求。(2)网络化智能化的监控管理;随着网络的日益发展,巨大网络设备需要大量人力、物力投在设备的管理和维护工作上,如:通信设施所处环境越来越复杂,人烟稀少、交通不便这些都增大了维护的难度。这对电源设备的监控管理提出了新的要求。(3)全数字化控制;数字化技术的发展逐步表现出了传统模拟技术无法实现的优势,如:采用全数字化控制技术,有效缩小电源体积降低了成本,大大提高了设备的可靠性和对用户的适应性。(4)安全、防护、良好EMC指标;考虑到设备复杂的运行环境,电源设备须满足相关的安全、防

3、护、防雷标准,才能保证电源的可靠运行。(5)绿色环保;环保一方面的指标是,通信电源的电流谐波符合要求。降低电源的输入谐波,不但可以改善电源对电网的负载特性,减小给电网带来的污染,也可减少对其他网络设备的谐波干扰。另一个重要方面是,材料可循环利用和对环境无污染。这方面需要产品满足WEEE、ROHS指令。WEEE、ROHS指令包括两部分的内容,即涉及循环再利用WEEE和限制使用有害物质的ROHS。所以设计一个智能电源十分必要。1.1 智能电源系统概述信息事业的迅猛发展,给电源市场带来了巨大的市场机会和挑战,同时对电源提出了一些新的需求。例如:多种物理设备放在一起,有电磁兼容的需求和机房面积与承重的

4、要求;网络设备种类变多使电源的负载变大,负载种类变多,对电源效率和种类有要求;机房和基站数目增多,对电源的可靠性和易维护性提出更高的要求,以满足无人值守需要。电源工作环境的差异对电源的应用环境也提出了新的需求,如更强电网适应能力、环境适应能力等,户外电源就是这一需求的典型代表。本次单片机课程设计是设计一个基于单片机的智能电源,硬件设计的主要任务是:蓄电池充电电路的设计、三组不同大小的电源设计、系统稳压电源设计、AD0809模数转换电路设计、看门狗电路设计、显示模块设计、3-8译码电路设计、AT89C51基本工作电路设计、74LS161分频器设计和辅助电路设计;软件设计的任务是:初始化程序设计、

5、按键程序设计、充放电控制程序设计、A/D转换程序设计、过流保护程序设计、显示程序设计。在硬件设计过程中,遇到的问题不是很大,但是在软件的设计中,主要需要解决的问题是单片机端口不够,必须复用。在AD0809采样中,对电压和电流的采样的先后顺序也需要注意。1.2 本设计任务和主要内容本文主要介绍一种基于AT89C51单片机的智能电源设计,该系统总共有三组电源输出:一组输出为12V,一组输出3V、4.5V、6V、9V,一组输出1.5V-12V的连续可调电压;具有输出电压、电流的显示功能;可更换的选择其中一端输出作为显示;具有电流保护功能,电流超过2A的时候,系统停止电压输出,过流保护后必须按复位键该

6、端才能重新输出;具有蓄电池供电,功率在20W时可连续工作5小时;还有充电控制电路和过放保护电路。第2节 基于AT89C51智能电源系统硬件设计 基于AT89C51单片机控制的智能电源系统的硬件设计是整个设计过程中的最重要的部分,也是最困难的部分。硬件设计需要充分了解各方的设计需求,确定合适的解决方案。启动一个硬件开发项目,原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,所以作为一个硬件系统的设计者,要主动的去了解各个方面的需求,并且综合起来,提出最合适的硬件解决方案。2.1 硬件设计的任务1. 蓄电池充电电路的设计

7、:为12V的蓄电池充电,并且具有防止过充的功能。2. 三组不同大小的电源设计:一组是12V的电源输出、一组是3V、4.5V、6V、9V的电源输出、一组是1.5V-12V的连续可调电源输出。3. 系统稳压电源设计:为整个系统提供12V和+5V稳压电源。4. AD0809模数转换电路设计:把模拟的电压电流信号转换成数字信号。5. 看门狗电路设计:使单片机在程序跑飞的情况自动复位。6. 显示模块设计:把输出的电压、电流显示在显示器上。7. 3-8译码电路设计:译码电路选择显示的位置和AD采样.8. AT89C51基本工作电路设计:使单片机正常工作。9. 74LS161分频器设计:对AT89C51的A

8、LE进行4分频为AD0809提供时钟频率。10. 辅助电路设计:单片机晶振电路、逻辑电路和按键电路。2.2 基于AT89C51智能电源系统设计框图图2-1是以AT89C51单片机为核心的智能电源系统硬件设计的结构框图。该测量系统主要由蓄电池充电模块、12V电源输出模块、3V、4.5V、6V、9V的电源输出模块、1.5V-12V连续电压电源模块、AT89C51单片机、看门狗电路、显示模块、3-8译码模块、分频模块和键盘模块等组成。图中12V的电源输出模块,3V、4.5V、6V、9V的电源输出模块,1.5V-12V连续电压电源模块通过AD0809模数转换送到单片机。经过单片机处理,输出控制信号。同

9、时也可以通过键盘控制输出的电压的大小。除此之外,系统还有看门电路,以防止系统在运行的时候,程序跑飞。以及通过看门狗电路里面的电压比较,来监视蓄电池的电压是不是过低,如果电压过低系统自动为蓄电池充电。图2-1系统总体设计框图2.3 基于AT89C51智能电源系统硬件设计详细分析2.3.1 蓄电池充电电路的设计 图2-2为蓄电池充电电路,该电路具有防止过充的功能,充电电压是220V、50Hz的市电。蓄电池输出电压为12V,功率在20W时可连续工作5小时。本电路包括下面几个电路。(1)降压整流电路:由变压器T、整流二极管D11、D12组成。(2)Q11可控硅触发电路:由电阻R11、二极管D14、可控

10、硅Q11组成。(3)大电充电电路:整流电路及可控硅Q11(4)小电流充电电路:由整流电路、二极管D13、电阻R12、电位器R13组成。(5)大电流切断电路:由电阻R11、R17可控硅Q12、稳压管D15、电位器R15以及电阻R14等组成。图2-2 蓄电池充电电路本电路防止过充电的原理是:当Q11被触发导通后即对蓄电池进行大电流充电。当充电电压升高到规定的上限值时,由于预先调节R15使电位器R15的滑动点与地之间的电压等于稳压管D15的稳压值与可控硅触发电压之和,所以这时可控硅Q12被触发导通。Q12导通后,Q11触发电路受蓄电池电压反向偏置而关断。此后,电源通过D13、R12、R13对蓄电池进

11、行小电流充电。调节R13使电流限制在允许范围内。2.3.2 三组不同电源输出设计 本次课程设计需要系统具有三组电压输出:一组是12V的电源输出;一组是3V、4.5V、6V、9V的电源输出;一组是1.5V-12V的连续可调电源输出。图2-3为12V的电源输出的电路,该电路中输入的电压是经过稳压以后的12V,后面是一个三级管开关电路,当P1.2输出为低的时候,经过反相器在三级管的基极产生一个高电压是三级管导通,导通后在23F的线圈里面就有电流,产生磁性,是开关K1导通,在Vout端输出12V电压。 图2-3 12V的电源输出图2-4为3V、4.5V、6V、9V的电源输出,该电路的输入和上面的是一样

12、的,不同的是后面的3V、4.5V、6V、9V是有一块LM317可调的稳压的芯片实现的。LM317是常见的可调集成稳压器,最大输出电流为2.2A,输出电压范围为1.2537V。1,2脚之间为1.25V电压基准。为保证稳压器的输出性能,R31应小于240欧姆。改变1脚与地之间的阻值即可调整稳压电压值。D32,D33用于保护LM317。CD4066是一种双向模拟开关,在集成电路内有4个独立的能控制数字及模拟信号传送的模拟开关。每个开关有一个输人端和一个输出端,它们可以互换使用,还有一个选通端(又称为控制端),当选通端为高电平时,开关导通;当选通端为低电平时,开关截止。使用时选通端是不允许悬空的。本次

13、设计中我使用了四个CD4066,每个CD4066的输入端接地,输出端接LM317的1脚,控制端接单片机的P1.4、P1.5、P1.6、P1.7的引脚。通过单片机输出相应的信号,就可以控制输出相应的电压大小。后面的三级管开关电路和前面的相同,区别是这里是用的单片机的P1.1引脚控制的。 图2-4 3V、4.5V、6V、9V的电源输出图2-5为1.5V-12V的连续可调电源输出电路,该电路的原理是和前面一样的,所不同的这里使用的电阻是连续可变的,所以输出的电压也是连续可调的。 图2-5为1.5V-12V的连续可调电源输出2.3.3 系统稳压电源设计 本次设计基于AT89C51智能电源系统中使用到了

14、+12V和+5V的电源,电源设计的原理图如图2-6,输入有蓄电池提供12V的直流电源。电路中使用到的两个芯片是7812和7805,7812是12伏的稳压芯片,7805是5伏的稳压芯片,这种芯片的好处是应用比较的简单,只需要接上几个电容就可以使用了。而且如果前段如果电源有轻微的波动几乎对后面的输出没有影响,这种芯片具有自己调节功能。图2-6 稳压电源电路2.3.4 AD0809模数转换电路设计 图2-7中ADC0809是一个8位模拟数字转换器件,其中IN0IN7一共8个输入通道,但每次只能用其中的一个,通道的选择由ADD_A、ADD_B、 ADD_C三根地址信号控制,本次设计我选用IN_0和IN

15、_1,通道的选择可以通过ADD_A的高低电平来区分。2_12_8是8位输出,接入单片机的AT89C51的P0.0P0.7引脚,其中的2_8是低位应接P0.0,2_1是高位应接P0.7。引脚10是时钟输入端,时钟的频率为640KHz1280KHz。引脚6、22是开始采样端,高电平有效,引脚9是使能端。AD0809只能对电压信号进行模数转换,而且输入的电压在05V之间的,如果输入的电流信号,必须进行信号转换成电压信号,如果输入的电压信号大于5V,可以通过分压电路进行分压。 图2-7 AD0809模数转换电路图中的IN_0输入的是电压信号,其中R72和R73组成了分压电路。IN_1输入的是电流信号,

16、该电流信号通过R71转变成电压信号。ref(-)接地,ref(+)接5V电压。2.3.5 AT89C51基本工作电路设计 本设计的核心是单片机电路,考虑到我需要两个中断输入,存储容量、外部接口对单片机端口的需要以及兼顾到节约成本的原则,我选用了常用的AT89C51单片机。AT89C51是低功耗、高性能、经济的8位CMOS微处理器,工作频率为024MHz,内置4K字节可编程只读闪存,128x8位的内部RAM,32位可编程IO总线。它采用Atmel公司的非易储器制造技术,与MCS51的指令设置和芯片引脚可兼容。AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存

17、储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。图2-8 T89C51基本工作电路AT89C51工作的最简单的电路是其外围接一个晶振和一个复位电路,给单片机接上电源和地,单片机就可以工作了。图2-8片机最简单的工作电路。2.3.6 74LS161分频器设计模拟数字转换器件A/D0809要正常工作,必须要有一个时钟频率,在89C51的第30引脚ALE是单片机输入时钟频率的1/6,也就是2M(因为单片机的时钟是12M的晶振),而A/D0809需要一个500K800K的时钟,所以只需要对ALE引脚的输出信号进行3分频,我用的分频器是74LS161计数器如图2-9进行分频。图2

18、-9 74LS161分频3分频电路2.3.7 看门狗电路设计应用系统受到干扰后,都要进行复位,而一般RC电路往往不能保证系统的安全可靠工作,因此便出现了看门狗。看门狗就是监控定时器的简称,它的用来检测微处理器是否工作正常,如果工作不正常,程序跑飞或者死机,看门狗电路的输入端没有被及时触发,那么看门狗就会产生一个复位脉冲,能有效地使系统复位以使系统恢复正常运转。“看门狗”技术软件和硬件技术均可实现,本设计采用硬件设计,如图2-10所示。图2-10 看门狗电路所谓硬件狗,就是一个能发出“复位”信号的计数器或定时器电路,MAX813L芯片就是这么一种芯片。该芯片具有监控电路,如图 所示。其工作原理是

19、:单片机P17作为看门狗的“喂狗”信号定时给出一脉冲,当程序正常运行时,单片机每隔t输出一脉冲给WDI触发MAX813L电路,使RESET始终为低电平;若单片机程序一旦出现异常,不能在1.6s内送出一“喂狗”脉冲,MAX813L的RESET将产生一正脉冲到单片机的RESET口,使单片机系统复位,使其能重新正常运行。2.3.8 显示模块设计和3-8译码电路设计本次课程设计显示是采用7个八段数共阴码管,第一个数码管显示的标志位,显示当前输出的电压是什么状态。总共有六种状态,分别是:1表示当前输出的12V,2表示当前输出的3V,3表示当前输出的4.5V,4表示当前输出的6V,5表示当前输出的9V,6

20、表示当前输出的1.5V-12V的连续可调电压。后面的三个数码管显示的输出的电压的大小,前两个是电压的整数部分,后一个是电压的小数部分。最后的三个数码管显示的当前输出的电流大小,前一个是电流的整数部分,后两位显示是电流的小数部分。没有数码管都有8根数据线和一根公共线,公共线接正,表示数码管为共阳,公共线接地,表示数码管为共阴,每一根线对应一根发光二极管。图2-11为显示电路和3-8译码电路:图2-11 显示电路和3-8译码电路图中通过单片机的P0端口向数码管送显示的数据,通过P2.5 P2.6、P2.7三根地址线经过3-8译码器选择显示的位置。其中最后一个Y7可以作为P0端口送数据到数码管还是从

21、AD0809读取数据的选择信号。2.3.9 辅助电路设计辅助电路虽然比较简单,但却是每个系统中必不可少的部分。有些时候,系统的稳定性就取决于这些看似不起眼的辅助电路上。图2-12为晶振电路,为单片机工作的必须的部件。图2-12 晶振电路图2-13为逻辑电路图,经过逻辑变化,实现单片机控制AD0809正常工作。图2-13 逻辑电路图2-14为电源滤波电路,可以有效的防止信号的相互干扰,可以是器件更稳定的工作。图2-14 电源滤波电路2.4 基于AT89C51智能电源系统电路合成 经过前面的各个部分电路的详细介绍后,下面就需要把这些分散的电路有效的合成一个完整的电路来实现我需要的功能。电路的合成不

22、是简单的把这些电路堆在一起,需要考虑他们之间的资源分配,主次,先后等关系。综合考虑多方面的因素,得到实现预期功能的电路图,如图2-15:图2-15实现预期功能的电路图第3节 基于AT89C51智能电源系统软件设计3.1 软件设计软件设计是一个创造性的过程,对一些设计者来说需要一定的资质,而最后设计通常都是由一些初步设计演变而来的。从书本上学不会设计,只能经过实践,通过对实际系统的研究和实践才能学会。对于高效的软件工程,良好的设计是关键,一个设计得好的软件系统应该是可直接实现和易于维护、易懂和可靠的。设计得不好的系统,尽管可以工作,但很可能维护起来费用昂贵、测试困难和不可靠,因此,设计阶段是软件

23、开发过程中最重要的阶段。 直到最近,软件设计在很大程度上仍是一个特定过程。一般用自然语言给定一个需求集,预先作非正式设计,常常用流程图的形式说明,接着开始编码,当系统实现时设计还需修改。当实现阶段完成后,设计往往已与起初形式相去甚远以至于设计的原始文档完全不适合对系统的描述。3.2 软件设计任务软件设计主要是针对硬件设计里面的控制部分的,这里指AT89C51单片机,一般的单片机均可用汇编语言和C语言进行编程。C语言直观,相对比较的简单,但占用的程序存储器的内存比较大,汇编语言是针对硬件设计的语言,如果想用汇编语言设计的话必须要对硬件有很大的了解,相对C语言就比较的复杂,但是比较的精简,占用的程

24、序存储器的空间比较的小。作为还在学生阶段的我,用汇编语言进行编程对我理解单片机的内部结构、资源都有很好的帮助,因此本论文的程序都是基于汇编语言的。要完成的任务是:初始化程序设计、按键程序设计、充放电控制程序设计、A/D转换程序设计、过流保护程序设计、显示程序设计。3.3 软件设计的步骤大型的软件设计是一个庞大的系统工程,需要前期的市场调查、需求分析,还需要各个行业的支持。本次课程设计的程序是一个很简单的过程,所以步骤也相对应的简单了许多。第一步:分析整个系统可以由几个子系统组成,并考虑几个子系统之间的内在的关系。第二步:编写各个子系统的程序,最后组合在一起,得到整个系统。第三步:编译,查错,改

25、错(包括语法错误、逻辑错误)第四步:把编译,看是否得到我需要的结果,如果得不到结果就回到第三步,直到最后得到我想要的结果。3.4 软件设计的工具本次课程设计所选用Keil C51中的编译/连接器软件Keil uVision2作为编译器/连接工具,使用万利公司Medwin软件作为集成开发环境。Medwin是万利电子有限公司的软件,Medwin是一个具有Microsoft Visual Studio窗口风格的集成开发环境。支持带语法分析的彩色文本显示、源程序断点设置记忆、实时程序计数器、PC显示、仿真器断电自动重载、自适应连接仿真器等功能,并且支持全空间程序代码和数据空间的模拟仿真、Trace B

26、uffer跟踪器。3.5 软件设计流程流程图是一种传统的算法表示法,它利用几何图形的框来代表各种不同性质的操作,用流程线来指示算法的执行方向。由于它简单直观,所以应用广泛,特别是在早期语言阶段,只有通过流程图才能简明地表述算法,流程图成为程序员们交流的重要手段。本次课程设计在软件设计方面的难度不是很大,主要是对一些电路的控制。由于控制信号比较的多,AT89C51单片机的引脚已经不能满足需要了,我采用AD0809和数码管显示端口复用的技术,这就需要我在编写程序的时候需要特别小心这些信号之间的关系。除此之外,程序设计中还设计了两个中断程序,一个是AD0809模数转换中断,一个是电压过低自动充电中断

27、,这个两个中断的设计也是相对比较难的。由于电压、电流出现小数部分,而单片机处理小数相对比较的困难,我通过对电压乘以10和对电流乘以100的处理方法,然后在数码管的相应的地方通过硬件点亮小数点的方法解决小数问题,实际证明了这样的方法大大简化了整个的程序设计。图3-1为整个系统程序设计的流程图。单片机初始化关闭所有电源输出扫描键盘是否有按键是否是按键2从AD0809读取电流大小是否是按键3是否是按键4是否是按键5判断电流超过2A从AD0809读取电压大小送数据到LED数码显示管输出1.512V可调电压显示功能的选择3V/4.5V/6V/9V的电源输出12V的电源输出关闭电源输出是否是按键1NYNN

28、NNYYYYNYNY图3-1程序设计流程图3.6 编写程序有了前面的对整个系统的分析后画出的流程图,下面的工作就是根据流程图编写程序。编写程序是一个相当复杂的过程,要求编程人员具有很强逻辑思维,而且要在对整个系统工作原理相当熟悉的基础上面才能完成任务。在编写程序的时候要养成作注释的习惯,这样既利于自己以后的修改,又利于以后程序的维护。尤其是使用汇编语言编写程序的时候更是要注释,因为汇编语言是一门比较低级的语言,跟我的高级语言不同,汇编语言比较的烦琐。根据上面的流程图,编写程序如下: ORG 0000H LJMP MAIN ORG 0003H LJMP INTT0 ORG 0013H LJMP

29、INTT1 ORG 0100H INT0FLAG EQU 20H ;中断0到来标注位 IRETFLAG EQU 21H ;过流保护复位标注位 DISFLAG EQU 22H ;显示功能的选择标注位 VOITFLAG EQU 23H ;3V、4.5V、6V、9V的输出的选择标志位 VFLAG EQU 24H V12VFLAG EQU 25H ;12V电压输出标注位 CONTFLAG EQU 26H ;连续电压输出标注位 VOUT EQU 30H ;电压A/D转换输入 IOUT EQU 31H ;电流A/D转换输入 0 EQU 32H ;电压的小数部分 V1 EQU 33H ;电压的整数部分的个位

30、 I0 EQU 35H ;电流的小数部分的第二位 I1 EQU 36H ;电流的小数部分的第一位 I2 EQU 37H ;电流的整数部分;*键盘扫描程序*KEYSCAN: SETB P2.0 CLR C MOV C,P2.0 JC KEYJUMP1 SETB IRETFLAGKEYJUMP1: SETB P2.1 CLR C MOV C,P2.1 JC KEYJUMP2KEYJUMP2: SETB P2.2 ;3V、4.5V、6V、9V的输出按键 CLR C MOV C,P2.2 JC KEYJUMP3 CLR P3.0 ;打开总电源输出开关 CLR V12VFLAG CLR CONTFLAG

31、 SETB VFLAG DJNZ VOITFLAG,KEYJUMP3 MOV VOITFLAG,#03HKEYJUMP3: SETB P2.3 ;12V电压输出按键 CLR C MOV C,P2.3 JC KEYJUMP4 CLR P3.0 ;打开总电源输出开关 CLR CONTFLAG CLR VFLAG SETB V12VFLAGKEYJUMP4: SETB P2.4 ;连续电压输出按键 CLR C MOV C,P2.4 JC KEYJUMP5 CLR P3.0 ;打开总电源输出开关 CLR VFLAG CLR V12VFLAG SETB CONTFLAGKEYJUMP5: RET;*电压

32、输出程序*VOUTPUT: JNB V12VFLAG,VTJUMP1 MOV DISFLAG,#01H SETB P1.1 SETB P1.3 CLR P1.2 RETVTJUMP1: JNB VFLAG,VTJUMP2 SETB P1.2 SETB P1.3 CLR P1.1 MOV A,VOITFLAG CJNE A,#00H,VTJUMP11 MOV DISFLAG,#02H ;3V电压输出 SETB P1.5 SETB P1.6 SETB P1.7 CLR P1.4 RETVTJUMP11: MOV A,VOITFLAG CJNE A,#01H,VTJUMP12 MOV DISFLAG

33、,#03H ;4.5V电压输出 SETB P1.4 SETB P1.6 SETB P1.7 CLR P1.5 RETVTJUMP12: MOV A,VOITFLAG CJNE A,#02H,VTJUMP13 MOV DISFLAG,#04H ;6V电压输出 SETB P1.4 SETB P1.5 SETB P1.7 CLR P1.6 RETVTJUMP13: MOV A,VOITFLAG CJNE A,#03H,VTJUMP14 MOV DISFLAG,#05H ;9V电压输出 SETB P1.4 SETB P1.5 SETB P1.6 CLR P1.7VTJUMP14: RETVTJUMP2

34、: MOV DISFLAG,#06H ;1.5V-12V的连续可调电压输出 SETB P1.1 SETB P1.2 CLR P1.3 RET;*电压、电流A/D转换中断服务子程序*INTT0: PUSH ACC PUSH PSW SETB P2.5 SETB P2.6 SETB P2.7 CLR P3.4 ;复位ADC SETB INT0FLAG ;中断到,标志位置1 CLR P3.5 ;允许读AD0809 JB P3.6,INT0JUMP1 MOV VOUT,P0 ;存放电压的数据 LJMP INT0JUMP2INT0JUMP1: MOV IOUT,P0 ;存放电流的数据INT0JUMP2:

35、 SETB P3.5 ;禁止读信号 CLR EX0 POP PSW POP ACC RETI;*电压过低充电程序*INTT1: PUSH ACC PUSH PSW SETB P1.0 POP PSW POP ACC RETI;*电流处理程序*IDEAL: CLR C MOV A,IOUT SUBB A,#0C8H JNC IDEALJUMP CLR IRETFLAG ;清楚过流保护的标注位 SETB P3.0 ;关所有的电源输出 LCALL KEYSCAN JNB IRETFLAG,$ LJMP MAIN ;过流保护IDEALJUMP: MOV B,#64H MOV A,IOUT DIV AB

36、 MOV I2,A ;得到电流的整数部分 MOV R1,B MOV B,#0AH MOV A,R1 DIV AB MOV I1,A ;得到电流的小数部分的第一位 MOV I0,B ;得到电流的小数部分的第二位 RET;*电压处理程序*VDEAL: MOV B,#05H MOV A,VOUT DIV AB MOV R2,A MOV B,#03H MOV A,R2 MUL AB MOV VOUT,B MOV B,#64H MOV A,VOUT DIV AB MOV V2,A ;得到电压的整数部分的十位 MOV R3,B MOV B,#0AH MOV A,R3 DIV AB MOV V1,A ;得到

37、整数部分的个位 MOV V0,B ;得到小数部分 RET;*显示程序设计*DISPLAY: MOV DPTR,#TAB CLR P2.5 CLR P2.6 CLR P2.7 MOV A,I0 MOVC A, A+DPTR MOV P0,A LCALL DELAY ;显示电流的小数部分的第二位 CLR P2.5 CLR P2.6 SETB P2.7 MOV A,I1 MOVC A, A+DPTR MOV P0,A LCALL DELAY ;显示电流的小数部分的第一位 CLR P2.5 SETB P2.6 CLR P2.7 MOV A,I2 MOVC A, A+DPTR MOV P0,A LCALL DELAY ;显示电流的整数部分 CLR P2.5 SETB P2.6 SETB P2.7 MOV A,V0 MOVC A, A+DPTR MOV P0,A LCALL DELAY ;显示电压的小数部分 SETB P2.5 CLR P2.6 CLR P2.7 MOV A,V1 MOVC A, A+DPTR MOV P0,A LCALL DELAY ;显示电压的整数部分的个位

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号