MSP430x4xx seimos mikrovaldikliai vieni is nedaugelio bendros paskirties mikrovaldiklių, turintys integruotą LCD vaizduoklio valdymo bloką. Sis funkcinis blokas gali būti konfigūruojamas valdyti statiniame, 2 - mux, 3 - mux ir 4 - mux rezime dirbančius LCD vaizduoklius. Siam tikslui yra rezervuota iki 40 fizinių isvadų, tačiau nesant reikalui nebūtina naudoti juos visus, kadangi kai kurie is sių isvadų rezervuoti ir antrinėms funkcijoms. Blokinė įtaiso schema pavaizduota 14 pav.
14 pav. LCD displėjaus valdymo grandinės blokinė schema
Priklausomai nuo valdymo bloko darbo rėzimo isorėje, prie atitinkamų isvadų reikia prijungti 1, 3 arba 4 rezistorius. Sie rezistoriai naudojami įtampų lygiams formuoti valdant vaizduoklius dirbančiu 141m1221b s 2, 3 ir 4 mux rezimuose. LCD valdymo funkcinis blokas turi vidinę atmintį, kurioje talpinamas vaizdas. Norint suformuoti vaizdą tereikia uzpildyti sią atmintį ar jos dalį atitinkamomis reiksmėmis.
Pagrindiniai LCD valdymo bloko paruosimo darbui zingsniai yra sie:
Bazinio laikmačio (Basic Timer) konfigūravimas, siame zingsnyje nurodomas vaizdo atnaujinimo periodiskumas;
Prijungto vaizduoklio tipo (darbo rezimo) pasirinkimas (statinis, 2 -, 3 - ar 4 - mux);
Pasirenkama kiek isvadų reikės vaizduoklio duomenims atvaizduoti;
LCD vaizdo atminties uzpildymas.
Informacija, kurią reikia atvaizduoti LCD vaizduoklyje įrasoma į LCD kontrolerio atmintį (15 pav.). Kiekvienas atminties bitas atitinka viena segmentą arba yra nenaudojamas, priklausomai nuo pasirinkto LCD vaizduoklio rezimo.
15 pav. LCD kontrolerio atmintis
LCD kontroleris palaiko mirksėjimo rezimą. Valdančio registro (20 pav.) bitas LCDON yra apjungtas IR (AND) operacija su kiekvienu kontrolerio atminties (15 pav.) bitu. Isjungiant ar įjungiant sį bitą, gaunamas vaizduoklio segmentų mirksėjimo efektas.
LCD kontroleris segmentinių ir COMx linijų sinchronizacijai naudoja signalą fLCD, kurį generuoja Basic Timer laikmatis (vidinis mikrovaldiklio MSP430x4xx blokas). Sio signalo daznis parenkamas priklausomai nuo konkretaus naudojamo LCD vaizduoklio ir pasirinkto LCD kontrolerio darbo rezimo.
Įtampų, reikalingų segmentų valdymo signalams gauti, formavimui naudojami rezistoriai R03, R13, R23 ir R33. Is vienodų varzų sudaryto daliklio gaunamos reikalingos LCD kontroleriui įtampos.
LCD vaizduoklių kontrastingumas priklauso nuo įtampos įėjime R03 ir paprastai valdomas prijungiant atitinkamo dydzio rezistorių Rx tarp Įėjimo R03 ir zemės (GND).
Dalis LCD vaizduoklio isvadų mikrovaldiklio isvaduose multipleksuojami su skaitmeninių prievadų isvadais. Sie isvadai gali atlikti ir skaitmeninių signalų įvedimo/isvedimo funkcijas, ir LCD vaizduoklio funkcijas. Kokiai funkcijai skirtas konkretus isvadas, nurodoma programiniu būdu nustatant atitinkamą bitą skaitmeninio prievado registre PxSELx. Kai isvadai nustatomi dirbti LCD vaizduoklio rezime, jų paskirtis siame rezime nurodoma LCD valdymo registre bitais LCDPx (20 pav.).
LCD vaizduokliui dirbant "Static" rezime kiekvienas LCD vaizduoklio segmentas valdomas atskira SPx linija ir bedru COM0 signalu. 13 pav. detaliau pavaizduota laiko diagramos, kai vaizduoklis LCD dirba statiniame rėzime. Isvadas SP1 atsakingas uz segmentą a, o SP2 - uz segmentą b, isvade COM0 - bendra sinchroimpulsų seka. Jeigu įtampos skirtumas tarp SPn ir COM0 nelygus 0 atitinkamas segmentas aktyvus (sviečia) ir atvirksčiai.
16 pav. LCD funkcinio bloko generuojamų signalų laiko diagramos
17 pav. pavaizduota a) 4 skaičių LCD vaizduoklis, b) LCD kontrolerio atminties uzpildymas "Static" rezime bei c) mikrovaldiklio isvadų sujungimas su LCD vaizduoklio isvadais.
17 pav LCD vaizduoklio atminties ląstelių paskirtis "Static" rezime
Zemiau yra pateikiamas programos fragmentas, skirtas vieno skaičiaus isvedimui į LCD vaizduoklį.
; Aprasomi skaičiaus segmentai, kiekvienas segmentas aprasomas pozicine konstanta.
a equ 001h
b equ 010h
c equ 002h
d equ 020h
e equ 004h
f equ 040h
g equ 008h
h equ 080h
; Lentelė skaičiaus transformacijai į segmentinį kodą
LCDTable DB a+b+c+d+e+f ;0
DB b+c ;1
DB a+b+g+e+d ;2
DB a+b+g+c+d ;3
DB f+g+b+c ;4
DB a+f+g+c+d ;5
DB a+f+g+c+d+e ;6
DB a+b+c ;7
DB a+b+c+d+e+f+g ;8
DB g+f+a+b+c+d ;9
DB e+f+a+b+c+g ;A
DB f+g+c+d+e ;b
DB a+d+e+f ;C
DB b+c+d+e+g ;d
DB a+d+e+f+g ;E
DB a+e+f+g ;F
; Paprogramė, skirta vieno skaičiaus atvaizdavimui LCD vaizduoklyje.
; Skaitoma, kad skaičiaus pradzios adresas (LCD kontrolerio atmintyje) LCDn.
; Pries iskviečiant paprogramę "Dig_out" isvedamas skaičius patalpinamas į registrą R6.
; Static rezime LCDn = 091h (pirmam skaičiui, 095h antram skaičiui ir t.t.
dig_out:
mov.b Table(R6),R5 ; skaičius registre R6, transformuojamas
; į jam atitinkantį segmentinį kodą registre R5
; R5 = hfdb geca
mov.b R5, &LCDn ; segmentų a ir b reiksmes įrasyti į atmintį
rra R5 ; R5 = 0hfd bgec
mov.b R5, &LCDn+1 ; segmentų c ir d reiksmes įrasyti į atmintį
rra R5 ; R5 = 00hf dbge
mov.b R5, &LCDn+2 ; segmentų e ir f reiksmes įrasyti į atmintį
rra R5 ; R5 = 000h fdbg
mov.b R5, &LCDn+3 ; segmentų g ir h reiksmes įrasyti į atmintį
ret
Pavyzdyje LCD kontroleris vienu metu atvaizduoja 15 skaičių segmentiniuose indikatoriuose, "4-MUX" rezime. LCD vaizduokliui dirbant "4-MUX" rezime kiekvieno LCD vaizduoklio skaičiaus 4 segmentai prijungti prie vienos SPx linijos ir keturių bendrų COM0 - COM3 signalų. 15 pav. pavaizduotos laiko diagramos, kai LCD vaizduoklis dirba "4-MUX" rėzime. Isvadas SP1 atsakingas uz segmentus e, d, f, g, o SP2 - uz segmentą a, b, c, h. Isvaduose COM0-COM3 - sinchroimpulsų sekos. Jeigu įtampos skirtumas tarp atitinkamų SPn ir COMx absoliutiniu dydziu mazesnis uz ±V1 atitinkamas segmentas neaktyvus (nesviečia) ir atvirksčiai.
18 pav. LCD funkcinio bloko generuojamų signalų laiko diagramos
16 pav. pavaizduota a) 4 skaičių LCD vaizduoklis, b) LCD kontrolerio atminties uzpildymas "4-MUX" rezime bei c) mikrovaldiklio isvadų sujungimas su LCD vaizduoklio isvadais.
19 pav LCD vaizduoklio atminties ląstelių paskirtis "4-MUX" rezime
Zemiau yra pateikiamas programos fragmentas, skirtas vieno skaičiaus isvedimui į LCD vaizduoklį.
; Aprasomi skaičiaus segmentai, kiekvienas segmentas aprasomas konstanta
a equ 080h
b equ 040h
c equ 020h
d equ 001h
e equ 002h
f equ 040h
g equ 008h
h equ 080h
; Lentelė skaičiaus transformacijai į segmentinį kodą
LCDTable DB a+b+c+d+e+f ; 0
DB b+c ; 1
DB a+b+g+e+d ; 2
DB a+b+g+c+d ; 3
DB f+g+b+c ; 4
DB a+f+g+c+d ; 5
DB a+f+g+c+d+e ; 6
DB a+b+c ; 7
DB a+b+c+d+e+f+g ; 8
DB g+f+a+b+c+d ; 9
DB e+f+a+b+c+g ; A
DB f+g+c+d+e ; b
DB a+d+e+f ; C
DB b+c+d+e+g ; d
DB a+d+e+f+g ; E
DB a+e+f+g ; F
; Paprogramė, skirta vieno skaičiaus atvaizdavimui LCD vaizduoklyje
; Skaitoma, kad skaičiaus pradzios adresas (LCD kontrolerio atmintyje) LCDn
; Pries iskviečiant paprogramę "Dig_out" isvedamas skaičius patalpinamas į registrą R6.
; "4-MUX" rezime LCDn = 091h (pirmam skaičiui), 092h (antram skaičiui) ir t.t.
dig_out:
mov.b Table(R6), &LCDn ; skaičius registre R6 atvaizduojamas
ret
20 pav. LCD kontrolerio valdymo registras.
LCD kontrolerio valdymo registro skilčių paskirtis sekanti:
LCDPx (7-5 bitai) - LCD isvadų skaičiaus nustatymas:
000 - nei vienas MCU isvadas nenaudojamas LCD funkcijai atlikti;
001 - isvadai S0 - S15 atlieka LCD funkcijas;
010 - isvadai S0 - S19 atlieka LCD funkcijas;
011 - isvadai S0 - S23 atlieka LCD funkcijas;
100 - isvadai S0 - S27 atlieka LCD funkcijas;
101 - isvadai S0 - S31 atlieka LCD funkcijas;
110 - isvadai S0 - S35 atlieka LCD funkcijas;
111 - isvadai S0 - S39 atlieka LCD funkcijas.
LCDMXx (4-3 bitai) - LCD rezimo isrinkimas:
00 - Static,
01 - 2-MUX,
10 - 3-MUX,
11 - 4- MUX.
LCDSON (2 bitas) - LCD segmentai įjungti. Mirksėjimo rezimo palaikymui - isjungia arba įjungia visus LCD segmenų valdymo linijas.
0 - visi LCD segmentai isjungti;
1 - visų LCD - segmentų darbas leidziamas.
LCDON (0 bitas) - LCD kontrolerį įjungti.
0 - draudziamas LCD sinchronizavimo generatoriaus ir įėjimo R33 veikimas;
1 - leidziamas LCD sinchronizavimo generatoriaus ir įėjimo R33 veikimas.
|