?? lcd_ltm024_bas.c
字號:
#include "LCD_LTM024_PORT.h"
#include "LCD_LTM024.h"
void DelayMs(uint16 t)
{
uint16 i, j;
for(i=0; i<t; i++)
{
for(j=0; j<120; j++);
}
}
void LCD_OrgInit()//Org safe status
{
LCD_CS_H; //not selected
LCD_WR_H; //not write but read
LCD_RS_L; //not data but commond
LCD_RD_H; //not read
LCD_RST_H; //low is active
DDR_LCD_CTL |= LCD_CS | LCD_WR | LCD_RS | LCD_RD | LCD_RST;//all output
OUT_LCD_DATA = 0xff; //all high
DDR_LCD_DATA = 0xff; //all output
}
void LCD_SafeStatus()// safe mode
{
LCD_CS_H; //not selected
LCD_WR_H; //not write but read
LCD_RS_H; //not data but commond
LCD_RD_H; //not read
LCD_RST_H; //not reset,low is active
DDR_LCD_CTL |= LCD_CS | LCD_WR | LCD_RS | LCD_RD | LCD_RST;//all output
OUT_LCD_DATA = 0xff; //all high
DDR_LCD_DATA = 0x00; //all input
}
void LCD_FastStatus()//active & fast mode
{
LCD_CS_L; //selected
LCD_WR_H; //not write
LCD_RS_H; //data
LCD_RD_H; //not read
LCD_RST_H; //not reset,low is active
DDR_LCD_CTL |= LCD_CS | LCD_WR | LCD_RS | LCD_RD | LCD_RST;//all output
OUT_LCD_DATA = 0xff; //all high
DDR_LCD_DATA = 0xff; //all output
}
void LCD_WrReg(uint8 reg)//write reg
{
LCD_RS_L;//cmd
OUT_LCD_DATA = reg;
LCD_WR_L;
LCD_WR_H;
LCD_RS_H;//Data
}
void LCD_WrData8(uint8 data)//Write 8-bit data
{
// LCD_RS_H;//data
OUT_LCD_DATA = data;
LCD_WR_L;
LCD_WR_H;
}
void LCD_WrData16(uint16 data)//Write 16-bit data
{
LCD_WrData8(data>>8);//Write 8-bit data
LCD_WrData8(data);//Write 8-bit data
}
void LCD_WrCmd8(uint8 Index, uint8 cmd)//Write 8-bit commond
{
LCD_WrReg(Index);
LCD_WrData8(cmd);
}
void LCD_WrCmd16(uint8 Index, uint16 cmd)//Write 16-bit commond
{
LCD_WrReg(Index);
LCD_WrData16(cmd);
}
uint8 LCD_RdData8()//Read 8-bit Data
{
uint8 data = 0x00;
OUT_LCD_DATA = 0x00; //all low
DDR_LCD_DATA = 0x00; //all input
LCD_RD_L;
LCD_RD_H;
data = IN_LCD_DATA;
// OUT_LCD_DATA = 0x00; //all low
DDR_LCD_DATA = 0xFF; //all output
return data;
}
uint16 LCD_RdData16()//Read 16-bit Data
{
uint16 data = 0x0000;
OUT_LCD_DATA = 0x00; //all low
DDR_LCD_DATA = 0x00; //all input
LCD_RD_L;
LCD_RD_H;
data = IN_LCD_DATA;
LCD_RD_L;
LCD_RD_H;
data |= (IN_LCD_DATA<<8);
// OUT_LCD_DATA = 0x00; //all low
DDR_LCD_DATA = 0xFF; //all output
return data;
}
uint16 LCD_RdReg16(uint8 Index)//Read 16-bit reg
{
LCD_WrReg(Index);
return LCD_RdData16();
}
void LCD_SetRec(uint8 xs, uint16 ys, uint8 x_dot, uint16 y_dot)//設置窗口大小
{
LCD_WrCmd8(0x00,0x0C); //掃描模式設定
LCD_WrCmd8(0x2,xs); //設置到原點
LCD_WrCmd16(0x3,ys);
LCD_WrCmd8(0x04,x_dot); //結束列數(0~239)
LCD_WrCmd16(0x05,y_dot); //結束行數(0~319)
// LCD_WrReg(0x0E);
}
//清屏函數
void LCD_Clear(void)
{
/* uint n;
LCD_SetRec(0, 0, 239, 319);
for(n=0;n<38400;n++)
{
LCD_WrData16(WHITE);//顯示白色
//LCD_RdData16();//Read 16-bit Data
}
for(n=0;n<38400;n++)
{
LCD_WrData16(WHITE);//顯示白色
//LCD_RdData16();//Read 16-bit Data
}*/
LCD_SetRec(0, 0, 239, 319);//面板設置
LCD_WrCmd8(0x01,0x0F);//寫入清屏
DelayMs(10000);
}
void LCD_Reset() //TFT LCD Reset
{
LCD_RST_L; //Low active
DelayMs(500);
LCD_RST_H;
DelayMs(500);
}
void LCD_Init() //初始化LCD
{
LCD_OrgInit(); //Org safe status
LCD_Reset(); //TFT LCD Reset
LCD_FastStatus(); //active & fast mode
LCD_WrCmd8(0xA1,0x00);
LCD_WrCmd8(0xA0,0x00);
LCD_WrCmd8(0x70,0xC8);
LCD_WrCmd8(0x72,0xA3);
LCD_WrCmd8(0x73,0x04);
LCD_WrCmd8(0x75,0x45);
LCD_WrCmd8(0x76,0x23);
LCD_WrCmd8(0x77,0x08);
LCD_WrCmd8(0x78,0x08);
LCD_WrCmd8(0x79,0x00);
LCD_WrCmd8(0x7F,0xF0);
LCD_WrCmd8(0x71,0x81);
LCD_WrCmd8(0x0D,0x23);
LCD_WrCmd8(0x11,0x00);
LCD_WrCmd8(0x12,0x00);
LCD_WrCmd8(0x21,0x37);
LCD_WrCmd8(0x22,0x02);
LCD_WrCmd8(0x23,0x24);
LCD_WrCmd8(0x24,0x13);
LCD_WrCmd8(0x25,0x0A);
LCD_WrCmd8(0x26,0x82);
LCD_WrCmd8(0x27,0x01);
LCD_WrCmd8(0x1E,0x25);
LCD_WrCmd8(0x1F,0x59);
//GAMMA設置
LCD_WrCmd16(0x30,0x0777);
LCD_WrCmd16(0x31,0x0444);
LCD_WrCmd16(0x32,0x0555);
LCD_WrCmd16(0x33,0x0444);
LCD_WrCmd16(0x34,0x0333);
LCD_WrCmd16(0x35,0x0333);
LCD_WrCmd16(0x36,0x0333);
LCD_WrCmd16(0x37,0x0333);
LCD_WrCmd16(0x38,0x0444);
LCD_WrCmd16(0x39,0x0555);
LCD_WrCmd16(0x3A,0x0666);
LCD_WrCmd16(0x3B,0x0666);
LCD_WrCmd16(0x3C,0x0777);
LCD_WrCmd16(0x3D,0x0777);
LCD_WrCmd16(0x3E,0x0777);
LCD_WrCmd16(0x3F,0x0777);
LCD_WrCmd16(0x40,0x0777);
LCD_WrCmd16(0x41,0x0777);
LCD_WrCmd16(0x42,0x0777);
LCD_WrCmd16(0x43,0x0777);
LCD_WrCmd16(0x44,0x0777);
LCD_WrCmd16(0x45,0x0777);
LCD_WrCmd16(0x46,0x0777);
LCD_WrCmd16(0x47,0x0777);
LCD_WrCmd16(0x48,0x0777);
LCD_WrCmd16(0x49,0x0777);
LCD_WrCmd16(0x4A,0x0777);
LCD_WrCmd16(0x4B,0x0777);
LCD_WrCmd16(0x4C,0x0777);
LCD_WrCmd16(0x4D,0x0666);
LCD_WrCmd16(0x4E,0x0666);
LCD_WrCmd16(0x4F,0x0666);
LCD_SetRec(0, 0, 239, 319);//面板設置
/*
LCD_WrCmd8(0x06,0x00);
LCD_WrCmd8(0x07,0x00);
LCD_WrCmd8(0x08,200);
LCD_WrCmd8(0x09,200);
*/
LCD_WrCmd8(0x0A,0x00);
LCD_WrCmd8(0x0B,0x00);
LCD_WrCmd8(0x0C,0x00);
LCD_WrCmd8(0x14,0x00);
LCD_WrCmd8(0x15,0x00);
LCD_WrCmd8(0x16,0x00);
LCD_WrCmd16(0x17,0x01FF);
LCD_WrCmd16(0x18,0x01FF);
LCD_WrCmd8(0x13,0x00);
LCD_WrCmd16(0x19,0x01FF);
LCD_WrCmd16(0x1B,0x01FF);
LCD_WrCmd16(0x1C,0x01FF);
LCD_WrCmd16(0x1A,0x01FF);
LCD_WrCmd8(0x1D,0x0E);
LCD_WrCmd8(0x10,0x06); //開顯示
LCD_WrReg(0x0E);
//LCD_Clear();
LCD_SafeStatus(); // safe mode
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -