Didelis LCD be kontrolerio prie printerio porto

Išminčiai sakė, kad tai neįmanoma. Išminčiai sakė, kad neužteks kompo greičio… nu kompo greičio gal ir užteks, bet printerio portas nesugeba perduoti tokį kiekį informacijos…

Ot ir ne! Va jums Sharp LM64P10 (640×480 STN matrica), be kontrolerio, pajungta prie printerio porto:

big graphic LCD on LPT

vaizdas kartojasi, nes patingėjau softą labai rašyti. Pas tokias matricas pirmi 4 bitai valdo pusę ekrano, o kiti kitą pusę. Čia aš paprasčiausiai sujungiau D0-D3 su D4-D7.

big graphic LCD on LPT

Aišku matricos “refresh” beviltiškas ir toks vaizdelis gražus vien tik todėl, kad foto aparato išlaikymas viena trečioji sekundės. Gavosi kokie 2…3 fps vietoje rekomenduojamu 80… 🙂

big graphic LCD on LPT

O štai dumenys pasitaiko pikselis į pikselį. Dabar viska reikia perkonstruoti į kokį mikrokontrolerį, arba priklijuoti kelis SED ar Hitachi kontroleriukus.

Žemiau techninė dalis…

Daugelis senų LCD ekranų neturi kontrolerių. Šita matrica išlupta iš kažkokio tai prieštvaninio nešiojamo kompiuterio. Šios matricos neturi atminties, todėl reikia pastoviai atnaujinti informaciją paduodama į ekraną. Jei nustojam pumpuoti duomenis, matrica sustoja ir ją būtinai reikia išjungti. Nes kitaip, pastovi įtampa tekanti į ekraną galvaniškai pažeis metalizaciją ant stiklo. Jei ekranas pradeda rodyti geltoną vaizdą (juodai baltas ekraniukas) reikia išjungti LCD maitinimą (Vee). Palaikius statinį vaizdą ant ekrano kiek ilgiau greitai pastebėsit, kad vaizdas nebeišnyksta- ir laikas matrica išmesti.

Pastovų matricos skanavimą atlieką specialūs kontroleriai kurie turi atmintį (RAM), kurioje saugomas vaizdas. Šiame eksperimente “atmintis” yra kompiuteryje, o kontrolerio vaidmenį atlieka programa parašyta MS Visual Basic 6.0.

Gal kompiuterio našumo ir užtenka, kad užpildyti ekraną, bet pagrindinė siauroji vieta yra printerio (LPT) portas.

Ši matrica (ir daugelis panašių) jungiasi labai paprastai- naudojami trys sinchro signalai HSYNC (CP1), VSYNC (S) ir PixelCLOCK (CP2). Duomenys perduodami per 8 laidelius. Čia labai įdomiai padaryta- ekranas padalintas į dvi dalis. 4 bitai einą į viršutinę dalį, kiti keturi į apatinę. Taigi viename ekrane yra du virtualūs sinchroniškai veikinatys ekraniukai. Tai padaryta todėl, kad galima būtu greičiau užpildyti ekraną ir mažiau matytusi mirgėjimas. Naujuose ekranuose tokių išmislų nėra.

Šio ekrano jungties aprašymas:
1. S- Startup sygnal (VSYNC), active H;
2. CP1- Input data latch (HSYNC), active H->L;
3. CP2- Data input clock, active H->L, (min 152nS);
4. DISP- Display control, ON=H, OFF=L, connect to +5V, Vdd to turn on;
5. Vdd- Logic power, 5V;
6. Vss- Ground, GND;
7. Vee- LCD power -15V typical (attention, negative voltage), max -25V;
8-11. DU0-DU3, Upper display data, H=ON, L=OFF;
12-15. DL0-DL3, Lower display data, same as above.

Rekomenduojamas ekrano greitis (framerate)- 8…16mS. Taigi maksimalus kadrų dažnis 125Hz, rekomenduojamas- 85Hz. Man veikia ir su 2…3Hz 🙂

MS Basic programos kodas kuris parodo signalų seką:

While 1
WriteByte (VSYNC + HSYNC)
WriteByte (VSYNC)
For eil = 0 To 240
j = eil * 160
For i = 0 To 159
duom = a(i + j)
WriteByte (duom + CLOCK)
WriteByte (duom)
Next i
WriteByte (HSYNC)
Next eil
Wend

Dėmesio, kadangi BASICas veikia lėtai, čia niekas nesirūpino uždelsimais. Programoje gali būti ir klaida. Bet bent jau šitas kodas duodą paveiksliukuose pavaizduotą rezultatą. Programoje yra problema su keliais paskutiniais dešininiais bitais. Dėl to čia parašyta 159 vietoje 160. Čia gali būti laiko impulsu bėda, nes naudojant 160, kai kada eilutės persipildo ir atsiranda brūkšniai.

timing problems

3 replies on “Didelis LCD be kontrolerio prie printerio porto”

  1. Aišku tokių ir dar šustresnių yra pardavime. Bet jie beviltiški buitiniam vartojimui. Reikia specialaus kontrolerio arba labai jau rimto mikrovaldiklio, kad pavaizduoti vaizdelį. Arba pačiam susikurti kokį kontrolerį su FPGA ar CPLD mikroschemute.

Leave a Reply

Your email address will not be published. Required fields are marked *