• debug - JLX12864C(ST7920-12864)液晶屏不能使用串行通讯的原因


    debug - JLX12864C(ST7920-12864)液晶屏不能使用串行通讯的原因

    概述

    正在给板子写出厂测试程序, 买的12864型号是JLX12864C.
    STC官方给的例程是并行通讯, 好使.
    但是想在测试程序中改为串行通讯, 这样就不会和外接的XRAM的读写冲突.
    找了前面同学写好的串行通讯例程, 将控制引脚都改成和原理图一样的管脚, 测试不好使.
    在这里插入图片描述
    写测试程序, 单独测试P2, 看看是否写入的值和读出的值一样? 结果发现 PSB(P2^4)写入0, 读出的是1.
    PSB设置为1时, 是ST7920-12864的并行通讯方式.
    PSB设置为0时, 是ST7920-12864的串行通讯方式.
    为啥PSB无法写为0呢?

    调试

    先将ST7920-12864模块从板子上拿掉, 再单独测试P2口, 写入0, 读出是0, 写入1, 读出是1.
    这样就可以确认, 是ST7920-12864上的PSB引脚有问题, 不管如何设置, PSB都是1.
    是否在板子上上拉了? 还是直接接到了5V?

    买料的时候, 整了10块JLX12864C.
    拆一块看看, 拆完就废了, 不管了.
    在这里插入图片描述
    用显微镜和外用表配合, 可以看到:
    板子下方的排孔从右往左数, 第6个孔是PSB.
    板子下方的排孔, 左数第1个是GND, 第2个是VDD(5V)

    PSB连接到板子右上方的R4的右边.
    在这里插入图片描述
    R4原来有一颗0R电阻, 现在已经被我挑掉了.
    R2左边的焊盘和R4左边的焊盘是连着的, 和排孔上的VDD是连通的.
    R5左边和R4右边的PSB是相连的.
    R5右边是和排孔上的GND相连的.

    这样就可以分析出结果了.
    厂家给我时, 在R4上焊接了一颗0R电阻, 这样默认就是并行通讯方式.
    如果厂家不在R4上焊接电阻, 而在R5上焊接0R电阻, 这样默认就是串行通讯方式.
    厂家这么做的原因 : 可以为用户省下一根IO(PSB).

    但是也有坏处, 如果用户自己想控制并行还是串行通讯方式, 就需要自己用烙铁将R4和R5挑掉.
    当时看到这里, 就尝试将R4挑掉了. 再用前面同学写好的串行例程跑起来, 好使.

    备注

    厂家的R4电阻用0R, 如果用户做实验时, 将GPIO初始化成推挽输出后, 将PSB设置为0, 不就相当于VCC/GND短路了么? 会不会烧毁板子啊?
    感觉厂家这里的R4, 整个1K或470R的电阻都行啊, 为啥要搞成0R呢? 是不是有点考虑不周?

    拆板子时, 怕板子下面还有东西, 就先都拆干净了, 再量的. 装不起来了, 做实验的这块JLX12864C废了.
    如果以后想挑掉R4, 直接在JLX12864C背面就能看到. 不用拆模块, 动一下烙铁就好, 小事.

    END

  • 相关阅读:
    Promise详解:手写Promise底层-实现Promise所有的功能和方法
    call、bind、apply的作用与区别
    uniapp 小程序 全局弹窗 每个需要使用的页面都不用再引用
    本地缓存方法
    MySQL备份与恢复
    负载均衡原理及应用
    Ansible ad-hoc 临时命令
    软件流程和管理(八):Ethics
    Python中的两大法宝函数
    《精通特征工程》学习笔记(5):数据(特征)降维
  • 原文地址:https://blog.csdn.net/LostSpeed/article/details/128102607