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

📄 lcd_main.bak

📁 外部接传感器完成数据采集
💻 BAK
📖 第 1 页 / 共 2 页
字号:
		/*||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=&note.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 + -