⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system.h

📁 充电车的控制板程序
💻 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 + -