Ponieważ, nie wiem jak zmienić, aby LCD odwrotnie wyświetlało litery, tzw taki invert czarne tło, białe znaki, dzięki czemu można by było wykonać przesuwający czarny pasek.
Ja w zamian powiększa litery w wybranym menu i proponuje tak wykonać menu:
Musisz zdeklarować stałe z tekstami menu
Kod:
Const Linia1 = "1 - Ustawienia"
Const Linia2 = "2 - Nastawy"
Const Linia3 - "3 - Pamieci"
Const Linia4 - "4 - Latarka"
....oczywiście dowolną ilość, oraz zmienna określając ilość linii w w menu
Kod:
Const Linii_menu = 4
Do tego potrzebne nam jeszcze pięć zmiennych, jedna do zapamiętywania aktualnej pozycję menu, trzy pomocnicze do obsługi wyświetlania i pętli, oraz pomocnicza znakową do przygotowywania tekstów menu
Kod:
Dim Linia As String * 16
Dim Pozycja_menu As Byte
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim D As Byte
...no i samą obsługę menu
Kod:
Do
'Najpier określamy które linie chcemy pokazać
A = Pozycja_menu - 1 'od której linii wyświetlamy menu
B = Pozycja_menu + 1 'do której linii wyświetlamy menu
If B > Linii_menu Then 'sprawdzanie czy nie jest to ostatnia pozycja w menu
B = Linii_menu
A = B - 2
End If
If A < 1 Then 'sprawdzanie czy nie jest to pierwszą pozycja w menu
A = 1
#if Linii_menu > 2
B = A + 2
#else
B = 2
#endif
End If
Locate 1 , 7 'wyśrodkowanie dla napisu Menu
Lcd "MENU"
'petla do wyswietlania reszty menu
For C = A To B
D = C - A 'okreslenie wysietalanej lini
Select Case D 'przesuniecie kursora na poczatek odpowiedniego wiersza
Case 0 : Home Lower
Case 1 : Home Third
Case 2 : Home Fourth
End Select
Select Case C 'wybor testu do menu
Case 1 : Linia = Linia1
Case 2 : Linia = Linia2
Case 3 : Linia = Linia3
Case 4 : Linia = Linia4
End Select
If C = Pozycja_menu Then 'jesli czy aktualnia linia to ta wybrana z menu
Linia = Ucase(linia)
End If
D = 16 - Len(linia)
Lcd Linia ; Spc(d)
Next A
Loop
Oczywiście obsługę zmiany zmienne pozycji menu, wraz z klawiszami, przejścia do odpowiedniej pozycji menu itd, musisz zrealizować sam.