• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

12864第一次上电不显示,单片机复位一下才能正常显示

13783538174 2018-04-14 浏览量:2836

最近用stm32写了个串口通信的12864显示程序,但是12864在第一次上电时什么都不显示,单片机复位一下才能正常显示,有没有人知道可能是在哪出的毛病2.png

3.png


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 估计是12864的复位脚没有连上GPIO而连到单片机的复位脚(nrst)去了,复位脚是输入引脚,单片机上电的时候复位脚不会自动发出脉冲的,必须要用户按下复位键才会发出脉冲,用户在复位单片机的同时复位了12864,这样才会显示正常。解决方法:12864的复位脚连到单片机的GPIO上面,由GPIO控制复位。

    • 发布于 2018-04-14
    • 举报
    • 评论 1
    • 2
    • 0
13783538174 回复了 donatello:谢谢,解决了 回复

其他答案 数量:4
  • 把你LCD12864初始化函数最后三句之间加一个延时(一般用延时代替查忙)。在对LCD12864进行读写的时候要先查忙,
    12864对于单片机是慢性器件,单片机可以很快的处理,可是它们不行,如果它们还在执行你的上一条指令,比如在某
    个地方显示一串字符,还没有显示好,你又来一条指令,要它去另一个地方显示一些字符,你说它该怎么办?它会执行
    完上一个指令后再去执行下一条指令?不会,它那个检测“忙”信号的那根线,如果不“空闲”,单片机是无法读写的。
    void lcd_init()		 //初始化LCD
    { 
    //    LCD_PSB = 1;         //选择并行模式    
        lcd_wcmd(0x30);      //初级指令集
        delay_ms(5);
        lcd_wcmd(0x0C);      //开显示
        delay_ms(5);
        lcd_wcmd(0x01);      //清屏
        delay_ms(5);
    }
    
    
    • 发布于2018-04-14
    • 举报
    • 评论 0
    • 1
    • 0

  • 三个子函数看不出来呀,main 主体都没看到,不知道程序怎么跑的呀
    • 发布于2018-04-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 说明液晶的初始化与显示刷屏是正常的,说明程序大部分是对的,可以看看屏的几个控制引脚的配置是不是正确
    • 发布于2018-04-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是你的液晶屏的控制引脚的问题,也可能是虚焊的原因
    • 发布于2018-04-14
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

12864第一次上电不显示,单片机复位一下才能正常显示