LCD1602按下复位后乱码的问题

1602按下后会有乱码的问题,其实根本上是硬件引起的。某些最小系统般的复位电路没做好,按下复位键后,就会产生乱码
在这里插入s图片描述
但是出现这种现象,是可以用软件后期修正的。
由于LCD复位后默认是8线输入,如果函数LCD_write_command是一个按四线输入写入的函数,那么执行LCD_write_command(0x28);等效为先写入8线指令0x20;写入后LCD已经改为了四线模式,再写入4线指令8x的高四位,但是不再有低四位写入,所以之后写入其他数据时,LCD仍在等待上一个指令的低四位。这样就导致了不能正常的进行后面的操作。

解决方法:先执行LCD_write_command(0x02)(0x20应该也是可以的),先是写入了8线指令2,再写入8线指令0`,这样就将LCD改为4线传输,在紧跟这步之后,写入0x32,之后按4线写数据时,就没有高低错乱的问题,

以下为用IIC_1602写的代码。普通1602的解决思路是一样的。

void LCD_init(void) 
{ 
	LCD_write_command(0x20);//执行20,先是写入8线指令2x,这时才将LCD改为4线传输
	LCD_write_command(0x32);//将8位转成四位
	delay_nus(40); 
	LCD_write_command(0x28);
	delay_nus(40); 
  Enable_LCD_write();
	delay_nus(40);

	LCD_write_command(0x28); //4位显示!!!!!!!!!!!!!!!!!!
	LCD_write_command(0x0c); //显示开
	LCD_write_command(0x01); //清屏
	delay_nms(2);
}

你可能感兴趣的:(Moudle,经验分享,其他)