Mikroprocesorowa Ośla łączka
Mikroprocesorowa Ośla łączka
•C023a Wyświetlacz LCD
Cla
Do
'Cla 'zaremowane polecenie Lcd "Pierwszy napis"
Walt 2
'Cis 'zaremowane polecenie Lcd "Drugi napis"
Walt 2
Loop
End
■CQ23b zmiana napisów
Portd = 3 '=£B0000011
Do
If Pind.O = O Then Cis
Lcd "pierwszy napis"
End If
If Pind.1=0 Then Cis
Lcd "Drugi napis"
End If
Loop
End
Rys. 122 Rys. 123
'C023c.bas "Kołysanie" długiego napisu | |
Dim A As Byt e |
•licznik dla pętli FOR...NEXT |
Cis |
'czyść ekran |
Lcd "Elektronika |
dla Wszystkich” 'wyślij napis |
Do |
'pętla |
For A = 1 To 12 |
'przesuń napis |
Waitms 400 |
'co 400ms |
Shiftlcd Left |
'w lewo o 12 miejsc |
Hext | |
Walt 1 |
■czekaj ls |
For A “ 1 To 12 |
'przesuń napis |
Waitms 400 |
'co 400ms |
Shiftlcd Right |
'w prawo o 12 miejsc |
Kext | |
Wait 1 |
'czekaj ls |
Loop |
'i znów od początku... |
End |
Rys. 124
(bus-mode). My pracujemy w 4-bitowym trybie pin modę, dlatego interesuje nas tylko przyporządkowanie linii sterujących i typ wyświetlacza. Dlatego prawie wszystko pozostawisz bez zmian, tylko w zaznaczonym na czerwono okienku powinieneś wybrać typ użytego wyświetlacza i kliknąć przycisk Default. Zapewne wykorzystasz wyświetlacz 16*2. Ale jeśli posiadasz inny moduł, możesz go śmiało wykorzystać - powinieneś odpowiednio zmienić typ w zaznaczonym okienku i rozumnie zmodyfikować niektóre programy. Żadne inne ingerencje nie powinny być potrzebne, ponieważ przy projektowaniu płytki testowej starałem się uwzględnić domyślne ustawienia BASCOM-a - porównaj schemat płytki drukowanej w EdW 12/2002 str. 14 rys 1.
Zwróć jeszcze uwagę na jumper J3. Wcześniej jego stan był obojętny. Teraz, zgodnie z rysunkiem 120 i schematem płytki testowej, muszą być zwarte jego szpilki 2-3, czyli wejście EN wyświetlacza (n. 6) musi być dołączone do końcówki PB.3 (n. 15) procesora. Fotografia wstępna pokazuje płytkę testową z wyświetlaczem 16x2 i wyróżnionymi elementami, które trzeba odpowiednio ustawić.
A teraz napisz swój pierwszy program wykorzystujący wyświetlacz LCD. Program składa się z jednej linijki:
LCD „BASCOM AVR w EdW"
Możesz wpisać dowolny napis, byleby nie za długi. Po skompilowaniu i „spuszczeniu” do procesora powinieneś zobaczyć tekst na wyświetlaczu. Prawdopodobnie jednak na wyświetlaczu pojawią się też jakieś śmieci. Przyczyną jest to, że nie przeprowadziliśmy procedury zerowania i czyszczenia wyświetlacza. Zapamiętaj, że przy korzystaniu z wyświetlacza LCD zawsze na początek trzeba przeprowadzić taką procedurę. Realizujemy
Rys. 121 ją znanym z innych programów poleceniem CLS (elear screen - czyść ekran). Twój pierwszy program dla wyświetlacza LCD powinien więc zawierać dwa rozkazy:
CLS
LCD „BASCOM AVR w EdW"
A teraz kolejny prościutki przykład z rysunku 121 (C023a.bas). Zgodnie z treścią programu, napis na wyświetlaczu powinien zmieniać się co 2 sekundy, ale ponieważ w wersji oryginalnej „zaremowane” są polecenia czyszczenia ekranu, zawartość wyświetlacza będzie dziwna. Usuń apostrofy i sprawdź działanie z poleceniami każdorazowego czyszczenia ekranu przed wyświetleniem napisu.
A teraz nieco zmodyfikuj program według rysunku 122 (C023b.bas). Aby działały przyciski S1, S2 musisz podciągnąć pływające (domyślnie) wejścia PD.O i PD.l, stąd wpisanie stanu wysokiego do najmłodszych bitów rejestru PORTD. Ponieważ po starcie programu nie przewidziano procedury CLS, przed naciśnięciem przycisku zawartość wyświetlacza jest nieokreślona - zapewne i u Ciebie na wyświetlaczu pojawią się jakieś śmieci.
A teraz powalczmy z dłuuugimi napisami. Próba wpisania:
CLS
LCD „Elektronika dla Wszystkich"
spowoduje, że część napisu zostanie obcięta, a dolna linijka pozostanie pusta - napis nie zostaje przeniesiony automatycznie do niższych linii wyświetlacza. „Ruchomy” program z rysunku 123 (C023c.bas), wykorzystujący polecenie przesuwania SHIFTLCD, wskazuje jednak, że cały napis jest zapamiętany. W pliku C023c.bas znajdziesz też zaremowane dwa pokrewne prostsze programiki, przesuwające długi napis.
Wykorzystaj program z rysunku 124 (C023d.bas), gdzie masz kilka ciągów znaków. Napis zawierający w sumie 38 znaków niejako krąży, choć może to się odbywać w dziwny sposób. U mnie występują dwa puste pola, co wskazuje, że mamy do czynienia z cyklem 40-znakowym (w niektórych wyświetlaczach może wystąpić cykl 80-znako-wy). W programie masz też dodatkowe ciągi znaków do wyświetlenia. Jeden z nich ma dokładnie 80 znaków, drugi (zaremowany) 100 znaków. Możesz przeprowadzić próby zmniejszania i zwiększania liczby znaków do wyświetlenia i sprawdzać, które 40 z nich zostanie wyświetlone i jak. Zależności są tu dość zaskakujące. Nie musisz wgłębiać się we wszystkie szczegóły, zapamiętaj tylko, że teksty do wyświetlenia nie powinny zawierać więcej niż 40 znaków w jednej linii.
Gdy poznasz opisane dalej polecenia we własnym zakresie, możesz też sprawdzić, jak to wygląda dla dolnej linii - przekonasz się, że moduł LCD zawiera pamięć (RAM) do przechowywania w sumie 80 kodów do wyświetlenia.
Teraz przekonaj się, że można wyświetlić nie tylko teksty (zawarte w programie, w pamięci FLASH), ale też zawartość zmiennych. Pokazuje to prosty program z rysunku 125 (C023e.bas), gdzie wykorzystujemy zarówno
ci*
'Lcd "Nasza Elektronika dla Wszystkich - AVT" ‘razem 38 znaków
•Lcd "00300600901201501602102402703003303603904204504805105405706006306606907207507608" 'tu jest razem 80 znaków
1Lcd "00300600901201501802102402703003303 60390420450480510540570600630660690720750780810840870900930960990" •lOOznaków
'Lcd "0123456789"
'Lcd "ABCDEFGHIJKLMNOPQRSTUWXYZ" tu trzy linie stanowią całość - napis w dwóch linijkach 'Lowerline
'Lcd "abcdefghijklmnopqrstuwxyz"
Do
Waitas 300 Shiftlcd Left Loop : End
Elektronika dla Wszystkich Styczeń 2004 37