📄 lcd.h
字号:
#define Disp_On 0x3f // 显示开指令 //
#define Disp_Off 0x3e // 显示关指令 //
#define Col_Add 0x40 // 定位到第0列指令 //
#define Page_Add 0xb8 // 定位到第0页指令 //
#define Start_Line 0xc0 // 定位从DDROM中的第0行开始往屏幕上显示 //
/*******************************************************************************************/
sbit RST = P2^0; // 复位端 //
sbit E = P2^1; // 使能端 //
sbit RW = P2^2; // 读写控制端 //
sbit RS = P2^3; // 数据或指令寄存器选择端 //
sbit CS1 = P2^4; // 左屏使能 //
sbit CS2 = P2^5; // 右屏使能 //
/*-------------------延时子程序-----------------------------*/
void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++)
;
}
/*-------------------------写命令到LCD------------------------------*/
void write_command(unsigned char cmdcode)
{
RS = 0;
RW = 0;
P0 = cmdcode;
delay(0);
E = 1;
delay(0);
E = 0;
}
/*-------------------------写数据到LCD----------------------------*/
void write_data(unsigned char Dispdata)
{
RS = 1;
RW = 0;
P0 = Dispdata;
delay(0);
E = 1;
delay(0);
E = 0;
}
/*-------------------------读LCD数据----------------------------*/
/*
unsigned char read_data()
{
unsigned char tmpin;
RS = 1;
RW = 1;
delay(0);
E = 1;
delay(0);
E = 0;
tmpin = P0;
return tmpin;
}
*/
/*------------------------清显示屏--------------------------------*/
void Clr_Scr()
{
unsigned char j,k;
CS2=1;CS1=0; // 清左半屏 //
{
write_command(Page_Add+0);
write_command(Col_Add+0);
for(k=0;k<4;k++)
{
write_command(Page_Add+0);
for(j=0;j<64;j++)
write_data(0x00);
}
for(k=0;k<4;k++) // 清左下半屏 //
{
write_command(Page_Add+2);
for(j=0;j<64;j++)
write_data(0x00);
}
for(k=0;k<4;k++) // 清左下半屏 //
{
write_command(Page_Add+4);
for(j=0;j<64;j++)
write_data(0x00);
}
for(k=0;k<4;k++) // 清左下半屏 //
{
write_command(Page_Add+6);
for(j=0;j<64;j++)
write_data(0x00);
}
}
CS2=0;CS1=1; // 清右半屏 //
{
write_command(Page_Add+0);
write_command(Col_Add+0);
for(k=0;k<4;k++)
{
write_command(Page_Add+0);
for(j=0;j<64;j++)
write_data(0x00);
}
for(k=0;k<4;k++) // 清左下半屏 //
{
write_command(Page_Add+2);
for(j=0;j<64;j++)
write_data(0x00);
}
for(k=0;k<4;k++) // 清左下半屏 //
{
write_command(Page_Add+4);
for(j=0;j<64;j++)
write_data(0x00);
}
for(k=0;k<4;k++) // 清左下半屏 //
{
write_command(Page_Add+6);
for(j=0;j<64;j++)
write_data(0x00);
}
}
}
/*------------------显示12864图片---------------------------*/
void Disp_Img(unsigned char code *img)
{
unsigned char j,k;
for(k=0;k<8;k++)
{
CS2=1;
CS1=0;
delay(10);
write_command(Page_Add+k);
write_command(Col_Add+0);
for(j=0;j<64;j++)
write_data(img[k*128+j]);
CS2=0;
CS1=1;
delay(10);
write_command(Page_Add+k);
write_command(Col_Add+0);
for(j=64;j<128;j++)
write_data(img[k*128+j]);
}
}
/*---------------------指定位置显示数字8*16-----------------------*/
void sz_disp16(unsigned char pag,unsigned char col, unsigned char code *szk)
{
unsigned char j=0,i=0;
for(j=0;j<2;j++)
{
write_command(Page_Add+pag+j);
write_command(Col_Add+col);
for(i=0;i<8;i++)
write_data(szk[8*j+i]);
}
}
/*---------------------指定位置显示汉字16*16-----------------------*/
void hz_disp16(unsigned char pag,unsigned char col, unsigned char code *hzk)
{
unsigned char j=0,i=0;
for(j=0;j<2;j++)
{
write_command(Page_Add+pag+j);
write_command(Col_Add+col);
for(i=0;i<16;i++)
write_data(hzk[16*j+i]);
}
}
/*------------------初始化LCD屏--------------------------*/
void init_lcd()
{
RST=0;
delay(100);
RST=1;
delay(100);
CS2=1;
CS1=1;
delay(100);
write_command(Disp_Off);
write_command(Page_Add+0);
write_command(Start_Line+0);
write_command(Col_Add+0);
write_command(Disp_On);
}
/*-----------------------------状态判断于提示------------------------*/
/*void State(void)
{
CS1=1;CS2=0;
if(KT==1)
{ hz_disp16(1,32,tiao);
hz_disp16(1,48,shi2);}
else
{ hz_disp16(1,32,kongbai2);
hz_disp16(1,48,kongbai2); }
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -