这样,当电池g电压不足时,rp3滑动端即时基电路2脚电平小于v5/2(这里的v5指时基电路5脚的电平,即vs的稳压值3v)时,时基电路a置位,3脚输出高电平经 rp1、vd5向g充电,同时vl发光指示。这样,当电池g电压不足时,rp3滑动端即时基电路2脚电平小于v5/2(这里的v5指时基电路5脚的电平,即vs的稳压值3v)时,时基电路a置位,3脚输出高电平经rp1、vd5向g充电,同时vl发光指示。由于电容c3两端电压不能突变,刚通电时,a2的2脚为低电平,a2被触发置位,3脚输出高电平,此高电平经电位器rp、二极管vd5向电池g充电,改变rp值可以调节充电电流的大校此时a2的7脚被悬空,vl发光指示电路在充电。
当充满电时候单片机读取该引脚的电平,相应控制蜂鸣器工作。报警电路设计1602液晶电路的应用液晶电路的设计是为了实现充电时间的记录,当充电开启时,启动DS1302计时,1302将记下的数据发送给单片机,然后由单片机控制液晶,将数据传送给液晶屏并显示出来。液晶显示屏引脚的分布如下。液晶显示电路DS18B20温度传感器的应用温度传感器具有如下特性:一、适应范围宽;二、独特的单线接口方式;三、温度范围大且精确度比较高,测量的结果直接是以数字温度传送给单片机。所以采用该温度传感器,通过对手机温度变化的测量,将测量的数值传送给单片机,单片机经过数据的处理将温度数值在显示屏上面显示,同时设定温度上限值,当手机由于充电发热过快单片机控制蜂鸣器工作实现报警功能。温度检测装置DS18B20软件电路设计软件开发环境Keil uVision 软件Keil uVision 软件,该软件来自于美国Keil Software公司。Keil提供了C语言、汇编、连接器、库和系统的仿真软件。Keil uVision是一款集成开发环境,它支持各大操作系统,比如win xp、win 7等等。使用该软件时,将编写并运行好的程序通过数据线将程序下载到芯片从而单片机按照设定程序运行。
C语言C语言是一门程序设计语言,机器语言。它的发展历史悠久,由于它就有强大的适应性,所以得到了很大人的青睐,比如它使用在科研中、软件开发上都是适用的。它可以用于很多的操作系统DOS、UNIX和很多的其他机型。C语言比普通的高级语言更强大,使用方便简洁所以大量采用。Protel99SE画图软件在本此的设计中主要的画图软件是Protel99SE,它是由澳大利亚Protel Technology公司推出的一款绘制电路板软件,它具有便于操作、易学、高集成性等优点成为大家喜爱的制图软件。它分为两个部分,第一是原理图的制作,在该部分当中,我们可以画出自己需要的电路图,比如89C51单片机,并且可以将画成的原件很好的封装。另一部分是带有仿真模块,这部分可以将设计进行模拟仿真为实物搭建做好准备。软件设计流程根据如上的器件介绍可知,基于单片机控制的智能充电器在系统中单片机主要控制着蜂鸣器的工作,当电池充满电时候,MAX1898的/CHG引脚由低电平跳变成高电平使得单片机的中断系统打开,单片机P2.0口变为低电平三极管导通蜂鸣器响但该引脚的跳变有两种情况,一、电池或手机充满电;二、手机充电出现错误,发生错误时该引脚以1.5HZ的频率反复跳变,所以为了区别出是充电错误还是充电完毕,必须设置单片在一定时间内是否有二次跳变,蜂鸣器将反复报警。
当手机正常充电时充电指示灯亮,充满以后充满的指示灯(红色)亮。这样就可以实现智能控制的整个过程。下面是整个工作程序流程图。热的 的我程序地方 放大 放大放大调试软件调试在本次的设计中,程序的编写采用的是C语言,因为C编写的程序相对较为简单。在将程序和硬件结合之前通过keil软件进行仿真检查程序的对错。由于采用的是STC89C51单片机,所以下载程序的方式较为简单,直接通过通信串口就可以下载。硬件调试本设计的主要硬件是MAX1898和单片机,这样减少了很多的电路,在调试时采用先调试充电模块再调试报警模块,先检查每个是否可以正常工作然后在组合,这样的调试可以很好的检查出错误保证快速的调整硬件。出现的问题及解决办法在设计时开始采用的AT89S51单片机,在实验当中单片机的损坏,之后采用的是STC89C51,由于对单片机了解的不是恨透侧,所以采用相同的下载方式,但是程序无法烧录进单片机,通过查找资料请教老师,明白STC89C51的程序直接可以通过串口下载,这样的方法相当的简便。在硬件调试时,由于在电池反接时候没有通过反向二极管的限流,所以在实验时将MAX1898芯片损坏,之后采用接上二极管解决该问题。

反接时损坏结论此次的毕业设计为智能充电器,经过不断的努力改进最终还是圆满的完成该毕业设计,本次的设计很好的实现智能充电器的功能,它的作用是能够进行阶段性充电很好的管理着充电过程,充电的过程具体分为三个阶段:一、预充阶段,该阶段充电时芯片检查充电电池电压是否在值域范围内(2.5V),如果小于该值域则进行预充电阶段;二、快速充电阶段,也称为恒流充电阶段,在该阶段里,充电器以最大电流给电池进行充电:三、第三阶段是恒压充电阶段。该阶段的特点是电压不变充电电流不断的减小,直到电池的电压达到饱和。该充电器不仅可以实现阶段性充电同时具有检测电池是否损坏,电池接反等功能。在本次的设计当中开始查阅很多的文献综述,对本次的实验进行了文献总数的撰写总结。在此的设计当中让我学会了很多。首先我学会该如何统筹计划设计任务,在开学之初制定好设计方案,每一步按照设计要求很好的进行;其次锻炼了我个人的学习和动手能力。在本次的毕业设计当中,运用的软件知识不断的查阅资料、咨询同学和视屏学习,虽然开始学习的时候有点吃力,但是慢慢地操作软件的使用越来越熟悉最后很好的完成软件设计部分。在动手能力上也是如此,电路的搭建和测试是最大的难题,由于电路的焊接时不仔细的损坏、硬件问题等情况的发生使得实验失败很多次,经过最后的努力电路的设计和测试还是成功。
在此设计中也存在些不足:第一、在开始的时候由于自己对课题设计理解不是很清楚,导致课题设计出现很多困难,开始设计自己考虑转换220V交流电压,这样使得设计跑偏同时设计也将更加的复杂。第二、画图软件的使用不是很熟练,以前学习的知识遗忘的较多,所以自学的画图软件画的电路图不是很规范。在本次实验的设计当中,与原有的设计相比增加了手机直接充电的接口,这样更加的实用性,这也是本次设计的突出点。虽然马上面临毕业这是一个设计课题,但我还是会去增加更多的功能,慢慢的完善该实验设计,同时也会克服此前的不足,在以后的而工作当中自己表现的更加出色,所以说此次的设计是对自己的一个提升,最后在老师的指导和同学的帮助之下还是比较圆满的完成此次的设计,在此真诚感谢老师指导和同学的帮助。谢辞本论文是在导师赵波的细致指导下完成的。老师渊博的学术知识、严谨的学术态度和细心的工作态度无时无刻不在感动着我,他以最高标准要求着我们,在设计开始的时候导师就将我们的任务梳理为我们制定相应的计划书。他不仅在学术和工作中给予我们指导与鼓励,同时也在精神上给与我们教育与鞭策,当我们在找工作上心灰意冷的时候赵老师就会分享他的故事鼓励着我们要勇往直前。
平时的设计过程与论文修改过程中老师为我们提出详细而具体富有启迪性的意见和建议,使我在整个论文创作过程中受益匪浅,谨向导师表示崇高的敬意和衷心的祝福!再次感谢赵波老师在设计过程和论文编写中的给予我的指导和建议,以及他对本文的认真检查和修改,正是由于他的严谨和帮助,才使我在论文和设计的完成过程中精益求精,不断地完善。在赵老师的指导下,我不仅对单片机的软件编程有了更灵活的运用,也对各个硬件设施有了深刻的了解,大大提高了使用该软件进行设计的能力,并且学会如何快速掌握芯片的技能,是一笔宝贵的财富。感谢我的同学和朋友,在他们的意见和建议下,激发了我进行毕业设计的动力,并不断完善毕业设计的各项功能,最后,谨向所有关心、支持和帮助我的老师、同学朋友以及家人致以衷心的谢意和祝福!参考文献李光飞等. 单片机课程设计实践指导.北京:北京航空航天大学出版社,2004李子葛,MCS-51单片机综合系统及其设计开发.北京:科学出版社 2001张洪润, 单片机应用技术教程.北京:高等教育出版社,2002.王磊, 锂电池充电器芯片的研究与设计.厦门大学,2007.彭颖, 一种锂离子电池充电器芯片的研究与设计,2005.洪基明,数字电路与模拟电路应用.上海:上海大学出版社2006李子葛,MCS-51单片机综合系统及其设计开发.北京:科学出版社 2001.高晓红等,基于单片机控制的智能充电器设计,西南石油大学,2011.刘美俊,基于单片机的通用智能充电器设计,湖南工程学院,2006.齐小龙,基于STC89C51单片机的智能充电器的设计,陈东学院,2016附录A附录B#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define nop() _nop_()sbit DQ =P2^2; //定义DS18B20通信端口sbit lcd_rs_port = P3^5; /*定义LCD控制端口*/sbit lcd_rw_port = P3^6;sbit lcd_en_port = P3^4;#define lcd_data_port P0///////////////////////////////////////sbit dula=P2^6;//数码管的段选信号sbit wela=P2^7; //数码管的位选信号void delay1 (void)//关闭数码管延时程序{int k;for (k=0; k<1000; k++);}//////////////////////////////////////sbit T_CLK = P2^4; /*实时时钟时钟线引脚 */sbit T_IO = P2^5; /*实时时钟数据线引脚 */sbit T_RST = P1^0; /*实时时钟复位线引脚 */sbit ACC0 = ACC^0;sbit ACC7 = ACC^7;uchar code mun_to_char[] = {"0123456789ABCDEF"}; /*定义数字跟ASCII码的关系*/uchar data time_data_buff[7]={0x00,0x00,0x00,0x30,0x04,0x07,0x17};/*格式为: 秒 分 时 日 月 星期 年 */uchar data lcd1602_line1[]={" 2000/00/00 000 "};uchar data lcd1602_line2[]={" 00:00:00 00.0"};//uchar code Weeks[][3]={{"SUN"},{"MON"},{"TUE"},{"WED"},{"THU"},{"FRI"},{"SAT"},{"SUN"}};/******************************************************************** 功 能:实时时钟写入一字节 说 明:往DS1302写入1Byte数据 (内部函数)***********************************************************************/void RTInputByte(uchar d) {uchar i;ACC = d;for(i=8; i>0; i--){T_IO = ACC0;/* RRC */T_CLK = 1;T_CLK = 0;ACC = ACC >> 1;} }/******************************************************************** 功 能:实时时钟读取一字节 说 明:从DS1302读取1Byte数据 (内部函数)***********************************************************************/uchar RTOutputByte(void) {uchar i;for(i=8; i>0; i--){ACC = ACC >>1;/*相当于汇编中的 RRC */ACC7 = T_IO;T_CLK = 1;T_CLK = 0;}return(ACC); }/******************************************************************** 功 能:往DS1302写入数据 说 明:先写地址,后写命令/数据 (内部函数) 调 用:RTInputByte() , RTOutputByte()***********************************************************************/void W1302(uchar ucAddr, uchar ucDa){T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr);/* 地址,命令 */RTInputByte(ucDa);/* 写1Byte数据*/T_CLK = 1;T_RST = 0;} /******************************************************************** 功 能:读取DS1302某地址的数据 说 明:先写地址,后读命令/数据 (内部函数) 调 用:RTInputByte() , RTOutputByte()***********************/uchar R1302(uchar ucAddr){uchar ucData;T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr);/* 地址,命令 */ucData = RTOutputByte();/* 读1Byte数据 */T_CLK = 1;T_RST = 0;return(ucData);}/******************************************************************** 功 能:设置初始时间 说 明:先写地址,后读命令/数据(寄存器多字节方式) 调 用:W1302() 入口参数:pClock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年7Byte (BCD码)1B 1B 1B 1B 1B 1B 1B***********************************************************************/void Set1302(uchar *pClock) {uchar i;uchar ucAddr = 0x80; EA = 0;W1302(0x8e,0x00);/* 控制命令,WP=0,写操作?*/for(i =7; i>0; i--){W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */pClock++;ucAddr +=2;}W1302(0x8e,0x80);/* 控制命令,WP=1,写保护?*/EA = 1;}/******************************************************************** 功 能:读取DS1302当前时间 调 用:R1302() 入口参数:ucCurtime: 保存当前时间地址。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-112296-3.html
人都会有错
”我摇摇头说