stc15单片机实战指南连载 (51单片机入门实战)

软件及相关的硬件分析前面两分析了本实例主要功能的电路原理及软件结构,接下来我们来分析以下辅助功能的电路及软件。

通信指示:电路由LED1绿色发光二极管及限流电阻R16构成,发光二极管也用高亮,限流电阻可在200Ω至1KΩ之间选择,本设计使用560Ω。该发光二极管只在接收数据及发送数据时点亮。

软件说明:

1 操作概要

本说明使用端口P51直接驱动LED饭馆二极管。

LED点亮时端口低电平输出,熄灭为高电平输出。

(1) TAU 初始化设置。

<设定条件>

• 设置P51为输出引脚, P51=1,LED熄灭。

(2)通信模式下,接收数据开始指示灯点亮,完成熄灭。

(3)通信模式下,发送数据开始指示灯点亮,完成熄灭。

通信指示处理子程序:

这部分软件写在UART中断服务程序中。

蓄电池电压状态指示:电路由LED3双色共阳(红、绿)发光二极管及限流电阻R18、R27构成,发光二极管要用高亮且红绿亮度基本相同,否则混合光不明显,限流电阻可在200Ω至1KΩ之间选择,本设计使用560Ω。

1、蓄电池电压大于14V,红色发光二极管点亮;

2、蓄电池电压在12~14V之间,绿色发光二极管点亮;

3、蓄电池电压小于12V,红色绿色(混合成黄色)同时点亮;

软件说明:

1 操作概要

本说明使用端口P61/P62直接驱动LED饭馆二极管。

LED点亮时端口低电平输出,熄灭为高电平输出。

(1) TAU 初始化设置。

<设定条件>

• 设置P61/P62为输出引脚, P61=1,P62=1,红绿LED均熄灭。

(2)当电池电压低于12V时,P61=0,P62=0,红绿LED均点亮(混合色)。

(3)当电池电压在12V ~14 V之间时,P61=1,P62=0,点亮绿色LED。

(5)当电池电压高于14V时,P61=0,P62=1,点亮红色LED。

蓄电池电压状态指示处理子程序:

BAT_DISP:

MOVA,!BCEDBUFG

BTA.3,$BATDS_CVH ; 电池过压

BTA.4,$BATDS_CVM ; 电池正常

BTA.5,$BATDS_CVL ; 电池欠压

MOVWAX,!BATDCRGL ;蓄电池电压值

MOVB,#12

MOVC,#0

CMPWAX,BC

BNC$SCVM_CON ; 大于12V

SET1!POWERL_BT ; 置电压欠标记

CLR1!POWERH_BT

CLR1!POWERM_BT

RET

SCVM_CON:

MOVB,#14

MOVC,#0

CMPWAX,BC

BNC$SCVH_CON ; 大于12V

SET1!POWERM_BT ; 置电压欠标记

CLR1!POWERH_BT

CLR1!POWERL_BT

RET

SCVH_CON:

SET1!POWERH_BT ; 置电池过压标记

CLR1!POWERL_BT

CLR1!POWERM_BT

RET

;--------------------------------------------------------

BATDS_CVH:

MOVWAX,!BATDCRGL ;蓄电池电压值

MOVB,#14

MOVC,#0

CMPWAX,BC ; 蓄电池电压值(14V)

BC $BATDS1_CVH

CLRB!TIMEVD1RG

CLR1LEDO2 ; 电压高,红灯点亮

SET1LEDO3 ; 绿灯熄灭

RET

BATDS1_CVH:

MOVWAX,!TIMEVD1RG

CMPWAX,#2500 ;连续约10秒电压低于14V

BNC$BATDS2_CVH

INCW!TIMEVD1RG

RET

BATDS2_CVH:

SET1!POWERM_BT ; 置电压正常标记

CLR1!POWERH_BT

CLR1!POWERL_BT

RET

;--------------------------------------------------------

BATDS_CVM:

MOVWAX,!BATDCRGL ;蓄电池电压值

MOVB,#14

MOVC,#0

CMPWAX,BC ; 蓄电池电压高与14V

BNC$BATDSH_CVM

MOVB,#12

MOVC,#0

CMPWAX,BC ; 蓄电池电压低于12V

BC$BATDSL_CVM

CLRB!TIMEVD2RG

CLR1LEDO3 ; 电压正常,绿灯点亮

SET1LEDO2 ; 红灯熄灭

RET

BATDSH_CVM:

MOVWAX,!TIMEVD2RG

CMPWAX,#2500 ;连续约10秒电压高于14V

BNC$BATDSH1_CVM

INCW!TIMEVD2RG

RET

BATDSH1_CVM:

SET1!POWERH_BT ; 置电池过压标记

CLR1!POWERL_BT

CLR1!POWERM_BT

RET

BATDSL_CVM:

MOVWAX,!TIMEVD2RG

CMPWAX,#2500 ;连续约10秒电压低于12V

BNC$BATDSL1_CVM

INCW!TIMEVD2RG

RET

BATDSL1_CVM:

SET1!POWERL_BT ; 置电池欠压标记

CLR1!POWERH_BT

CLR1!POWERM_BT

RET

;--------------------------------------------------------

BATDS_CVL:

MOVWAX,!BATDCRGL ;蓄电池电压值

MOVB,#12

MOVC,#0

CMPWAX,BC ; 蓄电池电压值高于12V

BNC$ BATDS1_CVL

CLRB!TIMEVD3RG

CLR1LEDO2 ; 电压低,红灯点亮

CLR1LEDO3 ; 绿灯点亮

RET

BATDS1_CVL:

MOVWAX,!TIMEVD3RG

CMPWAX,#2500 ;连续约10秒电压高于12V

BNC$BATDS2_CVL

INCW!TIMEVD3RG

RET

BATDS2_CVL:

SET1!POWERM_BT ; 置电压正常标记

CLR1!POWERH_BT

CLR1!POWERL_BT

RET

充电状态指示:电路由LED2红色发光二极管及限流电阻R17构成,发光二极管也用高亮,限流电阻可在200Ω至1KΩ之间选择,本设计使用1KΩ。

1、在涓流充电模式及太阳能板的最大功率点充电模式下指示灯快速闪亮;

2、在恒压充电(浮充电)模式下指示灯慢速闪亮;

软件说明:

1 操作概要

本说明使用端口P60直接驱动LED饭馆二极管。

LED点亮时端口低电平输出,熄灭为高电平输出。

(1) TAU 初始化设置。

<设定条件>

• 设置P60为输出引脚, P60=1,LED熄灭。

(2)只有在浮充充电模式下,指示灯慢速闪亮。

(3)其它充电模式下,指示灯块速闪亮。

充电状态指示处理子程序:

LEDOUT_CNT:

MOVA,!BCEDBUFG

BT A.0,$LEDOUT_FCST ; 涓流充电

BT A.1,$LEDOUT_FCST ; 浮充充电

BT A.2,$LEDOUT_KCST ; 恒流充电

SET1LEDO1 ; 充电指示灯熄灭

RET

LEDOUT_FCST:

CMP!LEDOTIMG,#100 ; 浮充状态,指示灯慢闪点亮

BC $LEDOUT_BATCN

CLRB!LEDOTIMG

BT LEDO1,$LEDOUT_FCEN

SET1LEDO1 ; 充电指示灯熄灭

RET

LEDOUT_FCEN:

CLR1LEDO1 ; 充电指示灯点亮

RET

LEDOUT_KCST:

CMP!LEDOTIMG,#20 ; 快充状态,指示灯快闪点亮

BC $LEDOUT_BATCN

CLRB!LEDOTIMG

BT LEDO1,$LEDOUT_KCEN

SET1LEDO1 ; 充电指示灯熄灭

RET

LEDOUT_KCEN:

CLR1LEDO1 ; 充电指示灯点亮

RET