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

📄 lcd.c

📁 240128液晶底层驱动以及键盘操作编写菜单
💻 C
📖 第 1 页 / 共 5 页
字号:
	   LCM_Y=LCM_Y+16;
	   i=0;
	   LCD_Write_Funtion(0x60,LCM_X) ;//地址定位
       LCD_Write_Funtion(0x70,LCM_Y) ;//地址定位  
	 }	
    LCD_Write_Dat(x_data);
	i++;    
   }
}
//////////////////纵向写不规则字符串函数 /////////////////////////////////
void V_Write_abnormity_string(uchar LCM_X,uchar LCM_Y,uchar x_data,uchar number)//LCM_X的范围是0-29//写汉字时应该为偶数,写字符串时无限制/////////////////
{                             ////////LCM_Y的范围是0-127/////uchar x_data是不规则字符的ASCII码////uchar number是不规则字符的个数//
  uchar j;
 // uchar i=0;
  LCD_Write_Funtion(0x00,0xCD);//文本模式
  LCD_Write_Funtion(0x10,0x61);//写光标不自动移位//光标不显示//光标不闪烁//自适应宽度//
  LCD_Write_Funtion(0xF0,0xA4);//ASII区块0////所有输入的数据都以ASII解码////
  LCD_Write_Funtion(0x60,LCM_X);//地址定位
  LCD_Write_Funtion(0x70,LCM_Y);//地址定位  
  for(j=0;j<number;j++)////利用数组最后有空格作为信息结束的判断/////
   { 
 //     if((LCM_Y+16*j)>=128)
//	  {   
 //      LCM_Y=0;
//	   i=0;
//	  }
	   LCD_Write_Funtion(0x60,LCM_X) ;//地址定位
       LCD_Write_Funtion(0x70,LCM_Y+16*j) ;//地址定位    
	   //LCM_Y=LCM_Y+16;	  
       LCD_Write_Dat(x_data);
	//i++;    
   }
}
/*
///////////////写字符串函数//////////////////////////////////// 
void LCD_Write_string(uchar LCM_X,uchar LCM_Y,uchar *ptr,bit g)
{
  uchar i=0;
  LCD_Write_Funtion(0x00,0xCD);//文本模式//// 
  if(g==0)  LCD_Write_Funtion(0x10,0x69);//写光标自动移位//光标不显示//光标不闪烁//自适应宽度//
   else     LCD_Write_Funtion(0x10,0x6f);//写光标自动移位//光标显示//光标闪烁//自适应宽度//
  while (*ptr != '%')////利用数组最后有空格作为信息结束的判断/////
   { 
    if((LCM_X+i)>=30)
	 {
	   LCM_X=0;
	   i=0;	
	   LCM_Y=LCM_Y+16;	     
	 }	
	LCD_Write_Funtion(0x60,LCM_X+i++);//地址定位
    LCD_Write_Funtion(0x70,LCM_Y);//地址定位 
    LCD_Write_Dat(*ptr++);
   }
}
/////////////////写汉字函数///////////////////////////////////
void LCD_Write_word(uchar LCM_X,uchar LCM_Y,uchar *ptr,bit g)
{
  uchar i=0;
  LCD_Write_Funtion(0x00,0xCD);//文本模式//// 
  if(g==0)  LCD_Write_Funtion(0x10,0x69);//写光标自动移位//光标不显示//光标不闪烁//自适应宽度//
   else     LCD_Write_Funtion(0x10,0x6f);//写光标自动移位//光标显示//光标闪烁//自适应宽度//
  while (*ptr != '%')////利用数组最后有空格作为信息结束的判断/////
   { 
    if((LCM_X+i*2)>=30)
	 {
	   LCM_X=0;
	   LCM_Y=LCM_Y+16;
	   i=0;	  
	 }	
	LCD_Write_Funtion(0x60,LCM_X+2*(i++)) ;//地址定位
    LCD_Write_Funtion(0x70,LCM_Y) ;//地址定位 
    LCD_Write_Dat(*ptr++);
	LCD_Write_Dat(*ptr++);    
   }
}
*/
//////////图片显示函数 ///////////////////
void LCD_Disp_Graphics(uchar *ptr)
{
  uchar i,j;
  LCD_Write_Funtion(0x00,0xC5); //图形模式
  LCD_Write_Funtion(0x10,0x61);//写光标bu自动移位//光标不显示//光标不闪烁//自适应宽度//
  LCD_Write_Funtion(0x12,0x91);//显示层设定:高位8灰度,9水平单一层,A单二层,B同时一二层
  for(i=0;i<128;i++)/////共16//////
   {
    for(j=0;j<30;j++)
 	{
     LCD_Write_Funtion(0x60,j);//地址定位
     LCD_Write_Funtion(0x70,i);//地址定位
	 LCD_Write_Dat(*ptr++); //////连续写入数据/////      	
	} 	    
   }  
}
//////////图形层单边框显示函数 ///////////////////
void LCD_Disp_Frame_S(void)
{
  uchar i,j;
  LCD_Write_Funtion(0x00,0xC5); //图形模式
  LCD_Write_Funtion(0x10,0x61);//写光标bu自动移位//光标不显示//光标不闪烁//自适应宽度//
  LCD_Write_Funtion(0x12,0x91);//显示层设定:高位8灰度,9水平单一层,A单二层,B同时一二层
  for(j=0;j<30;j++)////水平30个字节宽//
 	{
     LCD_Write_Funtion(0x60,j);//地址定位
     LCD_Write_Funtion(0x70,127);//地址定位
	 LCD_Write_Dat(0xFF); ////连续写入数据/////       	
	} 	    
  for(j=0;j<30;j++)////水平30个字节宽//
 	{
     LCD_Write_Funtion(0x60,j);//地址定位
     LCD_Write_Funtion(0x70,16);//地址定位
	 LCD_Write_Dat(0xFF); ////连续写入数据/////    	
	}
////////////////////////////////////////////////////////////////
     LCD_Write_Funtion(0x60,0);//地址定位
     LCD_Write_Funtion(0x70,16);//地址定位
	 LCD_Write_Dat(0xFF); ////连续写入数据/////    /  	    
  for(i=1;i<111;i++)/////垂直共128行//////
   {
     LCD_Write_Funtion(0x60,0);//地址定位
     LCD_Write_Funtion(0x70,i+16);//地址定位
	 LCD_Write_Dat(0x80); //////连续写入数据/////      	
   } 
     LCD_Write_Funtion(0x60,0);//地址定位
     LCD_Write_Funtion(0x70,127);//地址定位
	 LCD_Write_Dat(0xFF); //////连续写入数据/////    
////////////////////////////////////////////////////////////////
     LCD_Write_Funtion(0x60,29);//地址定位
     LCD_Write_Funtion(0x70,16);//地址定位
	 LCD_Write_Dat(0xFF); //////连续写入数据/////    
 for(i=1;i<111;i++)/////垂直共128行//////
   {
     LCD_Write_Funtion(0x60,29);//地址定位
     LCD_Write_Funtion(0x70,i+16);//地址定位
	 LCD_Write_Dat(0x01); //////连续写入数据/////        	
   } 
     LCD_Write_Funtion(0x60,29);//地址定位
     LCD_Write_Funtion(0x70,127);//地址定位
	 LCD_Write_Dat(0xFF); //////连续写入数据/////    
////////////////////////////////////////////////////////// 
}

//////////文本层双边框显示函数 ///////////////////
void LCD_Disp_Frame_D(void)
{
 H_Write_abnormity_string(0,16,0xC9,1);
 H_Write_abnormity_string(1,16,0xCD,28);
 H_Write_abnormity_string(29,16,0xBB,1);

 V_Write_abnormity_string(0,32,0xBA,5);
 V_Write_abnormity_string(29,32,0xBA,5);

 H_Write_abnormity_string(0,112,0xC8,1);
 H_Write_abnormity_string(1,112,0xCD,28);
 H_Write_abnormity_string(29,112,0xBC,1);
}

////////////开机状态界面函数///////////////////////////////
void Disp_Start(void)
{
 LCD_Write_word(0,32,"北京电通伟业电子设备有限公司%",0);//头标//
 //LCD_Disp_Frame_D();
 LCD_Write_word(10,64,"DT126-8000%",0);
 LCD_Write_word(4,96,"多相位系统交通信号机%",0);
 
} 
////////////1号界面函数///////////////////////////////
void Disp_interface_1(void)
{
 LCD_Write_word(0,0,"* 北京电通伟业电子设备有限公司%",0);//头标//
 //LCD_Disp_Frame_D();
 LCD_Write_word(2,16,"==> 1)  目  前  现  况%",0);
 LCD_Write_word(2,32,"    2)  基  本  资  料%",0);
 LCD_Write_word(2,48,"    3)  日  时  方  案%",0);
 LCD_Write_word(2,64,"    4)  配  时  方  案%",0);
 LCD_Write_word(2,80,"    5)  感  应  方  案%",0);
 LCD_Write_word(2,96,"    6)  特  殊  控  制%",0);
 LCD_Write_word(2,112,"--------[UP]  [DOWN]------%",0);
 LCD_Disp_Frame_S();
} 
////////////11号界面函数///////////////////////////////
void Disp_interface_11(void)
{
 LCD_Write_word(0,0,"* 北京电通伟业电子设备有限公司%",0);//头标//
 //LCD_Disp_Frame_D();
 LCD_Write_word(2,16,"    5)  感  应  方  案%",0);
 LCD_Write_word(2,32,"    6)  特  殊  控  制%",0);
 LCD_Write_word(2,48,"==> 7)  相  位  排  序%",0);
 LCD_Write_word(2,64,"    8)  公  用  功  能%",0);
 LCD_Write_word(2,80,"    9)  通  讯  传  输%",0);
 LCD_Write_word(2,96,"    A)  系  统  检  测%",0);
 LCD_Write_word(2,112,"--------[UP]  [DOWN]------%",0);
 LCD_Disp_Frame_S();
}
////////////2号界面函数///////////////////////////////
void Disp_interface_2(void)
{
 LCD_Write_word(0,0,"* 北京电通伟业电子设备有限公司%",0);//头标//
 //LCD_Disp_Frame_D();
 LCD_Write_word(2,16,"==> 1)  现行日时方案状况%",0);
 LCD_Write_word(2,32,"    2)  现行控制方案状况%",0);
 LCD_Write_word(2,48,"    3)  现行输入信号状况%",0);
 LCD_Write_word(2,64,"    4)  现行硬件检测状况%",0);
 LCD_Write_word(2,80,"    5)  硬件状态发生记录%",0);
 LCD_Write_word(2,96,"    6)  控制模式发生记录%",0);
 LCD_Write_word(2,112,"--------[UP]  [DOWN]------%",0);
 LCD_Disp_Frame_S();
}
////////////3号界面函数///////////////////////////////
void Disp_interface_3(void)
{
 LCD_Write_word(0,0,"* 北京电通伟业电子设备有限公司%",0);//头标//
 //LCD_Disp_Frame_D();
 LCD_Write_word(2,16,"    2)  现行控制方案状况%",0);
 LCD_Write_word(2,32,"    3)  现行输入信号状况%",0);
 LCD_Write_word(2,48,"    4)  现行硬件检测状况%",0);
 LCD_Write_word(2,64,"    5)  硬件状态发生记录%",0);
 LCD_Write_word(2,80,"    6)  控制模式发生记录%",0);
 LCD_Write_word(2,96,"==> 7)  查询50Hz状态%",0);
 LCD_Write_word(2,112,"--------[UP]  [DOWN]------%",0);
 LCD_Disp_Frame_S();
}
////////////4号界面函数///////////////////////////////
void Disp_interface_4(uint *ptr)
{
 LCD_Write_word(0,0,"* 北京电通伟业电子设备有限公司%",0);//头标//
 LCD_Write_word(2,16,"现行型态[  ]  周期长度[   ]%",0);
 LCD_Write_word(2,32,"现行时段[  ]  相位差..[   ]%",0);
 LCD_Write_word(2,48,"配时方案[  ]  相位控制.[  ]%",0);
 LCD_Write_word(2,64,"感应方案[  ]  相位数....[ ]%",0);
 LCD_Write_word(2,80,"相  行  行行绿  黄红短  长%",0);
 LCD_Write_word(2,96,"位  绿  闪红闪  灯灯绿  绿%",0);

⌨️ 快捷键说明

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