mirror of
https://gitee.com/beecue/fastbee.git
synced 2025-12-18 00:45:55 +08:00
221 lines
7.3 KiB
C
221 lines
7.3 KiB
C
#include "battery.h"
|
|
|
|
/*电池,获取电池信息*/
|
|
void Bat_GetWorkInfor(void)
|
|
{
|
|
/***读取正在充电指示***/
|
|
if(Read_BatCharging()==0)
|
|
DevParam.BatCharging = 1;
|
|
else
|
|
DevParam.BatCharging = 0;
|
|
|
|
if(DevParam.BatInforGetTime >= 300)
|
|
{
|
|
if(DevParam.BatCheck < 100)
|
|
DevParam.BatCheck++;
|
|
/***获取电池电压***/
|
|
DevParam.BatVoltage = ADC_GetSimpleData();
|
|
if(DevParam.BatVoltage >= 3.58)
|
|
{
|
|
/***转换电池容量***/
|
|
if(DevParam.BatVoltage>=4.16)
|
|
DevParam.ShortBatSOC = 100;
|
|
else if(DevParam.BatVoltage>=4.08)
|
|
DevParam.ShortBatSOC = 90;
|
|
else if(DevParam.BatVoltage>=3.97)
|
|
DevParam.ShortBatSOC = 80;
|
|
else if(DevParam.BatVoltage>=3.90)
|
|
DevParam.ShortBatSOC = 70;
|
|
else if(DevParam.BatVoltage>=3.84)
|
|
DevParam.ShortBatSOC = 60;
|
|
else if(DevParam.BatVoltage>=3.79)
|
|
DevParam.ShortBatSOC = 50;
|
|
else if(DevParam.BatVoltage>=3.76)
|
|
DevParam.ShortBatSOC = 40;
|
|
else if(DevParam.BatVoltage>=3.73)
|
|
DevParam.ShortBatSOC = 30;
|
|
else if(DevParam.BatVoltage>=3.71)
|
|
DevParam.ShortBatSOC = 20;
|
|
else if(DevParam.BatVoltage>=3.65)
|
|
DevParam.ShortBatSOC = 10;
|
|
}
|
|
else
|
|
{
|
|
DevParam.ShortBatSOC = 0;
|
|
}
|
|
DevParam.BatInforGetTime = 0;
|
|
}
|
|
}
|
|
/*显示部分,电池图标外形刷新*/
|
|
void Show_BatIconShapeRefresh(void)
|
|
{
|
|
#ifdef Device_LCD
|
|
// 电池外形
|
|
SimLCD_PointColor = SimLCDColor_WHITE;
|
|
SimLCD_DrawLine( 200, 9, 222, 9);
|
|
SimLCD_DrawLine( 200, 21, 222, 21);
|
|
|
|
SimLCD_DrawLine( 200, 9, 200, 21);
|
|
SimLCD_DrawLine( 222, 9, 222, 21);
|
|
|
|
SimLCD_DrawLine( 197, 13, 200, 13); // 上横线
|
|
SimLCD_DrawLine( 197, 13, 197, 17); // 中横线
|
|
SimLCD_DrawLine( 197, 17, 200, 17); // 下横线
|
|
#endif
|
|
}
|
|
/*显示部分,电池图标刷新*/
|
|
void Show_BatIconRefresh(void)
|
|
{
|
|
if((DevParam.BatIconRefreshTime>=500)&&(DevParam.BatCheck>=2))
|
|
{
|
|
#ifdef Device_LCD
|
|
uint8_t i = 0;
|
|
uint16_t FontColor = 0;
|
|
if( (DevParam.BatCharging==1)&&(DevParam.RunPhase!=0) )
|
|
{// 充电中,电池图标变成绿色
|
|
FontColor = SimLCDColor_GREEN;
|
|
}
|
|
else if(DevParam.RunPhase==RunPhase_Runing)
|
|
{// 其他,电池图标变成白色
|
|
FontColor = SimLCDColor_WHITE;
|
|
}
|
|
// 显示SOC
|
|
if(DevParam.ShortBatSOC!=DevParam.BatSOC)
|
|
{
|
|
if( DevParam.ShortBatSOC >= 80 ) {
|
|
SimLCD_PointColor = FontColor;
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 202, i, 205, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 207, i, 210, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 212, i, 215, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 217, i, 220, i);
|
|
}
|
|
else if( DevParam.ShortBatSOC >= 60 ) {
|
|
SimLCD_PointColor = SimLCDColor_BLACK;
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 202, i, 205, i);
|
|
SimLCD_PointColor = FontColor;
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 207, i, 210, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 212, i, 215, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 217, i, 220, i);
|
|
}
|
|
else if( DevParam.ShortBatSOC >= 40 ) {
|
|
SimLCD_PointColor = SimLCDColor_BLACK;
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 202, i, 205, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 207, i, 210, i);
|
|
|
|
SimLCD_PointColor = FontColor;
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 212, i, 215, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 217, i, 220, i);
|
|
}
|
|
else if( DevParam.ShortBatSOC >= 20 ) {
|
|
SimLCD_PointColor = SimLCDColor_BLACK;
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 202, i, 205, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 207, i, 210, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 212, i, 215, i);
|
|
SimLCD_PointColor = FontColor;
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 217, i, 220, i);
|
|
}
|
|
else if( DevParam.ShortBatSOC >= 1 ) {
|
|
SimLCD_PointColor = SimLCDColor_BLACK;
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 202, i, 205, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 207, i, 210, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 212, i, 215, i);
|
|
for( i = 12; i < 19; i++)
|
|
SimLCD_DrawLine( 217, i, 220, i);
|
|
}
|
|
Power_LCD(1);
|
|
DevParam.BatSOC =DevParam.ShortBatSOC;
|
|
}
|
|
#endif
|
|
DevParam.BatIconRefreshTime = 0;
|
|
}
|
|
}
|
|
/*显示部分,侧边跳动*/
|
|
void Show_BroadSideBeat(void)
|
|
{
|
|
if(DevParam.SideBeatTime>=2000)
|
|
{
|
|
#ifdef Device_LCD
|
|
uint8_t i = 0;
|
|
if(DevParam.SideBeat==1) {
|
|
SimLCD_PointColor = SimLCDColor_CYAN;
|
|
for(i = 0; i < 13; i++)
|
|
SimLCD_DrawLine( 0, i, 32, i);
|
|
DevParam.SideBeat = 2;
|
|
}
|
|
else if(DevParam.SideBeat==2) {
|
|
SimLCD_PointColor = SimLCDColor_CYAN;
|
|
for(i = 15; i < 28; i++)
|
|
SimLCD_DrawLine( 0, i, 24, i);
|
|
DevParam.SideBeat = 3;
|
|
}
|
|
else if(DevParam.SideBeat==3) {
|
|
SimLCD_PointColor = SimLCDColor_CYAN;
|
|
for(i = 30; i < 43; i++)
|
|
SimLCD_DrawLine( 0, i, 16, i);
|
|
DevParam.SideBeat = 4;
|
|
}
|
|
else if(DevParam.SideBeat==4) {
|
|
SimLCD_PointColor = SimLCDColor_CYAN;
|
|
for(i = 45; i < 58; i++)
|
|
SimLCD_DrawLine( 0, i, 8, i);
|
|
DevParam.SideBeat = 5;
|
|
}
|
|
else if(DevParam.SideBeat==5) {
|
|
SimLCD_PointColor = SimLCDColor_BLACK;
|
|
for(i = 0; i < 13; i++)
|
|
SimLCD_DrawLine( 0, i, 32, i);
|
|
for(i = 15; i < 28; i++)
|
|
SimLCD_DrawLine( 0, i, 24, i);
|
|
for(i = 30; i < 43; i++)
|
|
SimLCD_DrawLine( 0, i, 16, i);
|
|
for(i = 45; i < 58; i++)
|
|
SimLCD_DrawLine( 0, i, 8, i);
|
|
DevParam.SideBeat = 1;
|
|
}
|
|
#endif
|
|
DevParam.SideBeatTime = 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|