📄 lcd.c
字号:
#include"group.h"
xdata unsigned char CW _at_ 0xf9fc; //液晶控制地址
xdata unsigned char CR _at_ 0xf9fc;
xdata unsigned char DW _at_ 0xf9fd;
xdata unsigned char DR _at_ 0xf9ff;
bit flag; //标志位
//-----------------------------------------------
extern unsigned char lc_read(void) //读液晶命令
{
unsigned char a;
delay(100);
a=CR;
return(a);
}
//-----------------------------------------------
extern void readbf(void) //读液晶忙
{
while(flag)
{
flag=(bit)(lc_read()&0x80);
}
}
//-----------------------------------------------
extern void lc_write(unsigned char a) //写液晶命令
{
delay(20);
CW=a;
delay(20);
}
//-----------------------------------------------
extern void ld_write(unsigned char a) //写液晶数据
{
delay(20);
DW=a;
delay(20);
}
//-----------------------------------------------
extern void lcd_init(void) //液晶初始化
{
readbf();
lc_write(0x38);
delay(500);
readbf();
lc_write(0x01); //0001显示清除
readbf();
delay(500);
lc_write(0x0c); //11XX整体显示 1111光标开/闪烁 1100光标关/无闪
readbf();
delay(500);
lc_write(0x06); //011X光标右移 010X光标左移 0111屏幕所有文字左/右移
delay(500);
}
//-----------------------------------------------
extern void lc_pos(unsigned char posx,unsigned char posy) //设定显示位置
{
posx=posx&0xf;
posy=posy&0x1;
lc_write(posx|posy*0x40+0x80);
}
//---------------------------------------------
extern void display_char(unsigned char x,unsigned char y,unsigned char ch) //显示字符
{
readbf();
lc_pos(x,y);
ld_write(ch);
}
//--------------------------------------
extern void display_string(unsigned char x,unsigned char y,unsigned char code *string) //显示字符串 //在指定点起显示一个字符串
{
unsigned length;
length=0;
readbf();
while(string[length]!='\0')
{
display_char(x,y,string[length++]);
x++;
}
}
//---------------------------------------
extern void lcdclear(void) //清屏
{
readbf();
lc_write(0x01);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -