LCD1602的11條指令詳解
FAQ:LCD1602液晶屏的第二行不顯示
初始化的時候,寫38寫兩次并且不判忙
/****************************************************************
LCD1602 初始化函數 LCD1602_INIT();
無形參和返回值
****************************************************************/
void Init_LCD1602(void)
{
LCD_EN = 0;
LCD_BG = 0; // 背光燈 開;
LCD_RW = 0; // 配置LCD1602為寫入模式
LCD1602_Write(0x38, 0); // 顯示模式設定: 配置16*2顯示,5*7點陣,8位數據接口
LCD1602_Write(0x0C, 0); // 設置開顯示,不顯示光標 開關顯示、光標有無設置、光標閃爍設置
LCD1602_Write(0x06, 0); // 寫字符后地址自動加1 寫一個字符后指針加一
LCD1602_Write(0x01, 0); // 顯示清0,數據指針清0
LCD1602_Write(0x38, 0); // 顯示模式設定: 配置16*2顯示,5*7點陣,8位數據接口
}
在LCD 1602 的字符顯示中,如需進行數字轉換 需 + 48;
相當是 10進制數 + 48后,轉換成 對應的 ‘0’ 字符 ASCII 碼,方可顯示在 LCD 屏上;
/*********************************************************
函數:Lcd1602_Print_Num(uchar num)
輸入:有;數值;
輸出:無;
說明:液晶輸出數字
u8 -> 256
u16 -> 65535
*********************************************************/
void LCD1602_Write_Num(u16 num)
{
if(num >= 1000) // 4位
{
LCD1602_Write(num/1000 + 48, 1); // 千位
LCD1602_Write(num / 100 % 10 + 48, 1); // 百位
LCD1602_Write(num / 10 % 10 + 48, 1); // 十位
LCD1602_Write(num % 10 + 48, 1); // 個位
}
else if(num >= 100) // 3位數;
{
LCD1602_Write(num/100 + 48, 1); // 百位
LCD1602_Write(num % 100 / 10 + 48, 1); // 十位
LCD1602_Write(num % 10 + 48, 1); // 個位
}
else if( num >= 10)
{
LCD1602_Write(0 + 48, 1); // 補 0缺;
LCD1602_Write(num/10 + 48, 1); // 十位
LCD1602_Write(num%10 + 48, 1); // 個位
}
else if( num >= 0)
{
LCD1602_Write(0 + 48, 1); // 補 0缺;
LCD1602_Write(0 + 48, 1); // 補 0缺;
LCD1602_Write(num%10 + 48, 1); // 個位
}
}
|