Embedded 仅在16x2 LCD(HD44780显示程序)中滚动某些文本

Embedded 仅在16x2 LCD(HD44780显示程序)中滚动某些文本,embedded,microcontroller,Embedded,Microcontroller,我有一个程序,显示如下 第一行:电压:过电压 第二行:电流:过电流 在LCD中,不能完全显示字母过压或过流。 我只想滚动这些。但是Volt:和current:字母将在那里,不需要滚动?因此您需要创建一个例程来循环浏览要显示的消息 例如,第一次发送“电压:超过电压” 然后第二秒钟后发送“Volt:ver Voltag” 然后是“电压:er电压”等等 另一个选项是创建一个例程,在确定len后显示带有起始索引的值部分 未编译/测试以下puesdo代码 char buf[17]; char label[

我有一个程序,显示如下

第一行:电压:过电压 第二行:电流:过电流

在LCD中,不能完全显示字母过压或过流。
我只想滚动这些。但是Volt:和current:字母将在那里,不需要滚动?

因此您需要创建一个例程来循环浏览要显示的消息

例如,第一次发送“电压:超过电压” 然后第二秒钟后发送“Volt:ver Voltag” 然后是“电压:er电压”等等

另一个选项是创建一个例程,在确定len后显示带有起始索引的值部分

未编译/测试以下puesdo代码

char buf[17];
char label[]= "Current";
char value[]= "Over Current";

while(1)
{
    if (++start_pos >= (strlen(value)+strlen(label)-16)
    {
          start_pos=0;
          delay(500); //ms
    }
    snprintf(buf,16,"%s: %s",label,value[start_pos]);
    puts(buf);  // whatever the name of your routine to send string to LCD
    if (start_pos==0)
    {
         delay(500); //ms
    }
    delay(1000); //ms NOTE: you probably want to go do some other code during this time.
 }

你可能想看看你的LCD是否有一个滚动命令。有些LCD有一个字符缓冲区,你可以在其中写入数据,然后给出一个滚动命令来移动显示的内容。例如,我使用了一个LCD,它可以在DDRAM中每行存储40个字符,而只显示16个字符。如果我没记错的话,你今天必须同时滚动这两行是的,不过

如果这不符合你的想法,另一种方法是在代码中移动缓冲区,然后将所有缓冲区重新写入LCD。你可以足够快地完成这项工作,看起来不会很糟糕