📄 lcd.h
字号:
#define _lcd_h
#define uint unsigned int
#define uchar unsigned char
sbit RS=P2^5;
sbit RW_SID=P2^6;
sbit E_CLK=P2^7;
void sendbyte(uchar dat);
void gotoxy(uchar x,uchar y);
void WRcom(uchar dat);
void WRdata(uchar dat);
void initlcd(void);
void clear(void);
void display_draw(uchar code *buff);
void clear_draw(void);
//延时子程序
void delay_ms(uint k)
{ uint t;
while(k--)
{ t=120;
while(t--);
}
}
void gotoxy(uchar x,uchar y)//x行y列
{
if(x==1)y=y+0x80;// 第1行//第y列
if(x==2)y=y+0x90;
if(x==3)y=y+0x88;
if(x==4)y=y+0x98;
WRcom(y);
}
void sendbyte(uchar dat) //串行发送数据
{
uchar i;
for(i=0;i<8;i++)
{
E_CLK=0;
if(dat&0x80) RW_SID=1;else RW_SID=0;
E_CLK=1;
dat<<=1;
}
}
void WRcom(uchar dat) //写命令
{
RS=1;
sendbyte(0xf8); //同RW=0;RS=0
sendbyte(dat&0xf0); //高
sendbyte((dat&0x0f)<<4); //低
RS=0;
}
void WRdata(uchar dat) //写数据
{
RS=1;
sendbyte(0xfa); //RW=0,RS=1
sendbyte(dat&0xf0);
sendbyte((dat&0x0f)<<4);
RS=0;
}
void initlcd(void)
{
WRcom(0x30);//8位传输//基本指令
WRcom(0x0c);//显示屏开//光标关 DB2 显示屏开关 DB1 光标开关 DB0 反白光 1为开,0为关
WRcom(0x01);//清屏
WRcom(0x02);//地址归位
WRcom(0x80);//显示第一行
WRcom(0x06);//自动右移
}
////////////////////////////////
void clear(void)
{
WRcom(0x01);//清屏
WRcom(0x02);//地址归位
delay_ms(10); //清屏要延时
}
void display_draw(uchar code *buff) //图象显示
{
uint j=0;
uchar x,y;
WRcom(0x36); //功能设置---8BIT控制界面,扩充指令集 图象显示
for(y=0;y<32;y++) //上半屏幕 //32行,1行有八列,即2个字节为1列
for(x=0;x<8;x++)
{
WRcom(0x80+y); //纵坐标
WRcom(0x80+x); //横坐标
WRdata(buff[j++]); //2个字节则发送两次
WRdata(buff[j++]);
}
for(y=0;y<32;y++) //下半屏幕 //32行,1行有八列,即2个字节
for(x=0;x<8;x++)
{
WRcom(0x80+y); //纵坐标
WRcom(0x88+x); //横坐标
WRdata(buff[j++]); //2个字节则发送两次
WRdata(buff[j++]);
}
}
void clear_draw(void)//请整CGRAM(字符生成RAM) DDRAM(数据显示)
{ unsigned char x,y;
WRcom(0x34); //功能设置---8BIT控制界面,扩充指令集,关显示
//上半屏显示/////////////
for(y=0;y<32;y++)//整个屏有64行,上半屏有32行
for(x=0;x<8;x++)//一行有8列
{
WRcom(0x80+y); //纵座标
WRcom(0x80+x); //横座标
WRdata(0x00);
WRdata(0x00);
}
//下半屏显示/////////////
for(y=0;y<32;y++)//整个屏有64行,下半屏有32行
for(x=0;x<8;x++)//一行有8列
{
WRcom(0x80+y); //纵座标
WRcom(0x88+x); //横座标
WRdata(0x00);
WRdata(0x00);
}
}
/*void clear_draw(void) //请整CGRAM(字符生成RAM) DDRAM(数据显示) //只清了上半屏
{
uchar x,y;
WRcom(0x34);//功能设置---8BIT控制界面,扩充指令集,关显示
for(y=0;y<64;y++) //整个屏幕 //32行,1行有八列,即2个字节
for(x=0;x<8;x++)
{
WRcom(0x80+y);
WRcom(0x80+x);
WRdata(0x00); //2个字节则发送两次
WRdata(0x00);
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -