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

📄 lcd_menu.h

📁 改程序代码是运用Keil uVision3软件编写的C程序
💻 H
字号:
/***************************************
功能:LCD128*64显示函数程序
文件名:LCD_menu.H
硬件:AT89S52
编译人:罗忠超
编译:Keil-2008-12-9
****************************************/

#ifndef uchar
#define uchar unsigned char
#endif

#ifndef uint
#define uint unsigned char
#endif

#ifndef __LCD_menu_H__
#define __LCD_menu_H__

#include"lcd_12864.h"
#include"LCD_mod.h"
void  delay_20ms(void);               //延时函数
void Number(uchar page,uchar row,uchar cs);
void InputCarNumber1(uchar page,uchar row,uchar cs,uchar j);
void InputCarNumber2(uchar page,uchar row,uchar cs,uchar j);
void SureKey(uchar page,uchar row,uchar cs,bit Sure_flag);
void BlackInput(uchar page,uchar row,uchar cs,bit Black_Flag);
void Chinese(uchar page,uchar row,uchar cs,bit Click_Flag);
void ClickNumber(uchar j,bit YN);
void Piture_1(bit MQ );
void Start_Piture(uchar page,uchar row,uchar cs,bit Pture_Flag) ;
void Work_Piture(uchar page,uchar row,uchar cs);
void Over_Piture(uchar page,uchar row,uchar cs);
void Unoption_Piture(uchar page,uchar row,uchar cs);

/**********************************************
/   点亮特定的点:void pix(uchar x,uchar y,uchar cs)   /
/                                             /
*********************************************/
/*
void pix(uchar x,uchar y)
{
   uchar page,dX,dY; 
        uchar dot=0;
        uchar cs =0; 
        if(x>=64) 
        { 
                x-=64; 
                cs=2;
        } 
        else 
        { 
                cs=1; 
        } 
        dX=x;                                        //算出x坐标 
        page=y/8;                                     
        dY=y%8;                                      //算出页号
        dot|=1<<dY;                               //算出y坐标 (对应数据的每个位)
        Led_Open(cs);
        Led_StartLine(cs);                             //对应坐标上的点设置为"1",--light
        Led_SetPage(page,cs);                         //设置页地址
        Led_SetRow(dX,cs);                            //设置列地址  
        Send_Data(dot,cs);        
        
}


/*********************************************************************
/   显示数字:void Number(uchar page,uchar row,uchar cs) (半角)       /
/                                                                     /
********************************************************************/

void Number(uchar page,uchar row,uchar cs)
{
   uchar i,p,k;
   Led_Open(cs);
 //////////////////////号车库
for(p=0;p<4;p++)
{
  //  Led_Open(cs);
	for(k=0;k<2;k++)
	{
		   Led_StartLine(cs);
		   Led_SetPage(page+k,cs);
		   Led_SetRow(row+16*(p),cs);
		for(i=0;i <16; i++) 
			   {  
			      
			      Send_Data(NUMBER[2*p+k+10][i],cs);
			   }		 	       
	}

}

}
     
/*********************************************************************
/   车库号输入:void chekuhao(uchar page,uchar row,uchar cs) (半角)  /
/                                                                    /
/ ********************************************************************/
void InputCarNumber1(uchar page,uchar row,uchar cs,uchar j)
{
   uchar i;
	cs = 1;
   Led_Open(cs);
   Led_StartLine(cs);
   Led_SetPage(page,cs);
   Led_SetRow(row,cs);
   for(i=0;i<8;i++)
     {
       Send_Data(NUMBER[j][i],cs);
         
     }    
     Led_SetPage(page+1,cs);
     Led_SetRow(row,cs);
   for(i=8;i<16;i++)
     {
         Send_Data(NUMBER[j][i],cs);
 
     }



}

void InputCarNumber2(uchar page,uchar row,uchar cs,uchar j)
{
   uchar i;
   cs =  1;
   Led_Open(cs);
   Led_StartLine(cs);
   Led_SetPage(page,cs);
   Led_SetRow(row+8,cs);
   for(i=0;i<8;i++)
     {
       Send_Data(NUMBER[j][i],cs);
     }    
         
     Led_SetPage(page+1,cs);
     Led_SetRow(row+8,cs);
   for(i=8;i<16;i++)
     {
         Send_Data(NUMBER[j][i],cs);
 
     }



}
/*********************************************************************
/   确定按钮:void SureKey(uchar page,uchar row,uchar cs) (半角)  /
/                                                                    /
/********************************************************************/
void SureKey(uchar page,uchar row,uchar cs,bit Sure_flag)

{  uchar i=0,k=0,j=0;
   cs=1;
   Led_Open(cs);
   Led_StartLine(cs);
   Led_SetPage(page,cs);
   Led_SetRow(row,cs);
for(j=0;j<2;j++)
{
   for(k=0;k<2;k++)
	{
		   Led_StartLine(cs);
		   Led_SetPage(page+k,cs);
		   Led_SetRow(row+16*j,cs);
		for(i=0;i <16; i++) 
		{	    
				if (Sure_flag==1)
	                   
				{
					Send_Data(SURE[2*j+k][i],cs);
				}
	                  
                else
	                  
				{
					Send_Data(~SURE[2*j+k][i],cs);
				}
	                  
		}
			
	 
    }
		   

 }	       
	

}
   
/*********************************************************************
/   重新输入:void BlackInput(uchar page,uchar row,uchar cs) (半角)  /
/                                                                    /
/********************************************************************/
void BlackInput(uchar page,uchar row,uchar cs,bit Black_Flag)
 {

  uchar i=0,k=0,j=0;
   cs=2;
   Led_Open(cs);
   Led_StartLine(cs);
   Led_SetPage(page,cs);
   Led_SetRow(row,cs);
for(j=0;j<2;j++)
{
   for(k=0;k<2;k++)
	{
		   Led_StartLine(cs);
		   Led_SetPage(page+k,cs);
		   Led_SetRow(row+16*j,cs);
		for(i=0;i <16; i++) 
			   {  
			    if (Black_Flag==1)
	                   
				{
					Send_Data(BLACK[2*j+k][i],cs);
				}
	                  
                else
	                  
				{
					Send_Data(~BLACK[2*j+k][i],cs);

                    Number(2,0,1);


				}
	                  
			   }
			
	 
    }
		   

 }	       
	

 }
/*************************************************************
/   显示汉字:void Chinese(uchar page,uchar row,uchar cs)     /
/                                                             /
************************************************************/

void Chinese(uchar page,uchar row,uchar cs,bit Click_Flag)
{
 //  uchar *p=CHINESE;
   uchar i=0,k=0,j=0;
 //  uchar *p;
//   p = &CHINESE[0];
   
for(j=0;j<4;j++)
{
    Led_Open(cs);
	for(k=0;k<2;k++)
	{
		   cs=1;
		   
		   Led_StartLine(cs);
		   Led_SetPage(page+k,cs);
		   Led_SetRow(row+16*j,cs);
		for(i=0;i <16; i++) 
			   {  
			      if(Click_Flag==0)
                    {Send_Data(CHINESE[2*j+k][i],cs);}
                  else
					{Send_Data(CHINESE[2*j+k+16][i],cs);}
			      
			   }
			
	
	       
	}

}
	cs=2;
	Led_Open(cs);
for(j=0;j<4;j++)
{

	for(k=0;k<2;k++)
	{
		  // cs=1;
		   
		   Led_StartLine(cs);
		   Led_SetPage(page+k,cs);
		   Led_SetRow(row+16*j,cs);
		for(i=0;i <16; i++) 
			   {  
			      if(Click_Flag==0)
                    {Send_Data(CHINESE[2*j+k+8][i],cs);}
                  else
					{Send_Data(CHINESE[2*j+k+24][i],cs);}
			      
			   }
			
	
	       
	}


 }

}  
/*********************************************************************
/   数字判断:ClickNumber(uchar page,uchar row,uchar cs) (半角)       /
/                                                                     /
********************************************************************/
void ClickNumber(uchar j,bit YN)
{
   uchar num;
   num = j;
switch (num)
{
  case 0:
    {
      if(YN==1)
        {
          InputCarNumber1(2,0,1,0);break;
        }
      else
        {
          InputCarNumber2(2,0,1,0);break;
        }

     }
  case 1:
	{
          if(YN==1)
        	{
			InputCarNumber1(2,0,1,1);break;	
        	}
      	else
       	 	{
   			InputCarNumber2(2,0,1,1);break;
        	}


    }
  case 2:
	 {
          if(YN==1)
        	{
			InputCarNumber1(2,0,1,2);break;
             
        	}
      	else
       	 	{
   			InputCarNumber2(2,0,1,2);break;
        	}



	 }
  case 3:
		{
          if(YN==1)
        	{
			InputCarNumber1(2,0,1,3);break;
        	}
      	else
       	 	{
   			InputCarNumber2(2,0,1,3);break;
        	}


		}
  case 4:
		{
          if(YN==1)
        	{
			InputCarNumber1(2,0,1,4);break;
        	}
      	else
       	 	{
   			InputCarNumber2(2,0,1,4);break;
        	}


		}
  case 5:
		{

          if(YN==1)
        	{
			InputCarNumber1(2,0,1,5);break;
        	}
      	else
       	 	{
   			InputCarNumber2(2,0,1,5);break;
        	}

		}
  case 6:
		{

	          if(YN==1)
        	{
			InputCarNumber1(2,0,1,6);break;
        	}
      	else
       	 	{
   			InputCarNumber2(2,0,1,6);break;
        	}

		}
  case 7:
		{

	          if(YN==1)
        	{
			InputCarNumber1(2,0,1,7);break;
        	}
      	else
       	 	{
   			InputCarNumber2(2,0,1,7);break;
        	}

	   }
  case 8:
		{

	          if(YN==1)
        	{
			InputCarNumber1(2,0,1,8);break;
        	}
      	else
       	 	{
   			InputCarNumber2(2,0,1,8);break;
        	}

	    }
  case 9:
		{

	          if(YN==1)
        	{
			InputCarNumber1(2,0,1,9);break;
        	}
      	else
       	 	{
   			InputCarNumber2(2,0,1,9);break;
        	}

	    }
 

}

}
/*************************************************************
/   选择过程画面:Piture_1/2(bit MQ)                        /
/           0:画面2,1:画面1                                 /
/*************************************************************/
void Piture_1(bit MQ ) 
{
  delay_20ms();
if(MQ==0)
	  {
	   Chinese(0,0,1,1);
	  }
else 
	  {
       Chinese(0,0,1,0);
	   }
  Number(2,0,1);
  SureKey(6,16,1,1);
  BlackInput(6,16,2,1);
  

}
/////////////////////////////////////////////

/*************************************************************
/   图片显示:void Start_Piture(void)                        /
/                                                             /
/*************************************************************/
void Start_Piture(uchar page,uchar row,uchar cs,bit Pture_Flag) 
{
  uchar *p=&piture1[0];
  uchar *q=&piture2[0];
  uchar j,i;
  
  Led_Open(cs);
  
for(j=0;j<8;j++)
	{ cs = 1;
      Led_StartLine(cs);
      Led_SetPage(page+j,cs);
      Led_SetRow(row,cs);
	for(i=0;i<64;i++)
	   {
        if(Pture_Flag==0)
			{
		    Send_Data(~*(p++),cs);
			}
        else
			{
		    Send_Data(*(q++),cs);
			}
	   }

    cs = 2;
    Led_Open(cs);
    Led_StartLine(cs);
    Led_SetPage(page+j,cs);
    Led_SetRow(row,cs);
	
    for(i=0;i<64;i++)
	   {
	     if(Pture_Flag==0)
			{
		    Send_Data(~*(p++),cs);
			}
        else
			{
		    Send_Data(*(q++),cs);
			}
	   }
    }
}

void Over_Piture(uchar page,uchar row,uchar cs) 
{
	uchar j,i;
	uchar *p=&piture4[0];
	Led_Open(cs);
  
	for(j=0;j<8;j++)
		{ cs = 1;
	      Led_StartLine(cs);
	      Led_SetPage(page+j,cs);
	      Led_SetRow(row,cs);
		for(i=0;i<64;i++)
		   {
	        
			    Send_Data(*(p++),cs);
		
		   }
	
	    cs = 2;
	    Led_Open(cs);
	    Led_StartLine(cs);
	    Led_SetPage(page+j,cs);
	    Led_SetRow(row,cs);
		
	    for(i=0;i<64;i++)
		   {
		     
			    Send_Data(*(p++),cs);
			
		   }
	    }
}

/*************************************************************
/   延时10ms:delay_20ms(void)                                /
/                                                             /
/*************************************************************/
void  delay_20ms(void)
{
 uchar i,j;
 for(i = 0;i < 200 ;i++) 
   {
       for( j = 0;j < 100; j++ );
       
   }

}

void Work_Piture(uchar page,uchar row,uchar cs) 
{
   uchar j,i;
   uchar *p=&piture3[0];
  Led_Open(cs);
  
for(j=0;j<8;j++)
	{ cs = 1;
      Led_StartLine(cs);
      Led_SetPage(page+j,cs);
      Led_SetRow(row,cs);
	for(i=0;i<64;i++)
	   {
        
		    Send_Data(*(p++),cs);
	
	   }

    cs = 2;
    Led_Open(cs);
    Led_StartLine(cs);
    Led_SetPage(page+j,cs);
    Led_SetRow(row,cs);
	
    for(i=0;i<64;i++)
	   {
	     
		    Send_Data(*(p++),cs);
		
	   }
    }
}
void Eorr_Piture(uchar page,uchar row,uchar cs) 
{
   uchar j,i;
   uchar *p=&piture5[0];
  Led_Open(cs);
  
for(j=0;j<8;j++)
	{ cs = 1;
      Led_StartLine(cs);
      Led_SetPage(page+j,cs);
      Led_SetRow(row,cs);
	for(i=0;i<64;i++)
	   {
        
		    Send_Data(*(p++),cs);
	
	   }

    cs = 2;
    Led_Open(cs);
    Led_StartLine(cs);
    Led_SetPage(page+j,cs);
    Led_SetRow(row,cs);
	
    for(i=0;i<64;i++)
	   {
	     
		    Send_Data(*(p++),cs);
		
	   }
    }
}


void Unoption_Piture(uchar page,uchar row,uchar cs) 		   //操作无效函数
{
   uchar j,i;
   uchar *p=&piture6[0];
  Led_Open(cs);
  
for(j=0;j<8;j++)
	{ cs = 1;
      Led_StartLine(cs);
      Led_SetPage(page+j,cs);
      Led_SetRow(row,cs);
	for(i=0;i<64;i++)
	   {
        
		    Send_Data(*(p++),cs);
	
	   }

    cs = 2;
    Led_Open(cs);
    Led_StartLine(cs);
    Led_SetPage(page+j,cs);
    Led_SetRow(row,cs);
	
    for(i=0;i<64;i++)
	   {
	     
		    Send_Data(*(p++),cs);
		
	   }
    }
}


         
#endif 

⌨️ 快捷键说明

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