届 别 2011届 ..
学 号200714240225
毕业设计
基于单片机的手机充电器设计
姓 名 李冰江 系 别、 专 业 物电系 电气工程及其自动化 导 师 姓 名、职 称 陈水先 教授 完 成 时 间 2011年5月
目 录
摘要 ............................................................................................................................................... I ABSTRACT ............................................................................................................................ II 1概述 ........................................................................................................................................... 1
1.1 国内外研究动态 ........................................................................................................... 1 1.2 研究的目的与意义 ..................................................................................................... 1
2 总体设计 .............................................................................................................................. 2
2.1 设计任务 ........................................................................................................................... 2 2.2 系统结构设计图 ........................................................................................................... 2 2.3 电路原理图 ..................................................................................................................... 3
3硬件设计 ............................................................................................................................... 4
3.1 STC12C5608AD单片机芯片的介绍 .................................................................... 4 3.2 单片机工作电源部分 ................................................................................................ 5 3.3 充电电源电路 ................................................................................................................ 5 3.4 键盘控制部分 ................................................................................................................ 6 3.5 状态指示灯及蜂鸣器输出电路 ........................................................................... 6 3.6 晶振与复位电路 ........................................................................................................... 6 3.7 IO扩展电路 .................................................................................................................... 7 3.8 数码管显示电路 ........................................................................................................... 8 3.9 充电电路及电压检测电路...................................................................................... 8
4软件设计 ............................................................................................................................... 9
4.1用C语言开发的优势 ................................................................................................. 9 4.2程序设计 .......................................................................................................................... 10
5检测 ......................................................................................................................................... 16 结束语 ....................................................................................................................................... 17 参考文献 .................................................................................................................................. 17 致谢 ............................................................................................................................................. 18 附录 ............................................................................................................................................. 20
摘 要
为解决锂离子电池充电问题,设计了一种以STC12C5608AD单片机芯片为核心的通用充电器,介绍了充电器的工作原理、设计特点和充电模式,详细讨论了系统的硬件构成及软件实现方法。由于采用了高性能的微控制器及高分辨率的A/D转换电路,保证了充电器具有很高的精度。
科技的发展使得电池成为生活中不可缺少的重要物品,同时锂电池的快速发展及其锂电池优良的性价比,使其快速成为现在社会电池中的主导。所以使用电池,就牵扯到电池充电的问题,电池能反复充电使用多少次就成为锂电池需要解决的问题。
所以更好的,合理的,有效的利用锂电池,迫切要解决的问题就是锂电池的合理充电问题,这要就联系充电保护。
关键词:STC12C5608AD单片机芯片;74HC595;数码管;
I
ABSTRACT
Lithium ion batteries for solving problems, design a kind of STC12C5608AD single-chip microcomputer chip in for the core of general intelligence charger, introduced the intelligent charger the principle, design features and charging mode, and discusses the system hardware structure and software realization method. As A result of the high-performance micro controller and high resolution A/D circuit, and to ensure the charger has A high precision.
The development of science and technology makes batteries become life indispensable important items, and the rapid development of lithium-ion batteries and lithium battery good performance-to-price ratio, make its rapidly becoming the dominant social battery now. So your battery, the battery is involved in the problem, the battery can use repeatedly charging many times become lithium battery problems need to be solved.
So better, reasonable and effective utilization of lithium battery, urgent problems to solve is lithium batteries can use rechargeable lithium-ion batteries on to how the number of its insurance charge, this should contact charging protection care.
Keywords: STC12C5608ADsingle-chip microcomputer chip; 74HC595; Phone chargers
II
1 概述
1.1 国内外研究动态
如今,随着越来越多的手持式电器的出现,对高性能、小尺寸、重量轻的电池充电器的需求也越来越大。电池技术的持续进步也要求更复杂的充电算法以实现快速、安全的充电。因此需要对充电过程进行更精确的监控,以缩短充电时间、达到最大的电池容量,并防止电池损坏。与此同时,对充电电池的性能和工作寿命的要求也不断地提高。从20世纪60年代的商用镍镉和密封铅酸电池到近几年的镍氢和锂离子技术,可充电电池容量和性能得到了飞速的发展。目前各种电器使用的充电电池主要有镍镉电池(NiCd)、镍氢电池(NiMH)、锂电池(Li-Ion)和密封铅酸电池(SLA)四种类型[1]。
电池充电是通过逆向化学反应将能量存储到化学系统里实现的。由于使用的化学物质的不同,电池有自己的特性。设计充电器时要仔细了解这些特性以防止过度充电而损坏电。
目前,市场上卖得最多的是旅行充电器,但是严格从充电电路上分析,只有很少部分充电器才能真正意义上被称为智能充电器,随着越来越多的手持式电器的出现,对高性能、小尺寸、轻重量的电池充电器的需求也越来越大。电池技术的持续进步也要求更复杂的充电算法以实现快速、安全地充电,因此,需要对充电过程进行更精确地监控(例如对充、放电电流、充电电压、温度等的监控),以缩短充电时间,达到最大的电池容量,并防止电池损坏。
1.2 研究的目的与意义
而且现在锂电池以迅猛的速度发展,因为锂电池所述的其他电池相比,锂电池具有最高的能量/ 重量比和能量/ 体积比。所以使电池广泛的应用在生活的每个领域,除了研究锂电池怎样可以更好更大化具有最高的能量/重量和能量、体积比外。
相信锂电池怎样合理的可以重复使用,说道这,锂电池的合理充电的研究也对人类来说,具有巨大的意义。
同样充电过程中会出现各种不一样的不良情况,如过冲;如充电电流过大;如充电电压过大。这些情况轻微的就是对电池的储电量造成损伤,情况严重就有可能造成电池彻底损坏,甚至爆炸,威胁人们的生活安全。
所以研究怎样合理的对电池进行充电,既能增加电池的可重复利用的价值,
1
同时也能减少对人们生活安全的威胁。
2 总体设计
2.1 设计任务
此次设计主要是应用STC12C5608AD来实现对手机锂电池的合理充电,通过
检测电压,来设置充电是否进行,充电何时停止。通过数码管显示电压,来检测,检查手机锂电池的充电过程。 实现功能为:
(1) 能正常为电池充电,通过数码管显示充电进度(百分比显示)还有充电电压,电池电压。显示切换通过按键调节
(2) 电池充满电充电停止蜂鸣器响,还能检测不能充电的电池,做到不充电,蜂鸣器响提醒。
2.2 系统机构设计图
图2.2 系统机构设计图
电源供电电路 LED显示及驱动电路 晶振复位电路 按键输入 51单片机 stc12c5608AD 状态指示灯及蜂鸣器输出 充电输出电路及电压采集电路 74HC595扩展输出 2
2.3 电路原理图
2.3电路原理图
3
3硬件设计
3.1STC12C5608AD单片机芯片的介绍
图3.1STC12C5608AD单片机芯片
宏晶科技是新一代增强8051单片机的制定者和领导厂商,现在已成长为全球最大的8051单片机的设计公司,致力于提供满足中国市场需求的世界级高性能单片机技术。
图3.1的STC12C5608AD单片机芯片的工作电压为5.5—3.5V,flash程序存储器字节为8K,定时器有6个,有时钟输出,有UART,PC16PWM8位,A/D8路10位,I/O口15个,有看门狗、内置复位,有SPI。
在使用STC12C5608AD时VCC接电源电压,GND接地。RST接复位电路。P3.2和P3.3接开关电路,P1.0和P1.1为A/D转换通道,P1.2,P1.3,P1.4控制数码管的输出管脚,P1.5,P1.6,P1.7是输出管脚连接I/O口的扩展芯片。这些可以在最后电路使用中体现出来。
[2]
4
3.2 单片机工作电源部分
图3.2单片机工作电源部分
有图3.2可知该电源主要是由7805稳压而来,DC12V电源经过IN4007后再经过7805稳压后,得到单片机工作的5V电源。D3为电源指示灯,一接通便会亮。
4007的作用是保护,防止输入电源正负接反。
3.3 充电电源电路
图3.3充电电源电路
有图3.3可知锂电池充电电源主要由12V经过IN4007后,再经过LM317后得出充电电源,LM317为可调稳压IC,其输出电压可以经过R2调节,通过调节,我们将输出电压调至合适状态,也就是加载到锂电池的电压刚好是4.2V。 C4、C5为滤波电容。
R1与R2组成调压电路,其它4007为保护元件。
5
3.4 键盘控制部分
图3.4按键输入电路
当按下一个键时,如图3.4直按按键,低电平有效。
3.5 状态指示灯及蜂鸣器输出电路
图3.5状态指示灯及蜂鸣器输出电路
指示灯与蜂鸣器的输出均为低电平有效,如图3.5当P3.4为低电平时,Q6导通,蜂鸣器鸣叫。
3.6 晶振与复位电路
图3.6 晶振与复位电路
6
如图3.6所示STC12C5608AD单片机不用复位电容,只需要将1K电阻接地,即可以完成复位动作。
3.7 IO扩展电路
图3.7 74HC595 IO扩展电路
74HC595芯片作用主要用于IO扩展,主要是在单片机引脚不够的情况下,扩展IO输出,如图3.7上,只需要利用3个IO就可以扩展到8个IO输出。由于这次设计用的STC12C5608AD单片机管脚只有20个,所以有必要扩展IO。
74HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。 数据在SHcp的上升沿输入,在STcp的上升沿进入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。 8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。
7
3.8 数码管显示电路
3.9 充电电路及电压检测电路
图3.8 数码管显示电路
的作用是放大电流,而470欧电阻则为限制数码管各码段的电流。
留作用,使人感觉好像各位数码管都在显示,而实际上多位数码管是一位一位轮
即轮流向个位数码管送出字形码和相应的位选,利用放光管的余辉和人眼视觉暂
流显示的,只是轮流的速度非常快,人眼无法分辨出来[3],三极管8550在这里
如图3.8数码管采用3位共阳数码管,利用动态扫描的原理,动态扫描显示,
3.9充电电路及电压检测电路
8
充电电路主要由三极管8050与TIP127来进行控制输出。当单片机的P3.7脚,也就是R8的前端输出高电平的时候,三极管8050导通,8050的CE极导通,所以C极,也就是8050的3脚相当于接地,PNP三极管TIP127导通,VCC4.2V_out电压通过TIP127流到D6 IN4007前端,然后穿过D6后,经过电阻限流,然后,流到锂电池。开始充电。
若P3.7输出低电平,则NPN三极管8050不导通,8050的3脚为高电平,TIP127不导通,电压不能流过,则停止充电。
图3.9的D7 发光二极管为充电指示灯,当充电时,该指示灯会发光。 电压的采集主要是采集两个电压,一个是锂电池的电压,一个是采集V_in1,也就是锂电池电压加上限流电阻的电压。
由此,可以算出充电电流,为(V_in1-V_in2)/R21 2.2欧,
电压的采集是通过单片机STC12C5608AD的内部的10位的A/D 端口检测后获得的。
4软件设计
4.1用C语言开发的优势
C语言是一种编译型的结构化程序设计语言,具有简单的语法结构和强大的处理功能,具有运行速度快、编译效率高,移植性好和可读性强等多种优点,可以实现对系统便件的直接操作[4]。用C语言来编写目标系统软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而开发出大规模、高性能的应用系统。其优势如下: (1) (2) (3) (4)
可以大幅度加快开发进度,程序量越大,用C语言就越有优势。 无需精通单片机指令集和具体的硬件,也能够编出符合硬件实际专业水平的程序。
可以实现软件的结构化编程,使得软件的逻辑结构变得清晰、有条理、便于开发小组计划任务、分工合作。源程序的可读性和可维护性都很好。 省去了人工分配单片机资源的工作,在汇编语言中要为每一个子程序分配单片机的资源。在使用C语言后,只要在代码中申明一下变量的类型,编译器就会自动分配相关资源,根本不需要人工干预,从而有效地避免了人工分配单片机资源的差错。 (5) (6)
汇编语言的可移植性很差,而C语言只要将一些与硬件相关的代码作适当的修改,就可以方便地移植到其它种类的单片机上。
C语言提供auto、static、flash等存储类型,针对单片机的程序存储空间、数据存储空间及EEPROM空间自动为变量合理地分配空间,而且C语
9
言提供复杂的数据类型,极大地增强了程序处理能力和灵活性。C编译器能够自动实现中断服务程序的现场保护和恢复,并且提供常用的标准函数库,供用户使用。并且C编译器能自动生成一些硬件的初始化代码。 (7)
对于一些复杂系统的开发,可以通过移植(或C编译器提供)的实时操作系统来实现。
正由于C语言在系统开发中的优势,这次设计的所有程序设计都将采用C语言编写。
4.2程序
4.2.1延时子程序
void delay(uint t)/*延时子程序对于11.0592m时钟,延时1ms */ {
uint i; while(t--) {
for (i=0;i<100;i++) {} } }
此程序主要出现在程序中延时的场合 4.2.2LED显示程序
void display(uint t)//显示函数 {
uchar a,b,c;
uint kk;
if(xuanzhe==0 || xuanzhe==1) //显示电压加上小数点 {
kk=t/10; }
else kk=t;
a=kk/100; kk=kk%100; b=kk/10; c=kk%10;
a=getcode(a);
if(xuanzhe==0 || xuanzhe==1) //显示电压加上小数点
10
{
a=a & 0x7f;//加上小数点 }
b=getcode(b); c=getcode(c);
wr595(a); out595(); led1=0; delay(1); led1=1;
wr595(b); out595(); led2=0; delay(1);
led2=1; wr595(c); out595(); led3=0; delay(1); led3=1; }
上面是显示子程序,主要是显示电池电压、充电总电压、及进度等,采用动态扫描的技术。
void display1(uchar t)//显示函数,显示错误信息 {
uchar a,b,c; uint i;
a=getcode(0x0e); b=getcode(0x00); c=getcode(t);
for(i=0;i<400;i++) { wr595(a); out595();
11
led1=0; delay(1); led1=1;
wr595(b); out595(); led2=0; delay(1);
led2=1; wr595(c); out595(); led3=0; delay(1); led3=1; } }
上面的显示子程序主要来显示错误信息;主要有三种,第一种E01,电池电压过高,第二种E02,电池电压过低,第三种,充电电流过大。 4.2.3充电程序
void chongdian() //充电状态 {
light=0; volt1=get_ad_result(0);//检测输出电压 volt2=get_ad_result(1);//检测电池电压 current=(volt1-volt2)*0.5;//充电电流 if(current>max) //如果充电电流大于最大限制电流,那么,则表示短路或者电流过大 { output=0;//马上断开不充电 light=1;//关掉指示灯 for(i=0;i<10;i++) { display1(3);//显示错误信息E03 bell=~bell;//蜂鸣提示 } while(volt2>200) //直至电池移开才动作 { volt2=get_ad_result(1);//检测电池电压 }
12
zhuangtai=0;//返回未充电前状态 } if(current<=min) //如果充电电流小于或者等于最小电流,那么,则表示电池已经充满,需要取下来 { uchar kk=0; 表示已经充满 for(i=0;i<10;i++) { volt1=get_ad_result(0);//检测输出电压 volt2=get_ad_result(1);//检测电池电压 current=(volt1-volt2)*0.5;//充电电流 if(current<=min) kk++; } percent=100; xuanzhe=2;//显示百分比 if(kk>=5) //如果10次检测电流有2次小于或者等于最小电流,那么 { output=0;//马上断开不充电 light=0;//开指示灯,表示已经充满电了 for(i=0;i<100;i++) { bell=~bell;//蜂鸣提示 led1=1; led2=1; led3=1; delay(500); volt2=get_ad_result(1);//检测电池电压 if(volt2<200) break; //如果电池已经移开,则跳出循环 } bell=1; while(volt2>200) //直至电池移开才动作
13
10% 达99%
}
4.2.4主程序void main(void) {
uint i;
{ volt2=get_ad_result(1);//检测电池电压 }
light=1;//关闭指示灯 output=0;//关闭输出 xuanzhe=0;//显示回电压
zhuangtai=0;//返回未充电前状态 }
} else {
if(volt2<=v_min) //若电压不到最小电压3.5V,那么默认它为充电 { percent=10; } else { if(volt2 if(percent<10) //取出百分比 { percent=10;//若百分比小于10,那么都设置为10 } } //if(percent>100) percent=100; } 14 //v_out1=0; //v_out2=0; output=0;//充电一开始不打开 adc_power_on();//开AD转换电源 delay(2000); ADC_CONTR=ADC_CONTR & 0x9f;//设置转换速度为最慢。 p1_open_drain();//设置P1为开漏 for(i=0;i<10;i++) { delay(600); light=~light; bell=~bell; } type_volt=(v_max-v_min)/100; for(;;) { if(zhuangtai==0) //未充电的状态 { weichongdian();//执行未充电的子程序 } else if(zhuangtai==1) //充电时的状态 { chongdian();//执行充电的子程序 } if(in1==0 && zhuangtai==1) //直接断开按钮 { delay(10); if(in1==0) { bell=0; delay(100); while(in1==0) delay(10); bell=1; 15 } } output=0;//马上断开不充电 light=1;//关掉指示灯 while(volt2!=0) //直至电池移开才动作 { volt2=get_ad_result(1);//检测电池电压 } zhuangtai=0;//返回未充电前状态 } if(zhuangtai==1) { if(in2==0 ) //选择显示按钮,可以选择显示电池电压,或者充电进度 { delay(10); if(in2==0) { bell=0; delay(100); xuanzhe++; if(xuanzhe>2) xuanzhe=0; while(in2==0) delay(10); bell=1; } } } else { xuanzhe=0;//显示电池电压 } 这个是系统的主程序,在程序中起着核心的作用,详细可以查看流程图。 5检测 单片机应用系统的调试包括硬件和软件两部分,但是他们并不能完全分开。一般的方法是排除明显的硬件故障,再进行综合调试,排除可能的软/硬件故障。 当硬件设计从布线到焊接完成之后,就开始进入硬件调试阶段,本次设计硬件调试大体分为以下几步: 16 (1)排除逻辑故障 这类故障往往由于设计和加工制板过程中工艺性错误所造成的。主要包括错线、开路、短路。排除方法是首先将焊接的电路板认真对照原理图,看两者是否一致。必要时利用万用表的短路测试功能,可以缩短排错时间。 (2)排除元件失效 造成这类错误的原因有两个:一个是元件买来时就已经坏了;另一个是由于焊接或安装原因导致元件烧坏。可用替换法排除 根据看实物是否能够完成预定的功能,如能,测试通过,否则,修改并反复测试直到通过。 结束语 本文分别从硬件和软件方面论述了对单片机的手机充电器的设计,围绕主机芯片STC12C5608AD进行了软件和硬件的设计,最后对仪器进行了制作。 目前,软件程序设计与硬件电路设计均已完成。整个装置基本达到了预期目标。但还有不足之处,显示也不是很清晰、准确,需要进一步的调试。由于时间关系及能力的有限,本系统在硬件方面还待进一步的完善。 单片机手机充电器具有节能的特点,和其检测检验功能使人们更合理更有效的利用手机电池,具有良好的发展前景。 参考文献 17 [1] 朱松然 蓄电池手册[M]北京:天津大学出版社, 2003:7-8 [2] 宏晶STC系列单片机芯片官网 STC12C5A60S2AD系列单片机[G] www.STCMCU.com,2010:13. [3] 郭天祥 51单片机C语言教程-入门、提高、开发、拓展全攻略[M]北京:电子工业出 版社,2009:62-63. [4] 谭浩强 C程序设计[M]北京:清华大学出版社,2007:2-3. [5] 康华光 电子技术基础 模拟部分[M]北京:高等教育出版社,2005. [6] 周兴华 手把手教你学单片机[M] 北京:北京航空航天大学出版社,2005 [7] 李翰荪 电路分析基础[M]北京: 高等教育出版社,1993 [8] 李学海 PIC系列单片机接口技术与系统应用[M] 北京:北京航天航空出版社,2004. [9] 李朝清 单片机原理及接口技术[M] 北京:北京航空航天大学出版社,1994年 [10]沙占友 单片机外围电路设计[M]北京: 电子工业出版社,2003年 致谢 本次毕业设计按计划完成,回顾自己在这个过程的每一点进步,都离不开学 18 校老师、同学们的关心和帮助。在此,向他们表示最衷心的谢意。 首先感谢我的导师陈水先老师,本文是在他的精心指导下完成的。论文从选题到完成的整个过程中,得到了陈老师的热情帮助与细心指正。陈老师严谨的治学态度、渊博的专业知识、敏锐的学术眼光、精益求精的精神给我留下了深刻的印象,并对我的学习和工作产生极大的促进作用。在论文完成之际,我要感谢陈水仙老师耐心的指导。 最后还要感谢大学四年来所有的老师,为我们打下深厚的专业知识的基础,此次毕业设计才能顺利完成。 19 916101121111222222122333111251114837122122112222223121132122321112111111附 录 PCB图 20 16151413121110920191817161514112345678123456784121122211231112121213312222221312111211222910112314222321111131121212112 因篇幅问题不能全部显示,请点此查看更多更全内容