📄 tl1763_16bit.c
字号:
// LCD controller: TL1763// 240*320// 16bit (8bit/16bit 是通过 硬件 来选择的!)// IF: 8080#define LCD_SIZE_X 240#define LCD_SIZE_Y 320// function prototypevoid LCD_Reset(void) small;void LCD_Write(U8 type, U16 value) small;void LCD_SendData(U16 value) small;void Reg_Write(U16 reg,U16 value) small;void LCD_SendCommand(U16 Command) small;void LCD_SetRamAddr(U16 xStart, U16 xEnd, U16 yStart, U16 yEnd) small;void LCD_SetRowColumn(U16 kColumn,U16 kRow) small;void init_LCM_Controller(void);/**************************************************************************************/void LCD_Reset(void) small{ LCD_RST = 1; delay100us(200); LCD_RST = 0; delay100us(200); // 100us 足够! LCD_RST = 1;}/**************************************************************************************/void LCD_Write(U8 type, U16 value) small{ U8 data_H, data_L;// // 8bit// data_L = (U8)value;// data_H = (U8)(value>>8);// LCD_RS = type; // 0: command 1: data// // LCD_WR = L;// // P1 = data_H;// // LCD_WR = H;// LCD_WR = L;// P1 = data_L;// LCD_WR = H;// //P6800// LCD_RS = type; // 0: command 1: data// LCD_WR = L;// LCD_RD = H;// P2 = value;// LCD_RD = L; // falling edge of the E // 16bit: data_L = (U8)value; data_H = (U8)(value>>8); LCD_RS = type; // 0: command 1: data LCD_WR = L; P2 = data_H; P1 = data_L; LCD_WR = H;}/***************************************************************************/void LCD_SendData(U16 value) small // color data{ //16bit: LCD_Write(TYPE_LCD_DATA,value);// // 8bit:// U8 data_H,data_L;//// data_H = (U8)(value >>8);// data_L = (U8)value;//// LCD_Write(TYPE_LCD_DATA,data_H);// LCD_Write(TYPE_LCD_DATA,data_L);}/***************************************************************************/void Reg_Write(U16 reg,U16 value) small{ LCD_Write(TYPE_LCD_COMMAND,reg); LCD_Write(TYPE_LCD_DATA,value);}/***************************************************************************/void LCD_SendCommand(U16 Command) small{ LCD_Write(TYPE_LCD_COMMAND,Command);}/***************************************************************************/void LCD_SetRamAddr(U16 xStart, U16 xEnd, U16 yStart, U16 yEnd) small{ // for TL1763 某些命令类似于3912 ... U16 HorPos; HorPos = (U16)(xStart | (xEnd<<8)); Reg_Write(0x46, HorPos); // xStart + xEnd Reg_Write(0x48, yStart); // yStart Reg_Write(0x47, yEnd); // yEnd Reg_Write(0x20, xStart); // x start command Reg_Write(0x21, yStart); // y start command LCD_Write(TYPE_LCD_COMMAND,0x22); // 0x22}/***************************************************************************/void LCD_SetRowColumn(U16 kColumn,U16 kRow) small{ // for TL1763 if(kRow < LCD_SIZE_Y) { Reg_Write(0x20, kColumn); // Ram Set command x (8bit) Reg_Write(0x21, kRow); // Ram Set command y (9bit) LCD_Write(TYPE_LCD_COMMAND,0x22); }}/***************************************************************************/void init_LCM_Controller(void) // ok{ LCD_Reset(); LCD_CS = H; LCD_RS = L; LCD_RD = H; LCD_WR = H; LCD_CS = L;/* // 竖屏显示: Reg_Write(0x00,0x0001); delay100us(100); //delay 10ms Reg_Write(0x11,0x0111); Reg_Write(0x12,0x100b); Reg_Write(0x13,0x1430); Reg_Write(0x10,0x5250); // 0101 0010 0101 0000 delay100us(500); //delay 50ms Reg_Write(0x12,0x101b); // 0000 0001 0000 0001 Reg_Write(0x13,0x3430); // 0011 0100 0011 0000 delay100us(200); //delay 200ms Reg_Write(0x01,0x0100); Reg_Write(0x02,0x0700); Reg_Write(0x03,0x1030); Reg_Write(0x04,0x0140); Reg_Write(0x07,0x0001); Reg_Write(0x08,0x0503); Reg_Write(0x0b,0x0000); Reg_Write(0x0c,0x0001); Reg_Write(0x0e,0x0014); Reg_Write(0xa1,0x1300); Reg_Write(0xa4,0xa000); Reg_Write(0xa2,0x0005); Reg_Write(0x30,0x0202); Reg_Write(0x31,0x0000); Reg_Write(0x32,0x0404); Reg_Write(0x33,0x0203); Reg_Write(0x34,0x0207); Reg_Write(0x35,0x0202); Reg_Write(0x36,0x0707); Reg_Write(0x37,0x0002); Reg_Write(0x38,0x0f00); Reg_Write(0x39,0x0002); Reg_Write(0x40,0x0000); Reg_Write(0x41,0x0000); Reg_Write(0x42,0x013f); Reg_Write(0x43,0x0000); Reg_Write(0x44,0x0000); Reg_Write(0x45,0x0000); Reg_Write(0x46,0xef00); Reg_Write(0x47,0x013f); Reg_Write(0x48,0x0000); delay100us(400); // delay 40ms Reg_Write(0x07,0x0021); // Gate Scanning Start delay100us(400); // delay 40ms Reg_Write(0x07,0x0023); // Source Output Start delay100us(400); // delay 40ms Reg_Write(0x07,0x0037); // Dispaly ON delay100us(400); // delay 40ms Reg_Write(0x20,0x0000); Reg_Write(0x21,0x0000); LCD_Write(TYPE_LCD_COMMAND,0x22);// Display Data Write...*/ // 横屏显示 Reg_Write(0x00,0x0001); delay100us(100); //delay 10ms Reg_Write(0x11,0x0112); Reg_Write(0x12,0x100d); Reg_Write(0x13,0x1434); Reg_Write(0x10,0x1530); // 0101 0010 0101 0000 delay100us(500); //delay 50ms Reg_Write(0x12,0x101d); // 0000 0001 0000 0001 Reg_Write(0x13,0x3030); // 0011 0100 0011 0000 delay100us(200); //delay 200ms Reg_Write(0x01,0x0000); Reg_Write(0x02,0x0700); Reg_Write(0x03,0x1038); //0x1030); Reg_Write(0x04,0x0141); Reg_Write(0x07,0x0005); Reg_Write(0x08,0x0202); Reg_Write(0x0b,0x0000); Reg_Write(0x0c,0x0001); Reg_Write(0x0e,0x0015); Reg_Write(0xa1,0x1000); Reg_Write(0xa4,0x7300); Reg_Write(0xa2,0x000a); Reg_Write(0x30,0x0202); Reg_Write(0x31,0x0000); Reg_Write(0x32,0x0404); Reg_Write(0x33,0x0203); Reg_Write(0x34,0x0207); Reg_Write(0x35,0x0202); Reg_Write(0x36,0x0707); Reg_Write(0x37,0x0002); Reg_Write(0x38,0x0f00); Reg_Write(0x39,0x0002); Reg_Write(0x40,0x0000); Reg_Write(0x41,0x0000); Reg_Write(0x42,0x0140); Reg_Write(0x43,0x0000); Reg_Write(0x44,0x0000); Reg_Write(0x45,0x0000); Reg_Write(0x46,0xef00); Reg_Write(0x47,0x013f); Reg_Write(0x48,0x0000); delay100us(400); // delay 40ms Reg_Write(0x07,0x0021); // Gate Scanning Start delay100us(400); // delay 40ms Reg_Write(0x07,0x0023); // Source Output Start delay100us(400); // delay 40ms Reg_Write(0x07,0x0037); // Dispaly ON delay100us(400); // delay 40ms Reg_Write(0x20,0x0000); Reg_Write(0x21,0x0000); LCD_Write(TYPE_LCD_COMMAND,0x22);// Display Data Write...}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -