我有一个产品,它使用一个4行x 16字符的LCD显示模块。它与最初的1604型号工作得很好,但显示屏显然已更新为SPLC780C控制芯片。它不会初始化。从数据表中看,它似乎与原始版本一样模拟HD44780,但它不会进行初始化。我在第一行和第三行得到了正常的块字符,如果只是启动它,就会得到这些字符。
在座有人知道问题出在哪里吗?以下是初始化代码:
\\\
void lcd_init(void)
{
unsigned int8 i;
unsigned int8 LCD_INIT_STRING[4] = {0x20 | (LCD_TYPE << 2), 0x0C, 1, 6};
//{0x22, 0x4, 1, 6}
// These bytes need to be sent to the LCD
// to start it up.
lcd_output_enable(0);
lcd_output_rs(0);
lcd_output_rw(0);
#if defined(__PCB__)
set_tris_lcd(LCD_OUTPUT_MAP);
#else
#if (defined(LCD_DATA4) && defined(LCD_DATA5) && defined(LCD_DATA6) &&
defined(LCD_DATA7))
output_drive(LCD_DATA4);
output_drive(LCD_DATA5);
output_drive(LCD_DATA6);
output_drive(LCD_DATA7);
#else
lcdtris.data = 0x0;
#endif
lcd_enable_tris();
lcd_rs_tris();
lcd_rw_tris();
#endif
delay_ms(450);
for(i=1;i<=3;++i)
{
lcd_send_nibble(3);
delay_ms(45);
}
delay_ms(15);
for(i=0;i<=4;++i)
{
lcd_send_byte(0,LCD_INIT_STRING[i]);
delay_ms(45);
}
lcd_send_nibble(8);
lcd_send_nibble(0);
lcd_send_nibble(8);
lcd_send_nibble(0);
lcd_send_nibble(1);
lcd_send_nibble(0);
lcd_send_nibble(4);
#if defined(LCD_EXTENDED_NEWLINE)
g_LcdX = 0;
g_LcdY = 0;
#endif
}
\\\发布于 2021-09-23 15:23:46
这里对我也有同样的问题,但是我找到了一个打破传统的解决方案来解决不好的行。像这样的负setcursor:
lcd.setCursor(-4,2);
lcd.setCursor(-4,3);发布于 2021-09-30 14:20:09
也许我太快了,无法回答,但我想准确地说,我对新的LCD1604-16char有问题,以为我买了2004年的!!但是有两行代码不能从头开始,所以我做了一个负的setcursor。
https://stackoverflow.com/questions/68978145
复制相似问题