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

📄 rd_lcd1602b.c

📁 LCD1602键盘显示模块实例
💻 C
📖 第 1 页 / 共 2 页
字号:
		LCD_E = HIGH;
		LCD_E = LOW;
	}
    #else
        LCD_DATA_PORT = Data;
        LCD_E = HIGH;
        LCD_E = LOW;
    #endif
    SetRead;		
	SetCommand;
}

/***********************************************************
*   函数说明:等待LCD空闲状态函数                          *
*   输入:    无                                           *
*   输出:    无                                           *
*   调用函数:LCDDelayUs()                                 *
***********************************************************/
void LCDWaitForReady(void)
{
#ifdef _USE_LCD_ONLY_WRITE
	LCDDelayUs(500);
#else
	
	SetRead;
	SetCommand;
   
    LCD_E = HIGH;
	while (LCD_BF == 1);   //RW=1,读PD7,为0表示空闲;
    LCD_E = LOW;
	
#endif
}
#else

/***********************************************************
*   函数说明:向LCD发送指令函数                            *
*   输入:    需要发送的指令                               *
*   输出:    无                                           *
*   调用函数:LCD_SEND_HALF_CHAR_HIGH()                    *
*             LCD_SEND_HALF_CHAR_LOW()                     *
***********************************************************/
void LCDSendCommand(char Command)
{
	SetCommand;
	{
	    SetEnable;
		
		LCD_SEND_HALF_CHAR_HIGH(Command);
		
	    SetDisable;
	}
	{
	    SetEnable;
		
        LCD_SEND_HALF_CHAR_LOW(Command);	
		
		SetDisable;
	}
	SetCommand;
}

/***********************************************************
*   函数说明:向LCD发送数据函数                            *
*   输入:    需要发送的数据                               *
*   输出:    无                                           *
*   调用函数:LCD_SEND_HALF_CHAR_HIGH()                    *
*             LCD_SEND_HALF_CHAR_LOW()                     *
***********************************************************/
void LCDSendData(char Data)
{
	SetData;
	{
	    SetEnable;
		
		LCD_SEND_HALF_CHAR_HIGH(Data);
		
	    SetDisable;
	}

	{
	    SetEnable;
		
        LCD_SEND_HALF_CHAR_LOW(Data);	
		
		SetDisable;
	}
	SetCommand;
}

/***********************************************************
*   函数说明:等待LCD空闲状态函数                          *
*   输入:    无                                           *
*   输出:    无                                           *
*   调用函数:LCDDelayUs()                                 *
***********************************************************/
void LCDWaitForReady(void)
{
	LCDDelayUs(30);
}

#endif


/***********************************************************
*   函数说明:设置显示坐标函数                             *
*   输入:    x,y坐标值                                    *
*   输出:    无                                           *
*   调用函数:LCDWaitForReady()  LCDSendCommand()          *
***********************************************************/
void LCDSetXY(char X,char Y)
{
    char Address;
    if (Y == 0)
	{
	    Address = 0x80 + X;
	}
    else
	{ 
        Address = 0xc0 + X;
	}
	
	LCDWaitForReady();
    LCDSendCommand(Address);
}

/***********************************************************
*   函数说明:LCD字符串显示函数                            *
*   输入:    要显示的字符串指针                           *
*   输出:    无                                           *
*   调用函数:LCDWaitForReady() LCDSendData()              *
***********************************************************/
void LCDDisplayString(char *String)
{
    while(*String)
	{
	    LCDWaitForReady();
	    LCDSendData(*String);
		String++;
	}
}

/***********************************************************
*   函数说明:数值显示函数(HEX)                            *
*   输入:    需要显示的数字(无符号长整形)               *
*   输出:    无                                           *
*   调用函数:LCDSendData()                                *
***********************************************************/
void LCDDisplayNum(unsigned long Num,char BitCount)
{
    char a = 0;
	for (a = 8-BitCount ;a<8;a++)
	{
	    LCDSendData(CHR[(Num<<(a<<2))>>28]);
	}
}


/***********************************************************
*   函数说明:滚屏字幕效果                                 *
*   输入:    需要滚屏的字符串 长度 位置                   *
*   输出:    无                                           *
*   调用函数:LOCATE()   PRINT()                           *
***********************************************************/
void RunString(char *String,char Y,char StartX,char EndX)
{
   static char StringHead = 0;
	char SCREEN[17];
	char a = 0;
	char Point = StringHead;
	char StringLong = StringLength(String);
	static unsigned int RunTimeCounter = 0;
	
	for (a = 0;a<EndX - StartX + 1;a++)
	{
	     SCREEN[a] = String[Point];
		 Point ++;
		 if (Point == StringLong)
		 {
		     Point = 0;
		 }
	}
	
    for (;a < 17;a++)
	{
	    SCREEN[a] = 0;
	}
	
	RunTimeCounter ++;
	if (RunTimeCounter > LCD_RUN_STRING_SPEED)
	{
	    StringHead ++;
		RunTimeCounter = 0;
		if (StringHead == StringLong)
	    {
	        StringHead = 0;
	    }
	}
	
	LOCATE(StartX,Y)
	PRINT(SCREEN)
}

/***********************************************************
*   函数说明:字符串长度测试函数                           *
*   输入:    字符串指针                                   *
*   输出:    字符串的长度                                 *
*   调用函数:无                                           *
***********************************************************/
char StringLength(char *String)
{
    char n = 0;
	while (*String)
	{
	    n++;
		String ++;
	}
	
	return n;
}

/***********************************************************
*   函数说明:闪烁显示函数                                 *
*   输入:    要显示的字符串、显示的光标、x,y坐标位置      *
*   输出:    无                                           *
*   调用函数:LOCATE()  LCDWaitForReady() LCDSendData()    *
***********************************************************/
void Flash(char *String,char Icon,char X,char Y)
{
    char a = 0;
	char StringLong = StringLength(String);
	
    if ((SYS_TIMER_MS_ADD_UNTILL_OVF & LCD_FLASH_TIME_OUT) 
        > (LCD_FLASH_TIME_OUT >> 1))
	{
	    LOCATE(X,Y)
		PRINT(String)    
	}
	else
	{
	    for (a = X;a < (X+StringLong);a++)
		{
		    LOCATE(a,Y)
			LCDWaitForReady();
			LCDSendData(Icon);
		}
	}
}

/***********************************************************
*   函数说明:字幕GIF函数                                  *
*   输入:    要显示的字符串集合指针,字符串数目,位置     *
*   输出:    无                                           *
*   调用函数:LOCATE()  PRINT()                            *
***********************************************************/
void FlashStringGroup(char String[][17],char StringCounter,char X,char Y)
{
    static char Pictures = 0;
	static char DispState = 0;
    if ((SYS_TIMER_MS_ADD_UNTILL_OVF & LCD_FLASH_STRING_GROUP_TIME_OUT) 
        > (LCD_FLASH_STRING_GROUP_TIME_OUT >> 1))
	{
	    if (DispState == 0)
		{
	        Pictures ++;
		    if (Pictures == StringCounter)
		    {
		        Pictures = 0; 
		    }
			DispState = 1;
		}
	}
	else
	{
	    if (DispState == 1)
		{
		    Pictures ++;
			if (Pictures == StringCounter)
			{
			    Pictures = 0;
			}
			DispState = 0;
		}
	}
	
	LOCATE(X,Y);
	PRINT(String[Pictures]);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -