📄 lcd12864.c
字号:
#include <delay.h>
#include <reg52.h>
#include <LCD12864.h>
#include <intrins.h>
sbit LCD_RS = P1^3; //数据/命令选择
sbit LCD_RW = P1^4; //读写控制
sbit LCD_EN = P1^5; //片选信号
sbit LCD_PSB = P1^6; //通信方式选择
/*********************************
函数名称:write_cmd(uint lcd_cmd)写指令
入口参数:lcd_cmd
返回参数:无
*********************************/
void WriteCmd12864(uchar lcd_cmd)
{
while(ReadBusy());
LCD_RS = LOW;
LCD_RW = LOW;
LCD_EN = LOW;
LCD_DATA = lcd_cmd;
delayNop();
LCD_EN = HIGH;
delayNop();
LCD_EN = LOW;
}
/********************************
函数名称:write_data(uint lcd_data)写数据
入口参数:current_data
返回参数:无
********************************/
void WriteData12864(uchar lcd_data)
{
while(ReadBusy());
LCD_RS=HIGH;
LCD_RW=LOW;
LCD_EN=LOW;
LCD_DATA=lcd_data;
delayNop();
LCD_EN=HIGH;
delayNop();
LCD_EN=LOW;
}
/********************************
函数名称:ReadBusy()判忙
入口参数:无
返回参数:"1"忙;"0"不忙
********************************/
bit ReadBusy()
{
bit result;
LCD_RS = LOW;
LCD_RW = HIGH;
LCD_EN =HIGH;
delayNop();
result = (bit)(P0&0x80);
LCD_EN = LOW;
return (result);
}
/********************************
函数名称:LcdInit()初始化
入口参数:无
返回参数:无
********************************/
void LcdInit()
{
delay(10);
LCD_PSB=HIGH;
//WriteCmd12864(0x34);
WriteCmd12864(FUN_MODE);
WriteCmd12864(DISPLAY_ON);
WriteCmd12864(CLEAR_SCREEN);
}
/********************************
函数名称:LcdClear()清屏
入口参数:无
返回参数:无
********************************/
void LcdClear(void)
{
while(ReadBusy());
WriteCmd12864(CLEAR_SCREEN);
delay(5);
}
/********************************
函数名称:Display12864(uchar addr,uchar *hz)显示CGROM里的汉字
入口参数:无
返回参数:无
********************************/
void Display12864(uchar addr,uchar *hz)
{
WriteCmd12864(addr);
while(*hz != '\0')
{
WriteData12864(*hz);
hz++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -