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

📄 display.c

📁 充电车的控制板程序
💻 C
📖 第 1 页 / 共 3 页
字号:
						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 + -