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

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 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图2.0 版本点聚合中Marker的位置无法实时更新,如何解决呢?
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题