用单片机控制的充电器
充电控制器需要长时间控制并要进行电压检测,若用传统电路实现则电路复杂,采用单片机控制可大大减化电路,降低成本。本充电器用89C2051单片机进行充电定时控制。如果电池电压高于某值则先放电,直到电池电压低于该值时停止放电,开始定时充电。在定时充电期间若电池电压高于另一值则停止充电。定时时间有八挡可供选择,每2小时为一挡。
电路见附图。D1~D8为定时显示,接通电源时指示灯全亮,每2小时灭一只,从D1开始顺序熄灭,D1~D8全部熄灭时单片机进入掉电状态,各端口均为高电平。P1.0和P1.1分别为参考电压、电池测量端,用单片机的内置模拟电压比较器作为充放电状态转换控制,两端口必须置为“1”。放电时P3.7为0V,P1.0端电压为1V;充电时P3.7为某一值(由各电阻分压而得),P1.0端电压为1.6V。定时期间D9亮。P1.2和P1.3分别为放电、充电控制端,二者均为低电平有效,对应的三极管导通,相应功能起作用。S2开关置于“CHG”为本机对蓄电池进行充放电控制,置于“TIM”为定时控制器。外接插座P1、P2输出220V电压供给其他用市电输入的充电器使用。S1为定时时间设置,按住S1,每1秒熄灭一只发光管,到达需要的时间时松开S1。定时时间即为充电时间。
软件运行过程是:开机系统复位,进行初始化,设置各寄存器。本机将T0作为16位定时器,产生0.1秒的时基信号(TF0中断有效),送到各寄存器进行时间计数处理。当定时时间到或者电池电压高于某值时(由20H或P3.6电平判定)系统进入掉电状态。主程序执行显示、充放电状态判定及转换。INT0、INT1、TF1、ES中断均屏蔽不用。
本机所用元件无特殊要求,按电路图选择即可。需要说明的是,B1为两节并联镍镉电池(0.7Ah);R18决定充电电流大小,图示值为0.15A;R22决定放电电流大小,图示值为0.1A。变压器功率为3~5W,220V/9V。电路不用调试便可工作。
源程序清单
org 0000h
ajmp 10026h
org 0003h
reti
org 000bh
ajmp 10100h
org 0013h
reti
org 001bh
reti
org 0023h
reti
org 0026h
10026h: mov ie,#82h
mov ip,#02h
mov tmod,#11h
mov tcon,#15h
mov 20h,#00h
mov 21h,#00h
mov 26h,#00h
mov 281h,#00h
mov 29h,#00h
mov 2ah,#00h
mov 2bh,#00h
mov sp,#60h
mov th0,#3ch
mov tl0,#0b0h
clr p1.2
clr rd
10008h: nop
mov a,29h
cjne a,#0ah,10008h
10111h: jb 33h,10002h
jnb wr,10002h
setb rd
setb 33h
setb 34h
setb p1.2
clr p1.3
10002h: mov a,20hd
orl a,#0fh
orl p1,#0f0h
anl pl,a
mov a,20h
mov c,0e2h
mov 0e4h,c
mov c,0e3h
mov 0e5h,c
orl a,#0cch
orl p3,#33h
anl p3,a
mov c,33h
mov int0,c
ajmp 10001h
org 0100h
10100h: mov th0,#3ch
mov t10,#0b0h
push acc
push psw
inc 28h
mov a,28h
cjne a,#0ah,10004h
mov 28h,#00h
jnb 33h,10007h
jnb 34h,10009h
mov a,2ah
cjne a,#05h,10007h
clr 34h
10009h: jnb wr,10006h
10007h: jnb int1,10005h
inc 29h
mov a,29h
cjne a,#3ch,10004h
mov 29h,#00h
jnb 33h,10004h
inc 2ah
mov a,2ah
cjne a,#3ch,10004h
mov 2ah,#00h
inc 2bh
mov a,2bh
cjne a,#02h,10004h
mov 2bh,#00h
10005h: setb c
mov a,20h
rlc a
mov 20h,a
cpl a
jne 10004h
10006h: mov p1,#0ffh
mov p3,#0ffh
mov pcon,#02h
1004h: pop psw
pop acc
reti
end

评论