📄 lcd.h
字号:
#include "function.h"
#define LCD_Data P0
sbit LCD_RS =P1^2;
sbit LCD_E =P1^0;
sbit LCD_WR =P1^1;
unsigned char LCDBusyWait() //等待LCD就绪
{
unsigned char Status;
LCD_RS=0;
LCD_WR=1;
LCD_Data=0xFF;
LCD_E=1;
Status=LCD_Data;
LCD_E=0;
while(Status & 0x80)
{
LCD_E=1;
Status=LCD_Data;
LCD_E=0;
}
LCD_WR=0;
return Status;
}
void WriteLCD_Data( unsigned char Data ) //向LCD写入一个字节的数据
{
LCDBusyWait();
LCD_RS=1;
LCD_Data = Data;
LCD_E=1;
LCD_E=0;
}
void WriteLCD_Command( unsigned char Command ) //向LCD写入一个字节的命令
{
LCDBusyWait();
LCD_RS=0;
LCD_Data=Command;
LCD_E=1;
LCD_E=0;
}
/*****************************改变地址,实现了逐行显示*************************/
unsigned char ChangeAddress(unsigned char StartAddress)
{
switch(StartAddress)
{
case 0x87:WriteLCD_Command(0x90);StartAddress=0x90;break;
case 0x8F:WriteLCD_Command(0x98);StartAddress=0x98;break;
case 0x97:WriteLCD_Command(0x88);StartAddress=0x88;break;
default:StartAddress+=1;
}
return StartAddress;
}
/*
WriteLCD 从LCD输出一个字符串:
StartAddress为起始地址;
Size为字符串大小;
Size==0 时由程序自己判断字符串结束标志,否则输出 Size 个字符,不够则填充空格;
Charactors为要求输出的字符串;
*/
void WriteLCD(unsigned char StartAddress,unsigned char Size,unsigned char Charactors[])
{
unsigned char *i=Charactors; //字符串的首地址
WriteLCD_Command(StartAddress);
if(!Size) //Size为0
{
while(*i) //判断字符串结尾,*i为0代表结束
{
WriteLCD_Data(*i);
i++;
if('\0'==*i)
break;
WriteLCD_Data(*i);
i++;
StartAddress=ChangeAddress(StartAddress);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -