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); // 个位
}
}
|