📄 lcd.h
字号:
//lcd.h
//-----------------------------------------------------------------------------
#define DisplayCol1 160 //
#define DisplaySeg1 128 //
#define DisplayCol2 320 //
#define DisplaySeg2 240 //
//----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
sbit LCD_RST = P3^0; //
sbit LCD_RS = P3^1; //
sbit LCD_WR = P3^2; //
sbit LCD_RD = P3^3; //
sbit LCD_CS = P3^4;
unsigned int page1,page2,seg1,seg2;
//-------------------------------------------------
void delay_us(unsigned char Times)
{
unsigned char i;
for (i=0; i<Times; i++)
{
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();
}
}
/***********************************************************************************
* 函数名称:Delay_us;
*
* 函数功能描述:延时n毫秒子函数;
*
* 输入参数:延时时间(单位毫秒);
*
* 返回数据:none;
*
* 注意: none;
************************************************************************************/
void delay_ms(unsigned char Times)
{
unsigned char i;
for (i=0; i<Times; i++)
{
delay_us(250);
delay_us(250);
delay_us(250);
delay_us(250);
}
}
//------------------------------------------------
void LCD_Index(unsigned int index)
{
P0=0x00;
LCD_CS=0;
LCD_RS=0;
P0=index>>8;
LCD_WR=0;
delay_us(5); //PEW
LCD_WR=1;
delay_us(1); //tDHW
P0=index;
delay_us(1); //PDW-tDHW
LCD_WR=0;
delay_us(5); //PEW
LCD_WR=1;
delay_us(1);
// LCD_CS=1;
}
void LCD_DataWrite(unsigned int set_db)
{
LCD_CS =0;
LCD_RS =1;
P0=set_db>>8;
LCD_WR =0;
delay_us(1);
LCD_WR =1;
delay_us(1);
P0=set_db;
delay_us(1);
LCD_WR =0;
delay_us(1);
LCD_WR =1;
delay_us(1);
//LCD_CS =1;
}
void LCD_RGBWrite(unsigned char rgb_r,unsigned char rgb_g,unsigned rgb_b)
{
LCD_CS =0;
LCD_RS =1;
P0=rgb_r;
LCD_WR =0;
_nop_();
//delay_us(1);
LCD_WR =1;
_nop_();
//delay_us(1);
P0=rgb_g;
_nop_();
//delay_us(1);
LCD_WR =0;
_nop_();
//delay_us(1);
LCD_WR =1;
_nop_();
//delay_us(1);
P0=rgb_b;
_nop_();
//delay_us(1);
LCD_WR =0;
_nop_();
//delay_us(1);
LCD_WR =1;
_nop_();
//delay_us(1);
//LCD_CS =1;
}
void LCD_CmdWrite(unsigned int index,unsigned int set_db)
{
LCD_Index(index);
LCD_DataWrite(set_db);
}
void LCD_Reset(void)
{
LCD_RST=0;
delay_ms(20);
LCD_RST=1;
delay_ms(20);
}
void LCD_Initial12(void)
{
LCD_WR=0;
LCD_CS=0;
LCD_RS=0;
P0=0x00;
LCD_WR=1;
delay_ms(40);
LCD_WR=0;
delay_ms(2);
LCD_WR=1;
delay_ms(2);
LCD_WR=0;
delay_ms(2);
LCD_WR=1;
delay_ms(2);
LCD_WR=0;
delay_ms(2);
LCD_WR=1;
delay_ms(2);
LCD_CS=1;
LCD_RS=1;
LCD_RD=1;
}
void LCD_Initial7A(void) //initial code 1
{
LCD_CmdWrite(0x0000,0x0001);
LCD_CmdWrite(0x0001,0x0114);
LCD_CmdWrite(0x0002,0x0201);
LCD_CmdWrite(0x0003,0xA030);
LCD_CmdWrite(0x0007,0x800C);
LCD_CmdWrite(0x0008,0x0202);
LCD_CmdWrite(0x000D,0x0100);
LCD_CmdWrite(0x0012,0x0301);
LCD_CmdWrite(0x0013,0x0303);
LCD_CmdWrite(0x0014,0x0000);
LCD_CmdWrite(0x0015,0x2000);
LCD_CmdWrite(0x001C,0x0102);
LCD_CmdWrite(0x0103,0x0005);
LCD_CmdWrite(0x0104,0x0000);
LCD_CmdWrite(0x0105,0x0105);
LCD_CmdWrite(0x0108,0x0002);
LCD_CmdWrite(0x0300,0x3200);
LCD_CmdWrite(0x0301,0x3043);
LCD_CmdWrite(0x0302,0x1133);
LCD_CmdWrite(0x0303,0x3200);
LCD_CmdWrite(0x0304,0x3043);
LCD_CmdWrite(0x0305,0x1133);
LCD_CmdWrite(0x0306,0x3200);
LCD_CmdWrite(0x0307,0x3043);
LCD_CmdWrite(0x0308,0x1133);
LCD_CmdWrite(0x0309,0x0001);
LCD_CmdWrite(0x0402,0x0000);
LCD_CmdWrite(0x0403,0x009F);
}
void LCD_Initial8A(void)
{
LCD_CmdWrite(0x0406,0x0036);
LCD_CmdWrite(0x0407,0x00B5);
LCD_CmdWrite(0x0408,0x0000);
LCD_CmdWrite(0x0409,0x009F);
LCD_CmdWrite(0x0200,0x0036);
LCD_CmdWrite(0x0201,0x0000);
}
void LCD_Initial7B(void) //initial code 1
{
LCD_CmdWrite(0x0000,0x0001);
LCD_CmdWrite(0x0001,0x0127);
LCD_CmdWrite(0x0002,0x0201);
LCD_CmdWrite(0x0003,0xA030);
LCD_CmdWrite(0x0007,0x800C); //65536
LCD_CmdWrite(0x0008,0x0302);
LCD_CmdWrite(0x000D,0x0005);
LCD_CmdWrite(0x0012,0x0302);
LCD_CmdWrite(0x0013,0x0303);
LCD_CmdWrite(0x0014,0x0001);
LCD_CmdWrite(0x0015,0x3000);
LCD_CmdWrite(0x001C,0x0002);
LCD_CmdWrite(0x0103,0x0005);
LCD_CmdWrite(0x0104,0x0000);
LCD_CmdWrite(0x0105,0x0315);
LCD_CmdWrite(0x0108,0x0001);
LCD_CmdWrite(0x0300,0x3333);
LCD_CmdWrite(0x0301,0x0043);
LCD_CmdWrite(0x0302,0x1113);
LCD_CmdWrite(0x0303,0x3333);
LCD_CmdWrite(0x0304,0x0043);
LCD_CmdWrite(0x0305,0x1113);
LCD_CmdWrite(0x0306,0x3333);
LCD_CmdWrite(0x0307,0x0043);
LCD_CmdWrite(0x0308,0x1113);
LCD_CmdWrite(0x0309,0x0001);
LCD_CmdWrite(0x0402,0x0000);
LCD_CmdWrite(0x0403,0x013F);
}
void LCD_Initial8B(void)
{
LCD_CmdWrite(0x0406,0x0000);
LCD_CmdWrite(0x0407,0x00EF);
LCD_CmdWrite(0x0408,0x0000);
LCD_CmdWrite(0x0409,0x013F);
LCD_CmdWrite(0x0200,0x0000);
LCD_CmdWrite(0x0201,0x0000);
}
void LCD_Initial9(void)
{
LCD_CmdWrite(0x0101,0x0001);
LCD_CmdWrite(0x0100,0xFDFE);
delay_us(50);
LCD_CmdWrite(0x0102,0x85CD);
LCD_CmdWrite(0x0107,0x3331);
delay_ms(100);
}
void LCD_Initial10(void)
{
LCD_CmdWrite(0x0100,0x0001);
delay_ms(50);
LCD_CmdWrite(0x0100,0x0000);
LCD_CmdWrite(0x0000,0x0000);
delay_ms(100);
}
//----------------------------------------------------------------------
void Checker1(unsigned char rgb_r,unsigned char rgb_g,unsigned rgb_b)
{
LCD_Index(0x0202);
for(page1=0;page1<DisplayCol1;page1++) // change Line
{
for(seg1=0;seg1<DisplaySeg1;seg1++) // write pixel
{
LCD_RGBWrite(rgb_r,rgb_g,rgb_b);
}
}
}
//----------------------------------------------------------------------
void Checker2(unsigned char rgb_r,unsigned char rgb_g,unsigned rgb_b)
{
LCD_Index(0x0202);
for(page2=0;page2<DisplayCol2;page2++) // change Line
{
for(seg2=0;seg2<DisplaySeg2;seg2++) // write pixel
{
LCD_RGBWrite(rgb_r,rgb_g,rgb_b);
}
}
}
//--------------------------------------------------------------------------
void Main_LCD_Grey_Scale(void)
{
unsigned char i,r,g,b,w;
unsigned int n,m;
LCD_Index(0x0202);
for(i=0;i<80;i++)
{ w=0xff;
for(m=0;m<16;m++)
{
for(n=0;n<15;n++)
LCD_RGBWrite(w,w,w);
w=w-0x10;
}
}
for(i=0;i<80;i++)
{ r=0xff;
for(m=0;m<16;m++)
{
for(n=0;n<15;n++)
LCD_RGBWrite(r,0x00,0x00);
r-=0x10;
}
}
for(i=0;i<80;i++)
{ g=0xff;
for(m=0;m<16;m++)
{
for(n=0;n<15;n++)
LCD_RGBWrite(0x00,g,0x00);
g-=0x10;
}
}
for(i=0;i<80;i++)
{ b=0xff;
for(m=0;m<16;m++)
{
for(n=0;n<15;n++)
LCD_RGBWrite(0x00,0x00,b);
b-=0x10;
}
}
}
//----------------------------------------------------------------------
void Sub_LCD_Grey_Scale(void)
{
unsigned char i,r,g,b,w;
unsigned int n,m;
LCD_Index(0x0202);
for(i=0;i<40;i++)
{ w=0xff;
for(m=0;m<16;m++)
{
for(n=0;n<8;n++)
LCD_RGBWrite(w,w,w);
w=w-0x10;
}
}
for(i=0;i<40;i++)
{ r=0xff;
for(m=0;m<16;m++)
{
for(n=0;n<8;n++)
LCD_RGBWrite(r,0x00,0x00);
r-=0x10;
}
}
for(i=0;i<40;i++)
{ g=0xff;
for(m=0;m<16;m++)
{
for(n=0;n<8;n++)
LCD_RGBWrite(0x00,g,0x00);
g-=0x10;
}
}
for(i=0;i<40;i++)
{ b=0xff;
for(m=0;m<16;m++)
{
for(n=0;n<8;n++)
LCD_RGBWrite(0x00,0x00,b);
b-=0x10;
}
}
}
//----------------------------------------------------------------------
void Main_LCD_Show_Black(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7B();
LCD_Initial8B();
Checker2(0x00,0x00,0x00);
LCD_Initial9();
}
void Main_LCD_Show_White(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7B();
LCD_Initial8B();
Checker2(0xff,0xff,0xff);
LCD_Initial9();
}
void Main_LCD_Show_Red(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7B();
LCD_Initial8B();
Checker2(0xff,0x00,0x00);
LCD_Initial9();
}
void Main_LCD_Show_Green(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7B();
LCD_Initial8B();
Checker2(0x00,0xff,0x00);
LCD_Initial9();
}
void Main_LCD_Show_Blue(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7B();
LCD_Initial8B();
Checker2(0x00,0x00,0xff);
LCD_Initial9();
}
void Main_LCD_Grey_Scale_Test(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7B();
LCD_Initial8B();
Main_LCD_Grey_Scale();
LCD_Initial9();
}
void Sub_LCD_Show_Black(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7A();
LCD_Initial8A();
Checker1(0x00,0x00,0x00);
LCD_Initial9();
}
void Sub_LCD_Show_White(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7A();
LCD_Initial8A();
Checker1(0xff,0xff,0xff);
LCD_Initial9();
}
void Sub_LCD_Show_Red(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7A();
LCD_Initial8A();
Checker1(0xff,0x00,0x00);
LCD_Initial9();
}
void Sub_LCD_Show_Green(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7A();
LCD_Initial8A();
Checker1(0x00,0xff,0x00);
LCD_Initial9();
}
void Sub_LCD_Show_Blue(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7A();
LCD_Initial8A();
Checker1(0x00,0x00,0xff);
LCD_Initial9();
}
void Sub_LCD_Grey_Scale_Test(void)
{
LCD_Reset();
LCD_Initial12();
LCD_Initial7A();
LCD_Initial8A();
Sub_LCD_Grey_Scale();
LCD_Initial9();
}
void LCD_Off(void)
{
LCD_Initial10();
}
//-----------------------------------------------------------------------------
// End Of File
//-----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -