📄 lcd_main.bak
字号:
/*||chk_event_flagI(DIS_COLG_VAL))*/{
}
else {
//if(keyS.event_cntC){
dis_frnt_page();
init_info();
//}
}
if((alarm.distinction==1)||(alarm.distinction==2)||(alarm.distinction==3)){ //清除报警
set_port_bit(alarm.distinction+2);
init_varb();
dis_frnt_page();
}
}
//process dot key
void dot_key_proc(void)
{
if(/*(chk_event_flagI(DIS_COLG_VAL)||*/chk_event_flagI(DIS_CURR_RAIN)){
set_event_flag(WAIT_PAGE_LIVE);
}
}
//处理命令菜单
void menu_term_proc(void)
{
/*if(keyS.event_cntC==1){
//switch(keyS.subevt_cntC){
//case 1: //读取实时雨量
snd_frm(DIS_CURR_RAIN);
dis_wait_page();
//break;
//case 2: //读取自记雨量
//sys_timeS.numC=0;
//set_event_flag(SET_BEGIN_TIME);
//snd_frm(DIS_TIME_LIVE);
//break;
//case 3:
//break;
//default:
//break;
//}
}
if(keyS.event_cntC==2){
//switch(keyS.subevt_cntC){
//case 1:
//break;
//case 2:
//break;
//case 3:
//break;
//case 4:
//break;
//default:
//break;
//}
} */
if(keyS.event_cntC==3){
switch(keyS.subevt_cntC){
case 1: //设置时间
snd_frm(STARTUP_CFG);
set_event_flag(NEED_DIS_TIME);
break;
case 2: //设置站号
snd_frm(STARTUP_CFG);
set_event_flag(SET_STAT_LIVE);
dis_set_stat();
break;
case 3: //场雨量清零
dis_clr_confirm();
set_event_flag(CLR_RAIN_CONFIRM);
break;
default:
break;
}
}
}
//处理接收数据
void frm_proc(void)
{
unsigned char xdata s;
comS.rec_bufCP=comS.rec_bufCA;
frmS.val_cnt=0;
s=get_ctl_offset(comS.rec_bufCP);
frmS.lenC=get_frm_len();
frmS.cmd=*(comS.rec_bufCP+s+3);
frmS.cmd_flg=*(comS.rec_bufCP+s+4);
switch(frmS.cmd){
case CURR_RAIN_TYPE: //get value of curr rain
get_rain_strC();
if(!chk_event_flagI(DIS_CURR_RAIN)) set_event_flag(DIS_CURR_RAIN);
if(chk_event_flagI(WAIT_PAGE_LIVE)) clr_event_flag(WAIT_PAGE_LIVE);
timer_cnt_g=20;
is_dis_rain();
break;
case CURR_LEVL_TYPE: //get value of level
get_levl_strC();
break;
case CLCK_TYPE: //get value of time
time_frm_proc();
break;
case STAT_TYPE:
dis_ack_page();
snd_frm(STARTUP_WORK);
break;
case CFG_TYPE:
if(chk_event_flagI(NEED_DIS_TIME)) snd_frm(DIS_TIME_LIVE);
break;
default:
break;
}
}
//处理接收时间数据
void time_frm_proc(void)
{
//unsigned char xdata loopC;
unsigned char xdata s;
unsigned char xdata *vCP;
vCP=sys_timeS.valCA;
s=get_ctl_offset(comS.rec_bufCP);
if(frmS.cmd_flg&0x10){
/*if(chk_event_flagI(SET_BEGIN_TIME)){
get_time_str(s+7);
for(loopC=0;loopC<13;loopC++){
colg.end_timeCA[loopC]=sys_timeS.valCA[loopC];
}
colg.begin_timeC=(colg.time_seC-(colg.time_seC%SECS_PER_DAY)
-SECS_PER_DAY+SECS_PER_HOUR*8);
conv_to_stdtm(colg.begin_timeC);
for(loopC=0;loopC<6;loopC++){
sprintf(vCP,"%02u",(unsigned int)sys_timeS.currCA[loopC]);
vCP+=2;
}
for(loopC=0;loopC<13;loopC++){
sys_timeS.valCA[loopC]-=0x30;
}
dis_sys_time();
}*/
//else{
get_time_str(s+7);
clr_event_flag(NEED_DIS_TIME);
if(!chk_event_flagI(DIS_TIME_LIVE)){
set_event_flag(SET_TIME_LIVE);
set_event_flag(DIS_TIME_LIVE);
dis_sys_time();
sys_timeS.numC=0;
}
else{
clr_event_flag(DIS_TIME_LIVE);
dis_sys_time();
snd_frm(STARTUP_WORK);
}
//}
}
if(frmS.cmd_flg==0x2e){
snd_frm(DIS_TIME_LIVE);
clr_event_flag(SET_TIME_LIVE);
}
}
//获取时间
void get_time_str(unsigned char s)
{
unsigned char loopC,*vCP;
vCP=sys_timeS.valCA;
sys_timeS.totl_seC=(unsigned long int)(*(comS.rec_bufCP+s+3))+
((unsigned long int)(*(comS.rec_bufCP+s+2))<<8)+
((unsigned long int)(*(comS.rec_bufCP+s+1))<<16)+
((unsigned long int)(*(comS.rec_bufCP+s))<<24);
//colg.time_seC=sys_timeS.totl_seC;
conv_to_stdtm(sys_timeS.totl_seC);
for(loopC=0;loopC<6;loopC++){
sprintf(vCP,"%02u",(unsigned int)sys_timeS.currCA[loopC]);
vCP+=2;
}
sprintf(&sys_timeS.valCA[12],"%u",(unsigned int)sys_timeS.currCA[loopC]);
for(loopC=0;loopC<13;loopC++){
sys_timeS.valCA[loopC]-=0x30;
}
}
//获取实时雨量数据
void get_rain_strC(void)
{
unsigned char xdata p;
p=get_ctl_offset(comS.rec_bufCP)+4;
rainS.totl_CP=rainS.totl_valCA;
rainS.rel_CP=rainS.rel_valCA;
rainS.bout_CP=rainS.bout_valCA;
do{
p+=1;
frmS.sub_flg[frmS.val_cnt]=*(comS.rec_bufCP+p);
p+=1;
frmS.sub_cmd[frmS.val_cnt]=*(comS.rec_bufCP+p);
if(frmS.sub_cmd[frmS.val_cnt]==ACC_RAIN_SCMD){
set_event_flag(ACC_RAIN);
if(frmS.sub_flg[frmS.val_cnt]&0x10){
p+=1;
set_event_flag(ACC_HAVE_TIME);
get_time_str(p);
p+=4;
}
else p+=1;
memcpy(&fltUA[0].valF,(comS.rec_bufCP+p+1),4);
frmS.para_num[frmS.val_cnt]=*(comS.rec_bufCP+p);
p+=(frmS.para_num[frmS.val_cnt]>>4)*4;
}
if(frmS.sub_cmd[frmS.val_cnt]==REL_RAIN_SCMD){
set_event_flag(REL_RAIN);
if(frmS.sub_flg[frmS.val_cnt]&0x10) p+=5;
else p+=1;
memcpy(&fltUA[1].valF,(comS.rec_bufCP+p+1),4);
frmS.para_num[frmS.val_cnt]=*(comS.rec_bufCP+p); //p=28
p+=(unsigned int)(frmS.para_num[frmS.val_cnt]>>4)*4;
}
frmS.val_cnt+=1;
}
while((p-8)<frmS.lenC);
rainS.acc_valF=fltUA[0].valF;
if(chk_event_flagI(ACC_RAIN)){
get_val_strC(rainS.totl_CP,rainS.acc_valF);
get_val_strC(rainS.bout_CP,rainS.acc_valF-rainS.init_valF);
}
if(chk_event_flagI(REL_RAIN)) get_val_strC(rainS.rel_CP,fltUA[1].valF);
}
//获取实时水位
void get_levl_strC(void)
{
}
//获取数值
void get_val_strC(unsigned char *vCP,float valF)
{
unsigned char xdata lenC;
lenC=(unsigned char)sprintf(vCP,"%.2f",valF);
if(*(vCP+lenC-1)=='0'){
if(*(vCP+lenC-2)=='0'){
*(vCP+lenC-1)=0;
*(vCP+lenC-2)=0;
*(vCP+lenC-3)=0;
}
else{
*(vCP+lenC-1)=0;
}
}
}
//获得站号
void get_stat_adr(void)
{
stat.adrCP=stat.adrCA;
stat.adrC=(unsigned int)(comS.rec_bufCA[3]<<8)+(unsigned int)comS.rec_bufCA[4];
sprintf(&stat.adrCA[0],"%05u",stat.adrC);
}
//清除显示
void clr_lcd_ram(void)
{
unsigned char xdata page_cntC,clmn_cntC;
for(page_cntC=0;page_cntC<8;page_cntC++){
set_left_clmn(0);
set_left_page(page_cntC);
for(clmn_cntC=0;clmn_cntC<64;clmn_cntC++){
wr_byte(RSL_ADDR,WDL_ADDR,0); //clear left ram
}
set_right_clmn(0);
set_right_page(page_cntC);
for(clmn_cntC=0;clmn_cntC<64;clmn_cntC++){
wr_byte(RSR_ADDR,WDR_ADDR,0); //clear right ram
}
}
}
//显示实时雨量
void is_dis_rain(void)
{
if(chk_event_flagI(DIS_CURR_RAIN)){
if(!chk_event_flagI(WAIT_PAGE_LIVE)){
if((timer_cnt_g>=wait_dis_time)&&(timer_cnt_g<(wait_dis_time*2))){
timer_cnt_g=wait_dis_time*2;
clr_lcd_ram();
if(chk_event_flagI(REL_RAIN)){
dis_sub_rain(1, 36, rainS.bout_CP);
dis_sub_rain(3, 28, rainS.rel_CP);
dis_sub_rain(5, 20, rainS.totl_CP);
}
else{
dis_sub_rain(2, 36, rainS.bout_CP);
dis_sub_rain(4, 20, rainS.totl_CP);
}
}
if(timer_cnt_g>=wait_dis_time*3){
timer_cnt_g=0;
clr_lcd_ram();
if(chk_event_flagI(ACC_HAVE_TIME)){
dis_stat_page(1);
dis_time_page(3);
}
else dis_stat_page(3);
}
}
}
}
//显示实时水位
//void dis_levl_page(unsigned char *levl_CP)
//{
//}
/*//循环显示自记数据
void dis_colg_val(void)
{
unsigned int xdata loopC,vS;
unsigned char xdata clmn_cntC;
unsigned char code * xdata font_tabCP;
unsigned long int xdata time_mark_seC;
note.bufCP=¬e.bufCA[8];
colg.valCP=colg.valCA;
sys_timeS.valCP=sys_timeS.valCA;
clr_event_flag(KEY_INTERMIT);
while(1){
colg.cmd=*note.bufCP;
if(chk_event_flagI(UP_PAGE_LIVE)){
colg.cntC--;
if(colg.cntC!=0){
note.bufCP-=20;
}
else{
colg.cntC++;
clr_event_flag(UP_PAGE_LIVE);
}
}
else{
colg.cntC++;
note.bufCP+=20;
}
colg.cmd=*note.bufCP;
colg.data_type=*(note.bufCP+2);
if((colg.cmd==0xff)||((note.bufCP-note.bufCA)>=(MAX_CONTENT-28))){
key_proc();
colg.cntC--;
note.bufCP-=20;
link_proc();
}
if(colg.cmd==ACC_RAIN_SCMD){
vS=colg.cntC;
clr_event_flag(UP_PAGE_LIVE);
time_mark_seC=(unsigned long int)(*(note.bufCP+7))+ //获取时标
((unsigned long int)(*(note.bufCP+6))<<8)+
((unsigned long int)(*(note.bufCP+5))<<16)+
((unsigned long int)(*(note.bufCP+4))<<24);
conv_to_stdtm(time_mark_seC);
sys_timeS.valCP=sys_timeS.valCA;
for(loopC=0;loopC<6;loopC++){
sprintf(sys_timeS.valCP,"%02u",(unsigned int)sys_timeS.currCA[loopC]);
sys_timeS.valCP+=2;
}
for(loopC=0;loopC<12;loopC++){
sys_timeS.valCA[loopC]-=0x30;
}
memcpy(&fltUA[2].valF,(note.bufCP+8),4);
get_val_strC(colg.valCP,fltUA[2].valF);
clr_lcd_ram();
dis_stat_page(0); //显示站号
clmn_cntC=4; //显示参数类型
font_tabCP=&CCTAB[108][0];
for(loopC=0;loopC<4;loopC++){
wr_lcd_hz(2,clmn_cntC,font_tabCP);
clmn_cntC+=16;
font_tabCP+=32;
}
dis_flot_val(2,60,colg.valCP); //显示参数值
dis_time_page(4); //显示时标
loopC=1000;
while(loopC--){
key_proc();
if(chk_event_flagI(KEY_INTERMIT)) break;
if(chk_event_flagI(WAIT_PAGE_LIVE)){
clr_event_flag(WAIT_PAGE_LIVE);
loopC+=20000;
}
if(chk_event_flagI(DN_PAGE_LIVE)){
clr_event_flag(DN_PAGE_LIVE);
loopC=1;
}
if(chk_event_flagI(UP_PAGE_LIVE)) break;
}
if(chk_event_flagI(KEY_INTERMIT)) break;
colg.cntC=vS;
}
if(chk_event_flagI(KEY_INTERMIT)) break;
}
}*/
//显示设置站号
void dis_set_stat(void)
{
unsigned char xdata loopC,clmn_cntC;
unsigned char code * xdata font_tabCP;
clr_lcd_ram();
if(chk_event_flagI(SET_SADR_LIVE)){
clmn_cntC=20;
font_tabCP=&DETAB[46][0];
for(loopC=0;loopC<3;loopC++){
wr_lcd_hz(1,clmn_cntC,font_tabCP);
clmn_cntC+=16;
font_tabCP+=32;
}
}
else if(chk_event_flagI(SET_DADR_LIVE)){
clmn_cntC=20;
font_tabCP=&DETAB[52][0];
for(loopC=0;loopC<3;loopC++){
wr_lcd_hz(1,clmn_cntC,font_tabCP);
clmn_cntC+=16;
font_tabCP+=32;
}
}
clmn_cntC=20;
font_tabCP=&CCTAB[86][0];
for(loopC=0;loopC<3;loopC++){
wr_lcd_hz(3,clmn_cntC,font_tabCP);
clmn_cntC+=16;
font_tabCP+=32;
}
clmn_cntC=70;
dis_cusr_line(3,clmn_cntC);
}
//显示设置报警参数
void dis_set_alarm(unsigned char s)
{
unsigned char xdata lenC,loopC,clmn_cntC,numC;
unsigned char code * xdata font_tabCP;
clr_lcd_ram();
wr_lcd_hz(1,8,&DETAB[0][0]);
wr_lcd_hz(3,8,&DETAB[2][0]);
wr_lcd_hz(6,8,&CTTAB[2*s-2][0]);
numC=0;
clmn_cntC=32; //时间
font_tabCP=&DETAB[8][0];
for(loopC=0;loopC<3;loopC++){
wr_lcd_hz(0,clmn_cntC,font_tabCP);
clmn_cntC+=16;
font_tabCP+=32;
}
clmn_cntC-=8;
for(loopC=0;loopC<2;loopC++){
if(loopC==0){
alarm.set_buf[numC]=(unsigned char)(alarm_parameter[s-1][0]/10);
font_tabCP=&DDTAB[alarm.set_buf[numC++]][0];
}
if(loopC==1){
alarm.set_buf[numC]=(unsigned char)(alarm_parameter[s-1][0]%10);
font_tabCP=&CDTAB[alarm.set_buf[numC++]][0];
}
wr_lcd_zf(0,clmn_cntC,font_tabCP);
clmn_cntC+=8;
}
font_tabCP=&CDTAB[18][0];
wr_lcd_zf(0,clmn_cntC,font_tabCP);
for(lenC=0;lenC<3;lenC++){ //三个雨量域
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -