📄 display.c
字号:
update_flag=1;
break;
case UP:
dis_temp[cursor_flag]++;
if(dis_temp[2]>=60)dis_temp[2]=0;
update_flag=1;
break;
case DOWN:
if(dis_temp[cursor_flag])dis_temp[cursor_flag]--;
update_flag=1;
break;
case SETUP:
screen_flag=1;
page_flag=0;
cursor_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
case ENTER:
for(i=0;i<3;i++)charge_para[i+8]=dis_temp[i];
goto_saved();
break;
default:
break;
}
}
break;
//----------------------------------------------------------
case 6:
{
switch(key)
{
case PgUp:
for(i=0;i<2;i++)dis_temp[i]=charge_para[i];
page_flag=0;
cursor_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
case LEFT:
if(cursor_flag)cursor_flag--;
else cursor_flag=2;
update_flag=1;
break;
case RIGHT:
if(++cursor_flag>=3)cursor_flag=0;
update_flag=1;
break;
case UP:
dis_temp[cursor_flag]++;
if(dis_temp[2]>=60)dis_temp[2]=0;
update_flag=1;
break;
case DOWN:
if(dis_temp[cursor_flag])dis_temp[cursor_flag]--;
update_flag=1;
break;
case SETUP:
screen_flag=1;
page_flag=0;
cursor_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
case ENTER:
for(i=0;i<3;i++)charge_para[i+11]=dis_temp[i];
goto_saved();
break;
default:
break;
}
}
break;
//----------------------------------------------------------
default:
break;
}
}
/********************************************************************/
// 电池管理(按键处理)
/********************************************************************/
void key3_handle(void)
{
if(!(key&(1<<AVAIL)))return;
key&=~(1<<AVAIL);
switch(key)
{
case PgUp:
if(++page_flag>5)page_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
case SETUP:
screen_flag=1;
page_flag=0;
cursor_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
default:
break;
}
}
/********************************************************************/
// 当前告警(按键处理)
/********************************************************************/
void key4_handle(void)
{
if(!(key&(1<<AVAIL)))return;
key&=~(1<<AVAIL);
switch(key)
{
case SETUP:
screen_flag=1;
page_flag=0;
cursor_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
case PgUp:
//if(++cursor_flag==8)cursor_flag=0;
//change_flag=1;
break;
case ENTER:
screen_flag=0;
page_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
default:
break;
}
}
/********************************************************************/
// 告警参数(按键处理)
/********************************************************************/
void key5_handle(void)
{
unsigned char i;
if(!(key&(1<<AVAIL)))return;
key&=~(1<<AVAIL);
switch(page_flag)
{
case 0:
switch(key)
{
/*case PgUp:
for(i=0;i<3;i++)dis_temp[i]=charge_para[i+4];
page_flag=1;
cursor_flag=0;
change_flag=1;
lcd_clear();
break;*/
case LEFT:
if(cursor_flag)cursor_flag--;
else cursor_flag=3;
update_flag=1;
break;
case RIGHT:
if(++cursor_flag==4)cursor_flag=0;
update_flag=1;
break;
case UP:
dis_temp[cursor_flag]+=10;
update_flag=1;
break;
case DOWN:
dis_temp[cursor_flag]-=10;
update_flag=1;
break;
case SETUP:
screen_flag=1;
page_flag=0;
cursor_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
case ENTER:
for(i=0;i<4;i++)alarm_val[i]=dis_temp[i];
goto_saved();
break;
default:
break;
}
break;
default:
break;
}
}
/********************************************************************/
// 通道校准(按键处理)
/********************************************************************/
void key6_handle(void)
{
if(!(key&(1<<AVAIL)))return;
key&=~(1<<AVAIL);
switch(page_flag)
{
case 0:
case 1:
case 2:
case 3:
case 4:
switch(key)
{
case SETUP:
screen_flag=1;
page_flag=0;
cursor_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
case PgUp:
page_flag++;
cursor_flag=0;
change_flag=1;
update_flag=1;
if(page_flag<5)
{
dis_temp[0]=amp[page_flag];
dis_temp[1]=zero[page_flag];
}
else
{
dis_temp[0]=da_para[2];
dis_temp[1]=da_para[6];
}
if(page_flag==5)lcd_clear();
break;
case LEFT:
case RIGHT:
cursor_flag^=0x01;
update_flag=1;
break;
case UP:
dis_temp[cursor_flag]++;
update_flag=1;
break;
case DOWN:
dis_temp[cursor_flag]--;
update_flag=1;
break;
case ENTER:
amp[page_flag]=dis_temp[0];
zero[page_flag]=dis_temp[1];
goto_saved();
break;
default:
break;
}
break;
case 5:
case 6:
switch(key)
{
case SETUP:
screen_flag=1;
page_flag=0;
cursor_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
case PgUp:
if(++page_flag>6)page_flag=0;
cursor_flag=0;
change_flag=1;
update_flag=1;
if(page_flag)
{
dis_temp[0]=da_para[page_flag-3];
dis_temp[1]=da_para[page_flag+1];
}
else
{
dis_temp[0]=amp[0];
dis_temp[1]=zero[0];
}
if(page_flag==0)lcd_clear();
break;
case LEFT:
case RIGHT:
cursor_flag^=0x01;
update_flag=1;
break;
case UP:
dis_temp[cursor_flag]++;
update_flag=1;
break;
case DOWN:
dis_temp[cursor_flag]--;
update_flag=1;
break;
case ENTER:
da_para[page_flag-3]=dis_temp[0];
da_para[page_flag+1]=dis_temp[1];
goto_saved();
break;
default:
break;
}
break;
break;
default:
break;
}
}
/********************************************************************/
// 重新充电(按键处理)
/********************************************************************/
void key91_handle(void)
{
if(!(key&(1<<AVAIL)))return;
key&=~(1<<AVAIL);
switch(key)
{
case SETUP:
screen_flag=1;
page_flag=0;
cursor_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
case ENTER:
if(cursor_flag==0)
{
charge_init(1);
work_time_car=0;
work_time_perid=0;
work_time_counter=0;
work_time_en=1;
}
else if(cursor_flag==2)mode=4;
screen_flag=0;
page_flag=0;
change_flag=1;
update_flag=1;
lcd_clear();
break;
case LEFT:
if(cursor_flag)cursor_flag--;
else cursor_flag=2;
update_flag=1;
break;
case RIGHT:
if(++cursor_flag>2)cursor_flag=0;
update_flag=1;
break;
default:
break;
}
}
void goto_saved(void)
{
screen_flag_temp=screen_flag;
page_flag_temp=page_flag;
cursor_flag_temp=cursor_flag;
save_flag=1;
screen_flag=90;
change_flag=1;
}
/********************************************************************/
//显示日期
//x,y:日期显示的坐标
//mode:模式选择,0:不反显,1:日反显,2:月反显,3:年反显,4:全反显
/********************************************************************/
void display_date(unsigned char x,unsigned char y,unsigned char mode)
{
unsigned char i,j,k,l;
switch(mode)
{
case 0:
i=0;j=0;k=0;l=0;
break;
case 1:
i=0;j=0;k=0xFF;l=0;
break;
case 2:
i=0;j=0xFF;k=0;l=0;
break;
case 3:
i=0xFF;j=0;k=0;l=0;
break;
case 4:
i=0xFF;j=0xFF;k=0xFF;l=1;
put_number(x,y,2000+date[0],0,4,0,0,i);
draw_picture(x+28,y,7,14,Zm+448,l);
put_number(x+35,y,date[1],0,2,0,0,j);
draw_picture(x+49,y,7,14,Zm+448,l);
put_number(x+56,y,date[2],0,2,0,0,k);
}
}
/********************************************************************/
//显示时间
//x,y:时间显示的坐标
//mode:模式选择,0:不反显,1:秒反显,2:分反显,3:时反显,4:全反显
//dis:模式选择,0:不显示秒,1:显示秒
/********************************************************************/
void display_time(unsigned char x,unsigned char y,unsigned char mode,unsigned char dis)
{
unsigned char i,j,k,l;
switch(mode)
{
case 0:
i=0;j=0;k=0;l=0;
break;
case 1:
i=0;j=0;k=0xFF;l=0;
break;
case 2:
i=0;j=0xFF;k=0;l=0;
break;
case 3:
i=0xFF;j=0;k=0;l=0;
break;
case 4:
i=0xFF;j=0xFF;k=0xFF;l=1;
put_number(x,y,time[0],0,2,0,0,i);
draw_picture(x+14,y,7,14,Zm+420,l);
put_number(x+21,y,time[1],0,2,0,0,j);
if(dis)
{
draw_picture(x+35,y,7,14,Zm+420,l);
put_number(x+42,y,time[2],0,2,0,0,k);
}
}
}
/********************************************************************/
//键盘检测函数
/********************************************************************/
void key_check(void)
{
static unsigned char key_count,repeat_flag=0;
static unsigned char key_stu; //key_stu的BIT2,BIT1,BIT0记录按键状态
//000:松开状态
//001:键刚按下或干扰
//010:干扰,置为000
//011:按键稳定按下,执行键盘扫描
//100:键盘松开
//101:干扰,置为111
//110:正在松开键盘或干扰
//111:按键按下状态
if((PINF&0x0F)==0x0F)key_stu=(key_stu<<1)&0x06;
else key_stu=((key_stu<<1)|0x01)&0x07;
if(key_stu==0)
{
key_count=0;
repeat_flag=0;
}
else if(key_stu==7)
{
if(!repeat_flag)
{
if(++key_count>=150){key_count=0;repeat_flag=1;}
}
else
{
if(++key_count>=2){key_count=0;key|=0x80;}
}
}
else if(key_stu==2)key_stu=0;
else if(key_stu==3)key_scan();
else if(key_stu==5)key_stu=7;
}
/********************************************************************/
//键盘扫描函数
//改变全局变量:key
/********************************************************************/
void key_scan(void)
{
unsigned char i,j,m;
PORTE|=0x04;
for(i=0;i<2;i++)
{
m=PINF&0x0F;
if(m==0x0E){j=0;break;}
else if(m==0x0D){j=1;break;}
else if(m==0x0B){j=2;break;}
else if(m==0x07){j=3;break;}
PORTE&=0xFB;
PORTE|=0x08;
}
PORTE&=0xF3;
key=(((i<<2)+j)|(1<<AVAIL));
blight_state|=0x02;
}
/********************************************************************/
// 开机画面
/********************************************************************/
void wellcome(void)
{
unsigned int i,j;
CLI();
blight_on();
blight_state=1;
blight_count=blight_time;
put_string(34,16,1,TTKJ,0); //显示"泰坦科技"
//put_string(20,32,1,CDJKZQ,0); //显示"充电机控制器"
for(i=0;i<30000;i++)for(j=0;j<100;j++)WDR();
SEI();
}
/********************************************************************/
//背光处理函数
/********************************************************************/
void blight_handle(void)
{
if(blight_state&0x02) //背光需要更新 BIT1=1
{
if(!(blight_state&0x01)) //如果背光是关闭状态 BIT0=0
{
blight_on(); //开背光
blight_state=1; //背光状态置位 BIT0=1
blight_count=blight_time; //重装背光计数值
key&=~(1<<AVAIL);
}
else if(blight_state&0x01) //如果背光是打开状态 BIT0=1
{
blight_state&=~0x02; //清除背光更新位 BIT1
blight_count=blight_time; //重装背光计数值
}
}
else if(blight_state) //如果背光打开,且不用更新
{
if(!blight_count) //如果背光计数为0
{
blight_off(); //关闭背光
blight_state=0; //背光状态清0
screen_flag=0; //背光关闭,返回运行监控屏
page_flag=0;
change_flag=1;
lcd_clear();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -