📄 lcddriver.c
字号:
#include "c8051f330.h"
#define LCD_DATA P1 //P1
sbit RS=P0^0; //P3.4
sbit RW=P0^2; //P3.5
sbit EN=P0^3; //P3.7
void Delay(unsigned int time)
{
while(time>0)
time--;
}
//不断检测LCD忙标志BF,直到其为0,表示可以执行下一条指令
void WaitUntilReady(void)
{
RS=0; //所读为状态位
RW=1; //设为读状态
Delay(165);
EN=1;
Delay(165);
LCD_DATA=0xff;
while(LCD_DATA&0x80); //不断循环,直至BF=0
Delay(165);
EN=0;
}
void WriteCommand(unsigned char Command , unsigned char flag_busy)
{
if(flag_busy)
WaitUntilReady();
RS=0; //写入的是命令字
RW=0; //置为写状态
EN=1;
LCD_DATA = Command;
Delay(165);
EN=0;
}
void WriteData(unsigned char Data)
{
WaitUntilReady(); //等待指令执行完毕
RS=1; //写入的是数据
RW=0; //置为写状态
EN=1;
LCD_DATA = Data;
Delay(165);
EN=0;
}
void Initialize_LCD(void)
{
Delay(165);
WriteCommand(0x38,0); //设为8位接口模式,显示2行字符,busy=0不检测忙信号
Delay(165);
WriteCommand(0x38,0);
Delay(165);
WriteCommand(0x38,0);
WriteCommand(0x38,1);
WriteCommand(0x08,1); //显示关闭
WriteCommand(0x01,1); //显示清屏
WriteCommand(0x06,1); //写入新数据后光标右移
WriteCommand(0x0c,1); //显示功能开,不显示光标
WriteCommand(0x81,1); //写地址
WriteData('H');
WriteData('e');
WriteData('l');
WriteData('l');
WriteData('o');
WriteData('!');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -