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

📄 uc1698u_truly.c

📁 uc1698u 测试程序
💻 C
字号:
//LCM resolution:320x160 truly;
//driver IC:UC1698u,B/W, 8080Mode 8bit;
//ccwu 2008-01-16;
#include <REG52.H>
//#include "uc1698u_truly.h"
//#include "uc1698u_1.h"
//#include "uc1698u_2.h"
#include "uc1698u_3.h"
#include "uc1698u_4.h"

sbit CS0 = P3^6;
sbit CD  = P3^5;		
sbit WR1 = P3^4;
sbit WR0 = P3^1;	   
sbit RST = P3^0;
sbit step = P3^7;


void writei(unsigned char ins);
void writed(unsigned char dat); 

void display_map(unsigned char *pic);
void delay(long tt); 
void display_black(void);
void display_white(void);
void vertical(void);
void horizontal(void);
void snow();
void frame();
void window_program(void);
void lcd_initial(void);
void press(void);
void dispaly_pic();
void network();
unsigned char read_data();
unsigned char read();

void main(void)
{

	  CS0=0;

      RST=0;
      delay(2000);
      RST=1;
      delay(2000);

      RST=0;
      delay(2000);
      RST=1;
      delay(2000);

lcd_initial(); 
delay(2000);
display_white();
//read();
read_data();
press(); 
while(1)
{

      display_black();
      delay(2000);
      //press(); 
      display_white();
      delay(2000);
      //press(); 

      vertical(); 
      delay(2000);
      //press(); 

      horizontal();     
      delay(2000);
      //press(); 

      snow();
      delay(2000);
      //press(); 

      network();
      delay(2000);
      //press(); 

      frame();
      delay(2000);
      //press(); 

      //display_white();
      //delay(200);
      //display_map(map);
      //delay(2000);
      //press(); 

      //display_white();
      //delay(200);
      //display_map(map1);
      //delay(2000);
      //press(); 

      //display_white();
      //delay(200);
      //display_map(map2);
      //delay(2000);
      //press();

      display_white();
      display_black();
      delay(200);
      display_map(map3);
      delay(2000);
      press();

      display_white();
      delay(200);
      display_map(map4);
      delay(2000);
      //press();
}
    }

 unsigned char read()
{
unsigned char status1;
//unsigned char status2,status3,status4,status5;
////记得先设置要读的地址,如果在空读一次再设置地址的话就会左一个8bit
//writei(0x10);  
//writei(0x00);  
//writei(0x60);
//writei(0x70); 
  ////////空读//////////////
CS0=0;
WR0=1;
P1=0xff; 
CD=1;
 
WR1=0;
status1=P1;
WR1=1;
//P1=status1;
/*
/////////读第1个8bit////////
CS0=0;
WR0=1;
P1=0xff; 
CD=1;
 
WR1=0;
status2=P1;
WR1=1;
P1=status2;
/////////读第2个8bit////////
CS0=0;
WR0=1;
P1=0xff;
CD=1;
 
WR1=0;
status3=P1;
WR1=1;
P1=status3;
 
CS0=1;
/////////读第4个8bit//////// 
CS0=0;
WR0=1;
P1=0xff;
CD=1;
 
WR1=0;
status5=P1;
WR1=1;
P1=status5;
*/
CS0=1;
return(status1);

}

unsigned char read_data()
{
int i;
unsigned char temp0,temp1,temp2,temp3,data_r,data_g,data_b;
unsigned char data0,data1,data2;

  	for(i=0;i<30;i++)
	{
	  writei(0x00);//set column
      writei(0x10);
      writei(0x60|i);//set row 
      writei(0x70);

	  writed(0xf0); 
      writed(0xf0); 
	  writed(0xf0);

	  writei(0x00);//set column
      writei(0x10);
      writei(0x60|i);//set row 
      writei(0x70);

      read();//dummy 
      temp0=read();
      temp1=read();
      temp2=read();
      temp3=read();
//////////565 change 444//////////////////////////
      data_r=temp0&0xf0;
      data_g=((temp0&0x07)<<1)|((temp1&0x80)>>7);
      data0=data_r|data_g;

      data_b=((temp1&0x1f)>>1);
      data_r=temp2&0xf0;
      data1=(data_b<<4)|(data_r>>4);

      data_g=((temp2&0x07)<<1)|((temp3&0x80)>>7);
      data_b=((temp3&0x1f)>>1);
      data2=((data_g<<4)|(data_b));
//////////////////////////////////////////////////

      writei(0x00);//set column
      writei(0x10);
      writei(0x60|i);//set row 
      writei(0x72);

	  writed(data0); 
      writed(data1); 
	  writed(data2);

		}  
}

void lcd_initial()
    {
      writei(0xe2); // set system reset

      delay(2000);  //delay 200ms

      writei(0x24); //set Temp. command  TC1TC0 00=-0.00%
      writei(0x2b); //internal pump
      writei(0xC0); //set lcd mapping  MY=0,Mx=0,LC0=0

      writei(0xA2); //set line rate
      writei(0xc8);//set n-line
      writei(0x0f);

      //writei(0xf1);
      //writei(79);

      writei(0xD1); //set color pattern RGB
                                             
      writei(0xD5); //set 4K color mode

      writei(0xE9); //set lcd bias ratio: 1/10bias

      writei(0x81); //set Vbias potentiometer
      writei(0x70);  //set contrast level:0-255      
     
      writei(0xde); //set com scan function
      
      //writei(0x31);  //apc
      //writei(0xed);  // 

      writei(0xAd); //display enable    

 }

void window_program(void)      //set window
{
	writei(0x00);//set column
    writei(0x10);
    writei(0x60);//set row 
    writei(0x70);

    writei(0xF4); //set start column 
    writei(0x00); //start seg1

    writei(0xF5); //set start row
    writei(0x00);  // start com1

    writei(0xF6);  //set end column
    writei(0x6b);  // end seg320  

    writei(0xF7);  //set end row
    writei(0x9F);  //end com160
}
 
void display_black(void)
{
  int i;
  int j;
  window_program();
  for(i=0;i<160;i++)
     {
	   
		for(j=0;j<54;j++)
		{
		  writed(0xff); 
          writed(0xff); 
		  writed(0xff);
		}
     }
  

}

void display_white(void)
{
  int i;
  int j;
  window_program();
  for(i=0;i<160;i++)
     {
	   
		for(j=0;j<54;j++)
		{
		   writed(0x00); 
           writed(0x00); 
		   writed(0x00);
		}
		}
}

void snow()
{
	  int i;
      int j;
      window_program();
     for(i=0;i<160;i++)
     {
		for(j=0;j<54;j++)
		{
		writed(0xf0); 
        writed(0xf0);
        writed(0xf0);
		}
		for(j=0;j<54;j++)
		{
		writed(0x0f);
        writed(0x0f);
        writed(0x0f);
		}

     }
}

void network()
{
	  int i;
      int j;
      window_program();
     for(i=0;i<160;i++)
     {
		for(j=0;j<54;j++)
		{
		writed(0xf0); 
        writed(0xf0);
        writed(0xf0);
		}
		for(j=0;j<54;j++)
		{
		writed(0xff);
        writed(0xff);
        writed(0xff);
		}

     }
}


void horizontal()
{  
  int i;
  int j;
  window_program();

  for(i=0;i<160;i++)
     {
		for(j=0;j<54;j++)
		{
		   writed(0xff); 
           writed(0xff); 
		   writed(0xff);
		}

	    for(j=0;j<54;j++)
		{
		   writed(0x00); 
           writed(0x00); 
		   writed(0x00);
		}
     }
  

}

void vertical()
{
	  int i;
      int j;
      window_program();
     for(i=0;i<160;i++)
     {
		for(j=0;j<54;j++)
		{
		   writed(0xf0); 
           writed(0xf0); 
		   writed(0xf0);
		}
     }
}

void frame()
{
      int i,j;
      window_program();  
     for(i=0;i<160;i++)
	{
		if(i==0||i==159)
		{
         for(j=0;j<54;j++)
		    {writed(0xff); 
             writed(0xff); 
		     writed(0xff);} 
		}
		else
		for(j=0;j<54;j++)
		{
		 if(j==0)
		   {writed(0xf0);
		   writed(0x00);
		   writed(0x00);}
         else if(j==53)
		   {writed(0x0f);
		   writed(0x00);
		   writed(0x00);}
          else
			{
			writed(0x00); 
            writed(0x00); 
		    writed(0x00);	
			}
		}
	}
}

void display_map(unsigned char *pic)
{
  int i,j,k=0;
/*
	writei(0x00);//set column
    writei(0x10);
    writei(0x60);//set row 
    writei(0x70);

    writei(0xF4); //set start column 
    writei(0x00); //start seg1

    writei(0xF5); //set start row
    writei(0x00);  // start com1

    writei(0xF6);  //set end column
    writei(0x69);  // end seg320

    writei(0xF7);  //set end row
    writei(0x9F);  //end com160



 for (i=0;i<160;i++)
 	{
 	 for(j=0;j<159;j++)
 	 {				
 	    writed(pic[k++]);
 	 }
	}
	*/

	writei(0x00);//set column 1
    writei(0x10);
    writei(0x60);//set row 1
    writei(0x70);

    writei(0xF4); //set start column 1
    writei(0x00); //start seg 1

    writei(0xF5); //set start row 1
    writei(0x00);  // start com 1

    writei(0xF6);  //set end column
    writei(0x4f);  // end seg240

    writei(0xF7);  //set end row
    writei(0x77);  //end com120

    writei(0xf8);  //enable

 for (i=0;i<120;i++)
 	{
 	 for(j=0;j<120;j++)
 	 {				
 	    writed(pic[k++]);
 	 }
	}



}


/*
void dispaly_pic()
{
      int k=0;      
      int i,j;
   
      unsigned char temp,temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8;
      unsigned char h11,h12,h13,h14,h15,h16,h17,h18,d1,d2,d3,d4;

	writei(0x00);//set column
    writei(0x10);
    writei(0x60);//set row 
    writei(0x70);

    writei(0xF4); //set start column 
    writei(0x00); //start seg1

    writei(0xF5); //set start row
    writei(0x00);  // start com1

    writei(0xF6);  //set end column
    writei(0x6a);  // end seg320

    writei(0xF7);  //set end row
    writei(0x9F);  //end com160

      for(i=0;i<160;i++)           //240*128 B/W picture for example
      {
           for(j=0;j<40;j++)        //240 dot/ 8 bite=30 byte.
		   {                        //Function:1STEP..read 8bit byte's bit data'bit(bit7~0)'s value; 
		                            //2STEP.. change the data format to the DR's data format(B/W display==>
									//16Gray display);
			    					//3STEP..write data to DDRAM.
			  temp=pic[k++];        //1:turns 1byte B/W data to 4k-color data(RRRR-GGGG-BBBB)
			  temp1=temp&0x80;      //&1000,LSB==>MSB BIT( move to MSB'high byte.)
              temp2=(temp&0x40)>>3; //&0100,LSB          ( move to LSB'high byte.)
              temp3=(temp&0x20)<<2; //&0010,LSB==>keep the 8byte's 3'nd's value.
              temp4=(temp&0x10)>>1; //&0001,LSB==>read 8bit byte's 4'rd's value.
              temp5=(temp&0x08)<<4; //&MSB,1000
              temp6=(temp&0x04)<<1; //&MSB,0100          
              temp7=(temp&0x02)<<6; //&MSB,0010==>example:if temp=1000,0011==>temp7=1000,0000
              temp8=(temp&0x01)<<3; //&MSB,0001==>example:if temp=1000,0011==>temp8=0000,1000
              h11=temp1|temp1>>1|temp1>>2|temp1>>3;  //2:data format change:from B/W==>16 GRAY
              h12=temp2|temp2>>1|temp2>>2|temp2>>3;
              h13=temp3|temp3>>1|temp3>>2|temp3>>3;
              h14=temp4|temp4>>1|temp4>>2|temp4>>3;
              h15=temp5|temp5>>1|temp5>>2|temp5>>3;  
              h16=temp6|temp6>>1|temp6>>2|temp6>>3;
              h17=temp7|temp7>>1|temp7>>2|temp7>>3;  //example:if temp7=1000,0000==>h17=1111,0000
              h18=temp8|temp8>>1|temp8>>2|temp8>>3;  //example:if temp8=0000,1000==>h18=0000,1111
              d1=h11|h12;                            //3:1 byte=(1MSB+1LSB)/per 2 pixel=2dot. 
              d2=h13|h14;                            //the DR's 4bit=1dot==>8bit=2dot display.
              d3=h15|h16;                            
              d4=h17|h18;                            //example:if h17=1111,0000 h18=0000,1111==>d4=1111,1111
              writed(d1);                            //4:write data to DDRAM:data format=4k color mode.
              writed(d2);                            //(Note:the DR of UC1698U need 4 times send)..P23.
              writed(d3);
              writed(d4);
           }
           
    }
	
}
*/
void writei(unsigned char ins)
{
        CS0=0;
		CD=0;
 		WR1=1;	
	        
	    P1=ins; 
	    WR0=0;      		  
		WR0=1;    
        CS0=1;   
}

void writed(unsigned char dat)
{
        CS0=0;
		CD=1; 
	    WR1=1;	  
	       
		P1=dat; 
		WR0=0;       
		WR0=1;    
        CS0=1;   
}

void delay(long tt)
{while(tt>0)
    {tt--;}

}
void press(void)
{
	while(step);
		
}

⌨️ 快捷键说明

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