hycavhyc 2023-12-09 19:58 采纳率: 0%
浏览 7

单片机音乐盒无法播放,lcd1602显示异常

利用keil5编写实现基于51单片机的音乐盒电子琴,lcd1602的显示不完整,但字符未超,蜂鸣器也不响,但编译无报错。

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-09 22:10
    关注

    【相关推荐】



    • 这篇博客: 基于51单片机的LCD1602实现分秒计时总结中的 基于51单片机的LCD1602实现分秒计时总结 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
      • 完成要求
        1、实现分秒计时。
        2、按键控制分秒的调整(两个按键分别控制分秒增加)。
        3、实现整分报时功能(蜂鸣器响)。
        4、PCB板的绘制及焊接

      • 设计思路及实现原理
        1、首先实现分秒计时功能。为实现分秒计时功能,需要使用到单片机中的计时器功能,通过计时器来完成秒增加的运算,进而对分进行运算。
        2、其次在实现分秒自动计时的基础上添加按键分别对分秒进行控制。此步骤需要使用到按键检测,及按键消抖。因为在程序中使用两个返回值,所以按键对这两个返回值进行操作,在调秒过程中,需要使两返回值一致,否则分秒进位发生不一致。
        3、最后在完成整分报时功能。此步骤需要对分秒的值进行判断,因为整分时,秒位为0,分位进1,而在初始时刻(即00:00)不能报时,所以在分位不为0,秒位为0是蜂鸣器响。

      • 程序
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述

      • AD完成原理图及PCB制图

      1、了解51最小系统所需元器件(晶振、复位、电源)。
      2、对使用到的元器件建库封装。
      3、新建工程,创建原理图,合理摆放元器件,完成元器件的连接,尽量减少导线的交叉,不要短接,不要漏接。好的原理图在PCB制图中帮助很多,走线问题上会少很多麻烦。可以在原理图上将所有引脚都连起来选择合适的走线。
      4、创建PCB,如果在原理图完成很好,PCB元件的摆放可按照原理图摆放。最麻烦的也许就是连线,也许系统可给你推荐的引脚,不过这些引脚不一定是最好的选择,某些时候也会让你的路被封死。这时候你可以选择同样效果的引脚,换条路也是不错的选择。
      5、根据实际合理选择封装,更改焊盘大小,走线粗细

      • 完成过程中所遇到的问题

      1、LCD1602的复位很重要,刚开始时LCD可以亮,但是亮的不正常(手动滑稽),第一行5x7点阵全亮,第二行不显示,这就是复位出现了问题,在后来调整使en=0之后才解决。如果LCD可以亮但是不显示可以调整偏压,也就是调整滑动变阻器。
      2、在考虑如何做出分位和秒位也耗费了我很长时间,起初使用数组但是无法实现自动增加功能,一直停留在00:00,后来参考大神的代码才做出分位和秒位。在使用按键控制分秒增加过程,因为起初我只设置了一个返回值,此处我的逻辑也出现问题,我认为返回值由计时器控制,若使用外部中断改变返回值,回到断点时之前的操作是无效的。后来设置两个返回值,分别控制分和秒,并且抛弃使用外部中断,直接使用按键检测,按一下按键则分秒增加。然而两个返回值同样有两个返回值的麻烦,在使用按键调整秒的时候,控制秒的返回值kk增加,而控制分的jj不增加,导致后来运行时(例如16:54)本应变为17:00却变成了16:00,过一段时间之后(秒位并没有走过60s)变成了17:xx(xx自行想象)。所以秒调整时要保持jj、kk数值同步。这也完成了若kk每增加60,可完成分位进1。
      3、在PCB制图之前一定画好原理图,画好原理图,画好原理图。尽可能完成所有连线,减少交叉。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 12月9日