|
/***************************************************************************************
** 函數(shù)名稱(chēng): void LCD_1602_write_string(unsigned char x,unsigned char y,unsigned char *s)
** 功能描述: 寫(xiě)入字符串到第x(0-1)行y(0-15)列
** 輸 入: unsigned x 第x(0-1)行;unsigned char y(0-15)列;unsigned char *s要寫(xiě)ude字符串。
** 輸 出: 無(wú)
** 全局變量: 無(wú)
** 調(diào)用模塊: LCD_Write_Command( ),LCD_Write_DATA()
** 說(shuō) 明: 未寫(xiě)下標(biāo)越界檢查 x,y起點(diǎn)均為0,無(wú)論是單字符或字符串均用雙引擴(kuò)號(hào)
****************************************************************************************/
void LCD_1602_write_string(unsigned char x,unsigned char y,unsigned char *s)
{
unsigned char i;
i=15-y;
if(x)
{ //如果是第二行
y+=0xc0; //地址是偏移量y加第二行首地址0xC0
}
else
{ //如果是第一行
y+=0x80; //地址是偏移量y加第一行首地址0x80
LCD_Write_Command(y); //向LCD寫(xiě)第一行地址命令
while(*s)
{ //直到字符串讀到最后一位
LCD_Write_DATA(*s++); //寫(xiě)字符數(shù)據(jù)到LCD
if(y++>=0x8f)
{ //y自加,如果第一行寫(xiě)完
y=0xc0; //地址y設(shè)定為第二行起頭
i=15; //最大寫(xiě)入次數(shù)
break; //如果第一行寫(xiě)完則強(qiáng)退本次循環(huán)
}
}
}
LCD_Write_Command(y);
while(*s)
{
LCD_Write_DATA(*s++);
if(!(i--)) break;
}
}
|
|