?? rd_lcd1602b.c
字號:
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 + -