LCD Wyświetlacz ciekłokrystaliczny na usługach Atari
Pomysł nie jest mój, ale... Inaczej. Pomysł jest mój, schemat jest wzorowany na innych opracowaniach. Duża buśka, piszę to już
kolejny raz i pewnie ze sto razy jeszcze napiszę. Więc... duża buśka konstruktorom Atari za to przecudowne gniazdko jakim jest otworek do kartridża. Porty 1 i 2 tego nie dają.
Wtyk SIO też nie. Ale to gniazdko tak! Przyszło mi na myśl, że przecież mogę opisać sposób w jaki Atari sterować może wyświetlaczem ciekłokrystalicznym. Akurat pod ręką
mam taki, 2x16. Wystarczy. Inne sterują się tak samo bez przeróbek podanego tu schematu. Ważne by wyświetlacz miał sterownik HD44780. Do budowy nie potrzeba
zbyt wiele części. Dwie kości + sam wyświetlacz. Resztę zrobi oprogramowanie.
Jak to działa?
Wyświetlacz podpięty jest pod sygnał CCTL co wyznacza że strona $D5 jest dla niego. Nie cała, a tylko część. Wynika to z tego, że linie adresowe A0 i A1 biorą udział w
sterowaniu. Znaczy to że część adresów będzie się "przewijała" bo występuje tu tzw. dekodowanie niepełne. Nic to. Na razie to tylko próby by zachęcić niektórych do pracy
szarymi komórkami, no i conieco podpowiedzieć.
Wyświetlacz ma trzy linie sterujące. RS, R/W i E. Aby nie kombinować zbyt wiele zrobi się tak. Wystawienie adresu na stronie $D5 zrealizuje daną opcję. Za adres bazowy
obieramy $D500, zatem:
$D500+0 - zapis instrukcji R/W=0 RS=0
$D500+1 - odczyt "busy flag" i adresu R/W=1 RS=0
$D500+2 - zapis danej R/W=0 RS=1
$D500+3 - odczyt danej R/W=1 RS=1
I to byłoby na tyle.
Oczywiście polecenia dotyczą sterownika wyświetlacza. Atari ma tylko wygenerować odpowiednią sekwencję sygnałów, które podane na wejścia sterujące LCD zrobią co trzeba.
Proponuję by zaopatrzyć się w wyświetlacz z podświetleniem. Świeci na zielono. Warto w obwód podświetlenia włączyć opornik około 15 .
Spowoduje to nieco ciemniejsze tło, ale za to jest większa pewność że wyświetlacz dłużej pożyje.
Kody ASCII potrzebne do ożywienia LCD są tożsame z tymi których używa Atari. Tak więc A=65 (dec) B=66 (dec) itd.. Inne kody powodują wyświetlanie znaków innych. Tu nie
czas i pora by całość opisywać. Najważniejsze, jak to działa. A jeżeli już działa, to należy się zastanowić do czego to wykorzystać. Bo sam LCD to połowa sukcesu. Propozycji
może być kilka (z mojej strony).
- Dodatkowy sterownik w postaci np. nakładki obsługuje wyświetlacz. A na nim pokazują się różne komunikaty o stanie wewnętrznym Atari, np. czy jest stereo, ile RAM'u ma
Twój Atarak, czy jest sprawny, etc.
- Takowa nakładka, tylko inna robi to co niżej. Bawisz się Ataryną, a tu nagle STOP. Wyskoczył Error. Wiele programów podaje tylko numer błędów. Taki wyświetlacz
mógłby podać słowny opis co się stało i ewentualnie podać sposób jak ten błąd usunąć, np. Zapomniałeś włączyć stację dysków lub drukarka nie ma papieru albo...
brak prądu :) itd..
- Włączasz komputer, a tu na wyświetlaczu pokazuje się ładnymi literkami: Witam panie Zenonie. Życzę miłej pracy... lub coś podobnego.
- Jakieś demo. Generator znaków w LCD ma sporo różnych bajerów. Ale można też zdefiniować kilka własnych. Jazda bez trzymanki. Ty stukasz, a na LCD leci sobie ładny scroll.
- Hm... Planujesz bawić się Ataryną tylko godzinkę. Ale Cię wciągnęło. Żonka lata jak szalona, a Ty po prostu byłeś w transie. Co powiesz na zegar-przypominacz.
Może być z kalendarzem i wodotryskiem :) Mogłoby wyglądać to tak.
- start Atari
- ustaw bieżący czas
- ustaw czas alarmu + zredaguj omunikat
- czas leci, Ty się bawisz, a po chwili... bzzzzz.... minęła godzinka... wynieś śmieci :)
- Tu jest miejsce na Twój pomysł.
Pora na konkrety...
Moduł w formie kartridża wkłada się w wiadome gniazdo. Starownik LCD jest dosyć wolny. Na BASIC w sam raz, ale w maszynówce pojawią się kłopoty. Bo wydanie polecenia
i realizacja trochę trwa. Coś takiego:
lda #dana
sta $d500
lda dana1
sta $d501
lda #dana2
sta $$d50x x=offset
to błąd!
Pomiędzy kolejnymi sta, a lda powinna być pusta pętla opóźniająca, by LCD zdążył zrealizować polecenie. Jest inny mechanizm sprawdzania tego, ale po co zawracać sobie
tym głowę. Wspomniana pętla robi to wystarczająco dobrze. Tak więc znane:
licz ldx #$40
inx
bne licz
może być tym o co nam chodzi. Oczywiście #$40 należy dobrać eksperymentalnie. Wynika to zazwyczaj z opisu dostarczanego na ulotce załączanej do zakupionego LCD.
Zwłoka około 4 s. Poniżej, działający przykład jak tym sterować. Wykonają się proste czynności, reszta należy do Ciebie.
lda #$01
sta $D500
jsr opu
lda #$0C
sta $D500
jsr opu
lda #$38
sta $D500
jsr opu
lda #$41
sta $D502
jsr opu
rts
op ldx #$00
xx inx
bne xx
rts
end
To samo, tylko że w Basic'u
10 POKE 54528,1
20 POKE 54528,12
30 POKE 54528,56
40 POKE 54528,65
Prawda że łatwe? I jakie proste! Na wyświetlaczu LCD powinna zaświecić się literka A. Gdyby nie chciała, to można próbować zwiększyć czas opóźnienia w pustej pętli
op lub między linie 10-40 wstawić coś takiego nn A=A^1. A gdyby jeszcze nie chciała się pokazać, to szukaj błędu w montażu lub szukaj uszkodzonego elementu.
Niżej kilka szczegółów technicznych.
Sterowanie wyświetlaczem LCD to prosta sprawa (dla tego kto wie). Chodzi o standard ze sterownikiem HD44780 (inne mają podobnie). Więc tak:
- Końcówki Vcc i GND, wiadomo, zasilanie +5V, nie większe
- Vsp to ustawienie kontrastu
- RS, RW i E to wejścia sterujące
- D0-D7 to wejścia/wyjścia danych
Interesujące są wejścia RS, RW, E. Oto tabelka:
| RS | RW | działanie |
| 0 | 0 | zapis instrukcji |
| 1 | 0 | zapis danej |
| 0 | 1 | odczyt zajętości |
| 1 | 1 | odczyt danej |
Dwie pierwsze pozycje załatwiają co trzeba, ale lepiej widać to na wykresie. Oto on.
Zapis instrukcji do sterownika

Zapis danej do wyświetlenia

Kilka kresek a jak czytelne! Kto wymyślił ten sposób interpretacji działania układu! Duża buśka!
Swoje całkiem prawdziwe i poważne rozważania opisał, a wcześniej wykonał model...
Zenon/DIAL
|