簡體   English   中英

僅在16x2 LCD中滾動一些文本(HD44780顯示程序

[英]Only scrolling some Text in 16x2 LCD(HD44780 display programm

我有一個程序,顯示如下。

第一行:電壓:過電壓第二行:電流:過電流。

在LCD中,不能完全顯示字母OVer Voltage或Over Current。 我只想滾動這些。 但是Volt和current的字母會在那里,不需要滾動嗎?

因此,您將需要創建一個例程來循環瀏覽要顯示的消息。

例如,第一次發送“ 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.
 }

您可能需要查看LCD是否具有滾動命令。 某些LCD上有字符緩沖區,您可以在其中寫入數據,然后發出滾動命令以移動顯示的內容。 例如,我使用的LCD可以在DDRAM中每行存儲40個字符,而只顯示16個字符。如果我沒記錯的話,則必須以這種方式一次滾動兩行。

如果這還沒有使您滿意,那么另一種方法是轉移代碼中的緩沖區並將其全部重新寫入LCD。 您可以足夠快地執行此操作,使其看起來並不可怕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM