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

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 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失
  • ¥15 springboot+vue 集成keycloak sso到阿里云
  • ¥15 win7系统进入桌面过一秒后突然黑屏
  • ¥30 backtrader对于期货交易的现金和资产计算的问题
  • ¥15 求C# .net4.8小报表工具
  • ¥15 安装虚拟机时出现问题
  • ¥15 Selenium+docker Chrome不能运行
  • ¥15 mac电脑,安装charles后无法正常抓包
  • ¥18 visio打开文件一直显示文件未找到