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

📄 20tft.c

📁 The HD66773, controller driver LSI, displays 132RGB-by-176 dot graphics on TFT displays in 260,000
💻 C
字号:
/*DK-1.8TFT    REV:1   */
/*Ledup      P3.2   */
/*Leddown    P3.3   */
/*IC:HD66773       */
/*Programed by samqian*/
/*Date:2004/07/08   */
/*Ver:1             */

#include "io51.h"

#define A0              P1.0
#define A1              P1.1
#define CS              P3.0
#define Dataio         (*(char *)0x010000)
#define PAUSE           P3.5
#define LCDdata        ((char *)0x010000)
#define ROM1            P4.2
#define ROM2            P4.3
#define PWM	        P1.7

unsigned char time;
unsigned char per1;
unsigned char high,period;


/**/
void delay(unsigned int tt);/* */
void write_PC(unsigned char dat);
void write_r(unsigned char sta);
void write_PA(unsigned char dat);
void write_PB(unsigned char dat);
void pause();
void ROM(unsigned char w,unsigned char u);
void time_init();
void int_init();
void init66789();/* LCD */
void writec(unsigned char c);
void writei(unsigned char i);
void pic1(unsigned char cc1,unsigned char cc2);
void pic();
void showbmp();
void color_bar(unsigned char cc1,unsigned char cc2);
void showpic();
void vh();
void delayi();


/* */
main()                                                                  
{       

   write_r(0x80);	/*ini 8255*/    /*10000000*/           
   write_PB(0x1a);	/*NC/NC/NC/RES/RD/WR/RS/CS*//*0 /0 /0 /1  /1 /0 /1 /0*/
   write_PB(0x0a);	/*NC/NC/NC/RES/RD/WR/RS/CS*//*0 /0 /0 /0  /1 /0 /1 /0 */ 
   write_PB(0x1a);	/*NC/NC/NC/RES/RD/WR/RS/CS*//*0 /0 /0 /1  /1 /0 /1 /0 */
   /*time_init();
   int_init(); */
   init66789();
   
   for(;;)
     { 
      /*write_PB(0xaa);
     
     color_bar(0xF0,0x0F,0x00);
     delay(50000);
     delay(50000);
     
     color_bar(0xf8,0x00);
     delay(50000);
     delay(50000); 
     
     color_bar(0x07,0xe0);
     delay(50000);
     delay(50000);
     
     color_bar(0x00,0x1f);
     delay(50000);
     delay(50000);*/

     ROM(1,1);  
    
     ROM(2,1);
     /*delay(50000);
     delay(50000);
     */
    
     }
    
}



void write_r(unsigned char sta)  /*8255*/
{       
	CS=0;
	A1=1;
	A0=1;
	Dataio=sta;
	CS=1;
}

void write_PC(unsigned char dat)
{       
	CS=0;
        A1=1;
	A0=0;
	Dataio=dat;
	CS=1;
        	
}

void write_PA(unsigned char dat)
{
	CS=0;
        A1=0;
	A0=0;
	Dataio=dat;
	CS=1;
}

void write_PB(unsigned char dat)
{
	CS=0;
        A1=0;
	A0=1;
	Dataio=dat;
	CS=1;
}

void delay(unsigned int tt)  /* */
{
 while(tt>0)
 {
  tt--;
 }
}

void pause()
{
  while (PAUSE);
}


void init66789() /* LCD*/
{
	delayi();	
	writei(0x00);	writei(0x07);
	writec(0x01);	writec(0x04);/*Power Control*/
	
	writei(0x00);	writei(0x12);
	writec(0x00);	writec(0x00);/*Power Control*/
	
	writei(0x00);	writei(0x13);
	writec(0x00);	writec(0x00);/*Power Control*/
	
	delayi();
	
	writei(0x00);	writei(0x10);
	writec(0x00);	writec(0x04);/*Power Control*/
	
	writei(0x00);	writei(0x11);
	writec(0x00);	writec(0x00);/*Power Control*/
	
	writei(0x00);	writei(0x00);
	writec(0x00);	writec(0x01);/*Power Control*/
	
	writei(0x00);	writei(0x01);
	writec(0x09);	writec(0x1b);/*Power Control*/
	
	writei(0x00);	writei(0x02);
	writec(0x07);	writec(0x00);/*Power Control*/
	
	writei(0x00);	writei(0x03);
	writec(0x71);	writec(0x30);/*Power Control*/
	
	writei(0x00);	writei(0x08);
	writec(0x02);	writec(0x02);/*Power Control*/
	
	writei(0x00);	writei(0x09);
	writec(0x00);	writec(0x01);/*Power Control*/
	
	writei(0x00);	writei(0x0B);             
	writec(0x50);	writec(0x01);/*Driver Output Control*/
	
	writei(0x00);	writei(0x0C);             
	writec(0x00);	writec(0x01);/*LCD Driving Waveform Control*/
	
	delayi();
	
	writei(0x00);	writei(0x10);             
	writec(0x46);	writec(0x60);/*Entry Mode*/
	
	writei(0x00);	writei(0x11);             
	writec(0x02);	writec(0x05);/*Entry Mode*/
	
	delayi();
	
	writei(0x00);	writei(0x12);             
	writec(0x00);	writec(0x14);/*Entry Mode*/
	
	delayi();
	
	writei(0x00);	writei(0x13);             
	writec(0x30);	writec(0x16);/*Display Control 2*/
	
	delayi();
	
	writei(0x00);	writei(0x21);
	writec(0x00);	writec(0x00);/*Power Control*/
	
	writei(0x00);	writei(0x30);
	writec(0x03);	writec(0x03);
	
	writei(0x00);	writei(0x31);
	writec(0x03);	writec(0x03);
	
	writei(0x00);	writei(0x32);
	writec(0x03);	writec(0x03);
	
	writei(0x00);	writei(0x33);
	writec(0x03);	writec(0x03);
	
	writei(0x00);	writei(0x34);
	writec(0x04);	writec(0x04);
	
	writei(0x00);	writei(0x35);
	writec(0x04);	writec(0x04);
	
	writei(0x00);	writei(0x36);
	writec(0x04);	writec(0x04);
	
	writei(0x00);	writei(0x37);             
	writec(0x03);	writec(0x03);
	
	writei(0x00);	writei(0x38);
	writec(0x1f);	writec(0x00);
	
	writei(0x00);	writei(0x39);
	writec(0x00);	writec(0x00);
	
	writei(0x00);	writei(0x40);             
	writec(0x00);	writec(0x00);/*Gamma Control*/
	
	writei(0x00);	writei(0x41);             
	writec(0x00);	writec(0x00);/*Gamma Control*/
	
	writei(0x00);	writei(0x42);             
	writec(0xdb);	writec(0x00);/*Gamma Control*/
	
	writei(0x00);	writei(0x43);             
	writec(0xef);	writec(0xdb);/*Gamma Control*/
	
	writei(0x00);	writei(0x44);             
	writec(0xaf);	writec(0x00);/*Gamma Control*/
	
	writei(0x00);	writei(0x45);             
	writec(0xdb);	writec(0x00);/*Gamma Control*/
	
	delayi();
	
	writei(0x00);	writei(0x07);
	writec(0x00);	writec(0x01);
	
	delayi();
	
	writei(0x00);	writei(0x07);
	writec(0x00);	writec(0x21);/*Power Control*/	
	
	writei(0x00);	writei(0x07);
	writec(0x00);	writec(0x27);/*Power Control*/
	
	delayi();
	
	writei(0x00);	writei(0x07);
	writec(0x00);	writec(0x37);/*Power Control*/
}



void ROM(unsigned char w,unsigned char u)
{
	unsigned char i,a,t,x,x1,y1,y,z,z1,k1,k2;
	unsigned int j;
	j=0x0000;
	t=u;
	if (w==1) {ROM1=0;ROM2=1;}  /*Select ROM*/
	if (w==2) {ROM1=1;ROM2=0;}  /*Select ROM*/
	if (u==1) {P4.0=0;P4.1=0;}
	for (a=0;a<3;a++)
	{
		for(z=0;z<220;z++)
		{
			writei(0x00); writei(0x21); 
			writec(z); writec(0x00);                       
          		writei(0x00); writei(0x22);
			for(i=0;i<176;i++)
			{
				/*x1=LCDdata[j];
				x=x1&0xf8;				
				y1=LCDdata[j+1];
				y=y1&0xe0;
				y=y>>5;
				k1=x|y;
				x1=LCDdata[j+2];
				x=x1&0xf8;
				x=x>>3;
				y=y1&0x1c;
				k2=x|y;
				writec(k1);
				writec(k2);
				j=j+3;*/
				x=LCDdata[j];
				writec(x);
				y=LCDdata[j+1];
				writec(y);
				j=j+2;
				if (j==0x0000)
				{
					t=t+1;
					if (t==1)  {P4.0=0;P4.1=0;}     /*Select BANK*/
					if (t==2)  {P4.0=1;P4.1=0;}
					if (t==3)  {P4.0=0;P4.1=1;}
					if (t==4)  {P4.0=1;P4.1=1;}
				}
			}
		}
		pause();
		delay(50000);
		delay(50000);
	}
}


/**********************led driver******************************/
void time_init()              
{                             
 /*time 0 set*/               
 TMOD=0x01;                   
 TH0=0xff;/*frm=2.2kHz*/      
 TL0=0x60;                    
 EA=1;                        
 ET0=1;                       
 TR0=1;                       
 /*膀セ盽计砞﹚*/             
 PWM=0;                       
 time=0;                      
 high=1;/*

⌨️ 快捷键说明

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