📄 lcd_driver_user.c
字号:
#include "LCD_PortConfig.h"
//******************************************
//函数:void LCD_ReadStatue(void)
//描述:LCD控制寄存器状态字读操作
//参数:无
//返回:
//版本:V 1.0.0
//日期:2007-12-4
//******************************************
void LCD_ReadStatue(void)
{
unsigned char ucTemp;
DDRA = 0x00; //PROTA为输入
CLR_LCD_EN; //EN为0,
SET_LCD_RW; //RW为高,选择读
CLR_LCD_RS; //RS为低,表示选择状态字
SET_LCD_EN;
SET_LCD_EN;
SET_LCD_EN;
SET_LCD_EN;
ucTemp = LCD_Data_In&0x80;
CLR_LCD_EN;
CLR_LCD_EN;
CLR_LCD_EN;
while(ucTemp)
{
SET_LCD_EN;
SET_LCD_EN;
SET_LCD_EN;
SET_LCD_EN;
ucTemp = LCD_Data_In&0x80;
CLR_LCD_EN;
CLR_LCD_EN;
CLR_LCD_EN;
CLR_LCD_EN;
}
CLR_LCD_EN;
DDRA = 0xff;
}
//******************************************
//函数:unsigned char LCD_ReadData(void)
//描述:LCD数据读操作,从LCD的显示缓存RAM中读一个字节的显示数据
//参数:无
//返回:读出数据存入Read_Data,低八位有效
//版本:V 1.0.0
//日期:2007-12-4
//******************************************
unsigned char LCD_ReadData(void)
{
LCD_ReadStatue();
CLR_LCD_EN;
SET_LCD_RS; //RS为高,表示选择数据
SET_LCD_RW;
SET_LCD_EN;
CLR_LCD_EN;
CLR_LCD_EN;
return (LCD_Data_Out);
}
//******************************************
//函数:void LCD_WriteCommand(unsigned char Command,unsigned char BusyC)
//描述:将一个字节数据写入LCD控制寄存器中
//参数:Command,数据(byte);
//返回:
//版本:V 1.0.0
//日期:2007-12-4
//******************************************
void LCD_WriteCommand(unsigned char Command,unsigned char BusyC)
{
if(BusyC)
LCD_ReadStatue();
CLR_LCD_EN;
CLR_LCD_RS;
CLR_LCD_RW; //Rw为低,表示选择写操作
LCD_Data_Out = Command; //装载数据到总线
SET_LCD_EN; //产生上升沿
SET_LCD_EN; //产生上升沿
SET_LCD_EN; //产生上升沿
SET_LCD_EN; //产生上升沿
CLR_LCD_EN;
CLR_LCD_EN;
CLR_LCD_EN;
CLR_LCD_EN;
}
//******************************************
//函数:void LCD_Write(Dataunsigned char Data)
//描述:LCD将一个字节数据写入显示缓存RAM中
//参数:Data,数据(byte)
//返回:
//版本:V 1.0.0
//日期:2007-12-4
//******************************************
void LCD_WriteData(unsigned char Data)
{
LCD_ReadStatue();
CLR_LCD_EN;
CLR_LCD_RW; //Rw为低,表示选择写操作
SET_LCD_RS; //RW为高,表示选择写数据
LCD_Data_Out = Data;
SET_LCD_EN; //产生上升沿
SET_LCD_EN; //产生上升沿
SET_LCD_EN; //产生上升沿
CLR_LCD_EN;
CLR_LCD_EN;
CLR_LCD_EN;
}
//******************************************
//函数:void LCD_Init(void)
//描述:LCD初始化程序
//参数:
//返回:
//版本:V 1.0.0
//日期:2007-12-4
//******************************************
//延时程序
void Delay_ms(unsigned int uTime)
{
unsigned int i;
while(uTime > 0)
{
for(i=0;i<800;i++)
{
;
}
uTime --;
}
}
void LCD_Init(void)
{
LCD_Data_Out = 0x00; //初始化数据端口
PORTB = 0x00;
PORTD = 0x00;
LCD_WriteCommand(0x30,0); //写指令0x30,不检测BF
Delay_ms(10);
LCD_WriteCommand(0x30,0); //写指令0x30,不检测BF
Delay_ms(10);
LCD_WriteCommand(0x30,0); //写指令0x30,不检测BF
Delay_ms(10);
LCD_WriteCommand(0x38,1); //写指令0x38设置显示模式,检测BF
LCD_WriteCommand(0x08,1); //写指令0x08关闭显示,检测BF
LCD_WriteCommand(0x01,1); //写指令0x01清屏,检测BF
LCD_WriteCommand(0x06,1); //写指令0x38设置显示光标移动,检测BF
LCD_WriteCommand(0x0c,1); //写指令0x38显示开启光标移动,检测BF
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -