Univerza v Ljubljani Fakulteta za elektrotehniko

Jurij Dolžan, David Tehovnik, Aleksander Sešek

Krmiljenje grafičnega displaya

Seminarska naloga pri predmetu Računalniško načrtovanje vezij

 

 

V Ljubljani, September 2001

 

Naloga:

Izdelaj dekodirnik in ostalo krmilno logiko za krmiljenje displaya NAN-YA. Display naj izpisuje tekst in omogoča tudi prikaz ikon.

 

Blok shema vezja:

 

Dekodirnik:

Narejen je z dvema komparatorjema 74688 za naslov od A15-A2. Naslova A1 in A0 sta porabljena za naslednje:

 

A0
A1
 
0
0
DATA
0
1
CONTROL
1
0
}LATCH
1
1

 

A15 - A7 lahko izbiramo z jumperji (LSB je na desni)
A7 - A2 so določeni in so 0.

 

Krmilna logika in ostalo:

Za negacijo so uporabljeni negatorji iz čipa 7404, and vrata iz 7408. Za shranjevanje stanja tipk je uporabljen latch 74574. Poleg omenjenega so na plošči še flat konektor DIL40, dva konektorja za priklop in krmiljenje displaya, štiri tipke, jumper za izbiro velikosti črk, napajalna puša in vezje za kontrast.

 

Vezje za kontrast:

Izvedeno je s pomocjo dveh obracalnikov polaritete 7660.Delujeta na principu preklopov med kondenzatorji. Ker imamo na razpolago +5V sta potrebna dva, saj je potrebna napetost za kontrast negativna, priblizno -10V. Kontrast je nastavljiv z potenciometrom 10kohm.

Logični nivoji z jumperji:

 

Display:

Najprej smo pogledali na internetni brskalnik google, ce je kdo ze kaj delal s displayem NAN_YA. Tam so bila samo vprašanja in prošnje za odgovore in pomoc. Potem smo po posvetu z Markom Jankovcem pregledali cipe na ozadju displaya in ugotovili da ga krmili Toshibin mikro kontroler T6963C. Poiskali smo prvi datasheet preko google. V njem piše veliko o nastavitvah in tudi nekaj o priporoceni inicializaciji za razlicne velikosti displayev. Nadalje sva iskala asemblerski program za inicializacijo. Ponovno sva na Toshibin strani našla še drugi datasheet, ki pa je boljši od prvega, saj vsebuje vse potrebne podatke in tudi asemblerski program. Problem pa je, da je ta asemblerski program napisan za Toshibin TMPZ84C00P.

Z displayem komuniciramo prek njegovih I/O pinov:

1 - GND
11 - D0
a - GND
2 - Vss
12 - D1
b - N.C.
3 - Vdd
13 - D2
c - Vss (za vklop osvetlitve, tok !) (kontrast)
4 - V0
14 - D3
5 - WR
15 - D4
6 - RD
16 - D5
7 - CE
17 - D6
8 - C/D
18 - D7
9 - N.C.
19 - FS
10 - RESET
20 - N.C.

 

 

T6963C deluje na max. 5.5MHz (odvisno od velikosti displaya), pri nas je velikost displaya 64 X 240, deluje na 2.458MHz. Primeren je za krmiljenje displayev z 32 do 80 stolpci in z 2 do 32 linijami. Uporabljamo lahko znake z ločljivostjo 5 do 8 X 8 pik. Vsebuje tudi 128 znakovni generator ROM (tabela T6963C-0101 prvi datasheet str.28 ali drugi datasheet str.26) ter 8k Max. spomina.

Uporabili smo dve možnosti za izbiro velikosti znaka(FS), med katerima preklapljamo z jumperjem. Izbiramo lahko med 6 X 8 (high) in 8 X 8 (low) velikostjo znaka. Kontrast je nastavljiv s potenciometrom. Izbrani FS vpliva na nastavitve inicializacije:

velikost znaka
znaki x vrstice
6 X 8
40 X 8
8 X 8
30 X 8

 

Za izpis na display lahko uporabimo ze narejene znake , ki jih ima T6963C ze v spominu, lahko pa naredimo svoje na naslovu $1400h - $16FFh. Pomemben je tudi OFFSET register (glej drugi datasheet str. 12), saj nam ta pove kje v spominu bodo spravljeni naši narejeni znaki in da jih iz pravega naslova tudi prebere. Za naš primer mora biti OFFSET register nastavljen na $02h. Interni znaki so definirani od $00h - $7Fh (glej drugi datasheet str.26), svoje pa narediš od $80h-$FFh, vendar moraš imeti nastavljen pravi display 'mode'. V tem obmocju lahko narediš tudi ikono ali bitno sliko (glej drugi datasheet str.13).Razdelitev spomina, ki je na voljo, je narisana v naslednji tabeli :

 

Osvetlitev displaya: Za osvetlitev smo naredili posebno napajanje, saj display porabi precej energije (tok). Za vklop diod osvetlitve zadostuje ~ 3,6V (takrat tece tok ~200mA). Pri najprimernejši osvetlitvi pri 4V tece priblizno 300mA toka. Display bi moral delati na 5V, vendar nima zaščitnega predupora (kasneje smo ga dodali) za omejitev toka. Ob priklopu na 5V, še brez zašcite tece tok v display velik kar 2.5A!!

Tipke: Branje tipk je izvedeno tako, da se ob naslovitvi naslova $401X aktivira CE (activ low) latcha, ta pa na podatkovno vodilo spusti stanje tipk in sicer po dva bita na tipko (4 X 2bita = 8 bit). Potrebno je še narediti masko, da bomo izlocili posamezno tipko in potem ustrezno, glede na naslednjo nalogo, reagirali.

 

Plošča: (display.pcb)

 

 

Asemblerski program :

Lahko si snamete asemblerski program z razlago v Wordu (initst.doc) ali pa kar za naložit v HC11 (initsf.asm).

Problemi, rešitve in možnosti nadgradnje:

Prvi problem je bil kako narediti dekoder, ki bo nastavljiv. Rešitev nama je povedal asistent Krč, ki je predlagal komparator 74688. To smo kasneje tudi uporabili. Naslednja tezava je bila, kako iz +5V narediti -10V za kontrast. Rešitev za -5V nam je povedal profesor Topič in sicer z 7660. Kasneje smo dodali še enega, da smo dosegli -10V. Dodali smo tudi potenciometer za spreminjanje kontrasta po želji. Želeli smo tudi, da bi se po želji nastavljala osvetlitev, vendar je žal zmanjkalo časa. Možna rešitev osvetlitve je s tranzistorjem in pwl-jem. Problem je nastal tudi pri spajkanju, kajti naredili smo preozke povezave, tako da je baker odstopal od površine. Nadaljnji problem je bil, kaj vse vključiti v inicializacijo!? Ugotovili smo, da je najbolje kar vse, da kasneje ni problemov. Tako smo določili tudi začetni grafični naslov in območje grafike, čeprav je ne uporabljamo. Nismo pa dolocili kurzorja (njegove velikosti, tipa in pozicije). Napisali smo torej inicializacijo, vendar se nama je ob nalaganju HC11 uprl z 'board not responding'! Pregledali smo plošcico in ugotovili , da je eden od spojev na komparatorju mrzel, torej da ni stika. Po popravilu smo ponovno naložili program in tokrat se ni uprl, vendar nič znakov zivljenja s strani displaya. Osvetlitev je delovala, kontrast tudi. Še enkrat smo pregledali plošcico, bločne diagrame izmerili potenciale vhodov, komparatorja in mikro kontrolerja ter ugotovili, da je potencial na CE ravno obraten. Ko bi moral biti aktiven je logicna enica, pravilno pa je logicna 0, saj deluje na negativno stanje. Dodali smo negator. Končno se je del displaya izbrisal, vendar o tekstu še nic sledu. Ker sva mislila, da offset register vpliva tudi na to, kje se zacne izbris displaya sva ga nastavila na 00h. In res je izbrisalo od zacetka pa do polovice, vendar se je to izkazalo le kot naključno in trenutno. Profesor Tuma naju je opozoril, da nekateri mikro kontrolerji 16-bitne ukaze berejo obratno, kot Motorola. Spremenila sv vrstni red branja, torej najprej nizji del, potem višji. Tokrat smo šli po korakih z F7 in cudezno se je izbrisal velik del displaya in izpisal želeni niz znakov TOSHIBA, vendar je potem v nadaljevanju prve tri črke prepisal z nekimi kracami. Kaj bi še bilo? Spremenili smo velikost znaka in ugotovili, da to vpliva na velikost zacetnega izbrisa in presledke in velikost črk. Torej pravilno deluje FS. Preverili smo še velikost tekstovnega območja in ugotovili da mora biti nastavljeno glede na izbrano velikost znaka. Ko smo izbrali pravilno velikost, se je display po nalozitvi inicializacije v celoti izbrisal, vendar pa je še vedno prepisal prve tri crke TOSHIBE. Potem pa smo po dolgih urah mucnega preucevanja datasheetov ugotovila, da bi bilo dobro nastaviti offset register nazaj na 02h. To je bilo, kar smo iskali. Izpisal se je tekst, sicer ne na pravem mestu, ampak v celoti in pa tudi napacno razvršcene kitajske črke. S pravilno razporeditvijo teksta in uskladitvijo pozicij kitajskih znakov, je bilo vse koncano.

Reference, literatura in linki:

www.toshiba.com, www.google.com, www.chipdir.com, skripta HC11 od prof. Tume.

To poročilo je možno dobiti tudi v wordovem dokumentu.

Zahvala

Zahvaljujemo se prof. T.Tumi za veliko pomoč pri prevajanju asemblerja ter obilno dobre volje in vztrajnosti, prof. M.Topicu za pomoč pri izvedbi obračalnika polaritete, Marku Jankovcu za display in obilo pomoči pri rezkanju, konstrukciji in pozicioniranju elementov na plošči ter J.Krču za idejo dekoderja z komparatorjem.

 

Jurij Dolžan, David Tehovnik, Aleksander Sešek