吕傑森 2022-12-01 13:31 采纳率: 40%
浏览 16
已结题

LCD12864 (控制器ST7920) 从8-bits改成 4-bits界面, , 初始化不稳定, 求解!

现象和发生背景

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

代码
  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);
    
    无明显改善

是不是我漏了什么环节没注意到呢?



2022/12/01 22:30 问题已找到方案:
依规格书建议, 用I/O控制 RST取代原 R/C Reset。

  • 写回答

1条回答 默认 最新

  • qllaoda 2022-12-01 14:23
    关注

    断开的那几个脚是不是要拉高或拉低?

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月1日
  • 修改了问题 12月1日
  • 修改了问题 12月1日
  • 修改了问题 12月1日
  • 展开全部

悬赏问题

  • ¥15 关于浏览器控制台js报错问题-swiper.js相关
  • ¥15 opencv.js内存,CPU飙升
  • ¥15 植物重测序snp数据Treemix分析出现问题!
  • ¥15 怎么让当前页面只能有一人在编辑
  • ¥15 UCOSⅢ,3.0.3升级为3.0.4后程序编译成功,但是运行后死在统计任务的地方
  • ¥15 python程序长时间运行卡死,付费求解决方案
  • ¥20 VM打开不了ubuntu虚拟机,如何解决?
  • ¥15 java请求一个返回流式数据的接口,如何将流式数据直接返回前端
  • ¥15 为什么连接不了啊,配置都没问题啊
  • ¥15 c语言做一个简单的计算器,大家来看看