合泰单片机智能充电器主程序HT46R47main.docx

上传人:b****0 文档编号:17150044 上传时间:2023-07-22 格式:DOCX 页数:17 大小:16.48KB
下载 相关 举报
合泰单片机智能充电器主程序HT46R47main.docx_第1页
第1页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第2页
第2页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第3页
第3页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第4页
第4页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第5页
第5页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第6页
第6页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第7页
第7页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第8页
第8页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第9页
第9页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第10页
第10页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第11页
第11页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第12页
第12页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第13页
第13页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第14页
第14页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第15页
第15页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第16页
第16页 / 共17页
合泰单片机智能充电器主程序HT46R47main.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

合泰单片机智能充电器主程序HT46R47main.docx

《合泰单片机智能充电器主程序HT46R47main.docx》由会员分享,可在线阅读,更多相关《合泰单片机智能充电器主程序HT46R47main.docx(17页珍藏版)》请在冰点文库上搜索。

合泰单片机智能充电器主程序HT46R47main.docx

合泰单片机智能充电器主程序HT46R47main

#include"HT46R47-H.h"

//---------------def-----------------------

//pa

#define_pac0_13_0

#define_pac1_13_1

#define_pac2_13_2

#define_pac3_13_3

#define_pac4_13_4

#define_pac5_13_5

#define_pac6_13_6

#define_pac7_13_7

//pb

#define_pbc0_15_0

#define_pbc1_15_1

#define_pbc2_15_2

#define_pbc3_15_3

//pd

#define_pdc0_19_0

#defineCN_DOWN_pa1

#defineJM_pa4

#defineLED_GREEN_pa5

#defineLED_RED_pa6

#defineFAN_pa7

#definePWM_IO_pd0

#defineC_SAMP0x00

#defineBT_SAMP0x01

#defineV_SAMP0x02

#defineTIM_PRE7200//pre2H-7200

#defineTIM_NOML43920//CC/CV12.2H=13H

#defineOVER_VOLTAGE0x0c5//43.57V

#defineLOW_VOLTAGE0x068//24V0x06b

//#defineOVER_CURRENT0x0062//3.9A10.5A

#definePRE_CHARGER0x088//30V

#defineFULL_DOWN_V0x0b5//40V

#defineFULL_CURRENT0x05f//0.2A

#defineN20C_NTC0x0ec//-20度

#define_0C_NTC0x0d7//0度

#define_45C_NTC0x089//45度0x07e

//---------------var-----------------------

unsignedintadcvalue;

unsignedintI_by;

unsignedcharchargermode;

unsignedcharT_Mode;//Tmode

unsignedintChargingTimeValue;//

bitStartTimeFlg;

bitChargingT_OverFlg;

unsignedcharTcount;

unsignedcharSecondCnt;

bitUnLoad;

bitStart_5S;

bitFlg_5S;

unsignedcharCnt5s;//5seconds

//---------------exfuction----------------

externunsignedintADCStart(unsignedcharchanl);

//delay1msFsys=4Mhz实测1ms

voidDelay1ms(void)

{

unsignedintva;

for(va=0;va<60;va++)

{;}

}

//delayNms

voidDelayNms(unsignedintms)

{

unsignedintvb;

for(vb=0;vb

{

Delay1ms();

}

}

//----------------------------------------------

//上电自校准电压IV

//自校电压是否在空载范围内

voids1_VI(void)

{

while

(1)

{

adcvalue=ADCStart(V_SAMP);//voltage

if(((adcvalue<0x01ff)||(adcvalue==0x01ff))&&((adcvalue>0x0000)||(adcvalue==0x0000)))

{

break;

}

}

}

//------------------------------------------------

//校正OP电流否正常,条件打开0.05A校正电流

//实测I-VOP放大电压,0x00744.2A=0X0141【0X0141-0X0074=D205,

//4200/205=20.5mA/位AD

voids1_VI1(void)

{

while

(1)

{

adcvalue=ADCStart(C_SAMP);//current

if(((adcvalue<0x01ff)||(adcvalue==0x01ff))&&((adcvalue>0x0000)||(adcvalue==0x0000)))

{

I_by=adcvalue;

break;

}

}

}

//systeminitial

voidSYS_Inital(void)

{

//IOport--------------

CN_DOWN=0;

JM=0;

FAN=0;

PWM_IO=0;

LED_GREEN=0;

LED_RED=1;

_pb3=0;

_pac1=0;

_pac4=0;

_pac7=0;

_pdc0=0;

_pac5=0;

_pac6=0;

_pbc0=1;

_pbc1=1;

_pbc2=1;

_pbc3=0;

//var----------------------

chargermode=0x01;

Tcount=0;

SecondCnt=0;

//Timer-------------------

_tmrc=0x87;//timermodeFtimer=Fsys/128Fsys=4MTtimer=32us

_tmr=(256-250);//32*250=8ms

//PWM---------------------

_pwm=0xfc;//setpwmdutycycle

//voltagecurrentjustself-----

s1_VI();

DelayNms(1000);

s1_VI1();

}

//---------------------相关保护

voidToPretect(void)

{

//---------------短路保护

//---------------低压保护

/*

adcvalue=ADCStart(V_SAMP);//voltage

if(adcvalue<=LOW_VOLTAGE)//Lowvoltage

{

adcvalue=ADCStart(C_SAMP);//current

if(adcvalue>20)

{

PWM_IO=0;

JM=0;

chargermode=0x05;//error

return;

}

}

*/

//---------------过压保护

if(adcvalue>=OVER_VOLTAGE)//overvoltage

{

PWM_IO=0;

JM=0;

chargermode=0x05;//error

return;

}

//---------------过流保护

/*

adcvalue=ADCStart(C_SAMP);//current

if(adcvalue>=OVER_CURRENT)//overcurrent

{

PWM_IO=0;

JM=0;

chargermode=0x05;//error

return;

}

*/

}

//------------------main-----------

voidmain()

{

SYS_Inital();

_intc=0x05;//EMIETIenable

_ton=1;//starttimer

while

(1)

{

switch(chargermode)

{

case0x01:

//start

T_Mode=chargermode;

ChargingTimeValue=0;

StartTimeFlg=0;

ChargingT_OverFlg=0;

FAN=0;

LED_GREEN=0;

LED_RED=1;

DelayNms(1000);

adcvalue=ADCStart(V_SAMP);//voltage

if((adcvalue>=OVER_VOLTAGE))//&&(adcvalue>=LOW_VOLTAGE)//overorlowvoltage

{

JM=0;

chargermode=0x05;//error

break;

}

else

{

//adcvalue=ADCStart(BT_SAMP);//Btemp

//if(adcvalue<=N20C_NTC)

//if(adcvalue>=LOW_VOLTAGE)

//{

PWM_IO=0;

JM=1;

DelayNms(1000);

adcvalue=ADCStart(C_SAMP);//Current

if(adcvalue>=0x50)

{

//UnLoad=0;

//Start_5S=0;

//Cnt5s=0;

//Flg_5S=0;

//adcvalue=ADCStart(V_SAMP);//voltage

//if(adcvalue<=PRE_CHARGER)//24

//{

PWM_IO=0;

chargermode=0x02;//pre

break;

//}

//else//V>30V-nor

//{

//PWM_IO=1;

//chargermode=0x03;//normal

//break;

//}

}

//}

}

break;

case0x02:

//PRE_CHARGER

PWM_IO=0;

JM=1;

FAN=0;

LED_GREEN=1;

LED_RED=1;

//-----------------------------------------//overtime

if(T_Mode!

=chargermode)

{

T_Mode=chargermode;

ChargingTimeValue=TIM_PRE;

StartTimeFlg=1;

ChargingT_OverFlg=0;

}

if(ChargingT_OverFlg==1)

{

PWM_IO=0;

JM=0;

chargermode=0x05;//error

break;

}

//----------低压,过压,过流,短路

ToPretect();

//----------BMSovertemp

adcvalue=ADCStart(BT_SAMP);//Btemp

if(((adcvalue>0xd7)||(adcvalue==0xd7))||((adcvalue<0x7f)||(adcvalue==0x7f)))

{

PWM_IO=0;

JM=0;

chargermode=0x05;//error

break;

}

//----------pretoNormal

adcvalue=ADCStart(V_SAMP);//voltage

if(adcvalue>PRE_CHARGER)//>30V

{

PWM_IO=1;

chargermode=0x03;//normal

break;

}

//------------------------------batteryremove

adcvalue=ADCStart(BT_SAMP);//batteryNTC

if(adcvalue>=N20C_NTC)//nontc

{

PWM_IO=0;

JM=0;

chargermode=0x05;//standby

break;

}

//---------------

adcvalue=ADCStart(V_SAMP);//voltage

if(adcvalue<=0x16)//5V

{

adcvalue=ADCStart(C_SAMP);//current

if(adcvalue>20)

{

JM=0;

PWM_IO=0;

chargermode=0x05;//error

break;

}

}

break;

case0x03:

//CC+CV

PWM_IO=1;

JM=1;

FAN=1;

LED_GREEN=1;

LED_RED=1;

//---------------------timer

if(T_Mode!

=chargermode)

{

T_Mode=chargermode;

ChargingTimeValue=TIM_NOML;

StartTimeFlg=1;

ChargingT_OverFlg=0;

}

if(ChargingT_OverFlg==1)

{

PWM_IO=0;

JM=0;

chargermode=0x05;//error

break;

}

//----------低压,过压,过流,短路

ToPretect();

//-----------------------------normaltoFULL

adcvalue=ADCStart(V_SAMP);//voltage

if(adcvalue>=FULL_DOWN_V)//>40V

{

adcvalue=ADCStart(C_SAMP);//current

if(adcvalue<=(FULL_CURRENT))//getFULL

{

chargermode=0x04;//full

break;

}

}

//----------BMSovertemp

adcvalue=ADCStart(BT_SAMP);//Btemp

//0度-0xc245度-0x6b

if(((adcvalue>0xdb)||(adcvalue==0xdb))||((adcvalue<0x82)||(adcvalue==0x82)))

{

PWM_IO=0;

JM=0;

chargermode=0x05;//error

break;

}

//------------------normaltopre

adcvalue=ADCStart(V_SAMP);//voltage

if(adcvalue<(PRE_CHARGER-10))//PRE

{

chargermode=0x02;//pre

break;

}

//------------------------------batteryremove

adcvalue=ADCStart(BT_SAMP);//batteryNTC

if(adcvalue>=N20C_NTC)//nontc

{

PWM_IO=0;

JM=0;

chargermode=0x05;//standby

break;

}

//---------------

adcvalue=ADCStart(V_SAMP);//voltage

if(adcvalue<=0x16)//5V

{

adcvalue=ADCStart(C_SAMP);//current

if(adcvalue>20)

{

JM=0;

PWM_IO=0;

chargermode=0x05;//error

break;

}

}

break;

case0x04:

//FULL_DOWN

T_Mode=chargermode;

ChargingTimeValue=0;//

StartTimeFlg=0;

ChargingT_OverFlg=0;

PWM_IO=0;

JM=0;

FAN=0;

LED_GREEN=1;

LED_RED=0;

DelayNms(1000);

adcvalue=ADCStart(V_SAMP);//voltage

if(adcvalue>OVER_VOLTAGE)//

{

PWM_IO=0;

JM=0;

chargermode=0x05;//error

break;

}

else

{

if(adcvalue<(LOW_VOLTAGE-20))

{

PWM_IO=0;

JM=0;

chargermode=0x01;//standby

break;

}

}

break;

case0x05:

//error

T_Mode=chargermode;

ChargingTimeValue=0;//

StartTimeFlg=0;

ChargingT_OverFlg=0;

PWM_IO=0;

JM=0;

FAN=0;

LED_GREEN=0;

LED_RED=1;

DelayNms(1000);

LED_GREEN=0;

LED_RED=0;

DelayNms(1000);

break;

default:

break;

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2