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

📄 lcd.c

📁 在cygnal020开发板下的lcd(菜单)部分显示程序设计
💻 C
📖 第 1 页 / 共 3 页
字号:
       Send_Instr (0x0C);	//显示状态:整体显示 游标
	   DelayX50us (2) ;
       Send_Instr (0x80);	//设定DDRAM位置:AC=80H
       DelayX50us (2) ;
  }

/////////////////////////////////////////////////////////////////////////////////
// 函数介绍: 监控量显示第一屏
// 输入参数: 无
// 返回值 :  无
void Monitor_Data(void)
{ UINT8 j,i;
  Init_Lcd();    
  Send_Instr (Lcd_1);	
  DelayX50us (2) ;
  for(i=0;i<Menu_Word_Num;i++)
  {	   	j=Display_Data[2][0][i];
        Send_Data(j);
		DelayX50us (2);
  }
  Data_Char(DBYTE[0X18]);
  Line34_Data(0x85);
  Send_Instr (Lcd_2);	
  DelayX50us (2) ;
 /* for(i=0;i<Menu_Word_Num;i++)
  {	   	j=Display_Data[3][0][i];
        Send_Data(j);
		DelayX50us (2);
  }
  Data_Char(DBYTE[0X8f]);
  Line34_Data(0x95);
  Send_Instr (Lcd_3);	
  DelayX50us (2) ;
  for(i=0;i<Menu_Word_Num;i++)
  {	   	j=Display_Data[4][0][i];
        Send_Data(j);
		DelayX50us (2);
  }
  Data_Char(DBYTE[0X90]);
  Line34_Data(0x8c);
  Send_Instr (Lcd_4);	
  DelayX50us (2) ;
  for(i=0;i<Menu_Word_Num;i++)
  {	   	j=Display_Data[5][0][i];
        Send_Data(j);
		DelayX50us (2);
  }
  Data_Char(DBYTE[0X91]);
  Line34_Data(0x9c); */
  while(!Push_C)
    {if(Push_D==1)
	   {Push_D=0;Monitor2_Data();}
     } 
Push_C =0;
Clr_Disply( );
}
/////////////////////////////////////////////////////////////////////////////////
// 函数介绍: 监控量显示第二屏
// 输入参数: 无
// 返回值 :  无
void Monitor2_Data(void)
{ UINT8 j,i;
  Clr_Disply( );
  Send_Instr (Lcd_1);	
  DelayX50us (2) ;
  for(i=0;i<Menu_Word_Num;i++)
  {	   	j=Display_Data[6][0][i];
        Send_Data(j);
		DelayX50us (2);
  }
  Data_Char(DBYTE[0X92]);
  Line34_Data(0x85);
  Send_Instr (Lcd_2);	
  DelayX50us (2) ;
  for(i=0;i<Menu_Word_Num;i++)
  {	   	j=Display_Data[7][0][i];
        Send_Data(j);
		DelayX50us (2);
  }
  Data_Char(DBYTE[0X93]);
  Line34_Data(0x95);
  Send_Instr (Lcd_3);	
  DelayX50us (2) ;
  for(i=0;i<Menu_Word_Num;i++)
  {	   	j=Display_Data[8][0][i];
        Send_Data(j);
		DelayX50us (2);
  }
  Data_Char(DBYTE[0X94]);
  Line34_Data(0x8c);
  Send_Instr (Lcd_4);	
  DelayX50us (2) ;
  for(i=0;i<Menu_Word_Num;i++)
  {	   	j=Display_Data[9][0][i];
        Send_Data(j);
		DelayX50us (2);
  }
  Data_Char(DBYTE[0X95]);
  Line34_Data(0x9c);
  while(!Push_D)
   	   {;}
  Screen_Logo(); 
  Push_D=0;
 }

/***************************结束 初始化LCD ********************************/
/***************************开始 数组下标超限 ********************************/

void Over_Limit_Fun()  /*Menu_Y_Num,Menu_X_Num*/                        
{	if(Menu_Y_Num<1)
	{	Menu_Y_Num=Menu_Row_Num;
		while(Menu_Data[Menu_X_Num][Menu_Y_Num][0]==' ')
		{	 Menu_Y_Num--;}
	}
	else if(Menu_Data[Menu_X_Num][Menu_Y_Num][0]==' ')
	{	Menu_Y_Num=1;}
}
/***************************结束 数组下标超限 ********************************/
/***************************开始 数据字符转换 ********************************/
// 函数介绍: 数据字符转换
// 输入参数: Conver_Data  (8位16进制数转换数据)
// 返回值 :  Conver_Fdata1(个位),Conver_Fdata2(十位),Conver_Fdata3(百位)(8位16进制数)
void  Data_Char(UINT16 Conver_Data)
  {	if(Conver_Data>=10&&Conver_Data<100)  //两位数分解为十位和个位
     { Conver_Fdata2=(Conver_Data/10)+0x30; //十位
	   Conver_Fdata1=(Conver_Data%10)+0x30; //个位
	   Conver_Fdata3=0x30;
	  }
	 else if(Conver_Data>=100)   //三位数分解为百位、十位和个位
	  { Conver_Fdata3=(Conver_Data/100)+0x30; //百位
	    Conver_Fdata2=((Conver_Data/10)%10)+0x30;	//	 十位
	    Conver_Fdata1=(Conver_Data%10)+0x30; //个 位
	   }
	   else
	     {Conver_Fdata1=Conver_Data+0x30;
		  Conver_Fdata2=0x30;
		  Conver_Fdata3=0x30;
		 }
  }
/***************************结束 数据字符转换 ********************************/

/***************************开始 主程序 ********************************/
  void   main ()
{ UINT8   i=0;
  SP=0x30;
  Init_Device( );
  Init_Lcd(); 
  for(i=0;i<223;i++)
  {DBYTE[0X20+i]=0x00;}
  EA=1;
  ET0=1;
  TR0=1;
  */while(1)
 	  {  
//*******************************开始  一级菜单*******************************//	  
	  Lcd_Revers(Lcd_REVERS_1);	 
	  while(Push_D==0)
		  {	   
		       Send_Line_Data(Lcd_1,Menu_X_Num,0);	  //送显第一行
		  	   if(Push_L==1)
			     {Push_L=0;Menu_X_Num--;}
				else if (Push_R==1)
				  {Push_R=0;Menu_X_Num++;}
				  else if(Push_U==1)
					{Push_U=0;Menu_X_Num=1;Menu_Y_Num=0;Monitor_Data();
				     Lcd_Revers(Lcd_REVERS_1);
					 }
		   	   if(Menu_X_Num<1)   {Menu_X_Num=Menu_Line_Num;}
			   if(Menu_X_Num>Menu_Line_Num)   {Menu_X_Num=1;}
		   }
	  Push_D=0;
	  Lcd_Revers(Lcd_REVERS_1);						
//*********************************结束 一级菜单*******************************//
//*******************************开始  二级菜单*******************************//	  
    Lcd_Revers(Lcd_REVERS_2);	  
	  while(Push_U==0)
		   {   Send_Line_Data(Lcd_2,Menu_X_Num,Menu_Y_Num);
		  	   if(Push_L==1)
			     {Push_L=0;Menu_Y_Num--;}
				else if (Push_R==1)
				  {Push_R=0;Menu_Y_Num++;}
				  else if(Push_D==1)
					{Push_D=0;
					 Lcd_Revers(Lcd_REVERS_2);
					 Process_Fun(Menu_X_Num,Menu_Y_Num);
					 Lcd_Revers(Lcd_REVERS_2);
					 }
		   	   Over_Limit_Fun();
		   }
	    Push_U=0;
		Lcd_Revers(Lcd_REVERS_2); 
	    Send_Line_Data(Lcd_2,0,0);	  
//*********************************结束 二级菜单*******************************//
	} 
}
//*******************************开始  三级四级菜单*******************************//	  

void Process_Fun(UINT8 Fun_x,UINT8 Fun_y)
{  Send_34Line_Data(Fun_x,Fun_y);  
   Send_Instr (0x30);	//功能设定 :反显
   DelayX50us (5);
   Send_Instr(0x0E);//功能设定 : 打开反显
   DelayX50us (2) ;
   Send_Instr(0x9C);//指定位置0xA4
   DelayX10ms (1) ;
   switch((Fun_x-1)*9+Fun_y)
        {   case 1:  Menu_Char34(0,1,3,0,0,0);break;
			case 2:  Menu_Char34(1,2,4,0,0,0);break;
			case 3:  Menu_Char34(2,3,6,3,4,3);break;
			case 4:  Menu_Fun34(0,0,0,0,5,102);break;
			case 10: Menu_Char34(4,6,2,0,0,0);break;  
			case 11: Menu_Fun34(1,7,200,0,8,600);break;
    		case 12: Menu_Fun34(0,9,220,0,10,50);break;
		    case 13: Menu_Char34(5,11,3,6,12,2);break;
        	case 14: Menu_Fun34(0,  0, 0,0,14,50);break;
			case 15: Menu_Fun34(0,  0, 0,0,15,50);break;
			case 16: Menu_Fun34(0,  0, 0,1,16,6);break;
		   	case 17: Menu_Fun34(0,  0, 0,1,17,2);break;
 		   	case 19: Menu_Fun34(0,  0, 0,0,18,200);break;
		    case 20: Menu_Fun34(100,19,200,0,20,20);break;
            case 21: Menu_Fun34(0,0,0,0,21,240);break;
			case 22: Menu_Fun34(0,22,0,0,23,240);break;
			case 23: Menu_Fun34(0,0,0,0,24,240);break;
			case 24: Menu_Fun34(0,0,0,0,25,240);break;
			case 25: Menu_Fun34(0,0,0,0,26,240);break;
		   //	case 26:Menu_Char34();break;
			case 27: Menu_Fun34(0,0,0,0,27,240);break;
		   	case 28: Menu_Fun34(0,0,0,0,28,240);break;
			case 29: Menu_Fun34(0,0,0,0,29,60);break;
			case 30: Menu_Fun34(0,0,0,0,30,5);break;
			case 31: Menu_Fun34(0,0,0,0,31,10);break;
			case 32: Menu_Fun34(0,0,0,0,32,15);break;
			case 37: Menu_Fun34(0,33,100,0,34,208);break;
			case 38: Menu_Fun34(0,0,0,0,35,240);break;
			case 39: Menu_Fun34(0,36,0,0,37,240);break;
			case 40: Menu_Fun34(0,0,0,0,38,240);break;
			case 46: Menu_Fun34(0,0,0,0,39,1);break;
			case 47: Menu_Fun34(0,0,0,0,40,1);break;
			//case 55: Menu_Char34();break;
			case 56: Menu_Fun34(0,0,0,0,41,240);break;
			case 64: Menu_Fun34(0,0,0,0,42,1);break;
			case 65: Menu_Fun34(0,0,0,0,43,720);break;
			case 66: Menu_Fun34(0,0,0,0,44,60);break;
			case 73: Menu_Fun34(0,0,0,0,45,100);break;
			case 74: Menu_Fun34(0,0,0,0,47,100);break;
			case 75: Menu_Fun34(0,48,100,0,49,100);break;
			case 76: Menu_Fun34(50,50,100,50,51,100);break;
			case 92: Menu_Char34(7,52,2,0,0,0);break;
			case 93: Menu_Char34(8,53,2,0,0,0);break;

		}
 Push_C=0;
 Send_Line_Data(Lcd_3,0,0);	  
 Send_Line_Data(Lcd_4,0,0);	
 Send_Instr (0x0C);	//显示状态:整体显示 游标
 DelayX50us (2) ;
 Send_Instr (0x90);	//设定DDRAM位置:AC=80H
  DelayX50us (2) ;
}  





⌨️ 快捷键说明

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