樂錦 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日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵