📄 61505u.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 + -