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

📄 control.c

📁 这是本人有幸收集的最完整的10多级液晶显示程序模块
💻 C
📖 第 1 页 / 共 5 页
字号:
					flash_line(union_vlaue.revalue_buf_int[3],union_vlaue.revalue_buf_int[1]);//显示进度条
					lcd_partclr(0,10,33);			//显示启动电流
					data_switch_display(union_vlaue.revalue_buf_int[0],0,0,36,6);
					lcd_partclr(0,83,32);			//显示已用热容量
					data_switch_display(union_vlaue.revalue_buf_int[2],0,0,108,6);
					break;
				case 0x40:
					lcdwrite_chinese(2,69,13,&zheng[0]);	//显示正在运行
					lcdwrite_chinese(2,83,13,&zai[0]);
					lcdwrite_chinese(2,95,13,&yunxing_yun[0]);
					lcdwrite_chinese(2,108,13,&xing[0]);
					lcd_partclr(0,10,33);			//显示平均电流
					data_switch_display(union_vlaue.revalue_buf_int[5],0,0,36,6);
					lcd_partclr(0,83,32);			//显示已用热容量
					data_switch_display(union_vlaue.revalue_buf_int[2],0,0,108,6);
					break;
				default : break;
			}
			break;
		default : break;	//此时为非法状态
		}
	}	
		}
	}

}

/*
双电源及保护方式的合闸与运行界面
显示信息包括系统准备状态、运行方式、操作方式、平均电流、平均电压等
*/
void power_run_show()
{
	unsigned char a;
	
	if(union_state.state_buf[0]&0x01) //停车状态
	{
		dis_number=0; //转向察看参数界面号
		show_bit=1;	//第一次进入标志
		set_bit=0;
		remote_sign.furbish=1;//刷新标志
		dis_message_count=3;
		remote_type.value=1;		
	}
	else		//非停车状态
	{
		if((union_state.state_buf[11]&0x07)>=two_power)
		{
				if(key==ok_key)			//如果有确认键,立即处理键
	{
		dis_number=33; //转向察看参数界面号
		show_bit=1;	//第一次进入标志
		remote_sign.furbish=1;//刷新标志
		dis_message_count=0;
		arrow_state1=0;	
	}
	if(remote_sign.furbish==0)
	{
		remote_sign.furbish=1;//刷新标志
		dis_message_count=5;
		remote_type.value=1;
	switch (union_state.state_buf[11])  //读起动方式
	{
		case two_power:
			if(show_bit)
			{
				clr_fullscreen();
				lcdwrite(1,0,1,&pointline[0]);
				lcdwrite(1,1,1,&pointline[0]);
				lcdwrite(1,119,1,&pointline[0]);
				lcdwrite(1,120,1,&pointline[0]);
				for(a=2;a<119;a++)
				{
					lcdwrite(1,a,1,&dline[0]);	//显示线
				}
				lcdwrite(0,0,6,&ascI[0]);	//显示I
				lcdwrite(0,6,4,&mh[0]);	//显示:
				lcdwrite(0,43,6,&ascA[0]);	//显示A
		
				lcdwrite(0,73,6,&ascU[0]);	//显示U
				lcdwrite(0,79,4,&mh[0]);	//显示:
				lcdwrite(0,115,6,&ascV[0]);	//显示V
				show_bit=0;
				point_row=0;
			}
		
			switch (union_vlaue.revalue_buf[11])	//操作原因
			{
				case 0x01:
					lcdwrite_chinese(2,0,13,&an[0]);	//显示按键操作
					lcdwrite_chinese(2,13,13,&anjian_jian[0]);
					lcdwrite_chinese(2,26,13,&cao[0]);
					lcdwrite_chinese(2,39,13,&zuo[0]);
					break;
				case 0x02:
					lcdwrite_chinese(2,0,13,&an[0]);	//显示按钮操作
					lcdwrite_chinese(2,13,13,&niu[0]);
					lcdwrite_chinese(2,26,13,&cao[0]);
					lcdwrite_chinese(2,39,13,&zuo[0]);
					break;
				case 0x04:
					lcdwrite_chinese(2,0,13,&tongxun[0]);	//显示通讯操作
					lcdwrite_chinese(2,13,13,&xun[0]);
					lcdwrite_chinese(2,26,13,&cao[0]);
					lcdwrite_chinese(2,39,13,&zuo[0]);
					break;
//				case 0x08:
//					lcdwrite_chinese(2,0,13,&qian[0]);	//显示欠压重投
//					lcdwrite_chinese(2,13,13,&dianya_ya[0]);
//					lcdwrite_chinese(2,26,13,&chong[0]);
//					lcdwrite_chinese(2,39,13,&tou[0]);
//					break;
				case 0x10:
					lcdwrite_chinese(2,0,13,&zi[0]);	//显示自动操作
					lcdwrite_chinese(2,13,13,&dong[0]);
					lcdwrite_chinese(2,26,13,&cao[0]);
					lcdwrite_chinese(2,39,13,&zuo[0]);
					break;
				default : break;
			}

			switch (union_state.state_buf[1]&0x48)	//起动状态
			{
				case 0x08:
					if(union_state.state_buf[1]&0x10)
					{
						lcdwrite_chinese(2,69,13,&tou[0]);	//显示投主电源
						lcdwrite_chinese(2,83,13,&zhu[0]);
						lcdwrite_chinese(2,95,13,&dian[0]);
						lcdwrite_chinese(2,108,13,&yuan[0]);
						flash_line(union_vlaue.revalue_buf_int[4],union_vlaue.revalue_buf_int[0]);//显示进度条			
					}
						else
						{
							lcdwrite_chinese(2,69,13,&tou[0]);	//显示投备电源
							lcdwrite_chinese(2,83,13,&bei[0]);
							lcdwrite_chinese(2,95,13,&dian[0]);
							lcdwrite_chinese(2,108,13,&yuan[0]);
							flash_line(union_vlaue.revalue_buf_int[3],union_vlaue.revalue_buf_int[0]);//显示进度条
						}	
					break;						
				case 0x40:
					if(union_state.state_buf[1]&0x80)
					{
						lcdwrite_chinese(2,69,13,&zhu[0]);	//显示主电工作
						lcdwrite_chinese(2,83,13,&dian[0]);
						lcdwrite_chinese(2,95,13,&gong[0]);
						lcdwrite_chinese(2,108,13,&zuo[0]);
					}
						else
						{
							lcdwrite_chinese(2,69,13,&bei[0]);	//显示备电工作
							lcdwrite_chinese(2,83,13,&dian[0]);
							lcdwrite_chinese(2,95,13,&gong[0]);
							lcdwrite_chinese(2,108,13,&zuo[0]);
						}	
					break;	
				default : break;
			}
			lcd_partclr(0,10,33);			//显示平均电流
			data_switch_display(union_vlaue.revalue_buf_int[1],0,0,36,6);
			lcd_partclr(0,83,32);			//显示平均电压
			data_switch_display(union_vlaue.revalue_buf_int[2],0,0,108,6);
			break;
		case protect:
			if(show_bit)
			{
				clr_fullscreen();
				lcdwrite(0,0,6,&ascI[0]);	//显示I
				lcdwrite(0,6,4,&mh[0]);	//显示:
				lcdwrite(0,43,6,&ascA[0]);	//显示A
		
				lcdwrite(0,73,6,&ascU[0]);	//显示U
				lcdwrite(0,79,4,&mh[0]);	//显示:
				lcdwrite(0,115,6,&ascV[0]);	//显示V
				
				lcdwrite_chinese(2,35,13,&zheng[0]); //显示正常运行
				lcdwrite_chinese(2,48,13,&chang[0]);
				lcdwrite_chinese(2,62,13,&yunxing_yun[0]);
				lcdwrite_chinese(2,75,13,&xing[0]);
				
				show_bit=0;
			}			
			lcd_partclr(0,10,33);			//显示平均电流
			data_switch_display(union_vlaue.revalue_buf_int[1],0,0,36,6);
			lcd_partclr(0,83,32);			//显示平均电压
			data_switch_display(union_vlaue.revalue_buf_int[2],0,0,108,6);	
			
			break;			
		default : break;
		}
	}
		}
		else
		{
			dis_number=3;//转向察看参数界面号
			show_bit=1;	//第一次进入标志
			set_bit=0;
			remote_sign.furbish=1;//刷新标志
			dis_message_count=4;
			remote_type.value=1;			
		}
	}

}

//显示滚动条
void flash_line(unsigned int all_time,use_time)
{
	unsigned char temp;
	unsigned char a;
	
	temp=all_time/122;
	temp=use_time/temp;
	if(temp>121){temp=121;}
	if(point_row>120)
	{
		point_row=121;
		temp=0;
	}
	for(a=point_row;a<=temp;a++)
	{
		lcdwrite(1,point_row,1,&pointline);	//动态显示滚动点	
		point_row++;
	}
}

/*
停车运行界面选择
*/
void hmi_select()
{
	if(union_state.state_buf[0]&0x01) //停车状态
	{
		dis_number=0; //转向察看参数界面号
		show_bit=1;	//第一次进入标志
		set_bit=0;
		remote_sign.furbish=1;//刷新标志
		dis_message_count=3;
		remote_type.value=1;		
	}
	else		//非停车状态
	{
		if((union_state.state_buf[11]&0x07)>=two_power)
		{
			dis_number=7; //转向察看参数界面号
			show_bit=1;	//第一次进入标志
			set_bit=0;
			remote_sign.furbish=1;//刷新标志
			dis_message_count=5;
			remote_type.value=1;
		}
		else
		{
			dis_number=3;//转向察看参数界面号
			show_bit=1;	//第一次进入标志
			set_bit=0;
			remote_sign.furbish=1;//刷新标志
			dis_message_count=4;
			remote_type.value=1;			
		}
	}
}

/*
起动方式设定
*/
/*void start_type_setting()
{
	if(show_bit)	//判断是否是第一次显示
	{//第一次显示
		clr_fullscreen();//清屏
		lcdwrite_chinese(2,4,13,&yunxing_yun[0]);	//显示运行方式
		lcdwrite_chinese(2,17,13,&xing[0]);
		lcdwrite_chinese(2,30,13,&fang[0]);
		lcdwrite_chinese(2,43,13,&shi[0]);
		lcdwrite_arrow(1,115,set_bit);	//显示箭头
		show_bit=0;
	}
		
	if(set_bit==0)
	{
		if(remote_sign.furbish==0)
		{
			switch(union_state.state_buf[23])		//根据起动方式处理显示界面
			{
				case direct_start:
					lcdwrite_chinese(0,35,13,&zhijie_zhi[0]);	//显示直接起动
					lcdwrite_chinese(0,48,13,&jie[0]);
					lcdwrite_chinese(0,61,13,&qidong[0]);
					lcdwrite_chinese(0,74,13,&dong[0]);
					break;
				case double_start: 
					lcdwrite_chinese(0,35,13,&zheng[0]);	//显示正反起动
					lcdwrite_chinese(0,48,13,&fan[0]);
					lcdwrite_chinese(0,61,13,&qidong[0]);
					lcdwrite_chinese(0,74,13,&dong[0]);
					break;
				case two_speed_start: 
					lcdwrite_chinese(0,35,13,&shuang[0]);	//显示双速起动
					lcdwrite_chinese(0,48,13,&su[0]);
					lcdwrite_chinese(0,61,13,&qidong[0]);
					lcdwrite_chinese(0,74,13,&dong[0]);
					break;
				case res_start: 
					lcdwrite_chinese(0,35,13,&dian[0]);	//显示电阻降压
					lcdwrite_chinese(0,48,13,&zu[0]);
					lcdwrite_chinese(0,61,13,&jiang[0]);
					lcdwrite_chinese(0,74,13,&dianya_ya[0]);
					break;
				case ydelta_start: 
					lcdwrite_chinese(0,35,13,&y_delta[0]);	//显示星三角起动
					lcdwrite_chinese(0,48,13,&delta[0]);
					lcdwrite_chinese(0,61,13,&qidong[0]);
					lcdwrite_chinese(0,74,13,&dong[0]);
					break;
				case auto_transfor:  
					lcdwrite_chinese(0,35,13,&zi[0]);	//显示自耦降压
					lcdwrite_chinese(0,48,13,&ou[0]);
					lcdwrite_chinese(0,61,13,&jiang[0]);
					lcdwrite_chinese(0,74,13,&dianya_ya[0]);
					break;
				case protect:
					lcdwrite_chinese(0,35,13,&baohu[0]);	//显示保护方式
					lcdwrite_chinese(0,48,13,&hu[0]);
					lcdwrite_chinese(0,61,13,&fang[0]);
					lcdwrite_chinese(0,74,13,&shi[0]);
					break;
				case measure_control:
					lcdwrite_chinese(0,35,13,&ce[0]);	//显示测控方式
					lcdwrite_chinese(0,48,13,&kong[0]);
					lcdwrite_chinese(0,61,13,&fang[0]);
					lcdwrite_chinese(0,74,13,&shi[0]);
					break;			
				case two_power:
					lcdwrite_chinese(0,35,13,&shuang[0]);	//显示双电源方式
					lcdwrite_chinese(0,48,13,&dian[0]);
					lcdwrite_chinese(0,61,13,&yuan[0]);
					lcdwrite_chinese(0,74,13,&fang[0]);
					lcdwrite_chinese(0,87,13,&shi[0]);
					break;
				default : break;
			}
		}	
		if(key)				//处理按键
		{
			switch(key)
			{
				case up_key:
					//至上一界面号
					set_bit=0;		//至察看标志
					show_bit=1;		//重至第一次刷新标志
					break;
				case down_key:
					//至下一界面号
					set_bit=0;		//至察看标志
					show_bit=1;		//重至第一次刷新标志
					break;
				case ok_key:
					set_bit=1;		//至设定状态标志,进入设定状态
					show_bit=1;		//重至第一次刷新标志
					set_data_temp=union_state.state_buf[23];//初始化设定暂存器
					break;
				case esc_key:
					//至返回界面号
					set_bit=0;		//至察看标志
					show_bit=1;		//重至第一次刷新标志
					break;
			}
		}
	}
	else	//设定界面显示
	{
		switch(set_data_temp)				//根据起动方式处理显示界面
		{
			case direct_start:
				lcdwrite_chinese(0,35,13,&zhijie_zhi[0]);	//显示直接起动
				lcdwrite_chinese(0,48,13,&jie[0]);
				lcdwrite_chinese(0,61,13,&qidong[0]);
				lcdwrite_chinese(0,74,13,&dong[0]);
				break;
			case double_start: 
				lcdwrite_chinese(0,35,13,&zheng[0]);	//显示正反起动
				lcdwrite_chinese(0,48,13,&fan[0]);
				lcdwrite_chinese(0,61,13,&qidong[0]);
				lcdwrite_chinese(0,74,13,&dong[0]);
				break;
			case two_speed_start: 
				lcdwrite_chinese(0,35,13,&shuang[0]);	//显示双速起动
				lcdwrite_chinese(0,48,13,&su[0]);
				lcdwrite_chinese(0,61,13,&qidong[0]);
				lcdwrite_chinese(0,74,13,&dong[0]);
				break;
			case res_start: 
				lcdwrite_chinese(0,35,13,&dian[0]);	//显示电阻降压
				lcdwrite_chinese(0,48,13,&zu[0]);
				lcdwrite_chinese(0,61,13,&jiang[0]);
				lcdwrite_chinese(0,74,13,&dianya_ya[0]);
				break;
			case ydelta_start: 
				lcdwrite_chinese(0,35,13,&y_delta[0]);	//显示星三角起动
				lcdwrite_chinese(0,48,13,&delta[0]);
				lcdwrite_chinese(0,61,13,&qidong[0]);
				lcdwrite_chinese(0,74,13,&dong[0]);
				break;
			case auto_transfor:  
				lcdwrite_chinese(0,35,13,&zi[0]);	//显示自耦降压
				lcdwrite_chinese(0,48,13,&ou[0]);
				lcdwrite_chinese(0,61,13,&jiang[0]);
				lcdwrite_chinese(0,74,13,&dianya_ya[0]);
				break;
			case protect:
				lcdwrite_chinese(0,35,13,&baohu[0]);	//显示保护方式
				lcdwrite_chinese(0,48,13,&hu[0]);
				lcdwrite_chinese(0,61,13,&fang[0]);
				lcdwrite_chinese(0,74,13,&shi[0]);
				break;
			case measure_control:
				lcdwrite_chinese(0,35,13,&ce[0]);	//显示测控方式
				lcdwrite_chinese(0,48,13,&kong[0]);
				lcdwrite_chinese(0,61,13,&fang[0]);
				lcdwrite_chinese(0,74,13,&shi[0]);
				break;			
			case two_power:
				lcdwrite_chinese(0,35,13,&shuang[0]);	//显示双电源方式
				lcdwrite_chinese(0,48,13,&dian[0]);
				lcdwrite_chinese(0,61,13,&yuan[0]);
				lcdwrite_chinese(0,74,13,&fang[0]);
				lcdwrite_chinese(0,87,13,&shi[0]);
				break;
			default : break;
		}	
		if(key)				//处理按键
		{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -