📄 lcd1bit.h
字号:
//***************液晶显示****************//(已测)
/********************************************************
*液晶(1602) DATA(1 bit) (74LS164)
**************this file include funtion******************
*void LcdDisplayRam(unsigned char X, unsigned char Y, unsigned char *DData,unsigned char Leng);
*void LcdDisplayRom(unsigned char X, unsigned char Y, unsigned char *DData,unsigned char Leng);
*void LcdInit(void);
********************************************************/
/*入口设置:
#define CTLPORT PORTB //模拟总线用了PD口的PD5,PD6,PD7
#define LCD_D 4 // pin-4 on CTLPORT
#define LCD_C 5 // pin-3 on CTLPORT
#define LCD_RS 3 // pin-0 on CTLPORT
#define LCD_E 2 // pin-2 on CTLPORT
*/
#define SET_LCD_D CTLPORT|=(1<<LCD_D) // LCD: D = 1
#define CLR_LCD_D CTLPORT&=~(1<<LCD_D) // LCD: D = 0
#define SET_LCD_C CTLPORT|=(1<<LCD_C) // LCD: C = 1
#define CLR_LCD_C CTLPORT&=~(1<<LCD_C) // LCD: C = 0
#define SET_LCD_E CTLPORT|=(1<<LCD_E) // LCD: E = 1
#define CLR_LCD_E CTLPORT&=~(1<<LCD_E) // LCD: E = 0
#define SET_LCD_RS CTLPORT|=(1<<LCD_RS) // LCD: R/S = 1 (data reg)
#define CLR_LCD_RS CTLPORT&=~(1<<LCD_RS) // LCD: R/S = 0 (status reg)
//*******************************************************************写数据11//
void WriteDataLCM(unsigned char WDLCM)
{
unsigned char i;
SET_LCD_RS;
for(i=0;i<8;i++)
{
if(WDLCM&0x80) SET_LCD_D;
else CLR_LCD_D;
SET_LCD_C;
CLR_LCD_C;
WDLCM<<=1;
}
CLR_LCD_E;
SET_LCD_E;
}
//********************************************************************写指令12//
void WriteCommandLCM(unsigned char WCLCM) //BuysC为0时忽略忙检测
{
unsigned char i;
CLR_LCD_RS;
for(i=0;i<8;i++)
{
if(WCLCM&0x80) SET_LCD_D;
else CLR_LCD_D;
SET_LCD_C;
CLR_LCD_C;
WCLCM<<=1;
}
CLR_LCD_E;
SET_LCD_E;
}
//*************************************************************显示一个字符14//
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1; X &= 0xF;
if (Y) X |= 0x40;
X |= 0x80;
WriteCommandLCM(X);
DelayMs(1);
WriteDataLCM(DData);
WriteCommandLCM(X);
DelayMs(1);
}
//************************************************************显示ROM字符串15//
void LcdDisplayRom(unsigned char X, unsigned char Y, const unsigned char *DData,unsigned char Leng)
{
unsigned char j;
Y &= 0x01;X &= 0x0F;
for(j=0;j<Leng;X++,j++)
{
if(X<=0xf)DisplayOneChar(X,Y,DData[j]);
}
}
//************************************************************显示RAM字符串16//
void LcdDisplayRam(unsigned char X, unsigned char Y, unsigned char *DData,unsigned char Leng)
{
unsigned char j;
Y &= 0x01;X &= 0x0F;
for(j=0;j<Leng;X++,j++)
{
if(X<=0xf)DisplayOneChar(X,Y,DData[j]);
}
}
//****************************************************************LCM初始化17//
void LcdInit(void)
{
WriteCommandLCM(0x38); //三次显示模式设置,不检测忙信号
DelayMs(1);
WriteCommandLCM(0x38);
DelayMs(1);
WriteCommandLCM(0x38);
DelayMs(1);
WriteCommandLCM(0x38); //显示模式设置,开始要求每次检测忙信号
DelayMs(1);
WriteCommandLCM(0x08); //关闭显示
DelayMs(1);
WriteCommandLCM(0x01); //显示清屏
DelayMs(1);
WriteCommandLCM(0x06); // 显示光标移动设置
DelayMs(1);
WriteCommandLCM(0x0C); // 显示开及光标设置
DelayMs(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -