⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1bit.h

📁 1602液晶驱动程序(串行并行全部都有)
💻 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 + -