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

📄 61505u.c

📁 R61505U的初始化以及简单的测试程序
💻 C
字号:

#include<reg52.h>
#include<intrins.h>
#include<absacc.h>
#define nop _nop_()
#define nop _nop_()
#define POWER_ON(count)  delay(count) 
#define VOP_9V_ON   vop_9v=0
#define VOP_9V_OFF   vop_9v=1

#define VOP_75V_ON   vop_75v=0
#define VOP_75V_OFF   vop_75v=1

#define uchar unsigned char 

sbit      RS  =  P3^0;
sbit      RW  =  P3^1;
sbit      rd  =  P3^2;
sbit      CS  =  P3^3;
sbit      RESET =P3^4;
sbit      flag=P3^5;

sbit      LED=P3^7;
sbit  key=P1^0;
sbit  vop_9v=P1^1;
sbit vop_75v=P1^2;

sbit select_rom=P3^5;
sbit addr1=P1^4;
sbit addr2=P1^5;
sbit addr3=P1^6;
/*********************************/
void   delay(int count);
void   main_init(void);

void  wrie16_com( unsigned int c);
void  wrie16_date_01(char DH,char DL);

void black(void);
void white(void);

void red(void);
void green(void);
void blue(void);
void adress(void);

/*******************************************************/
//////////////////////
void delay_11us(void)
{
	uchar i=1;
	nop;
	nop;
	nop;
    do
    {
    i--;
    }while(i);
}
///////////////////////////
void delay_ms(uchar j)
{
	uchar i;
    while(j)
	{
    for(i=0;i<78;i++)
    delay_11us();
	j--;
	}
}
/////////////////////////////////////
unsigned int read_data(void)
{
unsigned int DAT;
P2=P0=0XFF;
	//  CS= 0;
      RS=1;
	  RW=1;
      rd=0;
	  nop; 
 	  nop;   
 	  nop;                             
      DAT=P2;
	  nop;
	  rd=1; 
    //  CS=1;
DAT<<=8;
    //  CS= 0;
      RS=1;
      rd=0; 
	  nop;
	  nop;
 	  nop; 
      DAT|=P0;
	  nop;
	  rd=1; 
    //  CS=1;
  return DAT;
}


/*******************************************************/
void  wrie16_com(unsigned int c)
{    
      // CS = 0;
	  //  nop;
       RS=0;
       RW=0;
       P0=c>>8;
	   nop;
	   RW=1; 
       //CS=1;
////////////////////////////////
       //CS = 0;
       RW=0;
       P0=c;
	   nop;
	   RW=1; 
	   RS=1;
     //  CS=1;
}

/*************************************8********/
void  wrie16_date( unsigned int date)
 
{    
//	CS= 0;
	RS=1;  
	RW=0;                                 
	P0=date>>8;
	nop;
	RW=1;  
	//CS= 1;
///////////////////////////	
//	CS= 0;
	RW=0;
	P0=date;
	nop;
	RW=1; 
	RS=0;
	//CS= 1;
}



/******************************************/
void delay(int count)   /* X10ms */
{
       unsigned int i,j;
       for(i=0;i<count;i++)		
       for(j=0;j<50;j++);
				
}
/***************************************************/
void RGB (unsigned int SE)            //全黑
{ 
  unsigned int a,b;
   adress(); 
   for(a=0;a<320;a++)
   { 
      for(b=0;b<240;b++)
     	 {
  			wrie16_date(SE);
		 }
   }
}
/***************************************************/
void map_address()
{ 
wrie16_com(0x0050); 
wrie16_date(72);//
wrie16_com(0x0051); 
wrie16_date(72+96-1);//

wrie16_com(0x0052); 
wrie16_date(148);
wrie16_com(0x0053); 
wrie16_date(148+24-1);//
	wrie16_com(0x0020); 
	wrie16_date(72);//
	wrie16_com(0x0021); 
	wrie16_date(148); //    /*YS15-YS8*/
	wrie16_com(0x0022); 
}
/***************************************************/
void display_map(uchar *sp)
{
uchar a,b;
unsigned int i;
   map_address(); 
   for(a=0;a<24;a++)
   { 
      for(b=0;b<96;b++)
     	 {
		 i=*sp++;
		 i<<=8;
		 i|=*sp++;
  			wrie16_date(i);
		 }
   }
}
/*****************************************************/
void adress()
{ 
wrie16_com(0x0050); 
wrie16_date(0x0000);
wrie16_com(0x0051); 
wrie16_date(0x00ef);//0Xef
wrie16_com(0x0052); 
wrie16_date(0x0000);
wrie16_com(0x0053); 
wrie16_date(0x013f);//0X3f
	wrie16_com(0x0020); 
	wrie16_date(0x0000);
	wrie16_com(0x0021); 
	wrie16_date(0x0000);     /*YS15-YS8*/
	wrie16_com(0x0022); 
}
/*****************************************************/
void LCM_reset()
{
    CS=0;
	RESET=1;
	delay_ms(1);
	RESET=0;
	delay_ms(5);
	RESET=1;
}
/******************************************************************/
void main_init ()
{  
uchar i;
LCM_reset();  
/*  
wrie16_com(0x0000); 
wrie16_date(0x0000);

wrie16_com(0x00a4); 
wrie16_date(0x0001);

wrie16_com(0x0007); 
wrie16_date(0x0021);

wrie16_com(0x0019); 
wrie16_date(0x0000);

wrie16_com(0x0010); 
wrie16_date(0x17b0);

wrie16_com(0x0011); 
wrie16_date(0x0016);
delay_ms(50);

wrie16_com(0x0012); 
wrie16_date(0x019e);

wrie16_com(0x0013); 
wrie16_date(0x1200);

wrie16_com(0x0014); 
wrie16_date(0x8000);

delay_ms(50);

wrie16_com(0x0012); 
wrie16_date(0x01be);

wrie16_com(0x0001); 
wrie16_date(0x0500);
//wrie16_date(0x0000);
wrie16_com(0x0002); 
wrie16_date(0x0400);

wrie16_com(0x0003); 
wrie16_date(0x1230);

wrie16_com(0x0008); 
wrie16_date(0x0808);

wrie16_com(0x0009); 
wrie16_date(0x0000);

wrie16_com(0x000a); 
wrie16_date(0x0000);

wrie16_com(0x000c); 
wrie16_date(0x0000);

wrie16_com(0x000d); 
wrie16_date(0x0000);

wrie16_com(0x0050); 
wrie16_date(0x0000);

wrie16_com(0x0051); 
wrie16_date(0x00ef);

wrie16_com(0x0052); 
wrie16_date(0x0000);


wrie16_com(0x0053); 
wrie16_date(0x013f);


wrie16_com(0x0060); 
wrie16_date(0x2700);

wrie16_com(0x0061); 
wrie16_date(0x0000);

wrie16_com(0x006a); 
wrie16_date(0x0000);

wrie16_com(0x0090); 
wrie16_date(0x0015);


wrie16_com(0x0092); 
wrie16_date(0x0000);

wrie16_com(0x0093); 
wrie16_date(0x0001);

wrie16_com(0x0007); 
wrie16_date(0x0021);

wrie16_com(0x0010); 
wrie16_date(0x17b0);

wrie16_com(0x0011); 
wrie16_date(0x0017);

wrie16_com(0x0007); 
wrie16_date(0x0061);

wrie16_com(0x0007); 
wrie16_date(0x0173);

wrie16_com(0x0020); 
wrie16_date(0x0000);

wrie16_com(0x0021); 
wrie16_date(0x0000);

wrie16_com(0x0022); 
*/
wrie16_com(0x0000); 
wrie16_date(0x0000);

wrie16_com(0x00a4); 
wrie16_date(0x0001);

wrie16_com(0x0007); 
wrie16_date(0x0001);

//////////////////////////////////
	RESET=0;
for(i=0;i<200;i++);
	RESET=1;

wrie16_com(0x0000); 
wrie16_date(0x0000);

wrie16_com(0x00a4); 
wrie16_date(0x0001);

wrie16_com(0x0007); 
wrie16_date(0x0021);
////////////////////////////////////

wrie16_com(0x0008); 
wrie16_date(0x0303);


wrie16_com(0x0007); 
wrie16_date(0x0101);

wrie16_com(0x0017); 
wrie16_date(0x0101);


wrie16_com(0x0010); 
wrie16_date(0x10b0);

wrie16_com(0x0011); 
wrie16_date(0x0107);
//delay(100);
wrie16_com(0x0012); 
wrie16_date(0x011b);

//delay(100);

wrie16_com(0x0013); 
wrie16_date(0x1300);

wrie16_com(0x0029); 
wrie16_date(0x0005);

wrie16_com(0x002a); 
wrie16_date(0x0408a);

wrie16_com(0x0012); 
wrie16_date(0x013e);

wrie16_com(0x0001); 
wrie16_date(0x0500);

wrie16_com(0x0002); 
wrie16_date(0x0700);

wrie16_com(0x0003); 
wrie16_date(0x1030);

wrie16_com(0x0004); 
wrie16_date(0x0000);

wrie16_com(0x0050); 
wrie16_date(0x0000);

wrie16_com(0x0051); 
wrie16_date(0x00ef);

wrie16_com(0x0052); 
wrie16_date(0x0000);


wrie16_com(0x0053); 
wrie16_date(0x013f);


wrie16_com(0x0060); 
wrie16_date(0x2700);

wrie16_com(0x0061); 
wrie16_date(0x0000);

wrie16_com(0x0090); 
wrie16_date(0x0010);


wrie16_com(0x0092); 
wrie16_date(0x0000);

wrie16_com(0x0093); 
wrie16_date(0x0000);

wrie16_com(0x0007); 
wrie16_date(0x0021);

wrie16_com(0x0007); 
wrie16_date(0x0061);

wrie16_com(0x0007); 
wrie16_date(0x0173);
wrie16_com(0x0007); 
wrie16_date(0x0173);
wrie16_com(0x0007); 
wrie16_date(0x0173);
wrie16_com(0x0007); 

}
////////////////////////////////
initk()
{
//RESET
wrie16_com(0x0007); 
wrie16_date(0x0000);
wrie16_com(0x0000); 
wrie16_date(0x0000);
//910US
wrie16_com(0x0000); 
wrie16_com(0x0000); 
wrie16_com(0x0000); 
wrie16_com(0x0000); 
//309US
wrie16_com(0x00A4); 
wrie16_date(0x0001);
wrie16_com(0x0060); 
wrie16_date(0x2700);
wrie16_com(0x0008); 
wrie16_date(0x020E);
//gamma set
wrie16_com(0x0030); 
wrie16_date(0x0700);
wrie16_com(0x0031); 
wrie16_date(0x0200);
wrie16_com(0x0032); 
wrie16_date(0x0202);
wrie16_com(0x0033); 
wrie16_date(0x0003);
wrie16_com(0x0034); 
wrie16_date(0x0303);
wrie16_com(0x0035); 
wrie16_date(0x0707);
wrie16_com(0x0036); 
wrie16_date(0x1f1f);
wrie16_com(0x0037); 
wrie16_date(0x0506);
wrie16_com(0x0038); 
wrie16_date(0x0202);
wrie16_com(0x0039); 
wrie16_date(0x0202);
wrie16_com(0x003a); 
wrie16_date(0x0103);
wrie16_com(0x003b); 
wrie16_date(0x0303);
wrie16_com(0x003c); 
wrie16_date(0x0703);
wrie16_com(0x003d); 
wrie16_date(0x1f1f);
//4.67ms
wrie16_com(0x0007); 
wrie16_date(0x0001);
wrie16_com(0x0017); 
wrie16_date(0x0001);
wrie16_com(0x0010); 
wrie16_date(0x10b0);
wrie16_com(0x0011); 
wrie16_date(0x0117);
wrie16_com(0x0012); 
wrie16_date(0x011a);
wrie16_com(0x0013); 
wrie16_date(0x0a00);
wrie16_com(0x0029); 
wrie16_date(0x000b);
wrie16_com(0x0012); 
wrie16_date(0x013a);
wrie16_com(0x0001); 
wrie16_date(0x0500);
wrie16_com(0x0002); 
wrie16_date(0x0700);
wrie16_com(0x0003); 
wrie16_date(0x5030);
wrie16_com(0x0004); 
wrie16_date(0x0000);
wrie16_com(0x0009); 
wrie16_date(0x0001);
wrie16_com(0x000a); 
wrie16_date(0x0008);
wrie16_com(0x000d); 
wrie16_date(0x000e);
//windows
wrie16_com(0x0050); 
wrie16_date(0x0000);

wrie16_com(0x0051); 
wrie16_date(0x00ef);
wrie16_com(0x0052); 
wrie16_date(0x0000);
wrie16_com(0x0053); 
wrie16_date(0x013f);

wrie16_com(0x0061); 
wrie16_date(0x0000);
wrie16_com(0x0090); 
wrie16_date(0x001c);
wrie16_com(0x0092); 
wrie16_date(0x0100);

wrie16_com(0x0093); 
wrie16_date(0x0002);
wrie16_com(0x0020); 
wrie16_date(0x0000);
wrie16_com(0x0021); 
wrie16_date(0x0000);
wrie16_com(0x0007); 
wrie16_date(0x0021);
//866us
wrie16_com(0x0007); 
wrie16_date(0x0061);
//50ms
wrie16_com(0x0007); 
wrie16_date(0x0173);
//41us
wrie16_com(0x0000); 
wrie16_com(0x0000); 
wrie16_com(0x0000); 
wrie16_com(0x0000); 

wrie16_com(0x0050); 
wrie16_date(0x0000);
wrie16_com(0x0051); 
wrie16_date(0x00ef);
wrie16_com(0x0052); 
wrie16_date(0x0000);
wrie16_com(0x0053); 
wrie16_date(0x013f);
wrie16_com(0x0020); 
wrie16_date(0x0000);
wrie16_com(0x0021); 
//wrie16_date(0x);

}
/***********************************************************/
void otp(void)
{
unsigned int i;
	VOP_9V_ON;
	delay(1);
	VOP_75V_ON;
	delay(1);

	LCM_reset();

	wrie16_com(0x00A0); //NVM Dummy read
	i=read_data();

	wrie16_com(0x00A1);//NVM write data setting 
	wrie16_date(0x0014);//0x0014 is write
	wrie16_com(0x00A0); //NVM data write start(1)
	wrie16_date(0x0011);//TE=0,EOP=1=write,EAD=1=VCM1[4:0],see 90 page
	wrie16_com(0x00A0); //NVM data write start(2)
	wrie16_date(0x0091);//TE=1,EOP=1=write,EAD=1=VCM1[4:0],see 90 page
	delay(300);//delay 200ms
	wrie16_com(0x00A0); //NVM data write end(3)
	wrie16_date(0x0001);//TE=0,EOP=0=write stop,EAD=1=VCM1[4:0]
delay(1);
VOP_75V_OFF;
delay(1);
VOP_9V_OFF;
delay(1);
}
/**********************************************************/
main()
{  
unsigned int i;
unsigned long addr;
flag=0;
		LCM_reset();
		main_init(); 
 
flag=1;
//while(1);
/*
		delay(20);
		wrie16_com(0x00a4); 
		wrie16_date(0x0001);
		wrie16_com(0x0029); 
		i=read_data();
		i&=0x001f;
		main_init();
	    RGB(0XFFFF);

		if(i != 0x14)
		{
            display_map(otp_need);
			P2=i>>8;
			P0=i;
		}

		if(i == 0x14)
		{
            display_map(otp_succeed);
			P2=i>>8;
			P0=i;
		}
	while(key)
	delay(30);
	otp();
	LCM_reset();
	delay(20);
		wrie16_com(0x00a4); 
		wrie16_date(0x0001);
		wrie16_com(0x0029); 
		i=read_data();
		i&=0x001f;
		main_init();
	    RGB(0XFFFF);

		if(i == 0x14)
		{
            display_map(otp_succeed);
			delay(500);
			delay(500);
		}

		if(i != 0x14)
		{
            display_map(otp_fail);
			P2=i>>8;
			P0=i;
		    while(1);
		}
*/

  while(1)
{
	RGB(0XF800);
	 delay(500);
	 LED=~LED;

	RGB(0X07E0);
	 delay(500);
	 	 LED=~LED;
	RGB(0X001F);
	 delay(500);
	 	 LED=~LED;
	RGB(0X0000);
	 delay(500);
	 	 LED=~LED;
	RGB(0XFFFF);
	 delay(500);
	 	 LED=~LED;
addr1=addr2=addr3=0;
adress();
	for(addr=0;addr<65536;)
	{
			select_rom=0;
	    	i=XBYTE[addr++]; 
			 i<<=8;
			 i|=XBYTE[addr++];
			select_rom=1;
	  		 wrie16_date(i);
	}
	addr1=1;
	for(addr=0;addr<65536;)
	{
			select_rom=0;
	    	i=XBYTE[addr++]; 
			 i<<=8;
			 i|=XBYTE[addr++];
			select_rom=1;
	  		 wrie16_date(i);
	}
	addr1=0;
	addr2=1;
	for(addr=0;addr<22528;)
	{
			select_rom=0;
	    	i=XBYTE[addr++]; 
			 i<<=8;
			 i|=XBYTE[addr++];
			select_rom=1;
	  		 wrie16_date(i);
	}
	for(i=0;i<50;i++)
	 delay(500);
}
}

⌨️ 快捷键说明

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