mpmc -proiect -

47
UNIVERSITATEA TRANSILVANIA DIN BRAȘOV Facultatea de Design de Produs și Mediu Departamentul Design de Produs, Mecatronică și Mediu PROIECT LA DISCIPLINA MEDII DE PROGRAMARE PENTRU MICROCONTROLLERE Student: Zeca Alin - Cristian Program de studii: Mecatronica Grupa: 17902 Coordonator: Șef lucr. dr. ing. Marius Cristian LUCULESCU BRAȘOV 2013 -2014

Upload: stanescu-razvan

Post on 24-Nov-2015

268 views

Category:

Documents


16 download

DESCRIPTION

mechatronics

TRANSCRIPT

  • UNIVERSITATEA TRANSILVANIA DIN BRAOV

    Facultatea de Design de Produs i Mediu

    Departamentul Design de Produs, Mecatronic i Mediu

    PROIECT LA DISCIPLINA

    MEDII DE PROGRAMARE PENTRU

    MICROCONTROLLERE

    Student: Zeca Alin - Cristian

    Program de studii: Mecatronica

    Grupa: 17902

    Coordonator:

    ef lucr. dr. ing. Marius Cristian LUCULESCU

    BRAOV

    2013 -2014

  • 2

    UNIVERSITATEA TRANSILVANIA DIN BRAOV

    Facultatea de Design de Produs i Mediu

    Departamentul Design de Produs, Mecatronic i Mediu

    Zeca Alin - Cristian

    Sisteme de afiare cu microcontroller

    Proiect la disciplina

    MEDII DE PROGRAMARE PENTRU

    MICROCONTROLLERE

    Program de studii: Mecatronica

    BRAOV

    2013 - 2014

  • 3

    Contents

    TEMA DE PROIECT ............................................................................................................................................. 4

    1.Introducere ..................................................................................................................................................... 8

    2.SUBSISTEMUL HARDWARE ........................................................................................................................... 12

    3.Subsistemul software ................................................................................................................................... 20

    3.1. Sistem de afiare cu matrice de LED-uri - programare n limbaj de asamblare .............................. 20

    3.1.1Descrierea efectelor grafice alese i a metodelor utilizate pentru deplasare. ............................... 20

    3.1.2Protocolul de comunicaie ntre PC i sistemul de afiare (comenzile alese) ................................. 22

    3.1.3Programele de funcionare scrise n limbaj de asamblare. ............................................................. 23

    3.2. Sistem de afiare cu matrice de LED-uri - programare n MikroC ........................................................ 27

    3.2.1. Protocolul de comunicaie ntre PC i sistemul de afiare ...................................................... 27

    3.2.2 Programele de functionare scrise in MikroC ........................................................................... 28

    3.3 Sistem de afiare cu 7 segmente programare n MikroC ................................................................... 32

    3.3.1Descrierea funcionrii sistemului ................................................................................................... 32

    3.3.2Protocolul de comunicaie ntre PC i sistemul de afiare. ............................................................. 33

    3.3.3Programele de funcionare scrise n MikroC. .................................................................................. 33

    3.4 Sistem de afiare cu LCD text programare n MikroC ......................................................................... 35

    3.4.1 Descrierea funcionrii sistemului .................................................................................................. 35

    3.4.2 Protocolul de comunicaie ntre PC i sistemul de afiare (comenzile alese). ............................... 36

    3.4.3Programele de funcionare scrise n MikroC. .................................................................................. 36

    3.5 Sistem de afiare cu LCD grafic programare n MikroC ...................................................................... 37

    3.5.1 Descrierea funcionrii sistemului .................................................................................................. 37

    3.5.2Protocolul de comunicaie ntre PC i sistemul de afiare (comenzile alese). ................................ 38

    3.5.3Programele de funcionare scrise n MikroC. .................................................................................. 38

    3.6 Programele de funcionare scrise n Visual Basic ............................................................................ 40

    3.6.1 Descrierea interfeelor grafice utilizator ........................................................................................ 40

    3.6.2 Programele de funcionare scrise n Visual Basic. .......................................................................... 40

    BIBLIOGRAFIE ................................................................................................................................................... 47

  • 4

    TEMA DE PROIECT

    Sisteme de afiare cu microcontroller

    S se proiecteze programele de funcionare, n limbaj de asamblare i limbaj de nivel superior,

    pentru urmtoarele aplicaii realizate cu un sistem de dezvoltare cu microcontroller AT89S8253:

    A. Sistem de afiare cu matrice de LED-uri programare n limbaj de asamblare

    Pe cele 4 porturi ale microcontroller-ului sunt conectate LED-uri, a cror aprindere se face cu 1

    logic (matrice 8 rnduri, 4 coloane). Programele de funcionare trebuie s asigure minim 4 efecte

    de deplasare grafic pe afior, la alegere, cu posibilitatea de comand de pe tastatura unui PC i

    dintr-un program n Visual Basic, pentru urmtoarele funcii:

    o Creterea/ descreterea n trepte a vitezei de deplasare;

    o Pornirea i oprirea deplasrii;

    o Testarea afiorului (aprinderea/ stingerea tuturor LED-urilor)

    B. Sistem de afiare cu matrice de LED-uri programare n MikroC

    Realizarea acelorai funcii de la punctul A, dar folosind limbaj de nivel superior (MikroC).

    C. Sistem de afiare cu 7 segmente programare n MikroC

    La placa UNI-DS6 se conecteaz un modul de afiare cu 7 segmente, cu 8 digii, care comunic

    serial pe interfa SPI. Programele de funcionare trebuie s asigure deplasarea unui text ales pe

    afior, care s conin minim 8 caractere, la alegere, cu posibilitatea de comand de pe tastatura

    unui PC i dintr-un program n Visual Basic, pentru urmtoarele funcii:

    o Selectarea sensului de deplasare (stnga, dreapta);

    o Creterea/ descreterea n trepte a vitezei de deplasare;

    o Pornirea i oprirea afirii;

    o Testarea afiorului (aprinderea/ stingerea tuturor segmentelor).

    D. Sistem de afiare cu LCD text programare n MikroC

    Realizarea funciei de cronometru cu afiare pe LCD-ul text a timpului n format HH:MM:SS (H

    ore, M minute, S secunde, Z zecimi de secund) cu posibilitatea de comand de pe tastatura

    unui PC i dintr-un program n Visual Basic, pentru urmtoarele funcii:

    o Pornirea i oprirea cronometrului;

    o Resetarea cronometrului.

    E. Sistem de afiare cu LCD grafic programare n MikroC

    Realizarea funciei de cronometru cu afiare pe LCD-ul grafic a timpului n format HH:MM:SS

    (H ore, M minute, S secunde, Z zecimi de secund) cu posibilitatea de comand de pe

    tastatura unui PC i dintr-un program n Visual Basic, pentru urmtoarele funcii:

    o Pornirea i oprirea cronometrului;

    o Resetarea cronometrului.

    C. Sistem de afiare cu 7 segmente programare n MikroC

  • 5

    La placa UNI-DS6 se conecteaz un modul de afiare cu 7 segmente, cu 8 digii, care comunic

    serial pe interfa SPI. Programele de funcionare trebuie s asigure generarea funciei de

    cronometru cu afiare n format MM-SS-ZZ (M minute, S secunde, Z zecimi de secund) cu

    posibilitatea de comand de pe tastatura unui PC i dintr-un program n Visual Basic, pentru

    urmtoarele funcii:

    o Pornirea i oprirea cronometrului;

    o Resetarea cronometrului.

    D. Sistem de afiare cu LCD text programare n MikroC

    Programele de funcionare trebuie s asigure deplasarea unui text ales pe afiorul LCD text, care

    s conin minim 8 caractere, la alegere, cu posibilitatea de comand de pe tastatura unui PC i

    dintr-un program n Visual Basic, pentru urmtoarele funcii:

    a. Selectarea sensului de deplasare (stnga, dreapta);

    b. Creterea/ descreterea n trepte a vitezei de deplasare;

    c. Pornirea i oprirea afirii;

    E. Sistem de afiare cu LCD grafic programare n MikroC

    Programele de funcionare trebuie s asigure deplasarea unui text ales pe afiorul LCD grafic,

    care s conin minim 8 caractere, la alegere, cu posibilitatea de comand de pe tastatura unui PC

    i dintr-un program n Visual Basic, pentru urmtoarele funcii:

    a. Selectarea sensului de deplasare (stnga, dreapta);

    b. Creterea/ descreterea n trepte a vitezei de deplasare;

    c. Pornirea i oprirea afirii;

    Proiectul va conine:

    1. Scurt introducere n care sunt prezentate noiuni generale despre soluiile de afiare

    (LED-uri, 7 segmente, LCD text, LCD grafic).

    2. Subsistemul hardware

    Prezentarea plcii de dezvoltare UNI-DS6 cu explicaii asupra zonelor utilizate n

    cadrul proiectului (LED-uri, afioare etc.)

    3. Subsistemul software

    3.1 Sistem de afiare cu matrice de LED-uri - programare n limbaj de asamblare

    a. Descrierea efectelor grafice alese i a metodelor utilizate pentru deplasare.

    b. Protocolul de comunicaie ntre PC i sistemul de afiare (comenzile alese).

    c. Programele de funcionare scrise n limbaj de asamblare.

    3.2 Sistem de afiare cu matrice de LED-uri - programare n MikroC

    a. Protocolul de comunicaie ntre PC i sistemul de afiare (comenzile alese).

    b. Programele de funcionare scrise n MikroC.

    3.3 Sistem de afiare cu 7 segmente programare n MikroC

    a. Descrierea funcionrii sistemului

    b. Protocolul de comunicaie ntre PC i sistemul de afiare (comenzile alese).

  • 6

    c. Programele de funcionare scrise n MikroC.

    3.4 Sistem de afiare cu LCD text programare n MikroC

    a. Descrierea funcionrii sistemului

    b. Protocolul de comunicaie ntre PC i sistemul de afiare (comenzile alese).

    c. Programele de funcionare scrise n MikroC.

    3.5 Sistem de afiare cu LCD grafic programare n MikroC

    a. Descrierea funcionrii sistemului

    b. Protocolul de comunicaie ntre PC i sistemul de afiare (comenzile alese).

    c. Programele de funcionare scrise n MikroC.

    3.6 Programele de funcionare scrise n Visual Basic.

    a. Descrierea interfeelor grafice utilizator

    b. Programele de funcionare scrise n Visual Basic.

    4 Anexe

    4.1 Fiierul listing pentru punctul A.

    5. Bibliografie

  • 7

    EVALUARE PROIECT

    Fiecare criteriu primete un punctaj de la 1 la 10. Nota final pentru proiect se obine prin

    nsumarea notelor pe criterii, nmulite cu ponderile corespunztoare.

    Nota aferent proiectului reprezint 30% din nota disciplinei

    Criteriul estetic (aspectul proiectului)

    20% din nota aferent proiectului

    Se evalueaz modul de organizare/ structurare al

    lucrrii i modul de elaborare al documentaiei din

    punct de vedere estetic (scheme/ desene/ grafice

    clare, ngrijite, relevante, numerotare pagini,

    figuri, referine bibliografice) etc.

    Criteriul tehnic (corectitudine

    coninut proiect) 30% din nota

    aferent proiectului

    Aplicarea metodelor specifice de

    rezolvare pentru problema dat;

    Utilizarea corect a algoritmilor proprii

    tematicii abordate; Utilizarea corect i

    fluent a termenilor specifici;

    Corectitudinea programelor realizate;

    Capacitatea de exemplificare;

    Interpretarea rezultatelor

    Se evalueaz gradul de realizare al lucrrii n

    raport cu cerinele specificate n tema proiectului

    (cerine impuse explicit la nceput, pentru fiecare

    proiect n parte), respectiv gradul de cunoatere al

    tematicii i al metodelor/ uneltelor pe care le

    implic elaborarea proiectului.

    Criteriul profesional (prezentarea i

    susinerea proiectului) 30% din nota

    aferent proiectului

    Se evalueaz capacitatea studentului de a-i

    prezenta proiectul ntr-o manier cursiv, logic i

    relevant, rspunsurile la ntrebrile evaluatorului,

    respectiv modul de realizare a prezentrii grafice

    [*.ppt] (relevana coninutului i capacitatea de

    sintez a studentului).

    Criteriul evaluare de progres 20%

    din nota aferent proiectului

    Evaluarea de progres presupune existena a 2 vize

    i predarea proiectului n ziua stabilit de la finalul

    semestrului. Fiecare viz presupune parcurgerea

    unei anumite pri din proiect.

    Nerespectarea termenelor se penalizeaz cu 2

    puncte (din nota aferent criteriului) pentru fiecare

    viz i respectiv 1 punct pentru nepredare la timp.

  • 8

    1.Introducere

    Sistemele de afiare reprezint soluia de redare a unor informaii vizuale care pot avea diverse

    ntrebuinri din ce n ce mai complexe: de la afioarele cu 7 segmente care sunt cel mai uzual ntrebuinate

    la lifturi, pn la display-urile de nalt rezoluie ce pot afia orice fel de informaie.

    Un LED (light-emitting diode) este o surs de lumin mic, de cele mai multe ori nsoit de un circuit electric

    ce permite modularea formei radiaiei luminoase. De cele mai multe ori acestea sunt utilizate ca indicatori

    n cadrul dispozitivelor electronice, dar din ce n ce mai mult au nceput s fie utilizate n aplicaii de putere

    ca surse de iluminare. Culoarea luminii emise depinde de compoziia i de starea materialului

    semiconductor folosit.

    Fig. 2.1 LED [1]

    Prin definiie, pixelul este "punctul luminos" prezent pe orice dispozitiv LED, de la display alfanumeric simplu cu o singur linie pn la ecrane gigant color. Acest punct luminos poate fi format din unul sau mai multe LED-uri, n funcie de dimensiunile i caracteristicile dispozitivului.

    Fig. 2.2 Tipuri de matrici [1]

  • 9

    De exemplu, pe un afiaj de mici dimensiuni Single Line, pixelul este format de ctre un singur LED n timp ce pe modelele mari, pixelul poate fi format din 20 LED-uri. n cazul anumitor produse, pixelul poate fi compus din pn la 36 LED-uri.

    Fig. 2.3 LED Display [1]

    Pitch-ul la un display cu LED-uri definete distana dintre pixeli, exprimat n milimetri. Aceast msur fundamental determin caracteristicile i performanele unui ecran cu LED-uri. Pitch-ul ntr-adevar este un factor definitoriu pentru distana de vizualizare la un ecran LED: 1. Cu ct este mai mic, cu att distana la care se poate vizualiza este mai mic, cu att mai mare este numrul total de pixeli prezeni pe ecran raportai la suprafa (i, prin urmare, costul ecranului per suprafa este mai mare). 2. Cu ct este mai mare, cu att distana de vedere minim crete, numrul total de pixeli prezeni pe ecran scade (i, prin urmare, costul ecranului per suprafa este mai mic) Pitch-ul determin, prin urmare, densitatea de LED-uri per unitatea de suprafa fiind o mrime invers proportional cu rezoluia. Este important de observat c n timp ce pitch-ul scade, densitatea de LED-uri se mrete exponenial: de exemplu, reducerea pitch-ului cu 50% determin o cretere de 4 ori a numrului de pixeli.

    Afiorul cu 7 segmente este o form electronic de afiaj care permite afiarea cifrelor de la 0 la 9.

    Afioarele cu 7 segmente sunt ntrebuinate cel mai des la ceasurile digitale sau alte aparate electronice

    pentru afiarea informaiilor numerice. Fiecare segment este notat de la a la g iar n unele cazuri se

    introduce i un punct zecimal n afiaj care de obicei este denumit dp (decimal point).

    Fig. 2.4 Afior cu 7 segmente [1]

  • 10

    Afiajul cu cristale lichide, prescurtat LCD (liquid crystal display) este un dispozitiv de afiare pentru litere,

    cifre, grafice, imagini, fiind constituit dintr-o matrice de celule lichide care devin opace sau i schimb

    culoarea sub influena unui curent sau un cmp electric. Se prezint sub forma unui ecran afior (display)

    care este comandat electronic printr-un decodificator de caractere numerice i alfabetice. LCD-ul este

    utilizat frecvent n construcia ceasurilor digitale, la afirile de date de la maini cu comand numeric,

    maini de uz caznic, inscripii i semnalizri electronice. Cristalele lichide sunt, n cazul de fa, combinaii

    chimice de natur organic aflat n stare lichid. Ele au proprietatea de a putea fi comandate de o

    corespunzatoare tensiune electric, astfel nct i ordoneaz moleculele trecnd de la stare transparent la

    una netransparent. Concret este vorba de o polarizare electric a unor molecule lichide care n contrast

    formeaz o imagine vizibil.

    Fig. 2.5 Ecran tip LCD 2x16 [2]

    Principiul de funcionare a unui ecran LCD: Lumina care eman de la un panou fluorescent din spatele

    panoului de afiare al ecranului se rspndete n valuri care vibreaz n toate direciile. Un filtru polarizator

    din faa panoului de lumin permite trecerea numai a undelor de lumin care vibreaz mai mult sau mai

    puin pe orizontal. Faptul c filtrul polarizator nu este precis n totalitate permit afiajului s creeze diferite

    nuane. ntr-un strat de celule de cristale lichide - cte una pentru fiecare din cele trei culori care compun

    un pixel -adaptorul grafic intern al monitorului (sau televizorului) aplic o sarcin electric variabil unor

    celule i nici o sarcin electric tuturor celorlalte celule. n celulele care primesc curent, moleculele

    lunguiee n form de vergea care alctuiesc materialul cristalului lichid reacioneaz la sarcina electric

    formnd o spiral. Cu ct sarcina electric este mai mare cu att se rsucesc mai mult moleculele. Atunci

    cnd este aplicat cea mai mare sarcin electric, moleculele de la un capt al celulei se ridic ntr-un unghi

    de 90 de grade fa de orientarea moleculelor de la cellalt capt. Lumina polarizat care ptrunde n celule

    din spate este rsucit de-a lungul spiralei formate de molecule.

    n celulele care au fost alimentate cu sarcin electric maxim, lumina polarizat iese vibrnd, ntr-un unghi

    de 90 de grade fa de alinierea ei iniial. Lumina care trece prin celulele care nu au fost alimentate iese

    neschimbat. Celulele care au fost alimentate cu o sarcin electric partial rsucesc lumina ntr-un unghi

    situat ntre 0 i 90 de grade n funcie de mrimea sarcinii electrice. Lumina care iese din fiecare celul de

    cristal lichid trece prin unul din cele trei filtre de culoare rou, albastru sau verde - care sunt aranjate unul

    n apropierea celorlalte. Fasciculele colorate de lumin trec printr-un alt doilea filtru de polarizare care este

    aliniat pentru a lsa s treac numai acele unde de lumin care vibreaz mai mult sau mai puin pe

    vertical. Lumina care trece printr-un cristal lichid care este alimentat cu o sarcin electric maxim este

    acum orientat perfect pentru a trece prin al doilea filtru.

  • 11

    Deoarece cu este complet precis, o parte din undele de lumin care au trecut prin celula cu sarcina electric

    partial - i care, prin urmare, a fost rsucit numai parial - trec prin filtru, n timp ce altele sunt blocate.

    Lumina care nu a fost rsucit deloc atunci cnd a trecut prin cristalul lichid este acum blocata complet, n

    exemplul prezentat aici. 100% din fascicolul rou este emis; 50% din lumina verde trece; iar lumina albastr

    este blocat complet. Rezultatul apare ochiului uman ca un singur punct de lumina de culoare maro

    deschis.

  • 12

    2.SUBSISTEMUL HARDWARE

    n cadrul proiectului utilizm un sistem de dezvoltare UNI-DS6 fabricat de ctre compania Mikroelectronica.

    Acesta este echipat cu multe module care ofer o larg varietate de ntrebuinri a sistemului. Placa n sine

    suporta 7 tipuri de microcontrollere, dar cel montat pe sistemul utilizat n cadrul proiectului este un

    microcontroller de tip 8051.

    Fig. 2.1 Placa UNIDS 6 [3]

    Soluiile de afiare ale plcii de dezvoltare sunt sistemul de afiare cu matrice de LED-uri i sistemul de

    afiare cu matrice de LED-uri i LCD.

    Placa este dotat cu un conector pentru un display LCD 2x16 care permite utilizarea unui display LCD 2x16

    i asigur pozitionarea corect a acestuia prin intermediul unui distanier din material plastic creat special

    pentru aceast funcie.

    Fig. 2.2 - Display LCD 2x16 [3]

  • 13

    n imagine se poate vedea display-ul LCD 2x16 cu fundal albastru compatibil cu sistemul de conectare al

    placii UNI-DS6.

    De asemenea placa dispune i de un conector pentru un LCD grafic de dimensiune 128x64, de asemenea

    dotat cu un distanier de plastic conceput special pentru aceast funcie. GLCD-ul poate s fie unul simplu

    sau unul cu funcii tactile, care s permit i citirea comenzilor apelate de ctre utilizator

    Fig. 2.3 - GLCD 128x64 [3]

    Fig. 2.4 - GLCD 128x64 TouchPad [3]

    Sistemul UNI-DS6 are integrat un sistem de semnalizare vizual format din 72 de LED-uri. Cu ajutorul

    acestora se pot monitoriza executiile programelor sau se pot crea efecte grafice.

    Placa de dezvoltare UNI-DS6 are componentele:

    -MMC/SD card slot permite stocarea unor valori mari de date externe pe MMC/SD card folosind

    comunicaie rapid SPI;

  • 14

    Fig. 2.5 MMC/SD card slot [3]

    -DS1820 senzor de temperatur: Placa suport un senzor de temperatur cu un singur fir Dallas

    DS1820, cu ajutorul cruia se pot msura temperaturi de la -55C la +125C (-67F257F), cu precizie de

    0,5C;

    Fig. 2.6 DS1820 senzor de temperatur [3]

    -Piezometru Buzzo are abilitatea de a crea semnale audio pentru prototip. Este condus de un

    circuit de tranzistor care stimuleaz semnalul de ieire la nivelurile corespunztoare;

    Fig. 2.7 Piezometrul Buzzo [3]

    -24LC01 Serial EEPROM este utilizat pentru a stoca configuraia dispozitivului i ali parametri de

    pornire;

  • 15

    Fig. 2.8 24LC01 Serial EEPROM [3]

    -Tensiune de referin 4.096V = Regulator de tensiune stabil 4.096V este disponibil pentru a fi

    folosit ca o referin de tensiune pentru module de conversie A/D;

    Fig.2.9 Tensiune de referin 4.096V [3]

    -Regulator de Putere = Pe plac regulatorul de putere ofer stabilitate i liniaritate tensiunii i

    nivelurilor de curent pe toate modulele de la bord.

    Fig. 2.10 Regulator de Putere [3]

    -Intrare ADC = Placa de dezvoltare include un convertor digital-analog de 12 bii (ADC) MCP3204,

    care poate fi utilizat pentru achiziii de date, instrumentaie i msurare;

  • 16

    Fig. 2.11 Intrare ADC [3]

    -Conector LCD 2x16 = Placa este echipat cu un conector LCD 2 x 16 , care v permite s conectai

    un afiaj LCD 2 x 16 plasat n siguran folosind un distanier din plastic de nalt calitate, special conceput

    pentru acest scop.

    Fig. 2.12 Conector LCD 2x16 [3]

    -Poteniometru de constrast LCD = Cu LCD 2x16 se poate ajusta contrastul caracterelor LCD, astfel

    nct caracterele s aib o vizibilitate bun.

    Fig. 2.13 Poteniometru de constrast LCD [3]

    -72 LEDuri = monitorizeaz programul de execuie, sau creaz semnale vizuale scurte folosind 72

    LEDuri pe plac. LEDurile SMD emit lumin roie de mare intesitate.

  • 17

    Fig. 2.14 LED-uri [3]

    -72 Butoane = au operaii stabile i crube de rspuns foarte bune. Fiecare buton este conectat

    lng un pin al microcontrollerului, astfel inct se poate testa fiecare intrare digital disponibil;

    Fig. 2.15 Butoane [3]

    -Conector USB UART1/UART2 = Cipul FTDI Fast on-board cu conector USB, v permite s

    comunicai cu un PC sau cu alte dispozitive folosind conexiunea USB-UART.

    Fig. 2.16 Conector USB UART1/UART2 [3]

    -Conector USB = Conectorul USB este utilizat pentru conectarea la bord cu alte dispozitive precum

    PC folosind comunicarea rapid USB 2.0.

  • 18

    Fig. 2.17 Conector USB [3]

    -Slot microplac = Slotul pentru microplci const din doi conectori mam 2 x 60 care asigur o

    conexiune bun i o legtur solid cu placa.

    Fig. 2.18 Slot microplac [3]

    -Poteniometru de contrast GLCD = Cu poteniometrul de conrast GLCD se poate ajusta contrastul LCD

    grafic, astfel nct pixelii s aib o bun vizibilitate.

  • 19

    Fig. 2.19 Poteniometru de contrast GLCD [3]

    -Portul conectorilor IDC10 = Toi pini portului microcontrollerului au fost fixai n apropierea

    portului conectorilor IDC10. Fiecare pin de pe port poate fi mutat n sus sau n jos folosind un jumper de

    selecie de tensiune corespunztoare.

    Fig. 2.20 Portul conectorilor IDC10 [3]

    -Controlor panou de comand = Putei utiliza intrarea panoului de comand cu prototipul dorit

    folosind circuitul controlorului panoului de comand.

    Fig. 2.21 Controlor panou de comand [3]

  • 20

    3.Subsistemul software

    3.1. Sistem de afiare cu matrice de LED-uri - programare n limbaj

    de asamblare

    3.1.1Descrierea efectelor grafice alese i a metodelor utilizate pentru deplasare.

    1. Aprinderea Logoului Farmaciilor

    2. Efect aprindere pe diagonala.

    3.Afisarea primului grup de 8 leduri urmat de aprinderea urmatorului grup

    de leduri.

  • 21

    4.LIKE A BOSS

  • 22

    3.1.2Protocolul de comunicaie ntre PC i sistemul de afiare (comenzile alese)

    Tasta apasata Rezultat

    1 Efect grafic 1

    2 Efect grafic 2

    3 Efect grafic 3

    4 Efect grafic 4

    + Marire viteza de deplasare

    - Micsorare viteza de deplasare

    E Pornire matrice de leduri

    R Oprire matrice de leduri

    Q comanda OPRIRE EFECT

    W comanda PORNIRE EFECT

  • 23

    .

    3.1.3Programele de funcionare scrise n limbaj de asamblare.

    ORG 0000H

    JMP MAIN

    ORG 0023H ; VI

    serial

    JMP SERIAL

    OPRIRE BIT 0 ;

    OPRIRE=0 - EFECTUL SE DERULEAZA,

    ; OPRIRE=1 - EFECTUL ESTE OPRIT

    COMANDA DATA 30H

    VITEZA DATA 31H

    ORG 100H

    MAIN:

    MOV SP,#60H ;

    initializare SP

    MOV TMOD,#20H ;

    Programare seriala: Timer1 in mod2

    MOV TH1,#245 ; 4800

    baud rate la frecv de 10MHz

    MOV TH0,#245

    MOV PCON,#128

    MOV SCON,#50H ;

    Receiving enabled, 8-bit UART

    MOV IE,#90H ;

    validare intreruperi seriale

    CLR TI ; Clear

    transmit flag

    CLR RI ; Clear

    receive flag

    SETB TR1 ; Start

    Timer1

    ;==========================================

    ===========================================

    ==========================

    MOV P0,#00H ; stinge

    porturile,

    MOV P1,#00H ; cu

    exceptia P3.0 si P3.1

    MOV P2,#00H

    MOV P3,#03H

    ;==========================================

    ===========================================

    ==========================

    MOV VITEZA,#80H ;

    initializare variabile

    CLR OPRIRE

    MOV COMANDA,#00H

    ;==========================================

    ===========================================

    ==========================

    LOOP: JB OPRIRE,SF

    MOV A,COMANDA

    CJNE A,#"1",CONTI1 ;

    comanda EFECT 1

    CALL EFECT1

    JMP SF

    CONTI1: CJNE A,#"2",CONTI2 ;

    comanda EFECT 2

    CALL EFECT2

    JMP SF

    CONTI2: CJNE A,#"3",CONTI3 ;

    comanda EFECT 3

    CALL EFECT3

    JMP SF

  • 24

    CONTI3: CJNE A,#"4",SF ;

    comanda EFECT 4

    CALL EFECT4

    SF:

    SJMP LOOP ;

    bucla infinita

    ;==========================================

    ===========================================

    ==========================

    EFECT1:

    MOV P0,#18H

    MOV P1,#0FFH

    MOV P2,#0FFH

    MOV P3,#1BH

    CALL TEMP

    CALL TEMP

    CALL TEMP

    MOV P0,#0E7H

    MOV P1,#00H

    MOV P2,#00H

    MOV P3,#0E7H

    CALL TEMP

    CALL TEMP

    CALL TEMP

    RET

    ;==========================================

    ===========================================

    ==========================

    EFECT2:

    MOV P0,#55H

    MOV P1,#0AAH

    MOV P2,#055H

    MOV P3,#0ABH

    CALL TEMP

    MOV P0,#0AAH

    MOV P1,#55H

    MOV P2,#0AAH

    MOV P3,#57H

    CALL TEMP

    RET

    ;==========================================

    ===========================================

    ==========================

    EFECT3:

    MOV P0,#00H

    MOV P1,#00H

    MOV P2,#0FH

    MOV P3,#0FH

    CALL LTEMP

    MOV P0,#0FH

    MOV P1,#0FH

    MOV P2,#00H

    MOV P3,#03H

    CALL TEMP

    MOV P0,#0F0H

    MOV P1,#0F0H

    MOV P2,#00H

    MOV P3,#03H

    CALL TEMP

    MOV P0,#00H

    MOV P1,#00H

    MOV P2,#0F0H

    MOV P3,#0F3H

    CALL TEMP

    CALL TEMP

    CALL TEMP

    CALL TEMP

    RET

    ;==========================================

    ===========================================

    ==========================

    EFECT4:

    MOV P0,#0FFH

    MOV P1,#0FFH

    MOV P2,#0C0H

    MOV P3,#0C3H

    CALL TEMP

    MOV P0,#00H

    MOV P1,#0FFH

    MOV P2,#0FFH

    MOV P3,#03H

    CALL TEMP

    MOV P0,#0FFH

    MOV P1,#0FFH

    MOV P2,#7EH

    MOV P3,#0C3H

    CALL TEMP

    MOV P0,#0FFH

  • 25

    MOV P1,#0FFH

    MOV P2,#0DBH

    MOV P3,#0DBH

    CALL TEMP

    CALL TEMP

    CALL TEMP

    CALL TEMP

    CALL TEMP

    MOV P0,#0FFH

    MOV P1,#31H

    MOV P2,#31H

    MOV P3,#0FFH

    CALL TEMP

    CALL TEMP

    CALL TEMP

    CALL TEMP

    CALL TEMP

    MOV P0,#0FFH

    MOV P1,#9DH

    MOV P2,#95H

    MOV P3,#0FFH

    CALL TEMP

    MOV P0,#0FFH

    MOV P1,#0C3H

    MOV P2,#0C3H

    MOV P3,#0FFH

    CALL TEMP

    MOV P0,#0DFH

    MOV P1,#0DFH

    MOV P2,#0FBH

    MOV P3,#0FBH

    CALL TEMP

    MOV P0,#0DFH

    MOV P1,#0DFH

    MOV P2,#0FBH

    MOV P3,#0FBH

    CALL TEMP

    CALL TEMP

    CALL TEMP

    CALL TEMP

    CALL TEMP

    RET

    ;==========================================

    ===========================================

    ==========================

    STINGE: MOV P0,#00H ;

    stinge porturile

    MOV P1,#00H

    MOV P2,#00H

    MOV P3,#03H

    RET

    ;==========================================

    ===========================================

    ==========================

    APRINDE: MOV P0,#0FFH ;

    aprinde porturile

    MOV P1,#0FFH

    MOV P2,#0FFH

    MOV P3,#0FFH

    RET

    ;==========================================

    ===========================================

    ==========================

    TEMP: MOV R1,VITEZA

    ETI2: MOV R2,#0FFH

    ETI1: NOP

    DJNZ R2,ETI1

    DJNZ R1,ETI2

    RET

    ;==========================================

    ===========================================

    ==========================

    SERIAL: PUSH ACC

    JB TI,SF1

    RECEP: MOV A,SBUF ;

    citire caracter receptionat

    MOV SBUF,A ;

    trimitere ecou

    CJNE A,#"+",CONTIN1 ;

    comanda CRESTE viteza

    MOV A,VITEZA

    CJNE A,#10H,SUBB1

    JMP CONTIN2

  • 26

    SUBB1: SUBB A,#10H

    MOV VITEZA,A

    JMP SF1

    CONTIN1: CJNE A,#"-",CONTIN2 ;

    comanda SCADE viteza

    MOV A,VITEZA

    CJNE A,#0F0H,ADD1

    JMP CONTIN2

    ADD1: ADD A,#10H

    MOV VITEZA,A

    JMP SF1

    CONTIN2: CJNE A,#"1",CONTIN3 ;

    comanda EFECT 1

    MOV COMANDA,A

    JMP SF1

    CONTIN3: CJNE A,#"2",CONTIN4 ;

    comanda EFECT 2

    MOV COMANDA,A

    JMP SF1

    CONTIN4: CJNE A,#"3",CONTIN5 ;

    comanda EFECT 3

    MOV COMANDA,A

    JMP SF1

    CONTIN5: CJNE A,#"4",CONTIN6 ;

    comanda EFECT 4

    MOV COMANDA,A

    JMP SF1

    CONTIN6: CJNE A,#"E",CONTIN7 ;

    comanda APRINDERE TOATE LED-URILE

    CALL APRINDE

    JMP SF1

    CONTIN7: CJNE A,#"R",CONTIN8 ;

    comanda STINGERE TOATE LED-URILE

    CALL STINGE

    JMP SF1

    CONTIN8: CJNE A,#"Q",CONTIN9 ;

    comanda OPRIRE EFECT

    SETB OPRIRE

    JMP SF1

    CONTIN9: CJNE A,#"W",SF1 ;

    comanda PORNIRE EFECT

    CLR OPRIRE

    SF1: CLR RI ; Clear

    receive flag

    CLR TI ; Clear

    transmit flag

    POP ACC

    RETI

    END ; sfarsit

    program

  • 27

    3.2. Sistem de afiare cu matrice de LED-uri - programare n MikroC

    3.2.1. Protocolul de comunicaie ntre PC i sistemul de afiare

    Fig 3.2.1. Switch

    P Pornire

    O Oprire

    S Stingere matrice

    A Aprindere matrice

    + Incrementare viteza

    - Decrementare viteza

    1 Primul efect

    2 Al doilea efect

    3 Al treile efect

    4 Al patrulea efect

  • 28

    3.2.2 Programele de functionare scrise in MikroC

    unsigned char oprire, caracter_sosit, comanda, comanda_ant;

    unsigned int viteza;

    void Efect1(), Efect2(), Efect3(), Efect4(), Aprindere_porturi(), Stingere_porturi();

    void main() {

    P0=0x00; // stinge led-urile de pe porturile P0 la P3

    P1=0x00;

    P2=0x00;

    P3=0x03;

    UART1_Init(4800); // Initialize UART module at 4800 bps

    Delay_ms(100); // Wait for UART module to stabilize

    viteza=100;

    oprire=0;

    while (1) { // Bucla infinita

    if (UART1_Data_Ready()) { // Daca se receptioneaza informatii

    caracter_sosit= UART1_Read(); // Se citesc

    UART1_Write(caracter_sosit); // Trimite informatiile prin UART

    if ((caracter_sosit != 'O') && \

    (caracter_sosit != 'P') && \

    (caracter_sosit != '+') && \

    (caracter_sosit != '-'))

    comanda=caracter_sosit;

    else

    {comanda_ant=comanda;

    comanda=caracter_sosit;}

    }

    switch (comanda) {

    case '+': if (viteza>10) viteza -= 10; comanda=comanda_ant; break;

    case '-': viteza += 10; comanda=comanda_ant; break;

    case 'P': oprire=0; comanda=comanda_ant; break;

    case 'O': oprire=1; comanda=comanda_ant; break;

    case 'A': Aprindere_porturi(); break;

    case 'S': Stingere_porturi(); break;

    }

    if (oprire==0) {

    switch (comanda) {

    case '1': Efect1(); break;

    case '2': Efect2(); break;

    case '3': Efect3(); break;

    case '4': Efect4(); break;

    }

    }

    }

    }

  • 29

    void Efect1() {

    P0=0x00;

    P1=0x00;

    P2=0x00;

    P3=0x03;

    P0=0x18 ; // APRINDE SI STINGE O CRUCE

    P1=0xff ;

    P2=0xff ;

    P3=0x1b ;

    Vdelay_ms(viteza);

    P0=0xe7;

    P1=0x00;

    P2=0x00;

    P3=0xe7;

    Vdelay_ms(viteza);

    P0=0x00;

    P1=0x00;

    P2=0x00;

    P3=0x03;

    Vdelay_ms(viteza);

    }

    void Efect2() {

    P0=0x00;

    P1=0x00;

    P2=0x00;

    P3=0x03;

    P0=0x055; //;

    P1=0xAA;

    P2=0x55;

    P3=0xAB;

    Vdelay_ms(viteza);

    P0=0xAA; //;

    P1=0x55;

    P2=0xAA;

    P3=0x57;

    Vdelay_ms(viteza);

    }

    void Efect3() {

    P0=0x00;

    P1=0x00;

    P2=0x00;

    P3=0x03;

    P0=0x00; //;

    P1=0x00;

    P2=0x0F;

  • 30

    P3=0x0F

    Vdelay_ms(viteza);

    P0=0x0F; //;

    P1=0x0F;

    P2=0x00;

    P3=0x03;

    Vdelay_ms(viteza);

    P0=0xF0; //;

    P1=0xF0;

    P2=0x00;

    P3=0x03;

    Vdelay_ms(viteza);

    P0=0x00; //;

    P1=0x00;

    P2=0xF0;

    P3=0xF3;

    Vdelay_ms(viteza);

    P0=0x00;

    P1=0x00;

    P2=0x00;

    P3=0x03;

    }

    void Efect4() {

    P0=0xFF;

    P1=0xFF;

    P2=0xC0;

    P3=0xC3;

    Vdelay_ms(viteza);

    P0=0x00; //;

    P1=0xFF;

    P2=0xFF;

    P3=0x03;

    Vdelay_ms(viteza);

    P0=0xFF;

    P1=0xFF;

    P2=0x7E;

    P3=0xC3;

    Vdelay_ms(viteza);

    P0=0xFF; //;

    P1=0xFF;

    P2=0xDB;

    P3=0xDB;

    Vdelay_ms(viteza);

    P0=0xFF;

    P1=0x31;

  • 31

    P2=0x31;

    P3=0xFF;

    Vdelay_ms(viteza);

    P0=0xFF; //;

    P1=0x9D;

    P2=0x95;

    P3=0x0FF;

    Vdelay_ms(viteza);

    P0=0xFF;

    P1=0xC3;

    P2=0xC3;

    P3=0xFF;

    Vdelay_ms(viteza);

    P0=0xDF; //;

    P1=0xDF;

    P2=0xFB;

    P3=0x0FB;

    Vdelay_ms(viteza);

    P0=0xDF; //;

    P1=0xDF;

    P2=0xFB;

    P3=0x0FB;

    Vdelay_ms(viteza);

    }

    void Aprindere_porturi() {

    P0=0xFF;

    P1=0xFF;

    P2=0xFF;

    P3=0xFF;

    }

    void Stingere_porturi() {

    P0=0x00;

    P1=0x00;

    P2=0x00;

    P3=0x03;

    }

  • 32

    3.3 Sistem de afiare cu 7 segmente programare n MikroC

    3.3.1Descrierea funcionrii sistemului

    Programul afiseaza un cronometru.

    Fig 3.3.1. Switch

  • 33

    3.3.2Protocolul de comunicaie ntre PC i sistemul de afiare.

    P Porneste cronometrul

    O Opreste cronometrul

    R Reseteaza cronometrul

    3.3.3Programele de funcionare scrise n MikroC.

    sbit Chip_Select at P1_1_bit;

    //sbit Chip_Select_Direction at TRISC0_bit;

    // End Serial 7-seg Display connections

    unsigned int zz,ss,mm;

    unsigned char caracter_sosit,oprire;

    void afiseaza_ora();

    void max7219_init1() {

    Chip_Select = 0; // SELECT MAX

    SPI1_write(0x09); // BCD mode for digit decoding

    SPI1_write(0xFF);

    Chip_Select = 1; // DESELECT MAX

    Chip_Select = 0; // SELECT MAX

    SPI1_write(0x0A);

    SPI1_write(0x0F); // Segment luminosity intensity

    Chip_Select = 1; // DESELECT MAX

    Chip_Select = 0; // SELECT MAX

    SPI1_write(0x0B);

    SPI1_write(0x07); // Display refresh

    Chip_Select = 1; // DESELECT MAX

    Chip_Select = 0; // SELECT MAX

    SPI1_write(0x0C);

    SPI1_write(0x01); // Turn on the display

    Chip_Select = 1; // DESELECT MAX

    Chip_Select = 0; // SELECT MAX

    SPI1_write(0x00);

    SPI1_write(0xFF); // No test

    Chip_Select = 1; // DESELECT MAX

    }

    void afiseaza_ora (unsigned int sutimi, unsigned int secunde, unsigned int minute) {

    Chip_Select = 0; // select max7219

    SPI1_write(8); // zeci de minute

  • 34

    SPI1_write((minute/10)%10);

    Chip_Select = 1; // deselect max7219

    Chip_Select = 0; // select max7219

    SPI1_write(7);

    SPI1_write(minute%10); // minute

    Chip_Select = 1; // deselect max7219

    Chip_Select = 0; // select max7219

    SPI1_write(6);

    SPI1_write(0x0A); // -

    Chip_Select = 1; // deselect max7219

    Chip_Select = 0; // select max7219

    SPI1_write(5);

    SPI1_write((secunde/10)%10); // zeci de secunde

    Chip_Select = 1; // deselect max7219

    Chip_Select = 0; // select max7219

    SPI1_write(4); //

    SPI1_write(secunde%10); // secunde

    Chip_Select = 1; // deselect max7219

    Chip_Select = 0; // select max7219

    SPI1_write(3); //

    SPI1_write(0x0A); // -

    Chip_Select = 1; // deselect max7219

    Chip_Select = 0; // select max7219

    SPI1_write(2); // zecimi secunda

    SPI1_write((sutimi/10)%10);

    Chip_Select = 1; // deselect max7219

    Chip_Select = 0; // select max7219

    SPI1_write(1); // sutimi secunda

    SPI1_write(sutimi%10);

    Chip_Select = 1; // deselect max7219

    }

    void main() {

    zz=0;

    ss=0;

    mm=0;

    oprire=0;

    Uart1_Init(4800);

    Delay_ms(100);

    SPI1_Init();

    max7219_init1();

    while(1){

    if (UART1_Data_Ready()) {

    caracter_sosit=UART1_Read();

    UART1_Write(caracter_sosit);

    }

  • 35

    switch (caracter_sosit) {

    case 'P': oprire=0; break;

    case 'O': oprire=1; break;

    case'R':zz=0;ss=0; mm=0; caracter_sosit='M'; afiseaza_ora(zz,ss,mm); break;

    }

    if (oprire==0) {

    delay_ms(10);

    zz=zz+1;

    if (zz==100) {

    zz=0;

    ss=ss+1;

    if (ss==60) {

    ss=0;

    mm=mm+1;

    if (mm==60) {

    mm=0;

    }

    }

    }

    afiseaza_ora(zz,ss,mm);

    }

    }

    }

    3.4 Sistem de afiare cu LCD text programare n MikroC

    3.4.1 Descrierea funcionrii sistemului

    Pe LCD-ul text se afiseaza textul Zeca.Alin .

  • 36

    Fig 3.4.1. Switch

    3.4.2 Protocolul de comunicaie ntre PC i sistemul de afiare (comenzile alese).

    P Pornire

    O Oprire

    W Incrementare viteza

    S Decrementare viteza

    A Deplasare text stanga

    D Deplasare text dreapta

    3.4.3Programele de funcionare scrise n MikroC.

    unsigned char oprire, caracter_sosit, comanda, comanda_ant;

    unsigned int viteza;

    // LCD module connections

    sbit LCD_RS at P1_2_bit;

    sbit LCD_EN at P1_5_bit;

    sbit LCD_D4 at P3_4_bit;

    sbit LCD_D5 at P3_5_bit;

    sbit LCD_D6 at P3_6_bit;

    sbit LCD_D7 at P3_7_bit;

    // End LCD module connections

    char afisare[] = "Zeca.Alin";

    void main() {

    UART1_Init(4800); // Initialize UART module at 4800 bps

    Delay_ms(1000); // Wait for UART module to stabilize

    viteza=500;

    oprire=0;

    Lcd_Init(); // Initializare LCD

  • 37

    Lcd_Cmd(_LCD_CLEAR); // Clear display

    Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off

    LCD_Out (1,17,afisare); // Afisare continut variabila 'afisare'

    la pe randul I la pozitia 17

    Delay_ms(10);

    while (1) {

    if (UART1_Data_Ready()) { // Daca se receptioneaza informatii

    caracter_sosit= UART1_Read(); // Se citeste

    UART1_Write(caracter_sosit); // ECHO REPLY

    if ((caracter_sosit != 'W') && \

    (caracter_sosit != 'S') && \

    (caracter_sosit != 'P') && \

    (caracter_sosit != 'O') && \

    (caracter_sosit != 'A') && \

    (caracter_sosit != 'D'))

    comanda=caracter_sosit;

    else

    {comanda_ant=comanda;

    comanda=caracter_sosit;}

    }

    switch (comanda) {

    case 'W': if (viteza>100) viteza -= 100; comanda=comanda_ant; break; //creste viteza

    case 'S': viteza += 100; comanda=comanda_ant; break; //scade viteza

    case 'P': oprire=0; comanda=comanda_ant; break; //porneste (=0)

    case 'O': oprire=1; comanda=comanda_ant; break; //opreste (=1)

    case 'A': {if (oprire==0) //deplasare stanga

    Lcd_Cmd(_LCD_SHIFT_LEFT);

    vdelay_ms(viteza); }; break;

    case 'D': {if (oprire==0) //deplasare dreapta

    Lcd_Cmd(_LCD_SHIFT_RIGHT);

    vdelay_ms(viteza); }; break;

    }

    }

    }

    3.5 Sistem de afiare cu LCD grafic programare n MikroC

    3.5.1 Descrierea funcionrii sistemului

    Pe ecran se afiseaza textul Alin.Zeca .

  • 38

    Fig 3.5.1. Switch

    3.5.2Protocolul de comunicaie ntre PC i sistemul de afiare (comenzile alese).

    P Pornire

    O Oprire

    W Incrementare viteza

    S Decrementare viteza

    A Deplasare text stanga

    D Deplasare text dreapta

    3.5.3Programele de funcionare scrise n MikroC.

    // Glcd module connections

    char GLCD_DataPort at P2;

    sbit GLCD_CS1 at P0_2_bit;

    sbit GLCD_CS2 at P0_3_bit;

    sbit GLCD_RS at P0_4_bit;

    sbit GLCD_RW at P0_5_bit;

    sbit GLCD_EN at P0_6_bit;

    sbit GLCD_RST at P0_7_bit;

    // End Glcd module connections

    unsigned char oprire, caracter_sosit, comanda, comanda_ant;

    unsigned int viteza;

    unsigned short i;

  • 39

    char *afisare;

    void main() {

    UART1_Init(4800);

    Delay_ms(100);

    viteza=500;

    oprire=1;

    comanda='A';

    Glcd_Init(); // Initialize GLCD

    Glcd_Fill(0x00); // Clear GLCD

    Glcd_Set_Font(Character8x7, 8, 7, 32); // setare font, latime 8, inaltime 7, offset 32

    afisare = "Alin.Zeca";

    while(1) {

    if (UART1_Data_Ready()) { // Daca se receptioneaza informatii

    caracter_sosit= UART1_Read(); // Se citesc

    UART1_Write(caracter_sosit); // Trimite informatiile prin UART

    if ((caracter_sosit == 'A') || (caracter_sosit == 'D')) {

    comanda=caracter_sosit;

    }

    switch(caracter_sosit) {

    case 'W': if (viteza>50) viteza -= 50; break;

    case 'S': viteza += 50; break;

    case 'P': oprire=0; break;

    case 'O': oprire=1; break;

    }

    }

    switch(comanda) {

    case 'A': {if (oprire==0)

    {

    Glcd_Fill(0x00);

    i=i-5;

    Glcd_Write_Text(afisare, i, 3, 1); // Scrie txt_afis in pozitia i, pagina 3,

    culoare inversata

    Vdelay_ms(viteza); break;

  • 40

    }

    }

    case 'D': {if (oprire==0)

    {

    Glcd_Fill(0x00);

    i=i+5;

    Glcd_Write_Text(afisare, i, 3, 1); // Scrie txt_afis in pozitia i, pagina 3,

    culoare inversata

    Vdelay_ms(viteza); break;

    }

    }

    }

    }

    }

    3.6 Programele de funcionare scrise n Visual Basic.

    3.6.1 Descrierea interfeelor grafice utilizator

    3.6.2 Programele de funcionare scrise n Visual Basic.

    Main:

    Imports System.IO.Ports

    Class Main

    Private Sub IesireToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles IesireToolStripMenuItem.Click

    End

    End Sub

    Private Sub MatriceDeLEDurilimbajDeAsamblareToolStripMenuItem_Click(ByVal sender As

    System.Object, ByVal e As System.EventArgs) Handles

    MatriceDeLEDurilimbajDeAsamblareToolStripMenuItem.Click

  • 41

    cmd_Pct31.Show()

    End Sub

    Private Sub MatriceDeLEDurilimbajMikroCToolStripMenuItem_Click(ByVal sender As System.Object,

    ByVal e As System.EventArgs) Handles MatriceDeLEDurilimbajMikroCToolStripMenuItem.Click

    cmd_pct32.Show()

    End Sub

    Private Sub Afisaj7SegmenteToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles Afisaj7SegmenteToolStripMenuItem.Click

    cmd_pct33.Show()

    End Sub

    Private Sub LCDGraficMikroCToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles LCDGraficMikroCToolStripMenuItem.Click

    cmd_pct34.Show()

    End Sub

    Private Sub LCDTextMikroCToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles LCDTextMikroCToolStripMenuItem.Click

    cmd_pct35.Show()

    End Sub

    Private Sub InterfeteGraficeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles InterfeteGraficeToolStripMenuItem.Click

    End Sub

    Private Sub VisualStudio2010ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles VisualStudio2010ToolStripMenuItem.Click

    cmd_p.Show()

    End Sub

    Private Sub Textbox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles PORTSER.TextChanged

    End Sub

    Private Sub PORTSER_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles PORTSER.TextChanged

    PORTSERIAL = PORTSER.Text

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    port = New IO.Ports.SerialPort

    End Sub

    Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    MyBase.Load

    port = New SerialPort(PORTSERIAL, 4800, Parity.None, 8, StopBits.One)

    End Sub

    Private Sub cmd_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_exit.Click

    End

    End Sub

    End Class

    Limbaj de asamblare :

    Imports System.IO.Ports

    Class cmd_pct31

  • 42

    Private Sub cmd_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_exit.Click

    Close()

    End Sub

    Private Sub cmd_Efect1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_Efect1.Click

    port.Open()

    port.Write("1")

    port.Close()

    End Sub

    Private Sub cmd_viteza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_viteza.Click

    port.Open()

    port.Write("+")

    port.Close()

    End Sub

    Private Sub cmd_Efect2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_Efect2.Click

    port.Open()

    port.Write("2")

    port.Close()

    End Sub

    Private Sub cmd_Efect3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_Efect3.Click

    port.Open()

    port.Write("3")

    port.Close()

    End Sub

    Private Sub cmd_Efect4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_Efect4.Click

    port.Open()

    port.Write("4")

    port.Close()

    End Sub

    Private Sub cmd_aprindere_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_aprindere.Click

    port.Open()

    port.Write("E")

    port.Close()

    End Sub

    Private Sub cmd_Stingere_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_Stingere.Click

    port.Open()

    port.Write("R")

    port.Close()

    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_micsorare.Click

    port.Open()

    port.Write("-")

    port.Close()

    End Sub

    Private Sub cmd_pornire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_pornire.Click

    port.Open()

    port.Write("W")

    port.Close()

    End Sub

    Private Sub cmd_oprire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_oprire.Click

    port.Open()

    port.Write("Q")

    port.Close()

    End Sub

  • 43

    Private Sub cmd_pct31_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    MyBase.Load

    port = New SerialPort(PORTSERIAL, 4800, Parity.None, 8, StopBits.One)

    End Sub

    End Class

    Leduri MicroC:

    Imports System.IO.Ports

    Public Class cmd_pct32

    Private Sub cmd_Efect1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_Efect1.Click

    port.Open()

    port.Write("1")

    port.Close()

    End Sub

    Private Sub cmd_Efect2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_Efect2.Click

    port.Open()

    port.Write("2")

    port.Close()

    End Sub

    Private Sub cmd_Efect3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_Efect3.Click

    port.Open()

    port.Write("3")

    port.Close()

    End Sub

    Private Sub cmd_Efect4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_Efect4.Click

    port.Open()

    port.Write("4")

    port.Close()

    End Sub

    Private Sub cmd_aprindere_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_aprindere.Click

    port.Open()

    port.Write("A")

    port.Close()

    End Sub

    Private Sub cmd_Stingere_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_Stingere.Click

    port.Open()

    port.Write("S")

    port.Close()

    End Sub

    Private Sub cmd_viteza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_viteza.Click

    port.Open()

    port.Write("+")

    port.Close()

    End Sub

    Private Sub cmd_micsorare_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_micsorare.Click

    port.Open()

    port.Write("-")

    port.Close()

    End Sub

    Private Sub cmd_pornire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_pornire.Click

    port.Open()

    port.Write("P")

    port.Close()

    End Sub

  • 44

    Private Sub cmd_oprire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_oprire.Click

    port.Open()

    port.Write("O")

    port.Close()

    End Sub

    Private Sub cmd_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_exit.Click

    Close()

    End Sub

    Private Sub cmd_pct32_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    MyBase.Load

    port = New SerialPort(PORTSERIAL, 4800, Parity.None, 8, StopBits.One)

    End Sub

    End Class

    Afisor cu 7 segmente:

    Imports System.IO.Ports

    Public Class cmd_pct33

    Private Sub cmd_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_exit.Click

    Close()

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_stop.Click

    port.Open()

    port.Write("O")

    port.Close()

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_reset.Click

    port.Open()

    port.Write("R")

    port.Close()

    End Sub

    Private Sub cmd_start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_start.Click

    port.Open()

    port.Write("P")

    port.Close()

    End Sub

    Private Sub cmd_pct33_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    MyBase.Load

    port = New SerialPort(PORTSERIAL, 4800, Parity.None, 8, StopBits.One)

    End Sub

    End Class

    LCD graphic:

    Imports System.IO.Ports

    Public Class cmd_pct34

    Private Sub cmd_viteza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_viteza.Click

    port.Open()

    port.Write("W")

    port.Close()

    End Sub

  • 45

    Private Sub cmd_micsorare_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_micsorare.Click

    port.Open()

    port.Write("S")

    port.Close()

    End Sub

    Private Sub cmd_stanga_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_stanga.Click

    port.Open()

    port.Write("A")

    port.Close()

    End Sub

    Private Sub cmd_oprire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_oprire.Click

    port.Open()

    port.Write("O")

    port.Close()

    End Sub

    Private Sub cmd_dreapta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_dreapta.Click

    port.Open()

    port.Write("D")

    port.Close()

    End Sub

    Private Sub cmd_pornire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_pornire.Click

    port.Open()

    port.Write("P")

    port.Close()

    End Sub

    Private Sub Comenzi_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As

    System.EventArgs)

    End Sub

    Private Sub cmd_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_exit.Click

    Close()

    End Sub

    Private Sub cmd_pct34_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    MyBase.Load

    port = New SerialPort(PORTSERIAL, 4800, Parity.None, 8, StopBits.One)

    End Sub

    End Class

    LCD text:

    Imports System.IO.Ports

    Public Class cmd_pct35

    Private Sub cmd_stanga_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    port.Open()

    port.Write("A")

    port.Close()

    End Sub

    Private Sub cmd_viteza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    port.Open()

    port.Write("W")

    port.Close()

    End Sub

    Private Sub cmd_micsorare_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    port.Open()

    port.Write("S")

    port.Close()

    End Sub

    Private Sub cmd_dreapta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    port.Open()

    port.Write("D")

    port.Close()

  • 46

    End Sub

    Private Sub cmd_pornire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    port.Open()

    port.Write("P")

    port.Close()

    End Sub

    Private Sub cmd_oprire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    port.Open()

    port.Write("O")

    port.Close()

    End Sub

    Private Sub cmd_pct35_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    MyBase.Load

    port = New SerialPort(PORTSERIAL, 4800, Parity.None, 8, StopBits.One)

    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As

    System.EventArgs)

    End Sub

    Private Sub cmd_stanga_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_stanga.Click

    port.Open()

    port.Write("A")

    port.Close()

    End Sub

    Private Sub cmd_dreapta_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_dreapta.Click

    port.Open()

    port.Write("D")

    port.Close()

    End Sub

    Private Sub cmd_viteza_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_viteza.Click

    port.Open()

    port.Write("W")

    port.Close()

    End Sub

    Private Sub cmd_micsorare_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_micsorare.Click

    port.Open()

    port.Write("S")

    port.Close()

    End Sub

    Private Sub cmd_pornire_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_pornire.Click

    port.Open()

    port.Write("P")

    port.Close()

    End Sub

    Private Sub cmd_oprire_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Handles cmd_oprire.Click

    port.Open()

    port.Write("O")

    port.Close()

    End Sub

    Private Sub cmd_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    cmd_exit.Click

    Close()

    End Sub

    Private Sub Comenzi_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As

    System.EventArgs)

    End Sub

    End Class

  • 47

    BIBLIOGRAFIE

    [1] ***,LED,

    https://www.google.ro/search?q=neon&source=lnms&tbm=isch&sa=X&ei=ncTOUpzjIIXQhAfRrYGoBQ&

    ved=0CAcQ_AUoAQ&biw=1366&bih=676#q=led&tbm=isch&imgdii=_, accesat n data de 09.12.2013

    [2] LCD,

    https://www.google.ro/search?q=neon&source=lnms&tbm=isch&sa=X&ei=ncTOUpzjIIXQhAfRrYGoBQ&

    ved=0CAcQ_AUoAQ&biw=1366&bih=676#q=lcd-uri&tbm=isch&imgdii=_, accesat n data de

    09.12.2013.

    [3] ***, UNI-DS6 Development System, http://www.mikroe.com/unids/, accesat n data de

    09.12.2013.