Flag_S =~ Flag_S;//数码管闪烁标志位取反
LED_Flag_S =~ LED_Flag_S;//LED闪烁标志位取反 } } }
//定时器1溢出中断服务函数 void Timer1(void)interrupt 3 {
TH1=255-CLOCK/TIMER1_PER_SEC/12/256;//重装 TL1=255-CLOCK/TIMER1_PER_SEC/12%6; JSQ_3MINUTE++;
if(JSQ_3MINUTE>8999)//3分钟到 { JSQ_3MINUTE=0; JS3MINUTE_F=1; } }
//数码管显示模块 //工作模式 WK_MODE
//WK_MODE=0 充电时,电压值电流值显示
//WK_MODE=1 设定时,电压值闪烁,电流值不闪烁 //WK_MODE=2 设定时,电流值闪烁,电压值不闪烁 //WK_MODE=3 设定时,电压值第一位闪烁 //WK_MODE=4 设定时,电压值第二位闪烁 //WK_MODE=5 设定时,电压值第三位闪烁 //WK_MODE=6 设定时,电压值第四位闪烁 //WK_MODE=7 设定时,电流值第一位闪烁 //WK_MODE=8 设定时,电流值第二位闪烁 //WK_MODE=9 设定时,电流值第三位闪烁 //WK_MODE=10 设定时,电流值第四位闪烁 //WK_MODE=11 设定时,电压值电流值显示 //WK_MODE=12 设定时,电压值电流值显示 #include\
#include%unsigned char table_d[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff};//段码值
unsigned char table_w[] = {0xf7,0xfb,0xfd,0xfe,0x7f,0xbf,0xdf,0xef};//位选值 //显缓区
unsigned char Disp_Queue[8];//待显示字符队列
extern unsigned int MCU_ADC0,MCU_ADC1;//通道0电压值,通道1电压值 unsigned int Voltage_Val,Current_Val;//电压值,电流值
extern unsigned int Voltage_Max,Current_Max;//设定最大电压值,最大电流值 char voltage_q,voltage_b,voltage_s,voltage_g;//最大电压值第一位,第二位,第三位,第四位
char current_q,current_b,current_s,current_g;//最大电流值第一位,第二位,第三位,第四位
unsigned char WK_MODE;//设定系统工作模式
extern bit Flag_S;//闪烁标志位,闪烁频率500HZ extern unsigned char PWM0_TEMP,PWM1_TEMP; //反馈数据处理
void BackData_Pro( unsigned int Voltage_V,unsigned int Current_V ) {
Voltage_Val=
(long)(Voltage_V)*5*1000/256-(long)Current_V*5*1000/256/21-70; Current_Val = (float)(Current_V)*5*1000/256.0/2.1; }
//设定数据处理
void SetData_Pro( unsigned int voltage_set,unsigned int current_set ) {
voltage_q = voltage_set/1000; voltage_b = voltage_set00/100; voltage_s = voltage_set0/10; voltage_g = voltage_set; current_q = current_set/1000; current_b = current_set00/100; current_s = current_set0/10; current_g = current_set; }
//刷新待显示字符串 void New_Display(void) {
BackData_Pro( MCU_ADC0,MCU_ADC1 );
SetData_Pro( Voltage_Max,Current_Max ); switch( WK_MODE ) {
case 0://充电时,电压值电流值显示
Disp_Queue[0] = Voltage_Val/1000+10 ; Disp_Queue[1] = Voltage_Val00/100 ; Disp_Queue[2] = Voltage_Val0/10; Disp_Queue[3] = Voltage_Val; Disp_Queue[4] = Current_Val/1000+10; Disp_Queue[5] = Current_Val00/100 ; Disp_Queue[6] = Current_Val0/10;; Disp_Queue[7] = Current_Val; break;
case 1://设定时,电压值闪烁,电流值不闪烁 if( Flag_S )//灭 {
Disp_Queue[0] = 20; Disp_Queue[1] = 20; Disp_Queue[2] = 20; Disp_Queue[3] = 20; }
else //亮 {
Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; }
Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; break;
case 2: //设定时,电流值闪烁,电压值不闪烁 if( Flag_S ) {
Disp_Queue[4] = 20; Disp_Queue[5] = 20; Disp_Queue[6] = 20; Disp_Queue[7] = 20; } else {
Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; }
Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; break;
case 3://设定时,电压值第一位闪烁 if( Flag_S ) {
Disp_Queue[0] = 20; } else {
Disp_Queue[0] = voltage_q+10; }
Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g;
Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; break;
case 4://设定时,电压值第二位闪烁 if( Flag_S ) {
Disp_Queue[1] = 20; } else {
Disp_Queue[1] = voltage_b; }
Disp_Queue[0] = voltage_q+10; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; break;
case 5://设定时,电压值第三位闪烁 if( Flag_S ) {
Disp_Queue[2] = 20; } else {
Disp_Queue[2] = voltage_s; }
Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[3] = voltage_g; Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s;
Disp_Queue[7] = current_g; break;
case 6: //设定时,电压值第四位闪烁 if( Flag_S ) {
Disp_Queue[3] = 20; } else {
Disp_Queue[3] = voltage_g; }
Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; break;
case 7://设定时,电流值第一位闪烁 if( Flag_S ) {
Disp_Queue[4] = 20; } else {
Disp_Queue[4] = current_q+10; }
Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; break;
case 8://设定时,电流值第二位闪烁 if( Flag_S ) {
Disp_Queue[5] = 20; } else {
Disp_Queue[5] = current_b;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库智能电池充电器的设计-毕业设计 - 图文(6)在线全文阅读。
相关推荐: