基于单片机的智能手机充电器的设计.doc

上传人:laozhun 文档编号:4148636 上传时间:2023-04-07 格式:DOC 页数:36 大小:294KB
返回 下载 相关 举报
基于单片机的智能手机充电器的设计.doc_第1页
第1页 / 共36页
基于单片机的智能手机充电器的设计.doc_第2页
第2页 / 共36页
基于单片机的智能手机充电器的设计.doc_第3页
第3页 / 共36页
基于单片机的智能手机充电器的设计.doc_第4页
第4页 / 共36页
基于单片机的智能手机充电器的设计.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《基于单片机的智能手机充电器的设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的智能手机充电器的设计.doc(36页珍藏版)》请在三一办公上搜索。

1、密 级 公 开 学 号200940513014衡水学院毕业设计基于单片机的智能手机充电器的设计论文作者:吴向东指导教师:郭海丽系别:物理与电子信息系专业电子信息工程年级:2009级提交日期:2013年5月20日答辩日期:2013年5月30日毕业论文(设计)学术承诺本人郑重承诺:所呈交的毕业论文是本人在导师指导下进行的研究工作及取得的研究成果。除了文中特别加以标注和致谢的地方外,论文中不存在抄袭情况,论文中不包含其他人已经发表的研究成果,也不包含他人或其他教学机构取得的研究成果。作者签名: 日 期: 毕业论文(设计)使用授权的说明本人了解并遵守衡水学院有关保留、使用毕业论文的规定。即:学校有权保

2、留或向有关部门送交毕业论文的原件或复印件,允许论文被查阅和借阅;学校可以公开论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文及相关资料。作者签名: 指导教师签名: 日 期: 日 期: 论文题目:基于单片机的智能充电器的设计摘 要:随着手机逐渐走入人们的生活,手机充电器的重要性愈显突出。与此同时,对手机充电器的要求便越来越高,一般的手机充电器已经无法满足人们的需求。本设计针对这种情况提出了一种以MAX1898为充电芯片,运用STC89C51单片机芯片对其进行控制的智能充电器的设计。本设计包含单片机电路、充电电路、光耦隔离电路及电压转换电路几部分。程序方面运用C语言来设计,完成了预充

3、电、快速充电、慢速充电、智能报警等一系列充电过程。本设计不仅做到了充电的智能化,还对电池的寿命起到了保护作用。关键词:单片机;智能充电器;充电技术Title:The Design of Intelligent Charger Based on MCUAbstract: With the development of mobile phone gradually into peoples lives, the more prominent the importance of mobile phone charger. At the same time, the mobile phone char

4、ger requests more and more, and mobile phone charger generally has been unable to meet the needs of people. The design for this kind of situation is proposed based on MAX1898 design of intelligent charger charging chip, using STC89C51 single chip to control it. The design contains a microcontroller

5、circuit, a charging circuit, a optocoupler isolation circuit and a voltage conversion circuit. In the procedural aspect, we use the C language for the design, completing the charging process of pre-charge, fast charge, trickle charge and intelligent alarm. This design not only does the intelligent c

6、harging, but also plays a protective role in the battery life.Keywords: MCU; Intelligent Battery Charger; Charging Technology目 录摘 要IAbstractII1 绪论11.1 课题的背景11.2 课题研究的意义11.3 课题研究的内容12 系统方案的整体设计32.1 系统总体设计32.2 相关模块概述33 系统的设计与实现53.1 硬件系统的设计与实现53.1.1 最小系统63.1.2 系统电源模块的设计73.1.3 充电管理芯片的选择83.1.4 电源模块的设计93.

7、2 软件系统的设计与实现103.2.1 主程序的设计113.2.2 定时器中断服务程序的设计123.2.3 外部中断服务程序144 仿真与调试164.1 Proteus仿真164.1.1 Proteus设计与仿真的开发过程164.1.2 Proteus运行过程164.1.3 智能充电器仿真164.2 系统调试及其结论18结 语19参考文献20致 谢211 绪论1.1 课题的背景在社会的不断进步中,信息技术以惊人的速度扩散到我们身边的每一个角落,而手机的普及便是其中的一个缩影。作为手机的一个核心组件,手机电池充电器性能的好坏,大大直接关系到手机的正常使用。现在的充电器,缺乏智能化,这将使得电池的

8、寿命变短,充电低效率和可维护性变低,这很突出的缺陷越来越不能够满足人们的需求。因此,新型智能充电器在科学研究领域中便成为一件紧迫的事情。在如今广阔的市场上,充电器的产品质量大多低于人们的标准要求。这些不太令人满意的存在大大影响了我们正常使用手机,同时还一定程度上缩短了电池寿命。如果出现意外,还会对我们造成不可预料的伤害。由于电池的个体离散性,即使两块型号工艺完全相同的电池,其最大容量和最佳充电方式也不尽相同。而国内现有的充电技术,很多都没有考虑到这个特点,大多数都采用恒流快速充电法以及电压比较法充电。而这两种充电方法都会在一定程度上对电池寿命造成损害。而单片机的出现,使得手机充电器的智能化有了

9、新的发展方向。1.2 课题研究的意义手机充电器是手机市场中不可或缺的一部分,而单片机在这方面的应用也是很实用的,因此提出了这个设计。本设计在其前景上有很好的开放性和可发挥性,对于增强我们对单片机的了解与认识,有很重要的现实意义,并切实解决了所需要解决的问题。此外,人们普遍要求充电器在电池寿命保护方面应予以加强,而本设计可以实现这个目标,所以本设计在实用性方面很有价值。1.3 课题研究的内容本设计的方案将实现单片机在充电器领域中的应用。本设计通过将STC89C51单片机作为主控核心,由MAX1898作为充电管理芯片,用7805来提供稳定电压,由6N137光耦合器实现所需的补偿和隔离功能,另外还增

10、加了通过灯的闪烁和蜂鸣器鸣叫来报警的功能。软件方面包括以下几方面:主要控制程序的设计,定时器中断程序的设计,外部服务中断程序的设计等几部分。本设计所实现的电池充电的智能化,能够大大的满足人们的需求,同时对电池寿命的保护也起到了十分重要的作用,而其造价低廉、电路简洁的特点更为其开阔出了一片广阔的市场平台。另外,再加上其很好的开放与扩展性,将使其在未来的市场中具有旺盛的生命力。 2 系统方案的整体设计2.1 系统总体设计本设计的总体设计框图具体情况如图2-1所示。本系统主要由单片机控制模块、充电控制模块、电压转换及光耦隔离模块等模块构成。图2-1 总体设计框图2.2 相关模块概述本设计主要由单片机

11、控制模块、充电控制模块、电压转换及光耦隔离模块等几部分组成,通过这几部分模块的组合实现了充电器控制的智能化。单片机控制模块:单片机采用STC89C51,该单片机是美国ATMEL公司生产的低电压、8位单片机。STC89C51单片机是目前最经济的单片机。该模块是用于实现智能控制的部分,例如可以实现断电的自动化。充电控制模块:选用充电芯片MAX1898,MAX1898是性价比相对比较高的线性充电芯片,其输入电压范围为4.5V12V;自动检测系统输入的电源;电压精度较高;充电时,可通过LED灯显示出充电状态;对输出进行相应的监测;具有可编程电流源检测。芯片不但可以对设定充电时间进行设定,还可以对总的输

12、入电流进行控制。这个模块对充电的管理与控制是相对非常专业的。电压转换及光耦隔离模块:采用电压转换芯片将外部的12V电压转换,然后需要通过光耦合器得到我们需要的5V电压。本设计对系统直接供电的电压为220V交流电,通过交流变压器能够把220V交流电转换为我们需要的12V交流电,这样便可以将电压变低,之后需要经过整流得到直流电,这便需要接一个桥式整流电路,然后接一个陶瓷电容以及一个电解电容,最后把滤波完的直流电接到7805上,从而得到系统需要的电源。综上所述,本设计的方案将实现单片机在充电器领域中的应用,主控芯片为STC89C51单片机,配以控制充电过程的模块,以及对电压进行转换和外部提示的电路来

13、组成硬件系统。主要解决在充电过程中对蓄电池的保护功能,如何提高充电效率,如何控制充电状态等问题。本设计在实际应用中具有很高的实用价值。3 系统的设计与实现3.1 硬件系统的设计与实现本设计的电路如下图3-1所示:图3-1 电路原理图3.1.1 最小系统一般情况下,直流电源、单片机、复位电路和时钟模块共同形成了我们所说的最小系统。就单片机而言,它相当于是与计算机相关的最基本的元件的集合体。以下是它所具有的独特特点:小体积、高集成和高可靠性;价格便宜,性能稳定,功能强大,性价比高;优于一般的8位微处理,控制功能较强,;单片机系统的配置灵活多变;单片机类型多,可根据实际需求做出选择。对于其中的复位电

14、路,本设计所使用的系统复位电路如图3-2:图3-2 本设计复位电路而对于其中的时钟模块,主要用于产生单片机工作时所必须的时钟控制信号。在该信号的指导下,单片机去进行相应的操作。时钟模块具体电路图如下图3-3:图3-3 系统时钟电路图最小系统是一个单片机系统能够正常工作的最基本的单位,其整个电路图如下图3-4:图3-4 最小系统3.1.2 系统电源模块的设计目前的电子市场领域里,79系列和78系列是我们较为常见的三段稳定电压集成电路。三端稳定电压集成电路是由用于输出的端口、接地的端口以及输入的端口这三个端口来进行工作的。由上述的两种系列元件形成的电路,外接元器件不会很复杂。而且还具有对电路的保护

15、功能,尤其是其独特的物美价廉的特点更尤为称赞。因为其应用的方便,故一般电子制作中经常会用到三端稳压集成电路。 在实际电路中,在其电路上应当安装够大的散热器。这样散热器便可以将稳压管的热量散掉,以防止因此而产生的不良后果。另外,散热片和接地脚总是相连的。在本设计中,其具体工作流程是将从变压器输出的220v交流电转换成12v交流电,然后将电流经过整流后,把电流输出给滤波,经过滤波的电流就可以接到7805上来进行后续的工作,该过程的相关电路图如图3-5所示:图3-5 系统电源模块电路图3.1.3 充电管理芯片的选择对输入电流进行调节的器件、用于定时的器件、用来检测充电电流的器件、用来检测温度的器件和

16、用于中心控制的器件共同形成了MAX1898。对总的输入电流进行控制的器件,便是之前所说的对输入电流进行调节的器件,充电过程的电流和流过负载的电流是其所包含的主要内容。如果阈值小于用于检测的电流,这时要控制输入的电流,便需减少充电用的电流。由于系统工作电流变化范围较大,因此需要对电流进行智能检测。MAX1898可以对锂电池的快速充电提供有效的保护,还可以提供提前充电,最后达到对电池充电的双保险保护的目的。MAXl898 具有的特性如下:可以运用相关造价低的进行调整的元件;安全简洁的线性充电方式;内置检流电阻;可编程充电电流;输入电压范围:4.5V12V;0.75电压精度;LED显示充电器充电的状

17、态;自动化的对系统电源进行监测;对输出进行监测;定时器具有安全性,还可以对其进行编程;独特而有效的封装;双选择的自行重新启动功能。为了降低电源的泄露,MAX1898对进行充电的电源进行智能的监测,同时还可以使得它自动关断。然后,开始快速充电,之后它达到被设置为电池电压的阈值,通过它检测到要输入的脉冲,从而缩短时间。充电完成后,LED将显示出周期性闪烁。其内涵如表3-1所示。表3-1 LED指示灯状态说明 充电的状态LED灯电池或充电器没有安装灭预充或快充亮充电结束灭充电出错以1.5Hz频率闪烁MAX1898相关电路图,如图3-6所示:图3-6 MAX1898电路图3.1.4 电源模块的设计用于

18、光和电转换,以光为传输通道的元件便是光电相互转换元件。它包含发光源和受光器两部分。这个元件是电源模块中最重要的组成部分。光和电相互转换元件,对信号的传输,有着重要的影响。与此同时,还可以削减各种不必要的干扰信号,从而达到我们想要的,相对理想的信号传输环境。这个结果是由如下内容所导致的:第一、光电耦合器的输入阻抗很小,而干扰源的阻抗较大。第二、光和电相互转换元件的输入到输出,没有任何直接的相关联的连接,这样会使得它们之间电阻非常大。所以,一些没有用处的干扰很难由此通过,这样便控制了干扰对此模块的影响。第三、光电耦合器可以起到非常好的安全保障作用,即使出现一些在我们电路中会造成毁灭性损坏的情况,仍

19、然不可能对仪表造成威胁。这是由于其两端间极高的抗压性,从而使得光和电转换器件起到应有的保护作用。第四、光和电相互转器件具有相当高的回应灵敏度,它的回应过程相当短,这使得它能应用于更多的有需求的场所。在本设计中,作为特殊保护电路的光电耦合器,使得整个电路性能更加稳定,如图3-7。电源中的电流流过2通道和STC89C51的电流流过3通道进入光电耦合器内部,通过内部的光敏原件控制,之后运用MAX1898来保障电路的安全运行,以达到所设计电路的可靠运行。图3-7 光电耦合器电路图3.2 软件系统的设计与实现软件设计是一个设计的内部核心,它的编写的好坏在一定程度上会直接系统运行情况的良好与否。下面将需要

20、设计的程序分成几部分,明确各部分的功能,和相互逻辑关系,从而最终确定本设计的程序。本设计的总的工作流程图如下图3-8:开始初始化While(1)外部中断0服务子程序int0_count为0?启动定时器0:t_count=0int0_count+返回noOo定时器0服务子程序关闭T0计数,重设计数初值t_count+t_count600?int0_count为1?充电完毕,蜂鸣器报警,切断充电电源关闭T0中断和外部中断0启动T0计数no返回yes充电出错no图3-8 基于单片机的智能充电器工作流程图3.2.1 主程序的设计首先,在把程序还原化的前面,我们应当做到把全部的系统清零,断开充电这个过程

21、,断开电源,让二极管熄灭。这样做是为了使定时和充电保持同步。然后,开始调用初始化程序,用其对STC89C51进行初始化。接着,便连接充电电源,让MAX1898开始充电,通过启动定时器开始定时。然后,便需进行一段时间的休息,等到该过程完结后,传到出相应的已经完成的信号,如果有差错时,则传达出发生错误的信号。主程序图如下图3-9:Time_out=1?Error=0?D3灭D3闪烁关闭T0、INT0中断切断Max1898电源初始化D3亮开 始YNYN图3-9 本设计主要程序流程图3.2.2 定时器中断服务程序的设计在设计中,为了达到切断电力,需要我们用定时来监测何时是安全的充电时间,这样便可以用完

22、成信号来控制是否充电完成,以保证安全。然而由于安全充电的时间过长,因而只依靠定时是显然不够的,所以需要多次的循环来解决这个问题。首先,我们先设置一个时间,之后嵌套一层循环,最后达到以分钟作为最小叠加单位,这样,我们可以省去许多麻烦。单片机需要的晶振是12MHZ的晶振,这样其最大计数值为65536。如此,我们要设置时间为35000时,则需处理的将是30536。这样便实现了比较简单的计数过程。另外,外部中断设置,我们将采用下降沿触发。定时器中断服务程序流程图如图3-10:T0中断 关闭T0定时重设定时器初值Time+Time=20?Error=1Error=0Time_out=1Second=0,

23、Minute+Time=0,Second+Second=60?Minute=190?Int0_count=1?RETINNNYYYYN图3-10 定时器中断服务流程图3.2.3 外部中断服务程序用来累计外部中断次数的是外部中断0服务子程序。此程序需把用于定时的部分初始化,当如果中断为60次,结果便是3s;如果中断为3600,则是3min。充电的这个过程中必须有一次外部中断,这次中断使得快速充电结束,电流下降到20%,当没有完成这个中断时,二极管D4将会以4HZ频率进行闪烁。而这个闪烁的频率控制也是由定时中断0控制的。其具体的流程图如图3-11所示:INT0中断RETIInt0_count+图3

24、-11 外部中断流程图4 仿真与调试4.1 Proteus仿真4.1.1 Proteus设计与仿真的开发过程Proteus是一个十分实用的软件,它对于我们的学习有很大的帮助。尤其是其仿真功能,尤为突出。这个过程方便而快捷,并且会先于实物检测数一些不必要的设计错误,有着不可替代的作用。其仿真过程如下:首先,在keil软件中编写我们需要的程序,然后生成我们最终的目标文件(*.hex);其次,使用Proteus设计出仿真电路图;最后,将我们之前生成的目标文件(*.hex)下载到我们设计的单片机系统中,从而达到我们想要的仿真效果。它可以有效地预先显示出单片机系统在现实中的工作状态。4.1.2 Prot

25、eus运行过程Proteus的界面比较人性化,学习起来十分方便,与我们以往所用的软件大致相似,我们只需进行一些必要的学习,便可以上手,具体的操作过程如下:当我们运行Proteus进入到软件界面后,在左侧工具栏中有一个P,点击P,在其对应窗口的左侧中打入我们所需的关键字,然后便可以找到我们需要的元件,随后在摆放完元件的同时,使得其相关参数及定位如我们所需,这样便可以进行最后一步,按我们所想连接需要连接的线。4.1.3 智能充电器仿真整个电路的仿真主要由单片机控制模块、充电控制模块、电压转换及光耦隔离模块等几部分组成,通过这几部分模块的组合实现了充电器控制的智能化。该智能充电器的功能主要包含:预充

26、功能;充电保护功能;断电智能化;当充电过程结束时,发出明显的报警的功能。预充:在电池安装时,连接到输入直流电源,定时器复位。当充电器检测到电池,单片机变高输入,从而进入预充电过程。在这个过程中,为了使得电池电压进入标准状态,对电池将用大电流进行充电。这个过程的充电时间是由电容来设置的,当电压为2.5V时,与此同时,电池没有出现过热,电池会进入下一个充电状态;在这个充电过程中,电池电压仍不够2.5V的非充电电池,此充电器会认为电池出现问题,LED将开始呈现忽明忽灭的状态。快充:在这种情况下,电池充电器开始恒流充电。恒流充电时,电池电压缓慢上升。如果我们的电池达到所设定的结束电压阈值,不变电流将会

27、很短时间内减少,充电到下一个充电过程。慢充:在此充电过程中,充电率慢慢低于设定值,或者延缓这个过程而超过此过程的时间,将会转换到截止充电。顶端截止充电时,以最小的电流补充电池的能量,电流将会流过电池内部的电阻,从而便实现检测电压是否达到阈值的功能。慢充充电过程中,电流逐渐下降,减少电池端电压受到另外电阻的影响,然而其对结束电压的监管产生的波及却不会消失。在正常情况下,完全充电和顶端截止充电可以延长电池的使用时间50%10%。断电:当电池完全充电,充电芯片第二脚发送脉冲从低到高,这将送给单片机检测,它造成了单片机的中断,中断处理时,如果确定所述充电完成后,该单片机将对光和电转换器件产生影响,切断

28、了稳压集成电路为充电芯片提供的电流,从而为电池提供了保障,又降低了功耗。同样,当非充电电池由于短路或开路而产生错误时,将由微控制器充电控制器停止充电,显示电池故障。报警:当电池完全充电,充电芯片本身将会关闭外部LED绿色灯光。出于安全起见,当出现充电达到阈值和电池出现问题时,将会产生一个脉冲,发现这个脉冲之后,将会非常智能的断掉充电芯片的电力,还会由蜂鸣器进行发声警示,以便我们可以及时切断电池充电。当我们对电池充电时,出现非正常情况,充电芯片将通过绿色灯光忽明忽灭来警示用户,这个时候要保持芯片工作正常。本设计仿真电路的具体情况如下图4-1所示:图4-1 单片机智能充电仿真电路4.2 系统调试及

29、其结论由于本设计是由多个模块组成的,首先,必须对各模块调试,使得各个模块都能正常工作;其次,最主要的是把各个模块最终调试组合到一块。这样才能达到我们想要的目的。首先,电池充电器充电时,当它发现电池接入的时候,将会把定时器重置,计数器将会打开,进行相应的计数。如果提前充电时间已经过去,但电池的电压却不高于2.5V,这样LED便会开始忽明忽灭,来告知用户电池出现问题。如果电池充满电,单片机将接收到由充电芯片释放的单增脉冲,这样单片机会发生中断。在确定休息时,充电完成后,终端P2.0削减掉稳压集成电路给予充电芯片的电力,同时蜂鸣器将开始报警。如果上述相关的功能都能实现,则表明程序没有错误,否则就需要

30、根据错误修改对应有错误的程序。结论:经过反复测试和分析,我更进一步掌握了单片机的知识,同时也增强了我的逻辑思维能力。伴随着这个过程,我对相关软件也变得越来越熟悉,这有利于我日后的学习与工作。最重要的是,我可以将所学的知识运用到实践中去,这有着重大意义。结 语本次设计将单片机融入到充电器的领域中,这使得充电器越来越符合人们的需求标准。在如今的市场领域中,由于电池的多元化,因此要事实就是,具体电池具体分析,用其对应的充电芯片来控制该电池的充电。此设计实现的是锂离子电池充电器,因此选用了芯片MAXl898作为充电芯片。在设计过程中,需要重点掌握:预充电,快速充电,完全充电的充电方法;充电状态指示输出

31、信号的设计;充电芯片相关电路的建立,融合了建立相关电阻、充电时间的选择和如何确定充电完成或者单片机程序的错误,并做相应的处理。C51语言设计单片机应用程序时,首当其冲的要运用各种各样的模块化的设计方法,从而使整个应用程序结构清晰,方便我们来进行调试以及维护。参考文献1 胡健.单片机原理及接口技术M.北京:机械工业出版社,2005.2 李生明,杨红.PROTUES软件在学习单片机中的应用J.清远职业技术学院学报,2010,3(06):40-46.3 郑学坚,周斌.微型计算机原理及应用M.北京:清华大学出版社,2001.4 谢自美.电子线路设计实验测试M.第二版.武汉:华中科技大学出版社,2006

32、.5 蔡美琴,张为民.MCS-51系列单片机系统及其应用设计M.北京:高等教育出版社,2002.6 阎石.数字电子技术基础M.第五版.北京:高等教育出版社,2006.7 谢自美.电子线路设计实验测试M.第二版.武汉:华中科技大学出版社,2006.8 樊清海,刘培培,耿娟平.基于单片机的数字时钟C语言设计J.北华航天工业学院学报,2010,20(06):4-6.9 邵贝贝.单片机认识与实践M.北京:北京航空航天大学出版社,2006.10 扬吉祥,詹宏英,梅芍春.电子测量技术基础M.南京:东南大学出版社,1997. 11 邹显圣.基于AT89C51单片机数字时钟的研究J.机电产品开发与创新,200

33、9,22(05):60-61.12 T. C. Weigandt, B. Kim,and P. R.Gray.Analysis of Timing Jitter in CMOS Ring Oscillators. IEEE International Symposium on Circuits and Systems.1994.13 王法能.单片机原理及应用M北京:科学出版社,200414 李华.MCS51系列单片机实用接口技术M北京:北京航空航天大学出版社,199315 王庆.Protel 99 SE & DXP电路设计教程M北京:电子工业出版社,2008致 谢首先,要感谢我的导师郭海丽老师

34、。本设计是在郭老师的无微不至的指导下一步步完成的,郭老师丰富的专业知识,一丝不苟的工作态度,严谨认真的教学态度,坚持不懈、勇往直前的人格魅力对我产生了深远的影响。这不但让我树立了远大的科研目标,学会了更多的专业知识,更让我明白了许多做人的道理。本设计从开始到结束,每一步都有着郭老师的悉心指导,倾注了郭老师的大量心血。谨在此向郭老师表达我最崇高的敬意和由衷的感谢!然后,我要感谢的我的父母,感谢他们的养育之恩,你们身体健康,天天开心是我最大的心愿。我还要感谢好多人,感谢同学们,感谢朋友们,感谢一切帮助过我的人们。本设计的完成离不开你们的悉心关怀和帮助,在此表示深深的感谢,没有你们的支持和帮助是无法

35、完成我的论文的。四年的大学生活,转眼即逝,但它在我的人生旅途中却是最有意义的一段岁月。我的自学能力在这里得到了前所未有的提升,我的人格在在这里得到了升华。感谢所有的老师,是你们给予了我大学四年最有意义的收获,不但将我领入知识的神圣殿堂,还给我开阔了眼界,让我明白世界有多的大,更让我感受到了生活的美好。我会以更饱满的热情投入到以后的学习和生活中,不辜负所有支持我的人!附录软件设计主函数:#idefine uchar unsigned char#defined uint unsigned intsbit GATE =P20;sbit BP =p21;/* 定时器0中断服务子程序 */void ti

36、mer0() interrupt 1 using 1TR0 = 0;/ 停止计数TH0 = -5000/256;/ 重设计数初值TL0 = -5000%256;t_count+;if (t_count600)/ 第一次外部中断0产生后3sif (int0_count=1)/ 还没有出现第二次外部中断0,则认为充电完毕GATE = 0;/ 关闭充电电源BP = 0;/ 打开蜂鸣器报警 else/ 否则即是充电出错GATE = 1;BP = 1;ET0 = 0; / 关闭T0中断EX0 = 0; / 关闭外部中断0int0_count = 0;t_count = 0;elseTR0 = 1;/ 启

37、动T0计数/* 外部中断0服务子程序 */void int0() interrupt 0 using 1if (int0_count=0)TH0 = -5000/256;/ 5ms定时TL0 = -5000%256;TR0 = 1;/ 启动定时/计数器0计数t_count = 0;/ 产生定时器0中断的计数器清零int0_count+;/* 初始化 */void init()EA = 1;/ 打开CPU中断PT0 = 1;/ T0中断设为高优先级TMOD = 0x01;/ 模式1,T0为16位定时/计数器ET0 = 1;/ 打开T0中断IT0 = 1;/ 外部中断0设为边沿触发EX0 = 1;

38、/ 打开外部中断0GATE = 1; / 光耦正常输出电压BP = 1;/ 关闭蜂鸣器int0_count = 0;/ 产生外部中断0的计数器清零void main()/* 调用初始化函数 */init();/* 无限循环 */while(1);主程序编写如下:void main() EN_OK=0; /禁止MAX1898充电 BP=1; /D3灯关闭 GATE=0; /输入电压不接入,MAX1898不工作 C51_init(); /初始化程序 GATE=1; /接入输入电压5V EN_OK=1; /MAX1898使能 TR0=1; /定时开始 while(!time_out); /等待安全充

39、电时间到 do if(error=0) BP=0; /充电完成D3灯一直亮GATE=0; EA=0; else BP=BP ; /充电出故障D3灯闪烁GATE=0; EA=0; while(1);定时中断服务程序如下:void time0 (void) interrupt 1 using 1 TL0=0xB0; TH0=0x3C; / 重置初值 time+; / 定时中断次数累计 if(time=20) time=0; / 1s到 中断次数清零 second+; / 秒累计 else goto end ; if(second=60) second=0; /1min到 秒清零 minute+; /分累计 else goto end ; if(minute=190) minute=0; /安全充电时间到,分清零 time_out=1; /标志位置一 else goto end ; if(int0_count=1) error=0; else error=1;end :;外部中断服务程序如下:void charging (void) interrupt 0 using 0 int0_count+; /外部中断次数累计

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号