04 Sistemul de Afisare Cu LCD

21
1 4. SISTEMUL DE AFIŞARE CU LCD Scopul lecţiei: Prezentarea pe scurt a principiului de afişare a caracterelor alfanumerice şi a schemelor bloc utilizate în acest scop. Prezentarea unui controler tipic utilizat la realizarea panourilor alfanumerice cu cristale lichide. Familiarizarea cu structurile de program în asamblor şi în limbajul C necesare pentru controlul unui panou de afişare LCD. 4.1. Principiul de lucru al afişoarelor alfanumerice O dată cu dezvoltarea capacităţii şi vitezei de prelucrare a informaţiei de către sistemele digitale, a apărut necesitatea afişării nu numai a informaţiei numerice, ci şi a informaţiei alfanumerice şi chiar grafice. Cele mai răspândite implementări pentru sistemele miniaturale şi portabile utilizează pentru panourile de afişare diode electroluminescente (Light Emitting Diode LED) sau cristale lichide LCD (Liquid Crystal Display). Dacă primele variante în epoca de început a electronicii digitale foloseau sistemele de afişare cu segmente, care necesitau implementări şi circuite de comandă simple, acum se folosesc pe scară largă implementări folosind matrice de puncte, care implică implementări şi circuite mai complexe, dar care asigură o inteligibilitate, estetică şi complexitate de afişare mai mari. 4.1.1. Matrice de 5 x 7 puncte Caracterele alfanumerice standard pot fi reprezentate cel mai simplu cu ajutorul unei matrice de puncte având 5 coloane şi 7 linii. Dacă se asociază fiecărui punct al acestei matrice una din stările aprins (luminos) sau stins (întunecat), atunci din combinaţia acestora se poate sintetiza caracterul alfanumeric dorit. Pentru exemplificare, în Fig. 4.1 este arătată reprezentarea matriceală a literei „M” folosindu-se în acest scop o codificare liniară. Simbolul „1” din figură poate reprezenta un punct aprins, atunci când matricea este realizată cu LED-uri, sau poate reprezenta un punct întunecat (negru), atunci când este realizată cu cristale lichide (LCD). Imaginea astfel concepută pentru fiecare caracter alfanumeric va trebui să fie memorată (pe linii sau pe coloane) în vederea utilizării ei pentru afişare. Pentru exemplul din Fig. 4.1 va trebui să se memoreze 7 linii a câte 5 biţi fiecare. În Fig. 4.2 sunt indicate structurile matriceale a patru caractere alfanumerice care vor fi stocate pe linii (7 linii a câte 5 biţi fiecare). Din această figură se observă că va fi nevoie de 3 biţi de adresare (A2, A1, A0) pentru a identifica o anumită linie a matricei şi de un număr de 7 biţi suplimentari (A3, A4, A5, A6, A7, A8 şi A9) pentru a identifica în mod unic matricea rezervată unui anumit caracter. Biţii A3 = b0, A4 = b1, A5 = b2, A6 = b3, A7 = b4, A8 = b5 şi A9 = b6 determină în mod unic caracterul alfanumeric şi sunt cunoscuţi sub numele de cod ASCII (American Standard Code for Information Interchange) al caracterului. Cu cei şapte biţi ai codului ASCII pot fi identificate 128 caractere alfanumerice distincte. 1 0 0 0 1 1 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 Fig. 4.1. Afişarea literei M pe o matrice de 5 x 7 puncte

description

afisare lcd picdem 2 plus

Transcript of 04 Sistemul de Afisare Cu LCD

  • 1

    4. SISTEMUL DE AFIARE CU LCD

    Scopul leciei: Prezentarea pe scurt a principiului de afiare a caracterelor alfanumerice i a schemelor bloc utilizate n acest scop. Prezentarea unui controler tipic utilizat la realizarea panourilor alfanumerice cu cristale lichide. Familiarizarea cu structurile de program n asamblor i n limbajul C necesare pentru controlul unui panou de afiare LCD.

    4.1. Principiul de lucru al afioarelor alfanumerice O dat cu dezvoltarea capacitii i vitezei de prelucrare a informaiei de ctre sistemele

    digitale, a aprut necesitatea afirii nu numai a informaiei numerice, ci i a informaiei alfanumerice i chiar grafice. Cele mai rspndite implementri pentru sistemele miniaturale i portabile utilizeaz pentru panourile de afiare diode electroluminescente (Light Emitting Diode LED) sau cristale lichide LCD (Liquid Crystal Display). Dac primele variante n epoca de nceput a electronicii digitale foloseau sistemele de afiare cu segmente, care necesitau implementri i circuite de comand simple, acum se folosesc pe scar larg implementri folosind matrice de puncte, care implic implementri i circuite mai complexe, dar care asigur o inteligibilitate, estetic i complexitate de afiare mai mari.

    4.1.1. Matrice de 5 x 7 puncte

    Caracterele alfanumerice standard pot fi reprezentate cel mai simplu cu ajutorul unei matrice de puncte avnd 5 coloane i 7 linii. Dac se asociaz fiecrui punct al acestei matrice una din strile aprins (luminos) sau stins (ntunecat), atunci din combinaia acestora se poate sintetiza caracterul alfanumeric dorit. Pentru exemplificare, n Fig. 4.1 este artat reprezentarea matriceal a literei M folosindu-se n acest scop o codificare liniar. Simbolul 1 din figur poate reprezenta un punct aprins, atunci cnd matricea este realizat cu LED-uri, sau poate reprezenta un punct ntunecat (negru), atunci cnd este realizat cu cristale lichide (LCD).

    Imaginea astfel conceput pentru fiecare caracter alfanumeric va trebui s fie memorat (pe linii sau pe coloane) n vederea utilizrii ei pentru afiare. Pentru exemplul din Fig. 4.1 va trebui s se memoreze 7 linii a cte 5 bii fiecare.

    n Fig. 4.2 sunt indicate structurile matriceale a patru caractere alfanumerice care vor fi stocate pe linii (7 linii a cte 5 bii fiecare). Din aceast figur se observ c va fi nevoie de 3 bii de adresare (A2, A1, A0) pentru a identifica o anumit linie a matricei i de un numr de 7 bii suplimentari (A3, A4, A5, A6, A7, A8 i A9) pentru a identifica n mod unic matricea rezervat unui anumit caracter. Biii A3 = b0, A4 = b1, A5 = b2, A6 = b3, A7 = b4, A8 = b5 i A9 = b6 determin n mod unic caracterul alfanumeric i sunt cunoscui sub numele de cod ASCII (American Standard Code for Information Interchange) al caracterului. Cu cei apte bii ai codului ASCII pot fi identificate 128 caractere alfanumerice distincte.

    1 0 0 0 11 1 0 1 11 0 1 0 11 0 0 0 1 1 0 0 0 11 0 0 0 11 0 0 0 1

    Fig. 4.1. Afiarea literei M pe o matrice de 5 x 7 puncte

  • 2

    4.1.2. Generator de caractere Pentru a le putea utiliza n scopul afirii, cele 128 de matrice binare (de cte 5 coloane i 7

    linii) vor trebui s fie memorate ntr-o memorie nevolatil (de exemplu ROM, PROM, EPROM, EEPROM sau FLASH) memorie care, odat ncrcat cu aceast informaie, va fi cunoscut sub numele de generator de caractere (Fig. 4.3).

    Generatorul de caractere din Fig. 4.3 funcioneaz n felul urmtor: Se aplic codul ASCII al caracterului care urmeaz a fi generat pe intrrile b0, b1,

    b6. Pe biii de adres cei mai puini semnificativi, se genereaz adresele liniilor caracterului

    cu ajutorul unui tact local divizat cu 7. De la 7 adrese consecutive astfel generate, se citete matricea liniar corespunztoare

    caracterului, generat linie cu linie pe ieirile Q0, , Q4 (pentru un caracter anume, codul ASCII rmne neschimbat, se modific doar biii de adres cei mai puini semnificativi A2, A1, A0).

    4.1.3. Afior pentru un caracter alfanumeric O matrice de puncte cu 7 linii a cte 5 coloane realizat cu LED-uri sau cristale lichide va

    permite afiarea caracterului alfanumeric citit (generat) din generatorul de caractere (Fig. 4.4).

    1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 1 1 1 0

    1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0

    1 1 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0

    0 1 1 1 0 1 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0

    0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0

    1 0 0 0 x x 0

    0 0 0 1 1 0 1 1 x x A2 A1 A0 Q0 Q1 Q2 Q3 Q4 Q0 Q1 Q2 Q3 Q4 Q0 Q1 Q2 Q3 Q4

    b6 b5 b4 b3 b2 b1 b0

    COD ASCII

    Q0 Q1 Q2 Q3 Q4 A9 A8 A7 A6 A5 A4 A3

    Fig. 4.2. Afiarea caracterelor @, B, D i F

    A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 GENERATOR DE CARACTERE Q0 Q1 Q2 Q3 Q4

    : 7 Tact local

    Codul ASCII al caracterului

    b0 b1 b2 b3 b4 b5 b6

    Fig. 4.3. Generator de caractere

  • 3

    Schema logic a unui afior pentru un caracter alfanumeric prezentat n Fig. 4.4 cuprinde, pe lng generatorul de caractere descris anterior, matricea de 35 de puncte precum i circuite electronice de cuplare a liniilor, respectiv a coloanelor, la decodor, respectiv la generatorul de caractere.

    Structura concret a acestor circuite de cuplare depinde de modul de realizare a matricei (cu LED-uri sau cu cristale lichide).

    Decodorul din schem are rolul de a selecta pe rnd liniile matricei (n funcie de adresa A2A1A0) permind afiarea pe linia selectat a informaiei specifice caracterului respectiv.

    Din cele de mai sus, rezult c scrierea caracterului alfanumeric se face linie cu linie. Pentru ca ochiul uman s perceap caracterul alfanumeric sub forma sa real (continu, fr plpire), caracterul va trebui s fie rescris, de partea electronic, ntr-o caden de minim 50 ori pe secund.

    4.1.4. Afior pentru patru caractere Principiul de afiare prezentat n Fig. 4.4 poate fi generalizat pentru afiarea mai multor

    caractere alfanumerice pe una sau mai multe linii ale unui panou de afiare. Pentru a nelege principiul precum i modificrile care se impun a fi aduse schemei din Fig.

    4.4, este prezentat n continuare schema bloc a unui sistem de afiare pentru patru caractere alfanumerice dispuse pe o linie. Modificrile din schem sunt urmtoarele:

    prezena a patru matrice pentru afiare; cuplarea generatorului de caractere la cele patru matrice se face printr-un circuit de

    demultiplexare; selecia matricei pe care urmeaz a fi afiat caracterul alfanumeric se face prin biii de adres a0 i a1 aplicai circuitului de demultiplexare;

    o memorie de date de tip RAM pentru memorarea codurilor ASCII ale caracterelor alfanumerice care vor fi afiate (notat de obicei ca Display Data RAM DDRAM).

    n exemplul ales, prezentat n Fig. 4.5, la patru adrese consecutive din memoria RAM vor fi memorate codurile ASCII ale caracterelor M, B, F i D. Aceste coduri sunt: 4Dh, 42h, 46h i 44h. Adresarea memoriei RAM se face prin biii a1 i a0 generai de Tact 1 prin intermediul unui divizor

    GENERATOR DE CARACTERE :7

    CIRCUIT DE

    DECODARE

    CIRCUIT

    DE CUPLARE

    LINII

    CIRCUIT DE CUPLARE COLOANE

    X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X

    b0 b1 b2 b3b4b5b6

    COD ASCII

    Fig. 4.4. Schem logic de afiare a unui caracter alfanumeric

  • 4

    cu 4. Intrrile de date ale memoriei RAM sunt cuplate la o interfa cu exteriorul de unde urmeaz a fi nscrise (de la o tastatur, un microcontroler etc.) codurile ASCII ale caracterelor M, B, F i D, care urmeaz a fi afiate.

    Funcionarea schemei este urmtoarea: cu Tact 2, prin intermediul divizorului cu 7, se genereaz adresa primei linii (A0 = A1 = A2 = 0). Cu Tact 1, prin intermediul divizorului cu 4, se genereaz pe rnd adresele (a0 = 0, a1 = 0), (a1 = 0, a0 = 1), (a1 = 1, a0 = 0) i (a1 = 1, a0 = 1), corespunztoare celor patru locaii din memoria RAM unde sunt stocate codurile ASCII ale celor patru caractere. Pentru (a1 = 0, a0 = 0), la ieirile memoriei RAM va aprea codul ASCII al caracterului M (4Dh), care aplicat generatorului de caractere mpreun cu biii A2 = 0, A1 = 0 i A0 = 0, va genera prima linie a matricei care descrie litera M. Circuitul de demultiplexare va dirija aceti cinci bii din prima linie a matricei care reprezint litera M ctre prima matrice de afiare (deoarece demultiplexorul, la rndul su, este adresat cu biii a1 = 0 i a0 = 0, ceea ce asigur selecia matricei de afiare notat cu M0).

    Apoi, cu adresa (a1 = 0, a0 = 1), se genereaz prima linie a literei B care va fi dirijat ctre matricea M1 etc. Dup ce s-au afiat liniile unu n toate cele patru matrice, se va modifica adresa A2 = 0, A1 = 0 i A0 = 1 prin Tact 2 i, printr-un proces similar, se vor afia liniile doi ale caracterelor. Dac procesul de rescriere a celor patru matrice se face cu o caden de minim 50 de ori pe secund, ochiul va percepe secvena MBFD ca fiind afiat continuu pe panoul de afiare.

    4.2. Afior elementar cu cristale lichide Cristalele lichide au fost descoperite n 1888 de Friedrich Reinitzer studiind trecerea

    substanelor numite benzoat de colesteril n stare lichid. Ele sunt substane care prezint o anizotropie a proprietilor i a cror stare de echilibru se numete stare mezomorf (o stare ntre cea lichid i cea solid).

    :7

    CIR

    CU

    IT

    DE

    DEC

    OD

    ARE

    CIR

    CU

    IT D

    E C

    UP

    LAR

    E

    LIN

    II

    CIRCUIT DE DEMULTIPLEXARE I CUPLARE COLOANE

    b6b5b4b3b2b1b0

    1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 1 1 1 0

    1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0

    1 1 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0

    MEMORIE DE DATE :4

    Q0 Q1 Q2 Q3 Q4

    a0 a1

    A0 A1 A2

    Interfaa cu exteriorul

    GENERATOR DE CARACTERE

    Tact 2

    1 0 0 0 1 1 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1

    M0 M1 M2 M3

    Tact 1

    Fig. 4.5. Schema logic de afiare a patru caractere alfanumerice

  • 5

    Lumina care trece prin cristalele lichide urmeaz alinierea moleculelor o proprietate a strii solide. Aplicarea unui cmp electric sau magnetic modific alinierea cristalelor lichide o proprietate a strii lichide.

    Exist dou tipuri de cristale lichide i anume: nematice i colesterice. Cristalele lichide nematice devin opace sub efectul unui cmp electric sau magnetic pe cnd

    cele colesterice i schimb culoarea sub efectul acelorai cmpuri. Afioarele cu cristale lichide sunt pasive, de tipul TN (Twisted Nematic), i se bazeaz pe

    dirijarea unei lumini de fond, de culoare alb, printr-un strat de cristal lichid. Alinierea moleculelor unui cristal lichid se poate face cu ajutorul unor suprafee prevzute cu caneluri microscopice (canelurile paralele implic i alinierea paralel a moleculelor).

    Pentru a realiza un element de afiare (de exemplu un punct din matricea prezentat n Fig. 4.1), cristalul lichid se dispune ntre dou plci transparente prevzute cu caneluri microscopice. Canelurile plcii superioare sunt orientate perpendicular pe canelurile plcii inferioare. Rezult c moleculele de pe cele dou plci vor avea axa longitudinal rotit cu 90 iar moleculele aflate ntr-o poziie intermediar ntre cele dou plci vor fi rsucite proporional cu poziia pe care o ocup.

    Lumina polarizat are proprietatea de a urmri alinierea moleculelor. n consecin, dac introducem o lumin polarizat pe partea superioar a elementului, avnd direcia de polarizare n direcia canelurilor plcii superioare, la trecerea prin stratul de cristal lichid direcia de polarizare a luminii se va roti, conform rotirii alinierii moleculelor, i va ajunge n partea de jos a elementului de afiare avnd direcia de polarizare rotit cu 90 (vezi Fig. 4.6).

    Avnd n vedere cele prezentate mai sus, putem realiza un element de afiare dup structura prezentat n Fig. 4.7.

    Structura este iluminat cu lumin alb i pentru a obine o lumin polarizat sunt prevzute dou filtre de polarizare, unul n partea superioar, cel de-al doilea n partea inferioar a structurii, avnd direcii de polarizare perpendiculare.

    ntre cele dou filtre de polarizare, este dispus cristalul lichid delimitat la rndul lui de dou plci transparente prevzute cu caneluri microscopice paralele. Canelurile paralele de pe placa transparent de jos sunt orientate perpendicular fa de cele de pe placa de sus.

    Fig. 4.6. Trecerea luminii polarizate printr-un element de afiare

    cu cristal lichid

    Fig. 4.7. Element de afiare cu cristal lichid: a) fr b) cu tensiune aplicat ntre plci

  • 6

    Celula de afiare funcioneaz astfel: n lipsa unui cmp electric sau magnetic (Fig. 4.7.a), lumina polarizat, obinut la

    ieirea filtrului de polarizare aflat n zona superioar a celulei, intr n stratul de cristal lichid, va urma orientarea moleculelor, i, n consecin, va iei din stratul de cristal lichid cu o rotire de 90 a direciei de polarizare i va putea trece prin cel de-al doilea filtru de polarizare amplasat n parte inferioar a structurii.

    n cazul aplicrii unei tensiuni (Fig. 4.7.b), moleculele cristalului lichid se vor orienta n direcia cmpului electric aplicat. n consecin lumina polarizat care intr n stratul de cristal lichid nu i va mai roti direcia de polarizare i va fi blocat de filtrul aflat n parte inferioar a structurii.

    n concluzie, dac afiorul este iluminat cu o surs de lumin alb, zonele afiajului asupra crora nu se aplic tensiune vor aprea luminoase, iar zonele asupra crora se aplic o tensiune electric vor aprea ntunecate.

    4.3. Modul de afiare cu cristale lichide Unul dintre cele mai frecvente dispozitive pentru a cror comand este utilizat

    microcontrolerul este afiorul cu cristale lichide (LCD). Sunt cunoscute mai multe tipuri de LCD-uri. n funcie de modul de reprezentare al valorilor care se afieaz, acestea pot fi: numerice, alfanumerice i grafice. n cadrul acestei lecii ne vom ocupa de controlul i comanda modulelor de afiare cu cristale lichide a caracterelor alfanumerice.

    Schema bloc general a unui astfel de modul este prezentat n Fig. 4.8.

    Schema se compune din urmtoarele blocuri componente: Panoul de afiare (LCD PANEL) se va caracteriza prin urmtorii parametri: culoarea

    fondului i a caracterelor care se afieaz, iar n cazul afioarelor de tip alfanumeric, prin numrul caracterelor afiabile pe o linie precum i prin numrul de linii afiate.

    Controlerul de comand (LCD Controller) poate fi circuitul integrat HD44780 sau unul echivalent cu acesta (KS0066, KS0070, SED1278 etc.) i este componenta de baz a unui modul LCD, deoarece majoritatea performanelor display-ului sunt determinate de structura lui intern. Rolul circuitului este de a primi date de la o surs extern i de a comunica direct cu afiorul cu cristale lichide (LCD PANEL) pentru afiarea datelor

    Fig. 4.8. Schema bloc general a unui modul LCD

  • 7

    respective. Comunicaia cu procesorul se face prin trei linii de comand/control (E, R/ W , RS) i 4 sau 8 linii bidirecionale pentru date (DB0 DB7). Liniile VDD i VSS sunt pentru alimentarea modulului iar v0 pentru setarea/reglarea contrastului de afiare. Un singur controller HD44780 poate comanda afiarea a 8 caractere pe linie sau a cte 8 caractere pe dou linii.

    Extensia afirii la 1 (linie) x 16 (caractere) respectiv 2 x 16 sau chiar mai mult (1x20, 1x40 respectiv 2 x 24, 2 x 40, 4 x 16, 4 x 20, 4 x 24, 4 x 40), se poate obine prin utilizarea unuia sau mai multor module de extindere (blocul EXPANSION CHIP(S) din Fig. 4.8), cum este de exemplu HD44100, care poate mri capacitatea de afiare la 2 x 16, ca n cazul modulului de afiare LM016L.

    4.3.1. Controlerul de comand HD44780 Pentru realizarea funciilor specifice controlului i comenzii afiorului cu cristale lichide,

    circuitul HD44780 are o structur hardware (vezi Fig. 4.9) care-i asigur urmtoarele caracteristici: poate fi configurat s lucreze cu procesor de 4 sau de 8 bii; poate comanda singur un afior cu cristale lichide de pn la dou linii a cte opt

    caractere fiecare; poate fi extins pentru comanda a pn la 80 de caractere; are oscilator intern cu rezisten extern.

    Schema bloc n Fig. 4.9 este prezentat schema bloc a controlerului HD44780. Componentele de baz ale circuitului sunt urmtoarele: Dou registre de 8 bii, unul pentru stocarea temporar a instruciunilor IR (Instruction

    Register), cellalt pentru stocarea temporal a datelor care se afieaz DR (Data Register).

    Memorie de date (Display Data RAM DDRAM), de 80 caractere, care conine codurile caracterelor care se afieaz pe ecranul LCD.

    Generator de caractere predefinite (Character Generator ROM CGROM) care conine setul de caractere alfanumerice definite de fabricant (ele nu pot fi modificate de ctre utilizator). Capacitatea memoriei CGROM variaz, n funcie de tipul de controler. Pentru controlerul HD44780, memoria CGROM are o capacitate de 9.920 bii pentru un total de 240 caractere predefinite, i anume 208 caractere pe matrice de 5 x 7 puncte i 32 caractere suplimentare pe matrice de 5 x 10 puncte.

    Generator de caractere definite de utilizator (Character Generator RAM CGRAM), este memoria n care se rescriu abloane de caractere de ctre utilizator. Acestea se vor terge n lipsa alimentrii. Are o capacitate de 64 x 8 bii i pot fi scrise n aceast memorie 8 caractere de 5x7 puncte sau 4 caractere de 5x10 puncte.

    Numrtor de adres (Address Counter AC), un numrtor care aloc adrese att memoriei DDRAM ct i memoriei CGRAM. Dup scrierea n i citirea din aceste memorii, AC este incrementat, respectiv decrementat, cu 1.

    Controlerul HD44780 are implementate, sau permite crearea, unui numr mare de funcii de comand i control a afirii, care sunt executate prin instruciuni de baz, ca de exemplu:

    tergerea afiajului (Display clear), iniializarea cursorului (Cursor home), validarea sau invalidarea afirii (Display on/off), afiarea cu clipirea caracterelor (Display character blink), deplasarea cursorului (Cursor shift), deplasarea afiajului (Display shift).

  • 8

    Circuitul se alimenteaz cu o tensiune cuprins ntre 2,7 V i 5,5 V i este resetat la punerea sub tensiune.

    Conexiuni externe Aa cum rezult din schema bloc a circuitului HD44780, acesta are mai multe linii de

    intrare/ieire pentru comunicaia cu exteriorul, i anume: 3 linii de control (E, RS, R/ W ) i un bus de date de 8 linii (DB0, DB1, ..., DB7) pentru

    comunicaia cu o surs extern de date (de exemplu, un microprocesor sau un sistem de dezvoltare cu microcontroler);

    4 linii (CL1, CL2, D, M) de comand i control al circuitului de extensie;

    Fig. 4.9. Schema bloc a circuitului HD44780

  • 9

    16 linii (COM1 COM16) i nc 40 (SEG1 SEG40) pentru afiarea caracterelor (vezi exemplificrile de afiare a caracterelor n matrice de 5 x 7 i 5 x 10 puncte, cu i fr cursor, din Fig. 4.10);

    2 linii pentru tact, OSC1 pentru cuplarea unui generator de tact extern, respectiv OSC2 pentru conectarea unei rezistene externe cnd se lucreaz cu oscilatorul propriu;

    7 linii (VCC, GND, V1 V5) pentru legarea la diferite surse de tensiune de alimentare. n continuare sunt descrise doar semnalele de comand i control la interfaa cu sursa

    extern de date (microcontrolerul), a cror aciune trebuie bine cunoscut pentru o corect programare a circuitului, respectiv a modulului LCD.

    RS (Register Select) Pe cele 8 linii de intrare/ieire de date (DB0 DB7) circul dou tipuri de informaie:

    instruciuni (sau comenzi) de la un procesor extern la controlerul LCD i date (mesajul propriu-zis) care trebuie afiate pe display. Bitul RS selecteaz unul din aceste dou tipuri de informaie care se afl la un moment dat pe bus-ul de date, astfel:

    dac RS = 0, informaia de pe bus-ul de date trebuie tratat ca instruciune (de exemplu, Clear Display, Cursor on etc.) i va fi depus n registrul de instruciuni (IR);

    dac RS = 1, datele care se transmit pe bus sunt de tip text i fac parte din mesajul care trebuie afiat; ele vor fi depuse n registrul de date (DR) i vor fi procesate corespunztor pentru afiare pe ecran.

    E (Enable) Activeaz trimiterea datelor ctre modulul LCD. Pentru a asigura transferul datelor (mesaj

    care trebuie afiat sau comenzi) ctre LCD, trebuie ntreprinse prin program, n mod succesiv, urmtoarele aciuni:

    Se reseteaz E (E = 0) pe toat durata de timp necesar configurrii celorlalte dou linii de control (RS, R/ W ) i/sau punerea datelor supuse transferului pe bus-ul de date al modulului.

    Se seteaz E (E = 1) i se ateapt timpul necesar efecturii transferului. Acest timp difer n funcie de tipul LCD-ului i de productor (este dat n foaia de catalog). Datorit vitezelor diferite de execuie a operaiilor de ctre procesorul exterior i de ctre controlerul modulului LCD, trebuie avute n vedere introducerea unor temporizri specifice pentru a asigura timpul necesar execuiei comenzilor de ctre modulul LCD.

    Se reseteaz E (E = 0) dup ncheierea transferului. R/ W (Read/Write)

    Selecteaz tipul de operaie care se execut cu datele de pe bus la un moment dat: cnd R/ W = 0, informaia (instruciune sau mesaj) urmeaz s fie scris n registrele

    modulului LCD; cnd R/ W = 1, operaia care se execut este de citire de ctre procesorul extern a unor

    informaii furnizate de controlerul LCD; n setul de instruciuni al controlerului LCD, exist o singur instruciune (Get LCD Status) care reprezint o comand de citire, toate celelalte sunt de scriere, aa nct R/ W va fi aproape ntotdeauna pe 0.

    4.3.2. Modulul de afiare LCD Pentru detalii legate de modulul de afiare LCD i a modului de utilizare al acestuia, se

    recomand consultarea foii de catalog a controlerului HD 44780 care se gsete n fiierul LAB PICDEM 2 Plus\Datasheets\HD44780 2x16 LCD.

  • 10

    a)

    b)

    c)

    Fig. 4.10. Ilustrarea afirii caracterelor: a) pe o linie, 8 caractere n matrice de 5 x 7; b) pe o linie, 8 caractere n matrice de 5 x 10 puncte;

    c) pe dou linii, cte 8 caractere pe linie, n matrice de 5 x 7 puncte.

  • 11

    4.4. Desfurarea leciei

    ACTIVITATEA 4.1 COMANDA UNUI AFIOR LCD N LIMBAJ DE ASAMBLARE

    Reamintim ca modul de pornire a sistemului de dezvoltare este foarte important pentru corecta funcionare a sa. Mai ales la prima utilizare, paii trebuie parcuri ntocmai, altfel exist riscul ca sistemul s nu funcioneze de loc.

    Prima activitate va ilustra, folosind limbajul de asamblare, iniializarea afiorului cu cristale lichide de pe placa de demonstraie PICDEM 2 Plus i scrierea unor mesaje simple pe cele dou linii ale sale. 1.1. Pornii sistemul de dezvoltare urmrind paii urmtori: Conectai modulul MPLAB ICD 2 la o intrare USB a PC-ului folosind cablul USB. Ateptai cteva secunde pentru ncrcarea driver-ului de ctre sistemul de operare. Conectai alimentatorul la mufa de alimentare a MPLAB ICD 2. Conectai dup alte cteva secunde placa de demonstraie PICDEM 2 Plus la MPLAB ICD 2

    folosind cablul ICD. Lansai programul MPLAB IDE dac nu este deja pornit. Verificai c LED-ul Power de pe

    placa PICDEM 2 Plus s-a aprins. 1.2. tergei coninutul microcontrolerului de pe placa de demonstraie astfel: Selectai dispozitivul de depanare cu comanda Debugger > Select Tool > MPLAB ICD 2.

    Acesta trebuie s se conecteze n mod normal automat. Dac nu se realizeaz acest lucru, executai manual conectarea dispozitivului de programare cu comanda Programmer > Connect.

    tergei coninutul microcontrolerului cu comanda Debugger > Erase Flash Device. Dac toate operaiile anterioare au fost executate corect, n fereastra Output tab-ul MPLAB

    ICD 2 nu trebuie s apar niciun mesaj de eroare sau avertisment. 1.3. Construii proiectul programului care ilustreaz comanda unui afior cu cristale lichide n limbaj de asamblare parcurgnd urmtorii pai: Creai un director pentru noul proiect, de exemplu My Projects\LCD_ASM. Copiai n aceast nou locaie, din directorul LAB PICDEM 2 Plus\CDsel PICDEMO 2

    Plus\PICDEM_2_Plus\pic18, fiierele: 18f4520.lkr, p18lcd.asm i p18math.asm.

    Lansai din MPLAB IDE vrjitorul de creare a unui nou proiect (Project > Project Wizard) Dai un click pe Next pentru a continua. n pasul 1 selectai pentru Device: PIC18F4520. Continuai cu Next. n pasul 2 selectai pentru Active Toolsuite: Microchip MPASM Toolsuite i bifai csua

    Store tool locations in project. Continuai cu Next. n pasul 3 selectai la Create New Project File locaia aleas i numele proiectului folosind

    butonul Browse, de exemplu My Documents\My Project\LCD_ASM\LCD. Continuai cu Next.

    n pasul 4 adugai la proiect fiierele copiate anterior n directorul proiectului. Pentru aceasta, selectai toate fiierle dorite din directorul proiectului, innd tasta Ctrl apsat i dnd cte un click pe fiecare fiier, i apoi apsai butonul Add>>. Continuai cu Next.

    Terminai crearea noului proiect cu un click pe butonul Finish i comanda Project > Save Project pentru a salva proiectul nou creat.

    Creai un nou fiier surs cu comanda File > New (Ctrl + N). n fereastra care apare editai urmtorul program n limbaj de asamblare care v-a asigura afiarea interactiv a unor mesaje text pe afiorul LCD:

  • 12

    ;PROGRAMUL LCD - utilizarea porturilor pentru comanda unui afisor LCD list p=18f4520 ;seteaza dispozitivul target #include p18f4520.inc ;defineste dispozitivul target CONFIG OSC = HS CONFIG FCMEN = OFF CONFIG IESO = OFF CONFIG PWRT = OFF ;OFF/ON pentru modul Depanare/Programare CONFIG BOREN = OFF CONFIG WDT = OFF CONFIG MCLRE = ON CONFIG PBADEN = OFF CONFIG LVP = OFF CONFIG XINST = OFF CONFIG DEBUG = ON ;ON/OFF pentru modul Depanare/Programare #define scroll_dir TRISA,4 #define scroll PORTA,4 ;Push-button RA4 pe PCB #define select_dir TRISB,0 #define select PORTB,0 ;Push-button RB0 on PCB EXTERN LCDInit, temp_wr, d_write, i_write, LCDLine_1, LCDLine_2 EXTERN AARGB0, AARGB1, BARGB0 variables UDATA ptr_pos RES 1 ptr_count RES 1 temp_1 RES 1 temp_2 RES 1 temp_3 RES 1 STARTUP CODE 0 NOP goto start NOP NOP NOP PROG1 CODE stan_table ;table for standard code ; "XXXXXXXXXXXXXXXX" ptr: data " Apasati RA4 " ;0 data "----------------" ;16 data " Lab. PICDEM 2+ " ;32 data " Apasati RB0 " ;48 data " " ;64 start call LCDInit movlw B'10100100' ;initializare USART movwf TXSTA ;8-bit, Async, High Speed movlw .25 movwf SPBRG ;9.6kbaud @ 4MHz movlw B'10010000' movwf RCSTA movlw 0x05 ;postscalare 1:1, prescalare 4, Timer2 ON movwf T2CON bsf TRISA,4 ;seteaza RA4 ca Input (switch S2) bsf TRISB,0 ;seteaza RB0 ca Input (switch S3)

  • 13

    ;******************************************************************** ;**** COD STANDARD UTILIZATOR *************************************** ;******************************************************************** intro movlw .0 ;trimite "Apasati RA4" la LCD movwf ptr_pos call stan_char_1 movlw .64 ;trimite " " la LCD movwf ptr_pos call stan_char_2 btfsc scroll ;asteapta apasarea lui RA4 bra $-2 movlw .16 ;trimite "----------------" la LCD movwf ptr_pos call stan_char_1 call delay_1s ;intarziere pentru vizualizare movlw .16 ;trimite "----------------" la LCD movwf ptr_pos call stan_char_2 call delay_1s ;intarziere pentru vizualizare call delay_1s call delay_1s movlw .32 ;trimite " Lab. PICDEM 2+ " la LCD movwf ptr_pos call stan_char_1 call delay_1s ;intarziere pentru vizualizare movlw .48 ;trimite " Apasati RB0 " la LCD movwf ptr_pos call stan_char_2 btfsc select ;asteapta apasarea lui RB0 bra $-2 goto intro ;******************************************************************** ;**** RUTINE ******************************************************** ;******************************************************************** ;---- Cod Standard, Plasare caractere pe linia 1 -------------------- stan_char_1 call LCDLine_1 ;muta cursorul pe linia 1 movlw .16 ;16 char = 1-line plina a LCD movwf ptr_count movlw UPPER stan_table movwf TBLPTRU movlw HIGH stan_table movwf TBLPTRH movlw LOW stan_table movwf TBLPTRL movf ptr_pos,W addwf TBLPTRL,F clrf WREG addwfc TBLPTRH,F addwfc TBLPTRU,F stan_next_char_1 tblrd *+ movff TABLAT,temp_wr call d_write ;trimite caracterul la LCD decfsz ptr_count,F ;muta pointerul la caracterul urmator bra stan_next_char_1

  • 14

    movlw "\n" ;linie noua movwf TXREG ;muta data in TXREG btfss TXSTA,TRMT ;asteapta trimiterea caracterului goto $-2 movlw "\r" ;inceput de rand movwf TXREG ;muta data in TXREG btfss TXSTA,TRMT ;asteapta trimiterea caracterului goto $-2 return ;---- Cod Standard, Plasare caractere pe linia 2 -------------------- stan_char_2 call LCDLine_2 ;muta cursorul pe linia 2 movlw .16 ;16 char = 1-line plina a LCD movwf ptr_count movlw UPPER stan_table movwf TBLPTRU movlw HIGH stan_table movwf TBLPTRH movlw LOW stan_table movwf TBLPTRL movf ptr_pos,W addwf TBLPTRL,F clrf WREG addwfc TBLPTRH,F addwfc TBLPTRU,F stan_next_char_2 tblrd *+ movff TABLAT,temp_wr call d_write ;trimite caracterul la LCD decfsz ptr_count,F ;muta pointerul la caracterul urmator bra stan_next_char_2 movlw "\n" ;linie noua movwf TXREG ;muta data in TXREG btfss TXSTA,TRMT ;asteapta trimiterea caracterului goto $-2 movlw "\r" ;inceput de rand movwf TXREG ;muta data in TXREG btfss TXSTA,TRMT ;asteapta trimiterea caracterului goto $-2 return ;---- Intarziere 1s ------------------------------------------------- delay_1s movlw 0xFF movwf temp_1 movwf temp_2 movlw 0x05 movwf temp_3 d1l1 decfsz temp_1,F bra d1l1 decfsz temp_2,F bra d1l1 decfsz temp_3,F bra d1l1 return end

  • 15

    Salvai fiierul cu numele LCD.ASM n directorul proiectului My Projects\LCD_ASM cu

    comanda File > Save. nchidei fereastra fiierului surs. Adugai n proiect fiierul creat, editat i salvat anterior, cu comanda Project > Add Files to

    Project. Verificai c n Project > Build Configuration este bifat opiunea Debug pentru a putea

    executa programul n modul depanare. Construii ntregul proiect cu comanda Project > Build All. Dac apar unele mesaje de

    avertizare, selectai butonul corespunztor pentru ca MPLAB IDE s fac singur setrile necesare pentru a putea continua. Putei modifica biii de configurare necesari pentru a evita n viitor aceste avertismente n fiierul surs n poriunea de configurare (liniile de program CONFIG). Urmrii mesajele afiate n fereastra Output tab-ul Build ca s nu apar erori i ultimul mesaj s fie BUILD SUCCEEDED.

    n cazul apariiei unor erori n timpul construirii ntregului proiect, acestea vor fi afiate n fereastra Output tab-ul Build prin menionarea tipului erorii i a liniei program n care aceasta a aprut. Dup corectarea fiierului surs, va trebui s reconstruii proiectul i s corectai, dac este cazul, n mod asemntor, i restul erorilor aprute, pn la obinerea mesajului BUILD SUCCEEDED.

    1.4. Programai microcontrolerul i verificai funcionarea programului LCD, pe care tocmai l-ai construit, astfel: Programai microcontrolerul folosind comanda Debugger > Program. Dac apar unele

    avertismente, selectai butonul corespunztor pentru a putea continua. Lansai n execuie programul cu Debugger > Run. La pornirea lui, pe primul rnd al LCD-ului

    trebuie s apar mesajul Apasati RA4. Dup apsarea lui RA4, cele dou rnduri ale afiorului vor fi umplute succesiv, la interval de o secund, cu caracterul -. Dup alte 3 secunde, pe LCD vor apare la interval de o secund mesajele Lab. PICDEM 2+ pe primul rnd, respectiv Apasati RB0 pe cel de-al doilea rnd. Apsarea lui RB0 determin reluarea programului de la nceput.

    Selectai Debugger > Halt pentru a opri execuia programului. Putei relua execuia programului cu comanda Run. Pentru a relua de la nceput execuia

    programului, trebuie ca nainte de Run s resetai procesorul cu comanda Debuger > Reset > Processor Reset (F6).

    1.5. Reverificai funcionarea programului LCD, incluznd de data aceasta i facilitile de comunicare serial, astfel:

    Conectai PC-ul la conectorul J1 de pe placa demonstrativ (conectorul DB9 pentru portul serial activ RS-232) folosind fie un cablu serial direct de date (livrat odat cu kit-ul de dezvoltare), fie un cablu adaptor/convertor USB RS-232 (ca cel existent n laborator).

    Determinai din Device Manager categoria Ports (COM & LPT) care port COM (COMx) este asociat cu portul utilizat pentru conectarea cablului/adaptorului la PC.

    Deschidei programul Hyper Terminal cu Start > All Programs > Accessories > Communications > HyperTerminal > Com2PicDem dac ai salvat anterior o sesiune a conexiunii seriale (dac nu, urmai punctul 3.3 de la Activitatea 2.3).

    Lansai n execuie programul. Mesajele care apar pe LCD trebuie s fie vizualizate i n fereastra terminalului.

    Fig. 4.11. Mesaje pe terminal la punctul 1.7

  • 16

    Dac mesajele nu apar, deconectai terminalul (Call > Disconnect) i verificai setrile (ComX, 9600 baud, 8 bii de date, fr paritate, un bit de stop i fr controlul fluxului de date) folosind File > Properties > Connect to > Configure. Reconectai terminalul (Call > Call) i verificai din nou funcionarea programului LCD.

    Oprii execuia programului. 1.6. Modificati programul anterior astfel nct alte mesaje s fie vizibile pe LCD i n fereastra terminalului, iar caracterele afiate s se succead cu o ntrziere de 0,4 secunde ntre ele: Deschidei fiierul surs LCD.ASM pentru editare. Identificai poriunile de cod care definesc mesajele i care le afieaz caracter cu caracter. Modificai mesajele i ntroducei o ntrziere de o 0,4 secunde la afiarea caracterelor care

    urmeaz dup primul pe fiecare linie LCD. Reconstruii proiectul modificat. Reprogramai microcontrolerul. Executai programul,

    verificai funcionarea corect a sa i apoi oprii-l din execuie. 1.7. Modificati programul anterior astfel nct, la lansarea i relansarea n execuie a sa, s se trimit pe portul serial mesajul START (vezi Fig. 4.11). ACTIVITATEA 4.2 IMPLEMENTAREA UNUI JOC SIMPLU DE DEXTERITATE

    Proiectai i implementai n limbaj de asamblare un joc simplu de dexteritate avnd urmtoarele reguli:

    La pornire, primul rnd este umplut cu caracterul - iar pe al doilea rnd va fi afiat mesajul S2-START S3-STOP.

    Dup apsarea ntreruptorului S2, un simbol > pornete s defileze dinspre stnga spre dreapta rndului unu al LCD-ului, simultan cu un simbol

  • 17

    ACTIVITATEA 4.3 COMANDA UNUI AFIOR CU CRISTALE LICHIDE N LIMBAJUL C

    Aceast activitate va ilustra, folosind limbajul C, iniializarea afiorului LCD de pe placa de demonstraie PICDEM 2 Plus i scrierea unor mesaje simple pe cele dou linii ale sale.

    3.1. tergei coninutul microcontrolerului de pe placa de demonstraie. 3.2. Construii proiectul programului care ilustreaz comanda unui afior cu cristale lichide n limbajul C parcurgnd urmtorii pai: nchidei proiectul anterior cu comanda Project > Close. Creai un director pentru noul proiect, de exemplu My Projects\LCD_C. Copiai n aceast locaie, din directorul LAB PICDEM 2 Plus\Lab Files\04, fiierul

    lcdinit.C. Verificai c n directorul C:\MCC18\h exist fiierul xlcdGre.h, varianta fiierului

    xlcd.h modificat pentru configuraia LCD-ului de pe placa demonstrativ PICDEM 2 Plus. Dac el nu exist, copiai-l din directorul LAB PICDEM 2 Plus\Lab Files\04.

    Din fereastra programului MPLAB IDE lansai vrjitorul de creare a unui nou proiect cu comanda: Project > Project Wizard. Dai un click pe Next pentru a continua. n pasul 1 selectai pentru Device: PIC18F4520. Continuai cu Next. n pasul 2 selectai pentru Active Toolsuite: MicrochipC18 Toolsuite i bifai csua Store

    tool locations in project. Continuai cu Next. n pasul 3 selectai la Create New Project File locaia aleas i numele proiectului folosind

    butonul Browse, de exemplu My Documents\My Project\LCD_C\LCD. Continuai cu Next.

    n pasul 4 adugai la proiect fiierul LCDinit.C copiat anterior n directorul proiectului. Continuai cu Next.

    Terminai crearea noului proiect cu un click pe butonul Finish i comanda Project > Save Project pentru a salva proiectul nou creat.

    Creai un nou fiier surs. n fereastra care apare editai urmtorul program n C: //PROGRAMUL LCD - utilizarea porturilor pentru comanda unui afisor LCD #include #include #include // configurare #pragma config OSC = HS /* Setare mod High Speed Crystal/Resonator (Domeniu: 4-25 MHz) */ #pragma config PWRT = OFF //OFF/ON pentru modul Debugger/Programmer #pragma config PBADEN = ON /* Setare PORTB ca INTRARI ANALOGICE la RESET */ #pragma config WDT = OFF, WDTPS =1 /* Watchdog Timer */ #pragma config LVP = OFF /* ICSP cu o sursa de alimentare */ #pragma config DEBUG = OFF #pragma config CP0 = OFF,CP1 = OFF,CP2 = OFF,CP3 = OFF,CPB = OFF,CPD = OFF /* Protectia codului: Bitii CPn invalideaza citirea/scrierea din exterior */ #pragma config WRT0 = OFF,WRT1 = OFF,WRT2 = OFF,WRT3 = OFF,

    WRTB = OFF,WRTC = OFF,WRTD = OFF /* Protectie la sciere */ #pragma config EBTR0 = OFF,EBTR1 = OFF,EBTR2 = OFF,EBTR3 = OFF,EBTRB = OFF /* External Block Table Read:

  • 18

    Bitii EBTRn controleaza citirile din tabel */ #define SWITCH PORTAbits.RA4 #define SELECT PORTBbits.RB0 void clear_lcd(int line) { char ln; int x; if(line == 2) ln=0xC0; //adresa ptr. primul caracter rand 2 else ln=0x80; //adresa ptr. primul caracter rand 1 while(BusyXLCD()); //asteapta ca LCD sa nu fie ocupat SetDDRamAddr(ln); //seteaza adresa memoriei LCD for (x=0;x

  • 19

    WriteDataXLCD(' '); WriteDataXLCD(' '); WriteDataXLCD(' '); WriteDataXLCD(' '); WriteDataXLCD(' '); WriteDataXLCD(' '); WriteDataXLCD(' '); while(SWITCH==1) {} //asteapta apasarea lui RA4 clear_lcd(1); Delay10KTCYx(100); //intirziere 1s=100x10KTCY clear_lcd(2); Delay10KTCYx(100); Delay10KTCYx(100); Delay10KTCYx(100); SetDDRamAddr(0x80); //inceputul linei 1 WriteDataXLCD(' '); WriteDataXLCD('L'); WriteDataXLCD('a'); WriteDataXLCD('b'); WriteDataXLCD('.'); WriteDataXLCD(' '); WriteDataXLCD('P'); WriteDataXLCD('I'); WriteDataXLCD('C'); WriteDataXLCD('D'); WriteDataXLCD('E'); WriteDataXLCD('M'); WriteDataXLCD(' '); WriteDataXLCD('2'); WriteDataXLCD('+'); WriteDataXLCD(' '); SetDDRamAddr(0xC0); //inceputul linei a 2-a WriteDataXLCD(' '); WriteDataXLCD(' '); WriteDataXLCD('A'); WriteDataXLCD('p'); WriteDataXLCD('a'); WriteDataXLCD('s'); WriteDataXLCD('a'); WriteDataXLCD('t'); WriteDataXLCD('i'); WriteDataXLCD(' '); WriteDataXLCD('R'); WriteDataXLCD('B'); WriteDataXLCD('0'); WriteDataXLCD(' '); WriteDataXLCD(' '); WriteDataXLCD(' '); while(BusyXLCD()); //asteapta ca LCD sa nu fie ocupat while(SELECT==1); //asteapta apasarea lui RB0 } }

    Salvai fiierul cu numele LCD.C n directorul proiectului My Projects\LCD_C. Bifai n fereastra Save As caseta Add File To Project pentru a aduga automat fiierul n proiect. Dup salvare, nchidei fereastra fiierului surs.

  • 20

    Construii ntregul proiect. Urmrii mesajele afiate n fereastra Output tab-ul Build ca s nu apar erori i ultimul mesaj s fie BUILD SUCCEEDED. Dac apar erori, corectai-le n fiierul surs folosind tipul erorii i linia de program care a generat-o afiate n fereastra Output tab-ul Build. Dup corectarea fiierului surs, reconstruii proiectul. Repetai editarea fiierului surs i reconstruirea proiectului pn la obinerea mesajului BUILD SUCCEEDED.

    3.3. Programai microcontrolerul i lansai n execuie programul LCD.C construit anterior. Verificai faptul c funcionarea programului este ceea la care v ateptai conform codului surs editat. 3.4. Modificai programul anterior astfel nct alte mesaje s fie generate pe LCD, iar caracterele afiate s se succead cu o ntrziere de 0,4 secunde ntre ele: Deschidei fiierul surs LCD.C pentru editare. Identificai poriunile de cod care definesc mesajele i care le afieaz caracter cu caracter. Modificai mesajele i ntroducei o ntrziere de o 0,4 secunde nainte de afiarea caracterelor

    care urmeaz dup primul pe fiecare linie LCD. Reconstruii proiectul modificat. Reprogramai microcontrolerul. Executai programul,

    verificai funcionarea corect a sa i apoi oprii-l din execuie. ACTIVITATEA 4.4 COMANDA UNUI AFIOR CU CRISTALE LICHIDE N LIMBAJUL C FOLOSIND POINTERI

    Gndii-v cum s-ar putea afia o linie de text pe panoul LCD folosind n limbajul C un pointer, fr s fie nevoie s scriei liter cu liter n LCD folosind instruciuni separate. Modificai programul de la punctul 3.2 Activitatea 4.3 folosind implementarea cu pointer. 4.1. Proiectai i desenai schema logic a unui program care s satisfac cerinele prezentate anterior. 4.2. tergei coninutul microcontrolerului de pe placa de demonstraie i nchidei proiectul anterior. 4.3. Creai proiectul programului care implementeaz algoritmul proiectat la punctul 4.1 i salvati-l n My Projects\Pointer_C cu numele POINTER. 4.4. Creai, editai i adugai la proiect fiierul Pointer.C n care implementai algoritmul proiectat. 4.5. Construii ntregul proiect. Programai microcontrolerul. Executai programul, verificai faptul c funcionarea programului este ceea impus n tema activitii. Oprii execuia programului.

    4.5. Activiti propuse 1. Studiai foaia de catalog a controlerului HD 44780, folosit n cazul panoului LCD de pe

    plcile de dezvoltare PICDEM 2 Plus, pe care o gsii n fiierul LAB PICDEM 2 Plus\Datasheets\HD44780 2x16 LCD.

    2. Deducei funcionalitatea programului editat la punctul 1.3 i descriei-o folosind o schem logic.

    3. Imaginai-v un alt joc simplu de dexteritate bazat pe acionarea a dou butoane i afiarea de caractere ASCII pe LCD. Desenai organigrama care s descrie funcionarea jocului, implementai programul n limbaj de asamblare i verificai funcionarea programului.

    4. Implementai n limbaj de asamblare i apoi n limbaj C un zar electronic care s fie aruncat prin apsarea ntreruptorului S3 i s se opreasc, afind valoarea cuprins ntre 1 i 6, la apsarea lui S2.

  • 21

    5. Realizai un program care s afieze ciclic timp de cte 0,4 secunde toate caracterele predefinite n ROM-ul controlerului LCD pe primul rnd i valoarea codului n zecimal pe rndul doi. (Indicaie: folosii funcia itoa definit n stdlib.h pentru a converti valoarea numeric a codului ntr-un string)

    4.6. ntrebri 1. Semnalele Tact 1 i Tact 2 din Fig. 4.5 trebuie s fie sincronizate? Cum pot fi ele obinute din

    acelai semnal de tact local? 2. Pentru funcionarea schemei din Fig. 4.5, aa cum este descris n paragraful 4.1.4, trebuie ca

    Tact 1 s varieze mai repede dect Tact 2. Cum se modific funcionarea schemei, respectiv modul de afiare a celor patru caractere, dac Tact 2 variaz mai repede dect Tact 1? Schimb acest lucru percepia privitorului?

    3. Desenai schema logic a unui circuit de afiare pentru opt caractere alfanumerice (similar cu circuitul din Fig. 4.5) folosind un singur tact local.

    4. Care este setul de caractere (codul ROM) inscris n ROM-ul controlerului HD 44780 din plcile de dezvoltare PICDEM 2 Plus utilizate (Indicaie: vezi pagina 17 i 18 din foaia de catalog a controlerului HD 44780 i utilizeaz Aplicaia propus 4 pentru vizualizarea caracterelor din ROM)?

    5. Ce avantaje i dezavantaje are modul de comunicare cu controlerul LCD pe 4 bii fa de cel pe 8 bii ?