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

📄 display.c

📁 sed1335液晶驱动器源码
💻 C
📖 第 1 页 / 共 3 页
字号:
         break;
     case		1://右闪灯故障
         lcd_bmp(head_x,head_y,16,19,1,ysdgz,0,zimode_left,zimode_right,first_page);
         break;
     case		2://左闪灯故障
         lcd_bmp(head_x,head_y,16,19,1,zsdgz,0,zimode_left,zimode_right,first_page);
         break;
     case   3://制动灯故障
         lcd_bmp(head_x,head_y,16,19,1,zddgz,0,zimode_left,zimode_right,first_page);
         break;
     case   4://倒车灯故障
         lcd_bmp(head_x,head_y,16,19,1,dcdgz,0,zimode_left,zimode_right,first_page);
         break;
     case   5://机油压力不足
         lcd_bmp(head_x,head_y,19,19,1,jyyl,0,zimode_left,zimode_right,first_page);
         break;
     case   6://燃油不足
         lcd_bmp(head_x,head_y,13,19,1,rybz,0,zimode_left,zimode_right,first_page);
         break; 
     case   7://水温报警
         lcd_bmp(head_x,head_y,13,19,1,swbj,0,zimode_left,zimode_right,first_page);
         break;
     case   8://空滤堵塞
         lcd_bmp(head_x,head_y,13,19,1,klds,0,zimode_left,zimode_right,first_page);
         break;
     case   9://制动气压1报警
         lcd_bmp(head_x,head_y,21,19,1,zdqy1,0,zimode_left,zimode_right,first_page);
         break;
     case   10://制动气压2报警
         lcd_bmp(head_x,head_y,21,19,1,zdqy2,0,zimode_left,zimode_right,first_page);
         break; 
     case   11://请勿行驶
         lcd_bmp(head_x,head_y,13,19,1,qwxs,0,zimode_left,zimode_right,first_page);
         break;
     case   12://请关好车门
         lcd_bmp(head_x,head_y,16,19,1,qgcm,0,zimode_left,zimode_right,first_page);
         break;                  
     default:  break;
   }
   //lcd_display_ON(0x56);
}
/*-----------------------------------------------------------------------/
函数名称:lcd_failure_scroll()
功能:故障的滚动显示
参数:起始故障值、故障缓存区
返回值:
/-----------------------------------------------------------------------*/
void lcd_failure_scroll(unsigned char failure_start,unsigned char mode)
{
   unsigned char failur_temp=failure_start;
	 unsigned char fail_i;
	 //lcd_display_OFF(0x00);
   lcd_clr_row(9,38,25,108,first_page);
   //lcd_display_ON(0x55);  
	 for(fail_i=0;fail_i<4;fail_i++){
	 	   //lcd_display_OFF(0x56);
	 	   lcd_failure(9,38+fail_i*28,failur_temp);
	 	   failur_temp=lcd_failure_cyc(failur_temp+1,system_failure);
	 	   if(mode==scroll_enable){
			 	   if(failur_temp==0){
			 	   	  failur_temp=lcd_failure_cyc(failur_temp+1,system_failure);
			 	   	}
	 	    }
	 	   else if(mode==scroll_disable){
	 	   	   if(failur_temp==0){
		 	   	   	//lcd_display_ON(0x56);
		 	   	   	break;
	 	   	    }			 	   	
	 	   	}
	 	   //lcd_display_ON(0x56);	
	 	}
	 //lcd_display_ON(0x56);
}

/*-----------------------------------------------------------------------/
函数名称:lcd_clock_set_add()
功能:设置时钟
参数:设置的时钟、时钟的指针、时钟显示缓存区,键值
返回值:
/-----------------------------------------------------------------------*/
/*void lcd_clock_set_add(unsigned char clock_set_type,unsigned char *set_clock,
                   unsigned char *lcd_clock_a,unsigned char key_bord)                  
{  
    switch (clock_set_type)
      {
         case lcd_house_set_hi://小时高位
              if(key_bord==key_left){
		              lcd_clock_a[0]++;
		              if(lcd_clock_a[0]>0x32)lcd_clock_a[0]=0x30;
                }
              else{
                  lcd_clock_a[0]--;
		              if(lcd_clock_a[0]<0x30)lcd_clock_a[0]=0x32;
                }
              set_clock[2]=((lcd_clock_a[0]-0x30)<<4)|(lcd_clock_a[1]-0x30);
              break;
         case lcd_house_set_lo://小时低位
              if(key_bord==key_left){
		              lcd_clock_a[1]++;
		              if((lcd_clock_a[0]-0x30)==2){
		              	if((lcd_clock_a[1]-0x30)>4)lcd_clock_a[1]=0x30;
		               }
		              else{
		                if(lcd_clock_a[1]>0x39)lcd_clock_a[1]=0x30;
		               }
               }
              else{
                  lcd_clock_a[1]--;
		              if((lcd_clock_a[0]-0x30)==2){
		              	if(lcd_clock_a[1]<0x30)lcd_clock_a[1]=0x34;
		               }
		              else{
		                if(lcd_clock_a[1]<0x30)lcd_clock_a[1]=0x39;
		               }
               }               
              set_clock[2]=((lcd_clock_a[0]-0x30)<<4)|(lcd_clock_a[1]-0x30);
              break;
         case lcd_minute_set_hi://分钟高位
              if(key_bord==key_left){
		              lcd_clock_a[3]++;
		              if(lcd_clock_a[3]>0x35)lcd_clock_a[3]=0x30;
               }
              else{
                  lcd_clock_a[3]--;
		              if(lcd_clock_a[3]<0x30)lcd_clock_a[3]=0x35; 
               }
              set_clock[1]=((lcd_clock_a[3]-0x30)<<4)|(lcd_clock_a[4]-0x30);
              break;
         case lcd_minute_set_lo://分钟低位
              if(key_bord==key_left){
		              lcd_clock_a[4]++;
		              if(lcd_clock_a[4]>0x39)lcd_clock_a[4]=0x30;
               }
              else{
                  lcd_clock_a[4]--;
		              if(lcd_clock_a[4]<0x30)lcd_clock_a[4]=0x39;
               }
              set_clock[1]=((lcd_clock_a[3]-0x30)<<4)|(lcd_clock_a[4]-0x30);
              break;
         default:break;
      }
}*/

/*-----------------------------------------------------------------------/
函数名称:lcd_clock_set_flash()
功能:设置时钟
参数:设置的时钟,闪动标志
返回值:
/-----------------------------------------------------------------------*/
/*void lcd_clock_set_flash(unsigned char clock_set_type,unsigned char flag)
{
     switch (clock_set_type)
      {
         case lcd_house_set_hi://小时高位
              if(flag==0)lcd_clr_row(10,104,4,40,first_page);
              break;
         case lcd_house_set_lo://小时低位
              if(flag==0)lcd_clr_row(14,104,4,40,first_page);
              break;
         case lcd_minute_set_hi://分钟高位
              if(flag==0)lcd_clr_row(22,104,4,40,first_page);
              break;
         case lcd_minute_set_lo://分钟低位
              if(flag==0)lcd_clr_row(26,104,4,40,first_page);
              break;
         default:break;
      }
}*/

/*-----------------------------------------------------------------------/
函数名称:lcd_input_data()
功能:输入屏输出数据
参数:输入字模指针、输入数据指针
返回值:
/-----------------------------------------------------------------------*/
void lcd_input_data(const unsigned char *zimo,const unsigned char *in_data)
{
   unsigned char input_m=0;
   unsigned char input_i;
   unsigned char input_temp=0;
   if(LCD_fault()==0)return;
   lcd_bmp(16,9,4,32,2,zimo,0,zimode_left,zimode_right,first_page);
   lcd_line(0,51,40,first_page);
   lcd_line(0,52,40,first_page);
   for(input_i=0;input_i<16;input_i++){
   	  input_temp=in_data[input_i];
   	  for(input_m=0;input_m<8;input_m++){
   	  	  //input_temp=in_data[input_i];  	  	  
   	  	  if(((input_temp>>input_m)&0x01)==0){
   	  	  	  if(input_i%2==0){
   	  	  	  	 lcd_ascii_16x16(2*input_m+3+input_m/4,60+(input_i/2)*16,0,ascii_1616,4,zimode_left,zimode_right,first_page);
   	  	  	  	}
   	  	  	  else{
   	  	  	     lcd_ascii_16x16(2*input_m+21+input_m/4,60+(input_i/2)*16,0,ascii_1616,4,zimode_left,zimode_right,first_page);
   	  	  	    }
   	  	  	}
   	  	  else{
   	  	  	  if(input_i%2==0){
   	  	  	  	 lcd_ascii_16x16(2*input_m+3+input_m/4,60+(input_i/2)*16,1,ascii_1616,4,zimode_left,zimode_right,first_page);
   	  	  	  	}
   	  	  	  else{
   	  	  	     lcd_ascii_16x16(2*input_m+21+input_m/4,60+(input_i/2)*16,1,ascii_1616,4,zimode_left,zimode_right,first_page);
   	  	  	    }
   	  	  	}
   	  	}          
    }
}
/*-----------------------------------------------------------------------/
函数名称:lcd_output_data()
功能:输出屏输出数据
参数:输出字模指针、输出数据指针
返回值:
/-----------------------------------------------------------------------*/
void lcd_output_data(const unsigned char *zimo,const unsigned char *out_data)
{
   unsigned char output_m=0;
   unsigned char output_i;
   unsigned char output_temp=0;
   if(LCD_fault()==0)return;
   lcd_bmp(16,9,4,32,2,zimo,0,zimode_left,zimode_right,first_page);
   lcd_line(0,51,40,first_page);
   lcd_line(0,52,40,first_page);
   for(output_i=0;output_i<4;output_i++){
   	  output_temp=output_data[output_i];
   	  for(output_m=0;output_m<8;output_m++){
   	  	  //input_temp=in_data[input_i];  	  	  
   	  	  if(((output_temp>>output_m)&0x01)==0){
   	  	  	  if(output_i%2==0){
   	  	  	  	 lcd_ascii_16x16(2*output_m+3+output_m/4,60+(output_i/2)*16,0,ascii_1616,4,zimode_left,zimode_right,first_page);
   	  	  	  	}
   	  	  	  else{
   	  	  	     lcd_ascii_16x16(2*output_m+21+output_m/4,60+(output_i/2)*16,0,ascii_1616,4,zimode_left,zimode_right,first_page);
   	  	  	    }
   	  	  	}
   	  	  else{
   	  	  	  if(output_i%2==0){
   	  	  	  	 lcd_ascii_16x16(2*output_m+3+output_m/4,60+(output_i/2)*16,1,ascii_1616,4,zimode_left,zimode_right,first_page);
   	  	  	  	}
   	  	  	  else{
   	  	  	     lcd_ascii_16x16(2*output_m+21+output_m/4,60+(output_i/2)*16,1,ascii_1616,4,zimode_left,zimode_right,first_page);
   	  	  	    }
   	  	  	}
   	  	}          
    }
}
/*-----------------------------------------------------------------------/
函数名称:LCD_clock_to_ascii()
功能:将时钟转换为显示ascii码
参数:小时、分钟,存储缓存区
返回值:无
/-----------------------------------------------------------------------*/
void lcd_clock_to_ascii(unsigned char *c_real_clock,unsigned char *c_clock) 
{
 	 c_clock[0]=0x30+((c_real_clock[2]&0x3f)>>4);
   c_clock[1]=0x30+(c_real_clock[2]&0x0f);
   c_clock[3]=0x30+((c_real_clock[1]&0x7f)>>4);
   c_clock[4]=0x30+(c_real_clock[1]&0x0f);
}
/*-----------------------------------------------------------------------/
函数名称:LCD_rev_to_ascii()
功能:将总里程转换为显示ascii码
参数:总里程,存储缓存区
返回值:无
/-----------------------------------------------------------------------*/
void lcd_rev_to_ascii(unsigned long c_rev,unsigned char *c_rev_a)
{
   unsigned char km_temp[7]={0,0,0,0,0,0,0};
   unsigned long km_ing[7]={1000000,100000,10000,1000,100,10,1};
   char km_i;
   char km_flag=0;
   for(km_i=0;km_i<7;km_i++){
   	   km_temp[km_i]=(unsigned char)(c_rev/km_ing[km_i]);
   	   c_rev=c_rev%(km_ing[km_i]);
  	}
   for(km_i=0;km_i<6;km_i++){
  	 if((km_temp[km_i]==0)&&(km_flag==0))c_rev_a[km_i]=0x20;
  	 else{
  	   c_rev_a[km_i]=km_temp[km_i]+0x30;
  	   km_flag=1;
  	  }
  	}
   c_rev_a[6]=km_temp[6]+0x30; 
}
/*-----------------------------------------------------------------------/
函数名称:LCD_lich_to_ascii()
功能:将分里程转换为显示ascii码
参数:分里程,存储缓存区
返回值:无
/-----------------------------------------------------------------------*/
void lcd_lich_to_ascii(unsigned long c_lich,unsigned char *c_lich_a)
{
   unsigned char km_temp[5]={0,0,0,0,0};
   unsigned long km_ing[5]={100000,10000,1000,0x2d,100};
   char km_i;
   char km_flag=0;
   for(km_i=0;km_i<5;km_i++){
      if(km_i==3){         
         km_temp[km_i]=0x2e;
         km_i++;
       }
 	    km_temp[km_i]=(unsigned char)(c_lich/km_ing[km_i]);
 	    c_lich=c_lich%(km_ing[km_i]);
  	}
   for(km_i=0;km_i<2;km_i++){
  	 if((km_temp[km_i]==0)&&(km_flag==0))c_lich_a[km_i]=0x20;
  	 else{
  	   c_lich_a[km_i]=km_temp[km_i]+0x30;
  	   km_flag=1;
  	  }
  	}
   c_lich_a[2]=km_temp[2]+0x30;
   c_lich_a[3]=0x2e;
   c_lich_a[4]=km_temp[4]+0x30;
}
/*-----------------------------------------------------------------------/
函数名称:LCD_temp_to_ascii()
功能:将温度转换为显示ascii码
参数:温度值,存储缓存区
返回值:无
/-----------------------------------------------------------------------*/
void lcd_tempe_to_ascii(char c_tempe,unsigned char *c_tempe_a)
{
   unsigned char te_temp[3]={0,0,0};
   unsigned char te_ing[2]={10,1};
   char te_i;
   char te_flag=0;
   unsigned char te_mide;
   if(c_tempe<0)te_mide=0x100-(unsigned char)c_tempe;
   else te_mide=c_tempe;  
   for(te_i=0;te_i<2;te_i++){
   	   te_temp[te_i]=te_mide/te_ing[te_i];
   	   te_mide=te_mide%(te_ing[te_i]);
  	}
   if(c_tempe>=0){
      c_tempe_a[0]=0x20;
      c_tempe_a[1]=te_temp[0]+0x30;
      c_tempe_a[2]=te_temp[1]+0x30; 
    } 
   else{
      c_tempe_a[0]=0x2d;
      c_tempe_a[1]=te_temp[0]+0x30;
      c_tempe_a[2]=te_temp[1]+0x30;
    }
}
/*-----------------------------------------------------------------------/
函数名称:lcd_open_display()
功能:开机画面
参数:无
返回值:无
/-----------------------------------------------------------------------*/
void lcd_open_display(void)
{
	if(LCD_fault()==0)return;
	lcd_bmp(7,23,26,47,1,zgzq_o,0,zimode_left,zimode_right,first_page);
	lcd_bmp(2,90,35,49,1,ylpa,0,zimode_left,zimode_right,first_page);
}
/*-----------------------------------------------------------------------/
函数名称:lcd_inout_change(unsigned char *old_data,unsigned char new_data,unsigned char mode)
功能:输入、输出数据的改变
参数:无
返回值:无
/-----------------------------------------------------------------------*/
void lcd_inout_change(unsigned char *old_data,unsigned char 
                      *new_data,unsigned char mode)
{
  unsigned char in_i;
  unsigned char in_m;
  unsigned char in_n;
  unsigned char old_data_temp=0;
  unsigned char new_data_temp=0;
  if(LCD_fault()==0)return;
  if(mode==in_mode) in_n=16;
  else if(mode==out_mode) in_n=4;
  for(in_i=0;in_i<in_n;in_i++){
	  if(new_data[in_i]!=old_data[in_i]){
	  	  old_data_temp=old_data[in_i];
	  	  new_data_temp=new_data[in_i];
	  	  for(in_m=0;in_m<8;in_m++){
	  	  	  if(((old_data_temp>>in_m)&0x01)!=((new_data_temp>>in_m)&0x01)){
	  	  	  	  if((new_data_temp>>in_m)&0X01==0){
	  	  	  	  	  if(in_i%2==0){
			   	  	  	  	 lcd_ascii_16x16(2*in_m+3+in_m/4,60+(in_i/2)*16,0,ascii_1616,4,zimode_left,zimode_right,first_page);
			   	  	  	  	}
			   	  	  	  else{
			   	  	  	     lcd_ascii_16x16(2*in_m+21+in_m/4,60+(in_i/2)*16,0,ascii_1616,4,zimode_left,zimode_right,first_page);
			   	  	  	    } 
	  	  	  	  	}
	  	  	  	  else{
	  	  	  	      if(in_i%2==0){
			   	  	  	  	 lcd_ascii_16x16(2*in_m+3+in_m/4,60+(in_i/2)*16,1,ascii_1616,4,zimode_left,zimode_right,first_page);
			   	  	  	  	}
			   	  	  	  else{
			   	  	  	     lcd_ascii_16x16(2*in_m+21+in_m/4,60+(in_i/2)*16,1,ascii_1616,4,zimode_left,zimode_right,first_page);
			   	  	  	    }
	  	  	  	    }
	  	  	  	    	
	  	  	  	}
	  	  	}
	  	  old_data[in_i]=new_data[in_i];	  	  	  	  
	   }	   
	 }
}

⌨️ 快捷键说明

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