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

📄 as4_drive.c

📁 lcd 驱动程序
💻 C
📖 第 1 页 / 共 2 页
字号:
   
  for(j=0;j<80;j++)
   {
      for(i=0;i<40;i++)
    {										
	MAINLCD_DATA(0xf800);
	MAINLCD_DATA(0xf800);
	//MAINLCD_DATA(0xfc00);
	//MAINLCD_DATA(0x0000);//80 red pixel
    }
	for(i=0;i<40;i++)
    {										
	MAINLCD_DATA(0x07e0);
	MAINLCD_DATA(0x07e0);
	//MAINLCD_DATA(0x03f0);
	//MAINLCD_DATA(0x0000);//80 green pixel
    }
	for(i=0;i<40;i++)
    {										
	MAINLCD_DATA(0x001f);
	MAINLCD_DATA(0x001f);
	//MAINLCD_DATA(0x000f);
	//MAINLCD_DATA(0xf000);//80 blue pixel
      }
	}
	
  for(j=0;j<80;j++)
   {
      for(i=0;i<40;i++)
    {										
	MAINLCD_DATA(0x0000);
	MAINLCD_DATA(0x0000);
	//MAINLCD_DATA(0x0000);
	//MAINLCD_DATA(0x0000);//80 black pixel
    }
	for(i=0;i<40;i++)
    {										
	MAINLCD_DATA(0xffff);
	MAINLCD_DATA(0xffff);
	//MAINLCD_DATA(0xffff);
	//MAINLCD_DATA(0xc000);//80 white pixel
    }
	for(i=0;i<40;i++)
    {										
	MAINLCD_DATA(0x8410);
	MAINLCD_DATA(0x8410);
	//MAINLCD_DATA(0x8208);
	//MAINLCD_DATA(0x0000);//80 gray pixel
      }
	}
 for(j=0;j<80;j++)
   {
      for(i=0;i<40;i++)
    {										
	MAINLCD_DATA(0x07ff);
	MAINLCD_DATA(0x07ff);
	//MAINLCD_DATA(0x03ff);
	//MAINLCD_DATA(0xc000);//80 cnay pixel
    }
	for(i=0;i<40;i++)
    {										
	MAINLCD_DATA(0xf81f);
	MAINLCD_DATA(0xf81f);
	//MAINLCD_DATA(0xfc0f);
	//MAINLCD_DATA(0xc000);//80 magent pixel
    }
	for(i=0;i<40;i++)
    {										
	MAINLCD_DATA(0xffe0);
	MAINLCD_DATA(0xffe0);
	//MAINLCD_DATA(0xfff0);
	//MAINLCD_DATA(0x0000);//80 yellow pixel
      }
	}
  show_mun32(10,244,11);	//T
  show_mun32(30,244,12);	// "/"
  show_mun32(47,244,10);	//P
  show_hz32 (6,281,17);           //
  show_hz32 (42,281,18);           //
  show_hz32 (86,260,14);
  show_hz32 (122,260,16);
  show_hz32 (166,260,15);
  show_hz32 (202,260,16);
}
 /*************************************/
 void TP_5(void)
 {
    unsigned int key_x=0,key_y=0,keyx2=0,keyy2=0,keyx4=0,keyy4=0,keyx5=0,keyy5=0;
   unsigned char a,b=0x00;
   showWhite();areaset(10,10);	
   for (a=0;a<12;a++){MAINLCD_DATA(0x0000);}
   for (a=0;a<12;a++){ areaset(16,10-5+a);MAINLCD_DATA(0x0000);}
  while (b==0x00)
     {	
    wait_TP();
    key_x=read_TP_X();
	key_y=read_TP_Y();
    if (((key_x<=900)&&(key_x>=760))&&((key_y<=1020)&&(key_y>=830)))b=0x01;
	keyx1=key_x;
	keyy1=key_y;
       }
	
	////////////////////////////////   
   showWhite();areaset(10,310);	b=0x00;
   for (a=0;a<12;a++){MAINLCD_DATA(0x0000);}
   for (a=0;a<12;a++){ areaset(16,310-5+a);MAINLCD_DATA(0x0000);}
  while (b==0x00)
     {	
    wait_TP();
    key_x=read_TP_X();
	key_y=read_TP_Y();
    if (((key_x<=900)&&(key_x>=760))&&((key_y<=220)&&(key_y>=100)))b=0x01;
	keyx2=key_x;
	keyy2=key_y;
       }   
	
	  ////////////////////
   showWhite();areaset(220,310);b=0x00;
   for (a=0;a<12;a++){MAINLCD_DATA(0x0000);}
   for (a=0;a<12;a++){ areaset(226,310-5+a);MAINLCD_DATA(0x0000);}
   
  while (b==0x00)
     {	
    wait_TP();
    key_x=read_TP_X();
	key_y=read_TP_Y();
    if (((key_x<=250)&&(key_x>=100))&&((key_y<=220)&&(key_y>=100)))b=0x01;
	keyx3=key_x;
	keyy3=key_y;
       }
	   
	   
	 //////////////////////////
   showWhite();areaset(220,10);	b=0x00;
   for (a=0;a<12;a++){MAINLCD_DATA(0x0000);}
   for (a=0;a<12;a++){ areaset(226,10-5+a);MAINLCD_DATA(0x0000);}
   
  while (b==0x00)
     {	
    wait_TP();
    key_x=read_TP_X();
	key_y=read_TP_Y();
    if (((key_x<=250)&&(key_x>=98))&&((key_y<=1020)&&(key_y>=830)))b=0x01;
       }
	   
	//////////////////	
   showWhite();areaset(115,155);b=0x00;
   for (a=0;a<12;a++){MAINLCD_DATA(0x0000);}
   for (a=0;a<12;a++){ areaset(121,155-5+a);MAINLCD_DATA(0x0000);}
   
  while (b==0x00)
     {	
    wait_TP();
    key_x=read_TP_X();
	key_y=read_TP_Y();
    if (((key_x<=580)&&(key_x>=440))&&((key_y<=600)&&(key_y>=480)))b=0x01;
	keyx5=key_x;
   keyy5=key_y;
       } 
   }
  /*************************************/
 void showGray32x(void)
{   
    unsigned char a;
    unsigned int c,i=0xffff;
	areaset(0,0);
  for( a=0;a<31;a++)
    {
	for(c=0;c<2400;c++){MAINLCD_DATA(i);}
	i=i-0x841;
    }
	for(c=0;c<2400;c++){MAINLCD_DATA(0x0000);}
}

    /*************************************/
 void showGray32y(void)	
 {  
    unsigned char a;  
    unsigned int c,i=0xffff;
	areaset(0,0);
	for (c=0;c<320;c++)
	{
      for(a=0;a<30;a++)
	   {										
	    MAINLCD_DATA(i);
		MAINLCD_DATA(i);
		MAINLCD_DATA(i);
		MAINLCD_DATA(i);
		MAINLCD_DATA(i);
		MAINLCD_DATA(i);
		MAINLCD_DATA(i);
		MAINLCD_DATA(i);
		i=i-0x841;
	    }
	i=0xffff;
	}	
}
 
 /*************************************/
	  
void show_hz16(unsigned char x,unsigned int y,unsigned char mun)
	{
	  unsigned char i=0,j=0,k=0,l=0,m=1,temp=0;
		         for (i=0;i<16;i++)
		         {
				  areaset(x,y+i);       //设定显示的汉字在显示屏中的位置
				    for (j=0;j<2;j++)   //把16*16点阵的汉字存到一个2*16的数组中
					   {
					    temp=hzdot[l+mun*32];   //如何取到HZK.h中的第mun个汉字的?
					      for (k=0;k<8;k++)
					        {
						      if (temp<0x80)
						        {
								 areaset(x+m,y+i);
								// MAINLCD_DATA(0xf800); 
				                 }
						     else
						         {
								 MAINLCD_DATA(0x0000);
								// MAINLCD_DATA(0x0000); 
							      }
							temp=temp<<1; 
							m++;
						     }
					 l=l+1;	
				  	}  
				m=1; 
			    }
	  }
	 /*************************************/
  void show_hz32(unsigned char x,unsigned int y,unsigned char mun)
     {
	  unsigned char i=0,j=0,k=0,l=0,m=2,n=0;
	  unsigned int temp=0;
		         for (i=0;i<16;i++)
		         {
				  
				    for (j=0;j<2;j++)
					   {
					    areaset(x,y+n);
					    temp=hzdot[l+mun*32];
						temp=temp<<8;
						temp=temp+hzdot[1+l+mun*32];
					      for (k=0;k<16;k++)
					        {
						      if (temp<0x8000)
						        {
								 areaset(x+m,y+n);
								 // MAINLCD_DATA(0xf800); 
				                 }
						     else
						         {
								 MAINLCD_DATA(0x0000);
								 MAINLCD_DATA(0x0000);  
								// MAINLCD_DATA(0x0000);
								// MAINLCD_DATA(0x0000); 
							      }
							temp=temp<<1; 
							m=m+2;
						     }
					   n++;m=2;
				        }  
					 l=l+2;		 
				       
			      }
	  }
   /*************************************/
  void show_mun32(unsigned char x,unsigned int y,unsigned char mun)
     {
	  unsigned char i=0,j=0,k=0,m=2,n=0,temp=0;

		         for (i=0;i<16;i++)
		         {
				  
				    for (j=0;j<2;j++)
					   {
					    areaset(x,y+n);
					    temp=mundot[i+mun*16];
					      for (k=0;k<8;k++)
					        {
						      if (temp<0x80)
						        {
								 areaset(x+m,y+n);
								// MAINLCD_DATA(0x0eff); 
								// MAINLCD_DATA(0x0eff); 
				                 }
						     else
						         {
								 MAINLCD_DATA(0x0000);
								 MAINLCD_DATA(0x0000); 
							//	 MAINLCD_DATA(0x0000);
								// MAINLCD_DATA(0x0000); 
							      }
							temp=temp<<1; 
							m=m+2;       
						     } 
					   n++;m=2;
				        } 	      
			      } 
	  } 
   /*************************************/  
	void wait_TP(void) 
    { 
	 unsigned char i; 
	 DDRA =0X28;
	 PORTA=0X18;
	 delay_5us(1); 
	for (i=0;i<10;i++)
	   { 
	    while ((PINA&0X10)==0x10);/* wait T/P down*/ 
		delay_nms(1);
	      }  
	while ((PINA&0X10)==0x10)	   
	   { 
       x1=0,x2=0,x3=0,y1=0,y2=0,y3=0;
	     } 
	//while (read_TP()==13);   
    } 
  /*************************************/
  void hand_write(void)
     {
	  unsigned int z,a=0;
	  int t=0,b=0,i,j,nn=0;
	  showWhite();
	   avey=(keyy1-keyy3)/288;
       avex=(keyx1-keyx3)/208;
	  while (1)//read_TP()!=13)
	     {
		   
		    DDRA =0X28;
	        PORTA=0X18;
	        delay_5us(1);
		  while ((PINA&0X10)==0x10)	  
	         {
                x1=0,x2=0,x3=0,y1=0,y2=0,y3=0;
	         }
		 
		
	      x1=read_TP_X();
		  y1=read_TP_Y();
		 
		 
	      
		  a=240-x1/avex+50;
		  x3=x2;
		  x2=a; 
		  
		  b=320-y1/(avey+0.222)+82;
		
		  y3=y2;
		  y2=b;
		  i=abs(y2-y3);
		  j=abs(x2-x3);
		  if((i<3)&&(j<3))
		  {
		  if (y3!=0)
		  {
		  {
		     t=(y3-120)/12;
				for(z=0;z<3;z++)
		          	   		{     nn=y3+z-t;
							       
			                     if((x3>=0)&&(x3<239)&&(nn>=0)&&(nn<320))
				                { areaset(x3,nn);
								MAINLCD_DATA(0xf800);
		                         MAINLCD_DATA(0xf800);}
		                     } 
		}
		  }
		  }    
	}	  
}
  /*************************************/
	unsigned int read_TP_X(void)
     {
	 unsigned char i;
	 unsigned int sum=0;
    // wait_TP();
	for (i=0;i<10;i++)
	  {
	    DDRA =0X58;
	    PORTA=0X18;
	    delay_5us(1);
	    ADMUX=0X45;
	    ADCSRA=0X84;
	    ADCSR |=BIT(ADSC); 
	    ADCSR |=BIT(ADSC);
	    delay_5us(2); 
	    sum+=ADC;
	    }
	 return sum/10;
	  }
 /*************************************/	  
	unsigned int read_TP_Y(void)
	 {
	 unsigned char i;
	 unsigned int sum=0;
    // wait_TP();
	for (i=0;i<10;i++)
	  {
	    DDRA =0XA8;
	    PORTA=0X28;
	    delay_5us(1);
	    ADMUX=0X44;
	    ADCSRA=0X84;
	    ADCSR |=BIT(ADSC); 
	    ADCSR |=BIT(ADSC);
	    delay_5us(2); 
	    sum+=ADC;
	    }
	 return sum/10;
	  }
    /*************************************/
 unsigned char read_TP(void)        //read TP 1~13
  {
  #define  x1  880
  #define  x2  616
  #define  x3  364
  #define  x4  100
  #define  y1  944
  #define  y2  740
  #define  y3  536
  #define  y4  332
  #define  y5  120
  #define  y6  70
  unsigned char key; 
  unsigned int key_x,key_y;
    wait_TP();
	   key_x=read_TP_X();
	   key_y=read_TP_Y();
	 if    (((key_x<=x1)&&(key_x>=x2))&&((key_y<=y1)&&(key_y>=y2)))
		key=1;  
	else if(((key_x<=x2)&&(key_x>=x3))&&((key_y<=y1)&&(key_y>=y2)))
		key=2;	   
	else if(((key_x<=x3)&&(key_x>=x4))&&((key_y<=y1)&&(key_y>=y2)))    
    	key=3;   	  
	else if(((key_x<=x1)&&(key_x>=x2))&&((key_y<=y2)&&(key_y>=y3)))
		key=4;  
	else if(((key_x<=x2)&&(key_x>=x3))&&((key_y<=y2)&&(key_y>=y3)))
		key=5;	   
	else if(((key_x<=x3)&&(key_x>=x4))&&((key_y<=y2)&&(key_y>=y3)))
		key=6; 
	else if(((key_x<=x1)&&(key_x>=x2))&&((key_y<=y3)&&(key_y>=y4)))
		key=7;  
	else if(((key_x<=x2)&&(key_x>=x3))&&((key_y<=y3)&&(key_y>=y4)))
		key=8;	   
	else if(((key_x<=x3)&&(key_x>=x4))&&((key_y<=y3)&&(key_y>=y4)))
		key=9; 
	else if(((key_x<=x1)&&(key_x>=x2))&&((key_y<=y4)&&(key_y>=y5)))
		key=10;  
	else if(((key_x<=x2)&&(key_x>=x3))&&((key_y<=y4)&&(key_y>=y5)))
		key=11;	   
	else if(((key_x<=x3)&&(key_x>=x4))&&((key_y<=y4)&&(key_y>=y5)))
	    key=12;	
	else if(((key_x<=x1)&&(key_x>=x4))&&((key_y<=y5)&&(key_y>=y6)))
		key=13;		
    else 
	    key=0;		
   return key;		  
  }		  
 /*************************************/
   void timer1_init(void)	
      {
       TCCR1B=0X00;
	   TCNT1H=0XF0;
	   TCNT1L=0XBE;
	   OCR1AH=0X00;
	   OCR1AL=0X00;
	   OCR1BH=0X00;
	   OCR1BL=0X00;
	   TIMSK=0X04;
	   TCCR1A=0X00;
	   TCCR1B=0X05;
	   SEI();
        }
  /*****************************************************/ 

  void LCD_CtrlWrite_LGDP4532(unsigned int cmd,unsigned int dat)	
	 {
	 MAINLCD_CMD(cmd);
	 MAINLCD_DATA(dat);
	  }
 /*************************************/	
 void pause(void)
  {
    while ((PINA&0x02)==0x00);
	 } 
   
  /*****************************************************/ 		  
  void MAINLCD_CMD(unsigned int c)
       { 
		 PORTB=c;     //low 8byte
		 PORTD=c/256; //hi  8byte
		 RS_0;WR_0;CS_0;
		 CS_1;	
         }
/*************** W_DATA *************************************/
void MAINLCD_DATA(unsigned int d)
       { 
	    
		 PORTB=d;     //low 8byte
		 PORTD=d/256; //hi  8byte
    
		 RS_1;WR_0;CS_0;
		 CS_1;	
         }
 	 
 /**********************************************/
   #pragma interrupt_handler timer1_ovf_isr:10
   void timer1_ovf_isr(void)
     {
	  TCNT1H=0XF0;
	  TCNT1L=0XBE;
	    }
 /**********************************************/
  void delay_nms(unsigned int tt)
    {
     unsigned int i;
     while (tt--)
      for(i=0;i<140*16;i++);   //AT 1M=120,AT 8M=120*8
      }

 /***************************************************/

  void delay_5us(unsigned int tt)
    {
     unsigned int i;
     while (tt--)
      for(i=0;i<16;i++);   //AT 1M=120,AT 8M=120*8
      }

 /***************************************************/

⌨️ 快捷键说明

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