智能充电器毕业论文_第1页
智能充电器毕业论文_第2页
智能充电器毕业论文_第3页
智能充电器毕业论文_第4页
智能充电器毕业论文_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、47智能充电器毕业论文题 目: 智能充电器 学生姓名: 邱咪咪 学生学号: 0908030227 系 (院): 电气信息工程学院 专 业: 电子信息工程 届 别: 2013届 指导教师: 张大雷 完成时间: 2013年5月 目录摘 要(3)关键词(3)Abstract(3)Key words(4)前言(4)绪论(4)1.1 课题研究的背景(4)1.1.1 课题研究的意义(5)1.2 课题研究的主要工作(6)2充电技术(6)2.1 2种电池的充电特性(6)2.1.1镍氢/镍镉电池充电模式(6)2.1.2 锂离子电池的特点及充电方式(6)2.2 智能充电器(7)2.3 设计的功能模块(8)2.3.

2、1 单片机模块(8)2.3.2充电过程控制模块(8)2.3.3充电电压提供模块(9)2.3.4 光耦模块(9)2.3.5 电压测试模块(10)3 设计方案充电过程(11)3.1 预充(11)3.2 快充(11)3.3 满充(11)3.4 断电(11)3.5 报警(12)4 锂离子电池充电器硬件设计(12)4.1 单片机电路(12)4.1.1 AT89S52(13)4.2 充电部分(15)4.4 光耦控制部分(18)5 锂离子电池充电器软件设计(19)5.1 程序功能(19)5.2 程序流程图(19)5.3 程序代码及说明(21)附录(46)致谢(47)参考文献(48)智能充电器的设计学生:邱咪

3、咪指导教师:张大雷淮南师范学院 电气信息工程学院摘 要:随着移动电话用户数量的不断增长,相应的电池和电池充电器需求也将会有较大的增加。电子技术的快速发展使得人们对高性能、小尺寸、重量轻的智能电池充电器的需求也越来越大。目前,使用较多的是镍镉电池(Nicd)、镍氢电池(NiMH)和锂离子电池。由于不同类型电池的充电特性不同,通常对不同类型,甚至不同容量等级和电压的电池使用不同充电器,实际使用中会带来诸多不便。于是设计一种以AT89S52单片机为核心的智能充电器,较好地解决了上述电池的充电问题。在设计上,选择了简洁、高效的系统硬件,包括单片机电路、充电控制电路、电压转换及光耦隔离电路。实践证明,设

4、计的充电器功耗低、成本低、系统工作稳定可靠,智能化程度高,具有推广价值。 关键词:智能充电器;AT89S52单片机;硬件构成Intelligent Battery ChargerStudent:Qiu MimiTeacher:Zhang DaleiElectronics and communication engineering department of Huainan normal universityAbstract: In the growth number of mobile phone users, there will be a larger increase of the co

5、rresponding battery and battery charger requirements. The rapid development of electronic technology makes the high performance, small size, light weight of the intelligent battery charger requirements more and more big. At present, the nickel cadmium (Nicd), nickel metal hydride batteries (NiMH) ba

6、tteries and li-ion batteries are widely used. Because the different types of battery charging characteristic are different, usually to different types, even different capacity level and the voltage of the battery charger, but this has many inconveniences in practical use. So I design a AT89S52 singl

7、e-chip microcomputer as the core of intelligent charger, in order to solve the problem of the battery charge. In design, I chose the hardware which is simple and efficient system, including charging circuit, control circuit, voltage conversion and optical coupling isolation circui. Practice proves t

8、hat the design of the charger is low power consumption, low cost, the system work stable,reliable and high intelligent degree.It is a promoted value design method.Key words:intelligent battery charger;AT89S52 single-chip microcomputer;hardware structure前言现在社会信息化的不断加快,人们对自己使用的各种家电设备、仪表以及工业生产中的数据采集与控制

9、设备要求很高。尤其随着手机在世界范围内的普及,手机电池充电器的使用越来越广泛的时候人们对高性能、小尺寸、重量轻的智能电池充电器的需求也越来越大,所以智能充电器有它的巨大发展空间。所谓智能充电器是单片机参与处理和控制的充电器,能根据用户的需要自主选择充电方式,并且在充电过程中能对被充电电池进行保护从而防止过电压、电流和温度过高的一种智能化充电器。该智能充电器具有检测锂离子电池的状态;自动切换充电模式以满足充电电池的充电需要;充电器短路保护功能;充电状态显示的功能。在生活中更好的维护了充电电池,延长了它的使用寿命。因此,研究智能充电器的设计及推广其应用,有着非常现实的意义。·单片机模块:

10、实现充电器的智能化控制,比如自动断电、充电完成报警提示等。 ·充电过程控制模块:采用专用的电池充电芯片实现对充电过程的控制。 ·充电电压提供模块:采用电压转换芯片将外部+12V电压转换为需要的+5V电压。该电压在送给充电控制模块之前还需经过一个光耦模块。·C52程序:单片机控制电池充电芯片实现充电过程的自动化,并根据充电的状态给出有关的输出指示。 本论文从锂离子电池技术特性、充电技术、充电器电路结构、充电器典型电路和电池保护等方面,多角度地阐述了充电技术发展和应用的智能化。绪论1.1 课题研究的背景社会信息化进程的加快对电力、信息系统的安全稳定运行提出了

11、更高的要求。而各种用电设备都离不开可靠的电源,如果在工作中间电源中断,人们的生产和生活都将受到不可估量的经济损失。对于由交流供电的用电设备,为了避免出现上述不利情况,所以要设计一种电源系统,它能不间断地为人们的生产和生活提供以安全和操作为目的可靠的备用电源。为此,以安全和操作为目的的备用电源设备上都使用可充电池。电池是一种化学电源,是通过能量转换而获得电能的器件。二次电池是可多次反复使用的电池,它又称为可充电池或蓄电池。二次电池的工作原理:当对二次电池充电时,电能转变为化学能,实现向负荷供电,伴随吸热过程。普通充电器多采用大电流的快速充电法,在电池充满后如果不及时结束会使电池发烫,过度的充电也

12、会严重损害电池的寿命。一些低成本的充电器采用电压比较法,为了防止过充,一般充电到90%就停止大电流快充,接着采用小电流涓流补充充电,这样就使充电时间加长了。好的充电器不但能在短时间内将电量充足,而且对锂电池起到一定维护作用,修复由于记忆造成的记忆效应。于是设计出的智能充电器是采用单片机控制的,可以检测出电池充电饱和时发出的电压变化信号,比较精确的停止充电工作,通过单片机对充电芯片的控制实现充电过程的智能化,以缩短充电时间,延长电池使用寿命。智能充电器还增加了充电电压的显示,让我们能看到电池的预充、快充、满充充电阶段,从而加强对电池的维护。1.1.1 课题研究的意义此课题研究的对象主要是锂离子电

13、池的充电原理和充电控制。锂离子电池的充电设备需要解决的问题有:·通过单片机的控制,简化外围电路的复杂性,增加自动化管理设置,减轻充电过程的劳动强度和劳动时间,从而使充电器具有更大的灵活性、更高的可靠性和成本低。·改善充电控制不合理而造成过充、欠充等问题,提高电池的使用性能和使用寿命。·可以进行充电前处理,包括电池充电状态的鉴定和预处理。·需解决充电时间长、效率低等问题。研究课题的意义:·掌握锂离子电池的充放电方式和特点,从中找到最佳充电方式及电池管理途径。·完善充电设备的适时处理功能和自诊断功能。·实现充电器具备强大的功能扩

14、展性,为智能充电器的功能升级提供平台。1.2 课题研究的主要工作本课题主要研究锂离子电池的充放电方法,在此基础上进行硬件设计和软件设计,并通过调试结果对充电控制方法测试验证。为了完成智能充电器的设计,我需做如下工作:·了解锂离子电池的特点和在应用中存在的主要问题从而分析实现电池的充放电方法和智能充电器的实现方法,从而选择合适的充电电池芯片。·进行硬件电路的设计,绘制充电电路原理图。·进行软件设计,以C语言为开发工具,进行详细设计和编写程序代码。·调试硬件和软件电路,验证整个设计。2充电技术2.1 2种电池的充电特性2.1.1镍氢/镍镉电池充电模式这2种镍

15、类电池具有相似的充电特性曲线,因而可以用一样的充电算法。这2种电池的主要充电控制参数为-V和温度对镍氢镍镉电池由预充电到标准充电转换的判据为:单节电池电压水平0.61V;电池温度-50oC电池饱和充电的判据为:电池电压跌落或接近零增长 V= 615 mV节;电池最高温度max50;电池温度上升率d/dt 1.0min。由于温度的变化容易受环境影响,因而实际用于判别充电各阶段的变量主要为V、max,其中对V的检测需要有足够的AD分辨率和较高的电流稳定度-V的测量与A/D分辨率、充电电流的稳定性与电池内阻之间有以下关系:当电池内阻等于50(接近饱和充电)时,充电电流=1200mA,电流漂移等于5%

16、,单节电池的最高充电电压为1.58V,则此时电流漂移可能引起的电池电压变化为3 mV。 2.1.2 锂离子电池的特点及充电方式锂离子电池的正极材料通常由锂的活性化合物组成,常见的正极材料主要成分为LiCo02,负极则是特殊分子结构的碳。充电时,加在电池两级的电势迫使正极化合物释出锂离子,嵌入在负极分子排列呈片层结构的碳中。放电时,锂离子则从片层结构的碳中析出,重新与正极的化合物结合。于是锂离子的移动产生了电流。重量方面:锂离子电池为3.6V,锂离子电池的电压是镍氢、镍镉电池的3倍。但锂离子电池因端电压为3.6V,在输出同电池的情况下,单个电池组合时数目可减少2/3从而使成型后的电池组重量和体积

17、都减小。自放电率:镍镉电池为15%30%,镍氢电池为25%35%,锂离子电池为2%5%。镍氢电池的自放电率最大,而锂离子电池的自放电率最小。记忆效率:锂离子电池很少有镍镉电池的记忆效应,记忆效应的原理是结晶化,但在锂电池中几乎不会出现这种反应。锂离子电池在几次充电放电后容量仍然会下降,主要的原因从分子层里来看,正负极材料本身的变化,正负极上容纳锂离子的空穴结构会逐渐塌陷,堵塞;从化学角度来看,是正负极材料活性钝化,出现副反应生成稳定的其他化合物。在物理上还会出现正极材料逐渐剥落等情况,降低了电池中可以自由在充放电过程中移动的锂离子数目。记忆效应一般认为是长期不正确的充电导致的,它可以使电池早衰

18、,使电池无法进行有效的充电,出现一充就满、一放就完的现象。严格遵循“充足放光”的原则,即在充电前最好将电池内残余的电量放光,充电时要一次充足,可防止电池出现记忆效应。对于由于记忆效应而引起容量下降的电池,可以通过一次充足再一次性放光的方法反复数次,大部分电池都可以得到修复。充电方式:过度充电和过度放电,将对锂离子电池的正负极造成永久的损坏,从分子层面看,过度放电导致负极碳过度释放出锂离子而使得其片层结构出现塌陷,过度充电将把太多的锂离子硬塞进负极碳结构里去,而使得其中一些锂离子再也无法释放出来。这就是锂离子电池为什么通常配有充放电的控制电路的原因。锂离子电池以恒流转恒压方式进行充电。采用1C充

19、电速率充电至4.1V时,充电器应立即转入恒压充电,充电电流逐渐减小;当电池充足电后,进入涓流充电过程。为避免过充电或过放电,锂离子电池不仅在内部设有安全机构,充电器也必须采取安全保护措施,以监测锂离子电池的充放电状态。2.2 智能充电器在人们日常工作和生活中,充电器的使用越来越广泛。从随身听到数码相机,从手机到笔记本电脑,几乎所有用到电池的电器设备都需要用到充电器。充电器为人们的外出旅行和出差办公提供了极大的方便。随着手机在世界范围内的普及使用,手机电池充电器的使用也越来越广泛。所谓智能充电器是单片机参与处理和控制,能根据用户的需要自主选择充电方式,并且在充电过程中能对被充电电池进行保护从而防

20、止过电压、电流和温度过高的一种智能化充电器。本课题将通过一个典型实例介绍AT89S52单片机在实现手机电池充电器方面的应用。此次设计所要实现的充电器是一种智能充电器,它在单片机的控制下,具有预充、充电保护、自动断电、电压显示和充电完成报警提示功能。2.3 设计的功能模块2.3.1 单片机模块智能的实现需要利用单片机控制,经过分析后单片机芯片可以选择Atmel公司的AT89S52,通过中断控制光耦器件通电和断电。2.3.2充电过程控制模块锂离子电池一般都具有管理芯片和充电控制芯片。其中管理芯片中有一系列的寄存器,用来存储电容容量、温度、ID、充电状态、放电次数等数值。这些数值在使用中会逐渐变化。

21、充电控制芯片主要控制电池的充电过程。锂离子电池的充电过程分为两个阶段,恒流快充阶段(电池指示灯呈黄色时)和恒压电流递减阶段(电池指示灯呈绿色闪烁)。恒流快充阶段,电池电压逐步升高到电池的标准电压,随后在控制芯片下转入恒压阶段,电压不再升高以确保不会过充现象,电流则随着电池电量的上升逐步减弱到0,而最终完成充电。电量统计芯片通过记录放电曲线(电压、电流、时间)可以抽样计算出电池的电量。而锂离子电池在多次使用后,放电曲线是会改变的,如果芯片一直没有机会再次读出完整的一个放电曲线,其计算出来的电量也就是不准确的。所以我们需要深充放来校准电池的芯片。定时电容C和充电时间Tchg的关系式满足:C=34.

22、33×Tchg 最大充电电流Imax和限流电阻Rset的关系式满足:Imax1400/Rset 2.3.3充电电压提供模块由于一般家用电压是+220V交流电压,需要设计一个电压转换电路将+220V交流电压转换成+5V直流电压。首先用变压器将220V交流电压转换成7V交流电压,经过桥式整流变成直流电压,再利用电压转换芯片LM7805将7V直流电转换为5V直流电压。2.3.4 光耦模块为了在充满电后能及时关断充电电源,则需要引入一个光耦模块芯片6N137。6N137光耦合器是一款用于单通道的高速光耦合器,其内部由一个850 nm波长AlGaAs LED和一个集成检测器组成,其检测器由一个

23、光敏二极管、高增益线性运放及一个肖特基钳位的集电极开路的三极管组成。具有温度、电流和电压补偿功能,高的输入输出隔离,LSTTL/TTL兼容,高速(典型为10MBd),5mA的极小输入电流。工作参数:·最大输入电流,低电平:250uA ·最大输入电流,高电平:15mA·最大允许低电平电压(输出高):0.8v ·最大允许高电平电压:Vcc ·最大电源电压、输出:5.5V ·扇出(TTL负载):8个(最多) ·工作温度范围:-40°C to +85°C ·典型应用:高速数字开关,马达控制系统和A/D转

24、换等 6N137光耦合器的内部结构、管脚如下图所示图1 6N137光耦合器6N137光耦合器的电源管脚旁应有个0.1uF的去耦电容。在选择电容类型时,应尽量选择高频特性好的电容器,如陶瓷电容或钽电容,并且尽量靠近6N137光耦合器的电源管脚;另外,输入使能管脚在芯片内部已有上拉电阻,无需再外接上拉电阻。6N137光耦合器的引脚:第6脚Vo输出电路属于集电极开路电路,必须上拉一个电阻;第2脚和第3脚之间是一个LED,必须串接一个限流电阻。6N137光耦合器的真值表如下:6N137光耦合器的真值输入“+”ENOUTPUT输入“+”ENOUTPUT1100010111NC01010NC1表1 6N1

25、37光耦合器的真值2.3.5 电压测试模块该部分采用AD转换来实现充电电压的现实。采用中断触发,基本原理是将一段时间内的输入模拟电压 Ui 和参考电压UR 通过两次积分,变换成与输入电压平均值成正比的时间间隔,再变换成正比于输入模拟信号的数字量。把模拟信号转换成数字信号,转换原理为:其中,n为准换后的二进制位数,dn-1d0为具体二进制位。UR为参考电压,UA为显示电压。3 设计方案充电过程3.1 预充在安装好电池之后,接通输入直流电源,当充电其检测到电池时将定时器复位,从而进入预充过程,在此期间充电器以快充电流的10给电池充电,使电压、温度恢复到正常状体,预充电时间由外接电容C9确定,如果在

26、预充时间内电池电压达到2.5V,且电池温度正常,则进入快充过程;如果超过预充时间后,电池电压低于2.5V,则认为电池不可充电,充电器显示电池故障,由单片机发出故障指令,LED指示灯闪烁。3.2 快充快充就是以恒定电流对电池充电,恒流充电时,电池的电压缓慢上升,一旦电池电压达到所设定的终止电压时,恒流充电终止,充电电流快速递减,充电进入满充过程。3.3 满充在满充过程中,充电电流逐渐递减,直到充电速率降到设置值以下,或满充超时时,转入顶端截止充电,顶端截止充电时,充电器以极小的充电电流为电池补充能量,由于充电器在检测电池电压是否达到终止电压时有充电电流通过电池电阻,尽管在满充和顶端截至充电过程中

27、充电电流逐渐下降,减小了电池内阻和其它串联电阻对电池端电压的影响,但串联在充电回路中的电阻形成的压降仍然对电池终止电压的检测有影响,一般情况下,满充和顶端截止充电可以延长电池510的使用时间。3.4 断电当电池充满后,MAX1898芯片的2脚/CHG发送的脉冲电平会由低变高,这将会被单片机检测到,引起单片机的中断,在中断中,如果判断出充电完毕,则单片机将通过P2.O口控制光耦切断L7805向MAX1898供电,从而保证芯片和电池的安全,同时也减小功耗。3.5 报警当电池充满后,MAX1898芯片的2引脚/CHG发送。LED灯会闪烁。但是,为了安全起见,单片机在检测到充满状态的脉冲后,不仅会自动

28、切断MAX1898芯片的供电,而且会通过蜂鸣器报警,提醒用户及时取出电池。4 锂离子电池充电器硬件设计4.1 单片机电路单片机控制设计,电路如下图:图2 单片机控制电路电路说明如下:·P3.1脚控制发出报警声提示。·P3.0脚输出控制光耦器件,在需要的时候可以及时关断充电电源。·外部中断0由充电芯片MAX1898的充电状态输出信号经过反向后触发。4.1.1 AT89S52图3 AT89S52AT89S52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用

29、ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89S52单片机在电子行业中有着广泛的应用。主要功能特性:·兼容MCS51指令系统·8kB可反复擦写(大于1000次)Flash ROM·32个双向I/O口·256x8bit内部RAM·3个16位可编程定时/计数器中断·时钟频率0-24MHz·2个串行中断,可编程UART串行通道·2个外部中断源,共8个中断源·2个读写中断口线,3级加密位·低功耗空闲和掉电模式,软件设置睡

30、眠和唤醒功能·有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时

31、,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管

32、脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S52的一些特殊功能口,如下表2所示:管脚备选功能P3.0/RXD(串行输入口)P3.1/ TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)表2 P3口P3口同时为闪烁编程和编程校验接收一些控制信

33、号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。EA/VPP:当EA

34、保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。4.2 充电部分该部分为设计的主核心部分,电路图如下:图4 智能充电器的主核心电路4.3充电电压转换,实现电路

35、模块如下:图6 充电电压转换电路首先用变压器将220V交流电压转换成7V交流电,经过桥式整流变成直流电,再利用电压转换芯片LM7805将7V直流电压转换为5V直流电压。4.4 光耦控制部分,实现电路如下:图7 6N137光耦控制电路充电电压显示,该部分其实就是一个AD转换,原理图如下:图8 5 锂离子电池充电器软件设计5.1 程序功能单片机AT89S2052和LM7805的智能电池充电器的程序需要完成以下的功能:·通过CHG信号引起INT0外中断。·在两次中断中使用T0计数,判断是否充电完毕。·如果充电完毕,则控制P1.2和P1.3引脚,输出低电平。5.2 程序流

36、程图智能充电器的程序流程图简介:外部中断0设为边沿触发;中断第一个下降沿T0开始计数第二次下降沿停止T0计数读取T0计数器中断返回图9 等待外部信号输入图10 外部中断程序关闭T0中断和外部中断充电出错t _count +关闭T0计数t _count >600?定时器0服务子程序int 0_count=1?充电完毕,蜂鸣器报警,切断电源返回YesNoNoYes启动T0计数,同时进行A/D转换,显示电压图11 定时程序5.3 程序代码及说明#include <reg52.h>#include <lcd12864.h>/lcd12864相关控制#include <

37、;DS18B20.h>#include <math.h> sbit CTRL_UP=P20;sbit CTRL_DOWN=P21;sbit ADCOE=P26;sbit ADCSTART=P27;sbit ADCALE=P25;sbit ADCA=P24;sbit ADCB=P23;sbit POWERKK=P14;#define ADCDATE P0sbit KEY1=P37;sbit KEY2=P35;sbit KEY3=P36;void InitSys();/初始化系统void InitInt();/初始化外部中断void InitTimer();/初始化定时

38、器,串口中断void SendSerialData();/启动并发送一组串口数据void StartADC();/选择通道n,开始转换void ShowAllTime();/显示完整的时间unsigned char g_myPar15,g_CurSend;/g_t10,g_t11,g_t20,g_t21,g_t30,g_t31,g_n,g_U0,g_U1p,g_U1f,g_U2,g_U3,g_Th,g_Tm,g_Ts;参数顺序bit bSerialSending;unsigned char g_time6;unsigned char g_CurIn;unsigned char code g_a

39、dda=0,1,1,0,1;unsigned char code g_addb=1,0,0,0,1;unsigned char code g_ctrlu=1,1,1,0,0;unsigned char code g_ctrld=0,1,0,1,1;unsigned char g_tt10,g_tt11,g_tt20,g_tt21,g_tt30,g_tt31;unsigned char CutState;bit CurTR0,Curctrlu,Curctrld;float SqrtDuty;unsigned char g_Percent;void main()/DelayMs(10);/Dela

40、y4us(10);InitSys();DelayMs(1200);InitLCD();InitLCDshow(0);InitInt();/初始化外部中断0InitTimer();/初始化定时器0,串口中断bSerialSending = 0;/     bLinking = 0;/WriteLCD(0,0x80);/DspNumber(123);StartADC();while(1)if(KEY1=0)/充电TR1 = 0;CutState = 0;POWERKK = 1;InitLCDshow(0);TR0 = 1;g_myPar0=g_tt

41、10;g_myPar1=g_tt11;g_myPar2=g_tt20;g_myPar3=g_tt21;g_myPar4=g_tt10;g_myPar5=g_tt11;/SqrtDuty = sqrt(float)g_myPar1/(g_myPar0+g_myPar1);/Duty=g_myPar0*100/(g_myPar0+g_myPar1);TR1 = 1;StartADC();ShowAllTime();DelayMs(100);else if(KEY2=0)/放电TR1 = 0;CutState = 1;POWERKK = 1;InitLCDshow(1);TR0 = 0;g_CurI

42、n = 0;CTRL_UP = 1;CTRL_DOWN = 0;TR1 = 1;StartADC();ShowAllTime();DelayMs(100);else if(KEY3=0)/维护TR1 = 0;POWERKK = 0;CutState = 2;InitLCDshow(2);TR0 = 1;g_myPar0=0xff;g_myPar1=0xf0;g_myPar2=0xfe;g_myPar3=0x74;g_myPar4=0xff;g_myPar5=0xf2;/SqrtDuty = sqrt(float)g_myPar1/(g_myPar0+g_myPar1);/Duty=g_myPa

43、r0*100/(g_myPar0+g_myPar1);TR1 = 1;StartADC();ShowAllTime();DelayMs(100); /初始化系统void InitSys()unsigned char i;for(i=0;i<6;i+)g_timei =;ADCOE = 1;ADCALE = 0;ADCSTART = 0;POWERKK = 1;g_myPar0=0xff;/0x30g_myPar1=0x30;g_myPar2=0xff;g_myPar3=0x30;/0x30g_myPar4=0xff;g_myPar5=0x30;g_tt10 = 0xff;g_t

44、t11 = 0x30;g_tt20 = 0xff;g_tt21 = 0x30;/*g_myPar0 = 0x80;/g_TH1g_myPar1 = 0x00;/g_TH2g_myPar2 = 0x00;/g_TH3*/g_myPar6 = 6;SqrtDuty = sqrt(0.5);/Duty=g_myPar0*100/(g_myPar0+g_myPar1);/初始化外部中断void InitInt()IT0 = 1;/ 0/1 低电平/下跳变PX0 = 1;/ 中断优先级/EX0 = 1;/EA = 1;/初始化定时器,串口中断void InitTimer()TMOD

45、= 0x11;/ 使用高4位 0/1/2/3  13位/16位/8位自动重载/双8位TH0 = (65536 - 49235) / 256;TL0 = (65536 - 49235) % 256;PT0 = 1;TR0 = 1;/开启定时器0ET0 = 1;TH1 = (65536 - 49235) / 256;TL1 = (65536 - 49235) % 256;TR1 = 1;/开启定时器1ET1 = 1; TCLK=1;RCLK=1;TH2=0xFF;  /19200bps  22.1184MHz

46、的时钟频率TL2=0xDC;RCAP2H=0xFF;  /方式1和方式3的波特率fosc/(32-(65535-(RCAP2H,RCAP2L)RCAP2L=0xDC;TR2=1;/ET2=1;SCON = 0x50;/串口方式1,允许接收PCON = 0x00;/关闭波特率加倍PS = 1;/设置串口中断为高优先级ES = 1;/开串口中断/TH1 = 0xfd;/串口通信使用定时器1,设定波特率9600/TH1 = 0xf3;/串口通信使用定时器1,设定波特率2400 EA = 1;/开始发送串口数据void SendSerialData()if(!bSeria

47、lSending)bSerialSending = 1;g_CurSend = 0;SBUF = g_myParg_CurSend;g_CurSend+; /开始ADC转换void StartADC()CurTR0 = TR0;TR0 = 0;g_CurIn=0;ADCA = g_addag_CurIn;ADCB = g_addbg_CurIn;CTRL_UP = g_ctrlug_CurIn;CTRL_DOWN = g_ctrldg_CurIn;Curctrlu = CTRL_UP;Curctrld = CTRL_DOWN;ADCALE = 1;ADCALE = 0;ADCSTAR

48、T = 1;ADCSTART = 0;EX0 = 1;/倒序转换unsigned char Reverse(unsigned char num)unsigned char i,rtTmp;rtTmp = 0x00;for(i=0; i<8; i+)rtTmp <<=1;rtTmp |= num & 0x01;num >>= 1;return rtTmp;/显示完整的时间void ShowAllTime()WriteLCD(0,0x98+4);WriteLCD(1,g_time0);/时WriteLCD(1,g_time1);WriteLCD(1,:);Wr

49、iteLCD(1,g_time2);/分WriteLCD(1,g_time3);WriteLCD(1,:);WriteLCD(1,g_time4);WriteLCD(1,g_time5); /外部中断0服务程序void Int0() interrupt 0g_myPar7+g_CurIn = ADCDATE;g_CurIn+;if(g_CurIn<5)ADCA = g_addag_CurIn;ADCB = g_addbg_CurIn;CTRL_UP = g_ctrlug_CurIn;CTRL_DOWN = g_ctrldg_CurIn;ADCALE = 1;ADCALE = 0

50、;ADCSTART = 1;ADCSTART = 0;elseTR0 = CurTR0;EX0 = 0;CTRL_UP = Curctrlu;CTRL_DOWN = Curctrld; /定时器0中断服务程序void Timer0() interrupt 1static unsigned char i;static bit j;if(j)j = 0;i+;if(i>g_myPar6)i = 0;CTRL_UP = 1;CTRL_DOWN = 0;TH0 = g_myPar4;TL0 = g_myPar5;elseCTRL_UP = 1;CTRL_DOWN = 1;TH0 = g

51、_myPar2;TL0 = g_myPar3;elsej = 1;CTRL_UP = 0;CTRL_DOWN = 1;TH0 = g_myPar0;TL0 = g_myPar1;/定时器1中断服务程序void Timer1() interrupt 3static unsigned char i,j;unsigned char temp_data2;unsigned char presence,k; TH1 = (65536 - 60730) / 256;TL1 = (65536 - 60730) % 256;i+;if(i>24)/时间显示i=0;g_time5+;g_myPa

52、r14+;if(g_time5 > 0x39)/秒个位g_time5 = 0x30;g_time4+;if(g_time4 > 0x35)/秒十位g_time4 = 0x30;g_time3+;g_myPar14 = 0;g_myPar13+;if(g_time3 > 0x39)/分个位g_time3 = 0x30;g_time2+;if(g_time2 > 0x35)/分十位g_time2 = 0x30;g_time1+;g_myPar13 = 0;g_myPar12+;if(g_time1 > 0x33)/时个位g_time1 = 0x30;g_time0+;

53、if(g_time0 > 0x39)/时十位g_time0 = 0x30;g_myPar12=0;/时十位/时个位WriteLCD(0,0x98+4);WriteLCD(1,g_time0);WriteLCD(1,g_time1);/分十位WriteLCD(0,0x98+5);WriteLCD(1,:);WriteLCD(1,g_time2);/分个位WriteLCD(0,0x98+6);WriteLCD(1,g_time3);/秒十位/秒个位WriteLCD(0,0x98+7);WriteLCD(1,g_time4);WriteLCD(1,g_time5); /显示充/放电状

54、态j+;switch(j)case 1:WriteLCD(0,0x98+2);WriteLCD(1, );WriteLCD(1, );WriteLCD(1, );StartADC();break;case 2:WriteLCD(0,0x98+2);WriteLCD(1,.);break;case 3:WriteLCD(0,0x98+2);WriteLCD(1,.);WriteLCD(1,.);break;case 4:WriteLCD(0,0x98+3);WriteLCD(1,.);j = 0;break;default:j = 0;presence = Init_DS18B20();if(presence=0)WriteOneChar(0xCC); /跳过ROM匹配操作Delay4us(10)

温馨提示

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

评论

0/150

提交评论