#include "img.h"
#include "lcd.h"
sbit LCD_CS = P1^0;
sbit RES = P1^4;
sbit LCD_RS = P1^1;
sbit LCD_WR = P1^2;
sbit LCD_RD = P1^3;
extern unsigned int id;
void delay(unsigned char k)
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<k;j++);
}
void LCD_RST(void)
{
RES=1;
delay(10);
RES=0;
delay(20);
RES=1;
delay(50);
}
void LCD_Write_DATA(unsigned int dat)
{
LCD_RS=1; //data
LCD_RD=1; //write
LCD_WR=1;
LCD_CS=0;
DataH = (dat>>8);
DataL = (dat);
LCD_WR=0;
LCD_WR=1;
LCD_CS=1;
}
void LCD_Write_CMD(unsigned int cmd)
{
LCD_RS=0; //cmd
LCD_RD=1; //write
LCD_WR=1;
LCD_CS=0;
DataH = (unsigned char)(cmd>>8);
DataL = (unsigned char)(cmd);
LCD_WR=0;
LCD_WR=1;
LCD_CS=1;
}
/***************************************************/
/****函数功能:LCD读出reg的值 **/
/****函数参数:reg:寄存器地址 **/
/****函数返回值:寄存器的值 **/
/****说明: **/
/***************************************************/
unsigned int LCD_Read_REG61581(unsigned int reg)
{
unsigned int temp1,temp2,temp;
//
LCD_Write_CMD(0xB0);
LCD_Write_DATA(0x00);//操作0xbx寄存器的时候需要先写这个寄存器
LCD_Write_CMD(reg);
DataH = 0X00;
DataL = 0X00;
LCD_RS = 1;
LCD_CS = 0;
LCD_WR = 1;
LCD_RD = 0;
temp = DataH<<8|DataL;
LCD_RD = 1;
LCD_RD = 0;
temp = DataH<<8|DataL;
LCD_RD = 1;
LCD_RD = 0;
temp = DataH<<8|DataL;
LCD_RD = 1;
LCD_RD = 0;
temp1 = DataH<<8|DataL;//15
LCD_RD = 1;
LCD_RD = 0;
temp2 = DataH<<8|DataL;//81
LCD_RD = 1;
temp = (temp1 <<8)|temp2;
LCD_CS = 1;
return temp;
}
/***************************************************/
/****函数功能:LCD读出reg的值 **/
/****函数参数:reg:寄存器地址 **/
/****函数返回值:寄存器的值 **/
/****说明: **/
/***************************************************/
unsigned int LCD_Read_REG8357(unsigned int reg)
{
unsigned int temp1,temp,temp2;
LCD_Write_CMD(0xB0);
LCD_Write_DATA(0x00);//操作0xbx寄存器的时候需要先写这个寄存器
LCD_Write_CMD(reg);
DataH = 0XFF;
DataL = 0XFF;
LCD_RS = 1;
LCD_CS = 0;
LCD_WR = 1;
LCD_RD = 0;
temp = DataH<<8|DataL;
LCD_RD = 1;
LCD_RD = 0;
temp = DataH<<8|DataL;
LCD_RD = 1;
LCD_RD = 0;
temp1 = DataH<<8|DataL;//80
LCD_RD = 1;
LCD_RD = 0;
temp2 = DataH<<8|DataL;//00
LCD_RD = 1;
temp = (temp1 <<8)&0xff00;
temp = temp | (temp2&0x00ff);
LCD_CS = 1;
return temp;
}
/***************************************************/
/****函数功能:LCD读出reg的值 **/
/****函数参数:reg:寄存器地址 **/
/****函数返回值:寄存器的值 **/
/****说明: **/
/***************************************************/
unsigned int LCD_Read_REG9486(unsigned int reg)
{
unsigned int temp1,temp2,temp;
LCD_Write_CMD(reg);
DataH = 0XFF;
DataL = 0XFF;
LCD_RS = 1;
LCD_CS = 0;
LCD_WR = 1;
LCD_RD = 0;
temp = DataH<<8|DataL;
LCD_RD = 1;
//
LCD_RD = 0;
temp = DataH<<8|DataL;
LCD_RD = 1;
LCD_RD = 0;
temp1 = DataH<<8|DataL;//94
LCD_RD = 1;
LCD_RD = 0;
temp2 = DataH<<8|DataL;//86
LCD_RD = 1;
temp = (temp1 <<8)|temp2;
LCD_CS = 1;
return temp;
}
/***************************************************/
/****函数功能:LCD读出reg的值 **/
/****函数参数:reg:寄存器地址 **/
/****函数返回值:寄存器的值 **/
/****说明: **/
/***************************************************/
unsigned int LCD_Read_REG9481(unsigned int reg)
{
unsigned int temp1,temp2,temp;
LCD_Write_CMD(0xB0);
LCD_Write_DATA(0x00);//操作0xbx寄存器的时候需要先写这个寄存器
LCD_Write_CMD(reg);
DataH = 0XFF;
DataL = 0XFF;
LCD_RS = 1;
LCD_CS = 0;
LCD_WR = 1;
LCD_RD = 0;
temp = DataH<<8|DataL;//x
LCD_RD = 1;
LCD_RD = 0;
temp = DataH<<8|DataL;//02
LCD_RD = 1;
LCD_RD = 0;
temp = DataH<<8|DataL;//04
LCD_RD = 1;
LCD_RD = 0;
temp1 = DataH<<8|DataL;//94
LCD_RD = 1;
LCD_RD = 0;
temp2 = DataH<<8|DataL;//81
LCD_RD = 1;
temp = (temp1 <<8)|temp2;
LCD_CS = 1;
return temp;
}
/***************************************************/
/****函数功能:LCD初始化 **/
/****函数参数:无 **/
/****函数返回值:无 **/
/****说明: **/
/***************************************************/
void LCD_INIT61581(void)
{
LCD_RST();
LCD_Write_CMD(0xFF);
LCD_Write_CMD(0xFF);
delay(5);
LCD_Write_CMD(0xFF);
LCD_Write_CMD(0xFF);
LCD_Write_CMD(0xFF);
LCD_Write_CMD(0xFF);
delay(10);
LCD_Write_CMD(0x11);
delay(150);
LCD_Write_CMD(0xB0);
LCD_Write_DATA(0x00);
LCD_Write_CMD(0xB3);
LCD_Write_DATA(0x02);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x00);
LCD_Write_CMD(0xC0);
LCD_Write_DATA(0x13);
LCD_Write_DATA(0x3B);//480
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x02);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x01);
LCD_Write_DATA(0x00);//NW
LCD_Write_DATA(0x43);
LCD_Write_CMD(0xC1);
LCD_Write_DATA(0x08);
LCD_Write_DATA(0x18);//CLOCK
LCD_Write_DATA(0x08);
LCD_Write_DATA(0x08);
LCD_Write_CMD(0xC4);
LCD_Write_DATA(0x11);
LCD_Write_DATA(0x07);
LCD_Write_DATA(0x03);
LCD_Write_DATA(0x03);
LCD_Write_CMD(0xC6);
LCD_Write_DATA(0x02);
LCD_Write_CMD(0xC8);//GAMMA
LCD_Write_DATA(0x03);
LCD_Write_DATA(0x02);
LCD_Write_DATA(0x14);
LCD_Write_DATA(0x6F);
LCD_Write_DATA(0x04);
LCD_Write_DATA(0x07);
LCD_Write_DATA(0x0D);
LCD_Write_DATA(0x0E);
LCD_Write_DATA(0x21);
LCD_Write_DATA(0x31);
LCD_Write_DATA(0x0E);
LCD_Write_DATA(0x0D);
LCD_Write_DATA(0x07);
LCD_Write_DATA(0x64);
LCD_Write_DATA(0x0F);
LCD_Write_DATA(0x14);
LCD_Write_DATA(0x02);
LCD_Write_DATA(0x03);
LCD_Write_DATA(0x31);
LCD_Write_DATA(0x21);
LCD_Write_CMD(0xD0);
LCD_Write_DATA(0x07);
LCD_Write_DATA(0x07);//VCI1
LCD_Write_DATA(0x1D);//VRH
LCD_Write_DATA(0x06);//BT
LCD_Write_CMD(0xD1);
LCD_Write_DATA(0x03);
LCD_Write_DATA(0x4B);//VCM
LCD_Write_DATA(0x10);//VDV
LCD_Write_CMD(0xD2);
LCD_Write_DATA(0x03);
LCD_Write_DATA(0x14);
LCD_Write_DATA(0x04);
delay(100);
LCD_Write_CMD(0xB0);
LCD_Write_DATA(0x03);
LCD_Write_CMD(0x35);
LCD_Write_DATA(0x00);
LCD_Write_CMD(0x36);
LCD_Write_DATA(0x00);
LCD_Write_CMD(0x3A);
LCD_Write_DATA(0x55);
LCD_Write_CMD(0x44);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x01);
LCD_Write_CMD(0x29);
delay(30);
LCD_Write_CMD(0x2A);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x01);
LCD_Write_DATA(0x3F);//320
LCD_Write_CMD(0x2B);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x01);
LCD_Write_DATA(0xDF);//480
LCD_Write_CMD(0x2C);
}
///////////////////////////////////////////////////////////////////////
void LCD_INIT8357(void)
{
LCD_RST();
LCD_Write_CMD(0xB9); //EXTC
LCD_Write_DATA(0xFF); //EXTC
LCD_Write_DATA(0x83); //EXTC
LCD_Write_DATA(0x57); //EXTC
delay(5);
LCD_Write_CMD(0xB6);
LCD_Write_DATA(0x35); //VCOMDC CTC 4C
LCD_Write_CMD(0x35); // TE ON
LCD_Write_CMD(0x3A);
LCD_Write_DATA(0x05); //262K
LCD_Write_CMD(0x36);
LCD_Write_DATA(0x00); //48??
LCD_Write_CMD(0xCC); // Set Panel RGB GS SS SM
LCD_Write_DATA(0x09); // 09
LCD_Write_CMD(0xB0);
LCD_Write_DATA(0x68); //70Hz
LCD_Write_CMD(0xB1); //
LCD_Write_DATA(0x00); //
LCD_Write_DATA(0x21); //BT 11
LCD_Write_DATA(0x1f); //VSPR
LCD_Write_DATA(0x1f); //VSNR
LCD_Write_DATA(0x83); //AP
LCD_Write_DATA(0xAA); //FS
LCD_Write_CMD(0xB4); //
LCD_Write_DATA(0x02); //NW
LCD_Write_DATA(0x40); //RTN
LCD_Write_DATA(0x00); //DIV
LCD_Write_DATA(0x2A); //DUM
LCD_Write_DATA(0x2A); //DUM
LCD_Write_DATA(0x0D); //GDON
LCD_Write_DATA(0x78); //GDOFF
LCD_Write_CMD(0xC0); //STBA
LCD_Write_DATA(0x50); //OPON
LC
评论1