LCD12864 (Sitronix ST7920) 4-Bits Mode 初始失败

LCD12864 (Sitronix ST7920) 4-Bits Mode 初始失败

IO不足, 又不允许用SPI, 需要将 LCD12864 (控制器ST7920) 从 8-bits界面, 改成 4-bits。
基于 8bits 稳定使用的情况下,硬件断开 D[3:0]。
修改 Function, 从 0x3x -> 0x2x
初始化不稳定, 花屏机率高!

代码

void vSt7920_Init(void)
{
  	hwSt7920_Reset = 0; 
  	vDelayXms(1);
  	hwSt7920_Reset = 1; 
  	vDelayXms(200);    /* Delay for Power On Reset */
 	vst7920write( CMD, 0x30);
 	vDelayXms(5);
  	vst7920write( CMD, 0x20);
  	vDelayXms(5);
 	vst7920write( CMD, 0x0C);
 	vDelayXms(5);
  	vst7920write( CMD, 0x01);
 	vDelayXms(2);
}

运行结果

但初始化不稳定, 错误有这几种

  1. 花屏机率高! >> RESET重启无效, 需重新上电
  2. 出现色斑 >> RESET重启, 概率上可以成功
  3. 位置错误, >> 重新写入OK

思路和尝试过的方法

尝试:

  1. 加Power On Delay : 1000ms 无明显改善
  2. 软件顺序改变

方式一

vst7920write( CMD, 0x30); vDelayXms(5);
vst7920write( CMD, 0x30); vDelayXms(5);
vst7920write( CMD, 0x20); vDelayXms(5);
vst7920write( CMD, 0x0C); vDelayXms(5);
vst7920write( CMD, 0x01); vDelayXms(5);

方式二

vst7920write( CMD, 0x33); vDelayXms(5);
vst7920write( CMD, 0x32); vDelayXms(5);
vst7920write( CMD, 0x20); vDelayXms(5);
vst7920write( CMD, 0x0C); vDelayXms(5);
vst7920write( CMD, 0x01); vDelayXms(5);

方式三

vst7920write( CMD, 0x30); vDelayXms(5);
vst7920write( CMD, 0x22); vDelayXms(5);
vst7920write( CMD, 0x20); vDelayXms(5);
vst7920write( CMD, 0x0C); vDelayXms(5);
vst7920write( CMD, 0x01); vDelayXms(5);

无明显改善

-------------- 这是分隔线 -------------

解决方案

再看看規格書:
LCD12864 (Sitronix ST7920) 4-Bits Mode 初始失败_第1张图片依规格书建议, 原 R/C Reset, 加上用I/O控制 Reset。


你可能感兴趣的:(笔记,硬件,单片机)