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

时间:2016-01-15 15:15:51

标签: embedded microcontroller

我有一个显示如下的程序。

第一行:伏特:过电压 第二行:电流:过电流。

在LCD中,无法完全显示字母OVer Voltage或Over Current。 我只想滚动这些。但Volt:和当前:那封信将不会滚动?

2 个答案:

答案 0 :(得分:1)

因此,您需要创建一个例程来循环播放您想要显示的消息。

举个例子,第一次发送“Volt:Over Volta” 然后一秒钟发送“Volt:ver Voltag” 那么“Volt:er Voltage”等等。

另一个选项是创建一个例程,在确定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.
 }

答案 1 :(得分:1)

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

如果这不能引起你的兴趣,另一种方法是在代码中移动缓冲区并将所有缓冲区重新写入LCD。你可以足够快地做到这一点,看起来并不可怕。