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

悬赏问题

  • ¥20 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏