📄 system.h
字号:
#include <iom128v.h>
#include <macros.h>
#include <eeprom.h>
//#include "uart.h"
/* 7844 */
#define csad 0 //PB0
#define dout 1 //PB1
#define dinad 2 //PB2
#define clkad 3 //PB3
/* TLV5638 */
#define dinda 4 //PB4
#define clkda 5 //PB5
#define csda 6 //PB6
/* Value */
#define Vout ad_result[0]//输出电压
#define Iout ad_result[1]//输出电流
#define Uab ad_result[2]//交流AB
#define Ubc ad_result[3]//交流BC
#define Tbat ad_result[4]//电池温度
//#define mode1 charge_para[0]//第一阶段充电方式
//#define mode2 charge_para[1]//第二阶段充电方式
#define period charge_para[0]//当前充电阶段
#define period_all charge_para[1]//充电阶段总数
#define Ichg (charge_para[2]*10)//充电电流
#define Vlmt (charge_para[3]*10)//充电限压
#define Vstp (charge_para[4]*10)//停止电压
#define Vchg (charge_para[5]*10)//充电电压
#define Ilmt (charge_para[6]*10)//充电限流
#define Istp (charge_para[7]*10)//停止电流
#define Ids (charge_para[8]*10)//定时电流
#define Vds (charge_para[11]*10)//定时电压
#define Vout_max da_para[0]
#define Iout_max da_para[1]
#define dacV_max da_para[2]
#define dacA_max da_para[3]
#define Vout_min da_para[4]
#define Iout_min da_para[5]
#define dacV_min da_para[6]
#define dacA_min da_para[7]
#define sound_on() portbuf|=0x01;write_9554(0x40,1,portbuf)
#define sound_off() portbuf&=~0x01;write_9554(0x40,1,portbuf)
#define power_on() portbuf|=0x20;write_9554(0x40,1,portbuf)
#define power_off() portbuf&=~0x20;write_9554(0x40,1,portbuf)
//---------------------------------------------------------------------------------------
unsigned char addr=0;
unsigned char baud_rate=2;//0:4800,1:9600,2:19200
unsigned char mode; //当前充电方式
unsigned char portbuf=0; //9554端口数据缓存
unsigned char lmtV_flag=0; //限压状态, 0:未限压, 1:限压
unsigned char lmtA_flag=0; //限流状态, 0:未限流, 1:限流
unsigned char shift_flag=0;//充电状态转换标志
unsigned char sound_alarm=0;//声音告警标志
unsigned char sound_alarm_count;
unsigned char sound_beep=0;//声音蜂鸣标志
unsigned char sound_beep_count;
//unsigned char period=0;//充电阶段
//unsigned char period_all=0;//总充电阶段
unsigned char adjust_count=0;
unsigned char save_flag=0;//保存EEPROM数据标志位
unsigned long charge_time;//充电剩余时间
//--------------------(PF=6)----------------------
int Vbat_single_charge_lmt=150;//单体电池最高允许充电电压
int Ibat_single_charge_lmt=600;//单体电池最高允许充电电流
//int Ibat_charge_lmt = 60;//最高允许充电电流
unsigned char SOC=0;
int Vbat_charge_lmt=5000;//允许最高充电端电压
unsigned char Tbat_charge_lmt=500;//最高允许温度
//--------------------(PF=7)----------------------
unsigned int car_num=12345;//车号
unsigned int Bat_serial_num=4;//电池模块串联数
unsigned char Bat_parallel_num=4;//电池模块并联数
unsigned char Wreal=100;//实际能量
unsigned char Wrating=100;//额定能量
//--------------------(PF=8)----------------------
int Vbat_single_charge_max=120;//最高电压单体电池充电电压
unsigned char Box_num=0;//最高电压单体电池所在箱号
unsigned char Vbat_max_num=0;//最高电压单体电池编号
unsigned char Tbat_charge_max=350;//电池最高温度
unsigned char Tbat_max_num=0;//最高温度检测点编号
//--------------------(PF=9)----------------------
int Ibat_charge=0;//充电电流
int Vbat_charge=0;//充电端电压
//--------------------(PF=39)---------------------
struct
{
unsigned char year;
unsigned char month;
unsigned char day;
unsigned char hour;
unsigned char minute;
unsigned char second;
}DT={7,7,22,12,0,0};
//------------------------------------------------
//int dacV=671,dacA=840;//调压,调流DA输出值
int dacV=669,dacA=290;
//---------------------------------------------------------------------------------------
//int da_para[8]={5000,600,3351,3349,3000,100,671,840};
int da_para[8]= {750, 400,3242,3263,260,80,669,600};
//调压调流参数
//[0]:输出电压最大值
//[1]:输出电流最大值
//[2]:输出电压DA最大值
//[3]:输出电流DA最大值
//[4]:输出电压最小值
//[5]:输出电流最小值
//[6]:输出电压DA最小值
//[7]:输出电流DA最小值
//int alarm_val[]={4370,3230,5000,600};
int alarm_val[]={4370,3230,760,1200};
//告警阈值
//[0]:交流过压
//[1]:交流欠压
//[2]:输出过压
//[3]:输出过流
unsigned int alarm;//告警状态字,位为0表示无告警,位为1表示有告警
//bit0:交流输入过压
//bit1:交流输入欠压
//bit2:输出过压
//bit3:输出过流
int ad_result[5];//ad_result[0]:输出电压Vout
//ad_result[1]:输出电流Iout
//ad_result[2]:交流输入Ua
//ad_result[3]:交流输入Ub
//ad_result[4]:环境温度Tbat
//int amp[5]={18038,4799,22611,22611,12975};//放大系数
int amp[5]={2133,9601,22611,22611,12975};
int zero[5]={0,-1809,0,0,-2732};//零点
unsigned int adc_buf[5][5];//AD采样结果缓冲区
//int charge_para[20]={2,4,60,450,440,440,60,5,25,72,0,420,72,0,0,0,0,0,0,0};
int charge_para[20]={2,4,120,70,65,65,120,12,55,72,0,65,72,0,0,0,0,0,0,0};
//charge_para[0]:当前阶段
//charge_para[1]:总阶段数
//charge_para[2]:充电电流 //恒流限压
//charge_para[3]:充电限压
//charge_para[4]:停止电压
//charge_para[5]:充电电压 //恒压限流
//charge_para[6]:充电限流
//charge_para[7]:停止电流
//charge_para[8]:充电电流 //恒流定时
//charge_para[9]:充电定时: 时
//charge_para[10]:充电定时:分
//charge_para[11]:充电电压 //恒压定时
//charge_para[12]:充电定时:时
//charge_para[13]:充电定时:分
//charge_para[14]:第一阶段充电方式
//charge_para[15]:第二阶段充电方式
//charge_para[16]:第三阶段充电方式
//charge_para[17]:第四阶段充电方式
//charge_para[18]:第五阶段充电方式
//charge_para[19]:第六阶段充电方式
//0:恒流限压
//1:恒压限流
//2:恒流定时
//3:恒压定时
//4:停机
//---------------------------------------------------------------------------------------
void para_init(void);
void save_handle(void);
void adc_handle(void);
void alarm_handle(void);
unsigned int read_adc(unsigned char ch);
void write_9554(unsigned char sla_w,unsigned char command,unsigned char DATA);
void write_dac(unsigned int x);
void adjust_handle(void);
void update_dac(void);
void shift_handle(void);
void sound_handle(void);
void adjust_voltage(int voltage);
void adjust_current(int current);
void charge_init(unsigned char x);
//---------------------------------------------------------------------------------------
extern int dis_temp[6];
extern unsigned char date[3];
extern unsigned char time[3];
extern unsigned char key;
extern unsigned char screen_flag,change_flag,update_flag,page_flag,cursor_flag;
extern void lcd_clear(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -