樂錦 2022-06-20 12:49 采纳率: 100%
浏览 85
已结题

51单片机LCD显示异常问题

这段代码上电时显示“Tap the button to start”,按下按钮后mode以及mode2的值发生改变以达到LCD显示的变化。
但是在执行的过程中出现了图片中的问题,第一个图片理论上是第一行只显示PWM=50,但是后面多了个上电时的button。
第二张图片第二行一开始是显示zheng zhuan,但是改变以后显示fan zhuan后面还多了一开始显示zheng zhuan的 n。
还请给予指导,十分感谢!

img

img

uchar d1[4]="PWM=";
uchar d2[12]="Zheng Zhuan ";
uchar d3[10]="Fan zhuan ";
uchar d4[14]="Tap the button";
uchar d5[14]=" to start! ";

wrc(0x80+0x00);
{
if(mode2==0 && mode==0)
{
for(i=0;i<14;i++)
{
wrd(d4[i]);
}
}

      if (mode2==1 && mode>0)
    {
            for(i=0;i<4;i++)
        {
            wrd(d1[i]);
        }
        wrd(num[v/100]);
        wrd(num[v%100/10]);
        wrd(num[v%100%10]);
    }
}


wrc(0x80+0x40);
{
        if(mode2==0 && mode==0)
    {
            for(i=0;i<14;i++)
        {
            wrd(d5[i]);
        }
    }
    
      if(mode==1 && mode2==1)
    {
            for(i=0;i<12;i++)
        {
            wrd(d2[i]);
        }
    }
    
      if(mode==2 && mode2==1)
    {
            for(i=0;i<10;i++)
        {
            wrd(d3[i]);
        }
    }
}
  • 写回答

1条回答 默认 最新

  • qllaoda 2022-06-20 13:16
    关注

    本质原因是,你的代码只能改写了前面那一部分,后面没变,就保留了前一次显示的内容。
    所以你输出一行字符的时候,你需要确定你的输出,是要完全覆盖以前的内容,还是指改变部分,如果需要完全覆盖,最好先清除当前行再显示。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月21日
  • 已采纳回答 6月20日
  • 创建了问题 6月20日

悬赏问题

  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?