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

📄 lcd_b.h

📁 客车车身控制模块 分为仪表部分 前控左 前控右 尾控和中控程序模块
💻 H
📖 第 1 页 / 共 2 页
字号:
}

/****************************************************************************************
//函数:  void DispHLine()
//描述:  显示横线
//参数:  none
//返回值:none
*****************************************************************************************/
/*void DispHLine()
{
  unsigned char i,j;
  //writeMI(0x3f);writeSI(0x3f);//显示器开
  //writeMI(0xB8);writeSI(0xB8);//设置DDRAM中的页地址(X地址) 
  //writeMI(0xc0);writeSI(0xc0);//设置显示起始行              
  //writeMI(0x40);writeSI(0x40);//设置DDRAM中的地址(Y地址) 
  for(j=0;j<8;j++)
  {
    writeMI(0xB8+j);writeSI(0xB8+j);//设置DDRAM中的页地址(X地址)
    writeMI(0x40);writeSI(0x40);//设置DDRAM中的地址(Y地址)
    // write_com(Start_Line+0);
    for(i=0;i<64;i++) 
    {
      writeMD(0x00);writeSD(0x00);
      writeMD(0x00);writeSD(0x00);
    }
  }
}
*/
/****************************************************************************************
//函数:  void DispVLine()
//描述:  显示竖线
//参数:  none
//返回值:none
*****************************************************************************************/
/*void DispVLine()
{
  unsigned char i,j;
  //writeMI(0x3f);writeSI(0x3f);//显示器开
  //writeMI(0xB8);writeSI(0xB8);//设置DDRAM中的页地址(X地址) 
  //writeMI(0xc0);writeSI(0xc0);//设置显示起始行              
  //writeMI(0x40);writeSI(0x40);//设置DDRAM中的地址(Y地址) 
  for(j=0;j<8;j++)
  {
    writeMI(0xB8+j);writeSI(0xB8+j);//设置DDRAM中的页地址(X地址)
    writeMI(0x40);writeSI(0x40);//设置DDRAM中的地址(Y地址)
    writeMI(0xc0);writeSI(0xc0);//设置显示起始行
    for(i=0;i<32;i++)
    {
      writeMD(0x00);writeSD(0x00);
      writeMD(0x55);writeSD(0x55);
     }
   }
}
*/
/****************************************************************************************
//函数:  void hzdisp16(unsigned char pag,unsigned char col, unsigned char *hzk)
//描述:  指定位置显示汉字16*16
//参数: 
//返回值:none
*****************************************************************************************/
void hzdisp16(unsigned char pag,unsigned char col,const unsigned char *hzk)
{
  unsigned char j=0,i=0;
  for(j=0;j<2;j++)
  {
    if(col<64) 
    {  
      writeMI(0xB8+pag+j);
      writeMI(0x40+col);
      for(i=0;i<16;i++) writeMD(hzk[16*j+i]);
    } 
    else 
    {
      writeSI(0xB8+pag+j);
      writeSI(0x40+col-64);
      for(i=0;i<16;i++) writeSD(hzk[16*j+i]);
    }
  }
}

/****************************************************************************************
//函数:  void zfdisp8(unsigned char pag,unsigned char col,const unsigned char *zfk)
//描述:  指定位置显示字符16*8
//参数: 
//返回值:none
*****************************************************************************************/
void zfdisp8(unsigned char pag,unsigned char col,const unsigned char *zfk)
{
  unsigned char j, i=0;
  for(j=0;j<2;j++)//写两行
  {
    if(col<64)//左边
    {  
      writeMI(0xB8+pag+j);
      writeMI(0x40+col);
      for(i=0;i<8;i++) writeMD(zfk[8*j+i]);
    } 
    else//右边
    {
      writeSI(0xB8+pag+j);
      writeSI(0x40+col-64);
      for(i=0;i<8;i++) writeSD(zfk[8*j+i]);
    }
  }
}

/***************************************************************************************
//函数:  void display(unsigned char word,unsigned char layer, unsigned char width,unsigned char *array)
//描述:  液晶显示 汉字
//参数:  word-列地址 layer-页地址	 width-宽 array-字模数组
//返回值:none
***************************************************************************************/
/*void display(unsigned char word,unsigned char layer, unsigned char width,unsigned char  *array)
{
  unsigned char  x;
  unsigned char  k=16 ;    
  unsigned char address;//address表示显存的物理地址
  unsigned char  p=0;            
  unsigned char  page;
  page=layer;
    
  address=64-(word*16)/2;
  
  writeMI(0xB8|page);//主控制器发页地址
  writeMI(address);//主控制器发窗口地址
  for(x=0;x<=width/2;x++)
  {     
     if(k--)
     { 
        writeMD(array[p]);// (左-- 上)层数据输出
        p++;
     }
     else 
     {
        k=16;
        p=p+16;
     }     
  }
  
  writeSI(0xB8|page);//从控制器发页地址
  writeSI(0x40);//从控制器发窗口地址
  for(x=0;x<=width/2;x++)
  { 
     if(k--)
     { 
        writeSD(array[p]);//(右--上)层数据输出                  
        p++;
     }
     else 
     {
        k=16;
        p=p+16;
     }
  }     
}
*/


/****************************************************************************************
//函数: void distimfrm()
//描述: 显示时间框
//参数:  none
//返回值:none
*****************************************************************************************/
void dis_timfrm()
{
   unsigned char i,j;
   for(i=0;i<4;i++)
   {
     writeMI(0xB8+i+4);//定位页
     writeMI(0x40+40);//定位列
     for(j=0;j<24;j++) writeMD(nBitmapTime[24*i+j]);
    
     writeSI(0xB8+i+4);//定位页
     writeSI(0x40);//定位列
     for(j=0;j<24;j++) writeSD(nBitmapTime[24*(i+4)+j]);
   }
}
/****************************************************************************************
//函数: void dis_timpos()
//描述: 显示时间分隔
//参数:  none
//返回值:none
*****************************************************************************************/
void dis_timpos()
{
   unsigned char i,j;
   for(i=0;i<2;i++)//写两页
   {
     writeMI(0xB8+i+5);//定位页
     writeMI(0x40+60);//定位列
     for(j=0;j<4;j++) writeMD(nTimePos[4*i+j]);
   }
}


//*******************************************************
//函数:  dis_date()
//描述:  显示数字
//参数:  pag-显示地址 col-显示列 tim_data-显示的数字
//返回值:none
//*******************************************************
void dis_date(unsigned char pag,unsigned char col,unsigned char tim_data)
{
  switch(tim_data)
  {
    case 0:zfdisp8(pag,col,ziku1);break;			//0
	  case 1:zfdisp8(pag,col,ziku2);break;			//1
	  case 2:zfdisp8(pag,col,ziku3);break;			//2
	  case 3:zfdisp8(pag,col,ziku4);break;			//3
	  case 4:zfdisp8(pag,col,ziku5);break;			//4
	  case 5:zfdisp8(pag,col,ziku6);break;			//5
	  case 6:zfdisp8(pag,col,ziku7);break;			//6
	  case 7:zfdisp8(pag,col,ziku8);break;			//7
	  case 8:zfdisp8(pag,col,ziku9);break;			//8
	  case 9:zfdisp8(pag,col,ziku10);break;		  //9
	  default:zfdisp8(pag,col,ziku316);break;
  }
}

//*******************************************************
//函数:  lcd_clock()
//描述:  显示时钟初始化,显示	00:00
//参数:  none
//返回值:none
//*******************************************************
void lcdclock()
{				 
//  zfdisp8(5,44,ziku1);
//  zfdisp8(5,52,ziku1);
  min=lcd_min;
  dis_date(5,76,(unsigned char)(min%10));//分钟低位
  dis_date(5,68,(unsigned char)(min/10));//分钟高位
  dis_timpos();//时间分隔
  //zfdisp8(5,68,ziku1);
  //zfdisp8(5,76,ziku1);
  hour=lcd_hour;
  dis_date(5,52,(unsigned char)(hour%10));//小时低位
  dis_date(5,44,(unsigned char)(hour/10));//小时高位
}
//*******************************************************
//函数:  void lcd_clock_flash(void)
//描述:  时间刷新
//参数:  none
//返回值:none
//*******************************************************
void lcd_clock_flash(void)
{	
  if(modify_time_flag==0)//未进入调时状态
  {
    	if(lcd_min!=min)
    	{ 
    		min=lcd_min;
    		dis_date(5,76,(unsigned char)(min%10));
    		dis_date(5,68,(unsigned char)(min/10));
            
            
           //闪烁控制 1s钟一次
    	   //if(flash) 
    	    //{
    		  //zfdisp8(5,92,ziku38); 
    	   // } 
    	    //else 
    	    //{
    		  //zfdisp8(5,92,ziku300);
    	    //}
    	    //flash=!flash; 
    	}
      if(lcd_hour!=hour)
    	{ 
    		hour=lcd_hour;
    		dis_date(5,52,(unsigned char)(hour%10));
    		dis_date(5,44,(unsigned char)(hour/10));
    	}
      }
}
/*
uint temp_licheng0=0;
void lcd_clock_flash(void)
{	
  		//temp_licheng0=(uint)(licheng/1000);
  		//temp_licheng1=licheng/1000;
  		
    	if(temp_licheng0!=temp_licheng)
    	{ 
    		temp_licheng0=temp_licheng;
    		dis_date(5,76,(unsigned char)(temp_licheng0%1000%100%10));
    		dis_date(5,68,(unsigned char)(temp_licheng0%1000%100/10));
    		dis_date(5,52,(unsigned char)(temp_licheng0%1000/100));
    		dis_date(5,44,(unsigned char)(temp_licheng0/1000));
    	}
}*/
/*
void LCD_CLOCK(void) 
{
	if(!clock_change){
	if(minl!=minl0||minh!=minh0)
	{ 
	  minl0=minl;
	  minh0=minh;
	  if(minl!=(lcd_min%10))				//分钟低位
	  {
		  minl=(unsigned char)(lcd_min%10);
		  dis_date(5,80,minl);
	  }
	  if(minh!=(lcd_min/10))				//分钟高位
	  {
		  minh=(unsigned char)(lcd_min/10);
		  dis_date(5,72,minh);
	  }
	}
	if(hourl!=hourl0||hourh!=hourh0)
	{
	  hourl0=hourl;
	  hourh0=hourh;
	  if(hourl!=(lcd_hour%10))			//小时低位
	  {
		  hourl=(unsigned char)(lcd_hour%10);
		  dis_date(5,52,hourl);
	  }
	  if(hourh!=(lcd_hour/10))			//小时高位
	  {
	  	hourh=(unsigned char)(lcd_hour/10);
		  dis_date(5,44,hourh);
	  }
	}
	}
}*/
/**************************************************************************************
//函数:  void lcdinitial(void)  
//描述:  初始化程序
//参数:  none
//返回值:none
***************************************************************************************/
void init_lcd(void)            
{ 
  RST=1;PTG=0;
  LCD_DDR=0xff;
  LCD_DATA=0;

  writeMI(0x3f);writeSI(0x3f);//显示器开   
  //writeMI(0x3e);writeSI(0x3e);//显示器关   
  writeMI(0xc0);writeSI(0xc0);//设置显示起始行
  writeMI(0xB8);writeSI(0xB8);//设置DDRAM中的页地址(X地址)
  writeMI(0x40);writeSI(0x40);//设置DDRAM中的地址(Y地址)
  Clr_LCD();
  //显示器清屏
  
  //dis_timfrm();					
  lcdclock();
  //时间外框和时间初始化
}

//////////////////////////////////////
/*void DIS_LCD(unsigned char dis_data)
{
	unsigned char	lcd_page=0;
	unsigned char	lcd_count=0;
	for(lcd_page=0;lcd_page<8;lcd_page++)
	{
		writeSI(0XB8+lcd_page);
		writeSI(0X40);

		writeMI(0XB8+lcd_page);
		writeMI(0X40);

		for(lcd_count=0;lcd_count<64;lcd_count++)
		{
			writeSD(dis_data);
			writeMD(dis_data);
		}
	}
}
*/
/**************************************************************************************
//函数:  void lcdbutton(void)  
//描述:  初始化程序
//参数:  none
//返回值:none
***************************************************************************************/
void lcdbutton(void) 
{
   if(modify_time_flag)//正在进行时间调整 
   {
   		minl=(unsigned char)(lcd_min%10);
   		minh=(unsigned char)(lcd_min/10);
   		hourl=(unsigned char)(lcd_hour%10);
   		hourh=(unsigned char)(lcd_hour/10);
   		
   		if(timer_button_change)//时间调整按键变化
   		{
   		   timer_button_change=0;
   		   if(timer_bit_change) 
   		   {
   		      //timer_bit_change=0;
   		      clock_count0++;//判断变化次数
   		      clock_count0=clock_count0%4;
   		   } 
   		   else if(timer_add_change) 
   		   {
   		      //timer_add_change=0;
   		      if(clock_count0==1)//分钟低位 
   		      {
   		        minl++;
   		        minl=(unsigned char)(minl%10);
   		        dis_date(5,76,20);
   		        dis_date(5,76,minl);
   		      }
   		      if(clock_count0==2)//分钟高位 
   		      {
   		        minh++;
   		        minh=(unsigned char)(minh%6);
   		        dis_date(5,68,20);
   		        dis_date(5,68,minh);
   		      }
   		      if(clock_count0==3)//小时低位 
   		      {
   		        hourl++;
   		        hourl=(unsigned char)(hourl%10);
   		        dis_date(5,52,20);
   		        dis_date(5,52,hourl);
   		      }
   		      if(clock_count0==0)//小时高位 
   		      {
   		        hourh++;
   		        hourh=(unsigned char)(hourh%3);
   		        dis_date(5,44,20);
   		        dis_date(5,44,hourh);
   		      }
   		      lcd_min=minl+10*minh;
            lcd_hour=hourl+hourh*10;
   		   }
   		}
   		if(timer_button_change==0)//闪烁 
   		{
     		++clock_change;
        if(clock_change%10==0) 
        {
           switch(clock_count0) 
           {
              case 1://分钟低位 
              {
                 dis_date(5,44,hourh);
                 dis_date(5,52,hourl);
                 dis_date(5,68,minh);
                 //dis_date(5,76,minl);
                 if(flash) 
                	{
                 		 dis_date(5,76,minl);
                 	} 
                 	else 
                 	{
                     dis_date(5,76,20);
                  }
                  flash=!flash;
              }
              break;
              case 2://分钟高位 
              {
                  dis_date(5,44,hourh);
                   dis_date(5,52,hourl);
                   //dis_date(5,68,minh);
                   dis_date(5,76,minl);
                  if(flash) 
                  {
                 	   dis_date(5,68,minh);
                  } 
                  else 
                  {
                  	 dis_date(5,68,20);
                  }
                  flash=!flash;
             	}
             	break;
             	case 3://小时低位 
             	{
             	   dis_date(5,44,hourh);
                 //dis_date(5,52,hourl);
                 dis_date(5,68,minh);
                 dis_date(5,76,minl);
             	  	if(flash) 
                 	{
                 		 dis_date(5,52,hourl);
                 	} 
                 	else 
                 	{
                 		 dis_date(5,52,20);
                 	}
                 	flash=!flash;
              }
             	break;
              case 0://小时高位 
             	{
                 //dis_date(5,44,hourh);
                 dis_date(5,52,hourl);
                 dis_date(5,68,minh);
                 dis_date(5,76,minl);
                 if(flash) 
                 {
                  	 dis_date(5,44,hourh);
                 } 
                 else 
                 {
                 		 dis_date(5,44,20);
                 }
                 flash=!flash;
              }
             	break;
           }//end if switch
        } 
   		}
   }
   
}

⌨️ 快捷键说明

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