Sunteți pe pagina 1din 40

Introducere

Exemplele oferite n aceast capitol v vor arta cum s conectai microcontrolerul PIC cu
alte componente sau dispozitive periferice cnd producei propriul sistem bazat pe
microcontroler. Fiecare exemplu conine descriere detaliat a prii hardare cu schema
electric !i comentarii despre pro"ram. #oate pro"ramele pot fi luate direct din prezentarea
de pe internet $%i&roEle&troni&a'.
Alimentarea microcontrolerului
(n "eneral) alimentarea corect este de o importan maxim pentru funcionarea corect a
sistemului cu microcontroler. Poate fi u!or comparat cu respiraia unui om n aer. Este mai
probabil ca un om care respir n aer curat va tri mai mult dect un om care locuie!te ntr*
un mediu poluat. Pentru o funcionare corect a oricrui microcontroler) este necesar s
oferim o surs stabil de alimentare) un reset si"ur n momentul n care l pornii !i un
oscilator. Conform specificaiilor tehnice oferite de productorul microcontrolerului PIC)
tensiunea de alimentare ar trebui s se ncadreze ntre +.,- !i ..,- pentru toate versiunile.
Cea mai simpl soluie este folosirea stabilizatorului de tensiune /%01,2 care ofer tensiune
stabil de 32- la ie!ire. 4 astfel de surs este ilustrat n fi"ura de mai 5os.
Pentru a funciona corect sau pentru a avea o tensiune stabilizat la 2- la ie!ire 6pinul 78)
tensiunea de intrare pe pinul 9 la /%01,2 ar trebui s fie ntre 0- !i +:-. (n funcie de
curentul consumat de monta5 vom folosi tipul corespunztor de stabilizator de tensiune
/%01,2. ;unt diferite versiuni de /%01,2. Pentru consum de curent de pn la un 9< ar
trebui s folosim versiunea n capsul #4=++, cu posibilitatea de rcire adiional. >ac
consumul total este de 2,m<) putem s folosim 01/,2 6versiune de stabilizator n capsul
mic #4=?+ pentru curent de pn la 9,,m<8.
Macrouri folosite n programe
Exemplele din seciunile urmtoare ale acestui capitol utilizeaz deseori @<I#) @<I#x !i
PAIB#) de aceea ele vor fi explicate n detaliu.
%acrourile @<I#) @<I#x
Fi!ierul @ait.inc conine dou macrouriC @<I# !i @<I#x. Prin intermediul acestor macrouri
este posibil s repartizm ntrzieri de timp n intervale variate. <mndou macrouri
folosesc dep!irea contorului #%A, ca un interval de timp de baz. Prin schimbarea
prescaler=ului putem schimba lun"imea intervalului dep!irii contorului #%A,.
>ac folosim un oscilator 6rezonator8 de :%Dz) pentru valorile prescaler=ului ,)9 !i 0 care
divid ceasul de baz al oscilatorului) intervalul urmat de o dep!ire a contorului #%A, va fi
,.29+) 9.,+ !i .2.7ms. Practic) aceasta nseamn c cea mai mare ntrziere va fi
+2.x.2.7ms care este e"al cu 9..0+ secunde.
Pentru a utiliza macrouri n pro"ramul principal este necesar s declarm variabilele cEcle
!i presc@<I# dup cum vom vedea n exemplele ce vor urma acestui capitol. %acroul @<I#
are un sin"ur ar"ument. -aloarea standard atribuit prescaler=ului acestui macro este 9
69.,+ms8) !i nu poate fi schimbat.
@<I# timeconstF9
timeconst_1 este un numr de la , la +22. Prin multiplicarea acestui numr cu perioada de
timp de dep!ire 6overflo8 vom obine durata total a ntrzieriiC #I%E G timeconstF9 x
9.,+ms.
Exemplu: @<I# .9,,
Exemplul arat cum s obinem o ntrziere de 9,,x9.,+ms) sau durata total de 9,+ms.
;pre deosebire de macroul @<I#) macroul @<I#H mai are un ar"ument care poate atribui o
valoare prescaler=ului. %acroul @<I#H are dou ar"umenteC
timeconst_2 este un numr de la , la +22. Prin multiplicarea acestui numr cu perioada de
timp de dep!ire 6overflo8 vom obine durata total a ntrzieriiC #I%E G timeconstF9 x
9.,+ms x PAE;Cext.
PRESCext este un numr de la , la 0 care seteaz relaia dintre tact !i timer=ul #%A,.
Exemplu: @<I#H .9,,)0
Exemplul arat cum s obinem o ntrziere de 9,,x.2.7ms) sau durata total de .27ms.
%acroul PAIB#
%acroul PAIB# este localizat n fi!ierul Print.inc. El u!ureaz lucrul pentru trimiterea unui !ir
de date la unul dintre dispozitivele de ie!ire) cum ar fiC /C>) A;+7+) imprimant
matricial...etc. Cea mai u!oar cale pentru a forma o serie este prin folosirea unei
directive dt 6define table8. <ceast instruciune memoreaz o serie de date n cadrul
memoriei pro"ramului ca un "rup de instruciuni retl al crui operand este data din !ir.
%odalitatea prin care o astfel de secven este format folosind instruciunea dt este artat
n urmtorul exempluC
or" ,x,,
"oto %ain
;trin" movf PC/
;trin"9 dt Iacesta este un sir J<;CIII
;trin"+ dt Ial doilea sirI
End
%ain
movl .2
call ;trin"
C
Prima instruciune dup eticheta %ain scrie poziia unui membru al !irului n re"istrul @.
Executm un salt cu instruciunea call la eticheta !irului unde poziia membrului !irului este
adunat la valoarea PC 6Pro"ram Counter8C PC/ G PC/ 3 @. (n continuare avem n pro"ram
counter o adres a instruciunii retl cu membrul dorit al !irului. (n momentul n care
aceast instruciune este executat) membrul !irului va fi n re"istrul @) !i adresa
instruciunii care va fi executat dup instruciunea call va fi n pro"ram counter. Eticheta
end este o metod ele"ant de a marca adresa la care !irul se termin.
%acroul PAIB# are cinci ar"umenteC
PAIB# macro <ddr) ;tart) End) -ar) 4ut
Addr este o adres unde unul sau mai multe !iruri 6situate unul dup altul8 ncep.
Start este o adres a primului membru al !irului.
End este o adres unde !irul se termin.
ar este variabila care are rolul de a arta 6pointa8 membrii !irului.
!ut este un ar"ument pe care l folosim pentru a trimite adresa rutinelor existente atribuite
dispozitivelor de ie!ire cum ar fiC /C>) A;=+7+) etc.
%acroul PAIB# scrie la ie!ire un !ir $mi&roEle&troni&a' format din caractere <;CII la un
dispozitiv de afi!are /C>. Kirul ta"es one part of program memor# ncepnd cu adresa
,x,7.

Example
/i"ht Emittin" >iodes */E>uri
/edurile sunt unele dintre cele mai folosite elemente n electronic. /E> este o abreviere pentru $/i"ht Emittin"
>iode'. (n momentul n care ale"em un led) sunt mai muli parametri de care trebuie s inem seamaC
diametrul) care este deobicei 7 sau 2mm 6milimetri8) curentul de funcionare care este n 5ur de 9,m< 6poate fi
mai mic dect +m< pentru ledurile cu randament maximC emisie de lumin puternic8 !i bineneles culoarea)
care poate fi ro!ie sau verde de!i mai sunt leduri portocalii) albastre) "albene... . /edurile trebuie conectate
corect pentru a emite lumin !i rezistena care limiteaz curentul trebuie s fie de o valoare corect pentru ca
ledul s nu se ard 6supranclzire8. #ensiunea pozitiv de alimentare este le"at la <B4>) iar catodul este le"at
la tensiunea ne"ativ sau la masa circuitului. Pentru a identifica fiecare pin) catodul este cel mai scurt pin iar
corpul are n "eneral o te!itur pe partea catodului. >iodele vor emite lumin numai dac curentul circul de la
<B4> spre C<#4>. <ltfel 5onctiunea PB este polarizat invers !i curentul nu va circula. Pentru a conecta corect
un led trebuie adu"at o rezisten n serie pentru a limita de curentul prin diod) pentru ca aceasta s nu se
ard. -aloarea rezistenei este determinat de curentul care vrei s circule prin led. Curentul maxim care poate
curge printr=un led a fost stabilit de productor. /edurile cu randament maxim pot produce rezultate bune cu un
curent mai mic de de +m<.
Pentru a determina valoarea rezistenei serie) trebuie s
cunoa!tem valoarea tensiunii de alimentare. >e aici
scdem tensiunea care cade pe led. <ceast valoare va
varia de la 9)+v la 9).v) depinznd de culoarea ledului.
Aspunsul este valoarea lui Lr. Folosind aceast valoare
!i curentul care vrem s circule prin /E> 6ntre ,.,,+<
!i ,.,9<8 putem s aflm valoarea rezistenei cu
a5utorul formuleiC R$%R & I.
/edurile sunt conectate la microcontroler n dou metode. Lna este s le activm cu zero lo"ic !i a doua este s
le activm cu unu lo"ic. Prima metod este numit lo"ic BEM<#I-N iar cea de=a doua este numit lo"ic
P4OI#I-N. Fi"ura de mai sus ilustreaz modalitatea de conectare prin lo"ic P4OI#I-N. >eoarece lo"ica
P4OI#I-N ofer o tensiune de 32v diodei !i rezistenei serie) ledul va emite lumin de fiecare dat cnd un pin
al portului P este n starea 9 lo"ic 69 G ie!ire DIMD8. /o"ica BEM<#I-N necesit ca ledul s fie ntors !i
terminalele de tip anod s fie conectate mpreun la borna pozitiv a sursei. (n momentul n care este livrat o
ie!ire /4@ de la microcontroler ctre anod !i rezisten) ledul va lumina.
Connecting 'E( diodes to P!R)* microcontroller
Exemplul urmtor initializeaz portul P ca port de ie!ire !i seteaz unu lo"ic pe fiecare pin al portului P pentru a
activa toate ledurile.

Pagina anterioar+ Con,inut Pagina urm+toare
#astatura
#astaturile sunt dispozitive mecanice utilizate pentru a executa o ntrerupere sau pentru a realiza o conexiune
ntre dou puncte. Ele au diferite mrimi !i au diferite scopuri. #astele care sunt utilizate aici sunt denumite
$taste dip'. Ele sunt lipite direct pe o plac de circuit !i sunt deseori ntlnite n electronic. <u patru pini 6doi
pentru fiecare contact8) ceea ce le ofer stabilitate mecanic.
Exemplu pentru conectarea tastelor la pinii microcontrolerului
Funcia tastei este simpl. (n momentul n care apsm o tast) dou contacte sunt unite !i se realizeaz o
conexiune. #otu!i) nu toate lucrurile sunt simple. Problema const n natura tensiunii ca valoare) !i n
imperfeciunea contactelor mecanice. (nainte ca un contact s fie realizat sau decuplat) exist o perioad scurt
de timp cnd pot aprea vibraii 6oscilaii8 ca rezultat al imperfeciunii contactelor mecanice) sau din cauza
vitezei diferite de apsare 6acest lucru depinde de persoana care apas tasta8. #ermenul atribuit acestui
fenomen este denumit s-itc. /contact0 de1ounce. >ac acest lucru nu este prevzut n momentul n care un
pro"ram este conceput) poate aprea o eroare sau pro"ramul poate produce mai mult dect un sin"ur impuls la
ie!ire pentru o sin"ur apsare de tast. Pentru a evita acest lucru) putem introduce o mic ntrziere cnd
detectm nchiderea unui contact. <ceasta va asi"ura faptul c apsarea unei taste este interpretat ca un
sin"ur impuls. (ntrzierea de de1ounce este produs n softare !i durata ntrzierii depinde de buton !i de
scopul butonului. Problema poate fi parial rezolvat prin adu"area unui condensator n paralel la tast) dar un
pro"ram bine realizat ofer rezultate mai bune. Pro"ramul poate fi a5ustat pn cnd detecia fals este complet
eliminat. (n anumite cazuri o simpl ntrziere poate fi suficient dar dac vrei ca pro"ramul s se ocupe de
mai multe lucruri n acela!i timp) o simpl ntrziere va nsemna c procesorul nu va face nimic pe o lun"
perioad de timp !i poate rata alte intrri sau poate decupla portul de ie!ire ctre un afi!or. ;oluia este s avem
un pro"ram care s urmreasc apsarea unei taste ct !i decuplarea unei taste. %acroul de mai 5os poate fi
folosit pentru "e#press de1ounce.
%acroul precedent are mai multe ar"umente care trebuiesc explicateC
PL##4B macro Di/o) Port) Pit) >elaE) <ddress
2i'o poate fi J,J sau J9J care reprezint frontul cresctor sau cztor unde subrutinele pot fi executate n
momentul n care apsai o tast.
Port este un port al microcontrolerului la care trebuie conectat tasta. (n cazul microcontrolerului PIC9.F1:) el
poate fi P4A# < sau P4A# P.
*it este un pin al portului la care tasta este conectat.
(ela# este un numr de la , la +22) folosit pentru a atribui timpul necesar pentru a detecta "e# de1ounce 3
contact oscillation 3 to stop. El este calculat astfelC #I%E G >elaE x 9ms.
Adress este adresa la care microcontrolerul se duce dup ce este detectat un eveniment provenit de la
tastatur. ;ubrutina de la aceast adres execut instruciunile necesare pentru apsarea unei taste.
Exemplu 1 PL##4B ,) P4A#<) 7) .9,,) #ester9Fabove
#asta=9 este conectat la A<, 6prima ie!ire a portului <8 cu o ntrziere de 9,, milisecunde !i cu o reacie la
zero lo"ic. ;ubrutina care proceseaz tasta este localizat la adresa etichetei #ester9Fabove.
Exemplu 2 PL##4B 9) P4A#<) +) .+,,) #ester9Fbelo
#asta=+ este conectat la A<9 6a doua ie!ire a portului <8 cu +,,ms ntrziere !i cu reacie la unu lo"ic.
Exemplul urmtor arat modul de folosire ntr=un pro"ram. PL##4B.<;% aprinde !i stin"e /E>ul. /E>ul este
conectat la cea de=a !aptea ie!ire a portului P. #asta=9 este folosit pentru a aprinde /E>ul. #asta=+ stin"e
/E>ul.

Pagina anterioar+ Con,inut
4ptocuplor
4ptocuplorul combin un /E> !i un fototranzistor n aceea!i capsul. Aolul unui optocuplor este acela de a
separa dou pri de circuit.
<ceasta este realizat pentru un numr de motiveC
Interferen,a4 4 parte a unui circuit poate fi ntr=o zon unde este influenat de interferene 6cum ar fi
cele de la motoarele electrice) echipamente de sudur) motoare termice etc.8. >ac ie!irea acestui circuit
trece printr=un optocuplor spre alt circuit) numai semnalele dorite vor trece prin optocuplor. ;emnalele de
interferen nu vor avea destul $putere' s activeze /E>ul din optocuplor !i de aceea ele sunt eliminate.
Exemplele tipice sunt unitile industriale care au mai multe interferene care afecteaz semnalele pe
cablu. >ac aceste interferene afecteaz funcia unei seciuni de control) vor apare erori !i unitatea nu
va mai funciona.
Separare simultan+ 5i intensitatea semnalului4 Ln semnal mai mic de 7v este capabil s activeze un
optocuplor !i ie!irea optocuplorului poate fi conectat la o linie de intrare a microcontrolerului.
%icrocontrolerul are nevoie de un impuls de intrare de 2v !i n caz semnalul de 7v este amplificat la 2v.
Poate fi folosit pentru a amplifica curentul semnalului. Litai=v mai 5os pentru utilizarea unei linii de
ie!ire a microcontrolerului pentru amplificare de curent.
Separare de tensiune mare4 4ptocuploarele au caliti nnscute pentru separarea tensiunilor mari.
>eoarece /E>ul este complet separat de fototranzistor) optocuploarele pot da dovad de izolare de
tensiune de 7Qv sau chiar mai mare.
4ptocuploarele pot fi folosite ca dispozitive de intrare sau ie!ire. Ele au funcii adiionale cum ar fi ;chmitt
tri""erin" 6ie!irea unui ;chmitt tri""er este , sau 9 * se schimb ncet ridicnd !i cobornd forma de und n
valori definite /4@ sau DIMD8. 4ptocuploarele sunt mpachetate ca o sin"ur unitate sau n "rupuri de dou sau
mai multe ntr=o sin"ur capsul. Ele mai sunt denumite foto=ntreruptoare n care un disc cu fante este
introdus ntr=un lca! ntre /E> !i fototranzistor !i de fiecare dat cnd lumina este ntrerupt) tranzistorul
produce un impuls. Fiecare optocuplor are nevoie de dou alimentri pentru a funciona. Ele pot fi folosite cu o
alimentare) dar capacitatea de izolare a tensiunii este pierdut.
4ptocuplor pe o linie de intrare
%odul de funcionare este simpluC cnd a5un"e un semnal) /E>ul din optocuplor este aprins !i lumineaz pe
baza fototranzistorului din aceea!i carcas. (n momentul n care tranzistorul este activat) tensiunea dintre
colector !i emitor cade la ,.2v sau mai puin !i microcontrolerul sesizeaz acest lucru ca zero lo"ic pe pinul A<:.
Exemplul de mai 5os este un contor) folosit pentru numrarea produselor de pe o linie de producie) pentru
determinarea vitezei motorului) pentru contorizarea numrului de revoluii a unei axe etc. Considerm senzorul
ca un microntreruptor. >e fiecare dat cnd ntreruptorul este nchis) /E>ul este luminat. /E>ul $transfer'
semnalul ctre fototranzistor !i operaia fototranzistorului livreaz /4@ ctre intrarea A<: a microcontrolerului.
Ln pro"ram n microcontroler va fi necesar pentru a preveni contorizrile false !i un indicator conectat la oricare
dintre ie!irile microcontrolerului va indica starea curent a contorului.
Exemplu de linie de intrare cu optocuplor
4ptocuplor pe o linie de ie!ire
Ln optocuplor poate fi folosit pentru a separa semnalul de ie!ire a unui microcontroler fa de un dispozitiv de
ie!ire. <cest lucru poate fi necesar pentru separarea tensiunilor nalte sau pentru amplificare. Ie!irea unor
anumite microcontrolere este limitat la +2m<. 4ptocuplorul va lua semnal de curent sczut din microcontroler
!i tranzistorul de ie!ire va comanda un /E> sau un releu) cum este exemplificat mai 5osC
!utput line optocoupler example
Pro"ramul pentru acest exemplu este simplu. Prin livrarea unui R9J lo"ic n pinul : al portului <) /E>ul se va
aprinde !i tranzistorul va fi activat n optocuplor. 4rice dispozitiv conectat la ie!irea optocuplorului va fi activat.
Curentul limit pentru tranzistor este n 5ur de +2,m<.

Pagina anterioar+ Con,inut Pagina urm+toare

S CopEri"ht +,,7. mi&roEle&troni&a. <ll Ai"hts Aeserved. For anE comments contact ebmaster.
Aeleul
Aeleul este un dispozitiv electromecanic care transform un semnal electric ntr=o mi!care mecanic. El este
alctuit dintr=o bobin din conductori izolai nf!urai pe un nucleu metalic !i o armtur metalic cu unul sau
mai multe contacte. (n momentul n care o tensiune de alimentare este aplicat la bornele unei bobin) curentul
circul !i va fi produs un cmp ma"netic care mi!c armtura pentru a nchide un set de contacte !iTsau pentru
a deschide un alt set. Cnd alimentarea este dezactivat din releu) cade fluxul ma"netic din bobin !i se produce
o tensiune nalt n direcia opus. <ceast tensiune poate strica tranzistorul de comand !i de aceea este
conectat o diod cu polarizare invers de=a lun"ul bobinei pentru a scurtcircuita vrfurile de tensiune n
momentul n care apar.
Conectarea unui releu la microcontroler prin intermediul unui tran6istor
%ulte microcontrolere nu pot comanda un releu direct !i de aceea un tranzistor de comand este necesar. Ln
DIMD pe baza tranzistorului activeaz tranzistorul !i acesta la rndul lui activeaz releul. Aeleul poate fi conectat
la orice dispozitiv electric prin intermediul contactelor. Aezistena de 9,Q din baza tranzistorului limiteaz
curentul dinspre microcontroler la o valoare solicitat de tranzistor. Aezistena de 9,Q dinspre baz !i bara
ne"ativ previne ca tensiunile de z"omot aplicate n baza tranzistorului s activeze releul. >e aceea numai un
semnal clar de la microcontroler va activa releul.
Connecting t.e optocoupler and rela# to a microcontroller
Ln releu poate fi de altfel activat prin intermediul unui optocuplor care n acel!i timp amplific curentul provenit
de la ie!irea microcontrolerului !i ofer un "rad nalt de izolare. 4ptocuploarele 2I72 C%RRE8) deobicei conin
un tranzistor cu o ie!ire $>arlin"ton' pentru a oferi curent mare de ie!ire. Conectarea prin intermediul unui
optocuplor este recomandat n mod special pentru aplicaiile microcontroler unde motoarele sunt activate !i
z"omotulele de comutaie provenite de la motor pot a5un"e n microcontroler prin intermediul liniilor de
alimentare. 4ptocuplorul comand un releu iar releul activeaz motorul. Fi"ura de mai 5os arat pro"ramul
necesar pentru activarea releului !i include cteva din macrourile de5a discutate.
Pagina anterioar+ Con,inut
Menerarea unui sunet
Ln buzzer piezo poate fi adu"at la o linie de ie!ire a unui microcontroler pentru a livra tonuri $audio') piuituri
!i semnale. Este important de !tiut c sunt dou mari tipuri de dispozitive piezoelectrice emitoare de sunet.
Lna are componente active nuntrul carcasei !i are nevoie numai de alimentare de curent continuu pentru a
emite un ton sau un beep. (n "eneral tonurile sau beep=urile emise de aceste difuzoare sau piuitoare nu pot fi
schimbate * ele sunt fixe din cauza circuitelor interne. <cesta nu este tipul despre care discutm n acest articol.
Cellalt tip const dintr=un buzzer piezo !i necesit semnal livrat n ea pentru a funciona. >epinznd de
frecvena formei de und) ie!irea poate fi ton) melodie) alarm sau chiar un mesa5 vocal. Pentru ca ele s
funcioneze trebuie s livrm un ciclu care este alctuit din semnale DIMD !i /4@. #ranziia de la DIMD la /4@
sau de la /4@ la DIMD cauzeaz mi!cri diafra"mei pentru a produce secvene de sunete. Forma de und poate
avea o schimbare fin de la o valoare la alta 6denumit und sinusoidal8 sau o schimbare rapid 6denumit
und dreptun"hiular8. Ln calculator este ideal pentru producerea de unde dreptun"hiulare. /ivrarea de unde
dreptun"hiulare produce o ie!ire u!or "rosier. Conectarea unui buzzer piezo este foarte u!oar. Ln pin este
conectat la linia ne"ativ) iar cealalt la o ie!ire a microcontrolerului) dup cum este ilustrat n fi"ura de mai 5os.
<cesta va livra o form de und de 2v ctre buzzerul piezo. Pentru a produce o tensiune mai mare) forma de
und trebuie amplificat !i aceasta necesit un tranzistor de comand !i o bobin.
Conectarea unui 1u66er pie6o la un microcontroler
Ca !i n cazul tastaturii) putei folosi un macro care va furniza o rutin PEEP ntr=un pro"ram cnd va fi necesar.
PEEP macro freU) duration
fre9: frecvena sunetului. Ln numr mai mare produce o frecven mai nalt.
duration: durata sunetului. Ln numr mai mare reprezint un sunet mai lun".
Exemplu 1: PEEP ,xFF) ,x,+
Ie!irea buzzerului piezo are cea mai nalt frecven !i durata de 2 cicluri de :;4<ms) ceea ce rezult
97,..ms.
Exemplu 2: PEEP ,x?,) ,x,2
Ie!irea buzzerului piezo are frecvena de ,x?, !i durata de 2 cicluri de .2.7ms. Este bine ca ar"umentele
macroului s fie determinate prin experimente !i astfel s fie ales sunetul care se potrive!te cel mai bine pentru
aplicaie. (n continuare este prezentat macroul PEEPC
Pagina anterioar+ Con,inut Pagina urm+toare

S CopEri"ht +,,7. mi&roEle&troni&a. <ll Ai"hts Aeserved. For anE comments contact ebmaster.
Ae"i!trii de deplasare
Exist dou tipuri de re"i!trii de deplasareC de intrare 5i de ie5ire. Regi5trii de intrare ncarc datele paralel)
prin intermediul a 1 linii) !i apoi le trimite serial prin intermediul a dou linii ctre microcontroler. Regi5trii de
ie5ire opereaz n direcie opusC primesc date serial !i la un semnal pe linia $latch') transform datele n date
paralele. Ae"i!trii de deplasare sunt folosii n "eneral pentru a mri numrul de intrri * ie!iri ale unui
microcontroler. Ei nu prea mai sunt folosii pentru c microcontrolerele moderne au un numr mare de linii
intrare * ie!ire. 4ricum) utilizarea lor cu microcontrolere cum ar fi PIC9.F1: este foarte important.
Ae"i!trii de deplasare de intrare 0:DC2?0
Aei!trii de deplasare de intrare transform datele paralele n date seriale !i le transfer ctre microcontroler.
%odul lor de funcionare este simplu. ;unt patru linii pentru transferul datelorC cloc"= latc.= load 5i data.
>atele sunt citite de la pinii de intrare de un re"istru intern prin intermediul unui semnal $latch'. <poi) cu un
semnal $load') datele sunt transferate de la re"istrul $latch' de intrare ctre re"istrul de deplasare) iar de acolo
sunt transferate serial ctre un microcontroler prin intermediul liniilor $data' !i $cloc&'.
4 schem de le"tur a re"istrului de deplasare 0:DC2?0 la un microcontroler este prezentat mai 5osC
Modalitatea de conectare a unui registru de deplasare de intrare la un microcontroler
Pentru simplificarea pro"ramului principal) un macro poate fi utilizat pentru re"istrul de deplasare de intrare.
%acroul DC2?0 are dou ar"umenteC
DC2?0 macro -ar) -ar9
ar variabil unde datele provenite de la pinii re"istrului de deplasare de intrare sunt transferate.
ar1 contor bucl.
Exemplu: DC2?0 data) counter
>atele provenite de la pinii re"istrului de deplasare sunt stocate n variabila data. -ariabila #imeTcounter este
folosit pe post de contor bucl.
#extul macrouluiC
Exemplul care v arat cum s folosii macroul DC2?0 este n pro"ramul urmtor. Pro"ramul recepioneaz date
de la intrarea paralel a re"istrului de deplasare !i le mut serial n variabila AH a microcontrolerului. /E>urile
conectate la portul P vor indica rezultatul datelor de intrare.
Pagina anterioar+ Con,inut Pagina urm+toare

S CopEri"ht +,,7. mi&roEle&troni&a. <ll Ai"hts Aeserved. For anE comments contact ebmaster.
<fi!a5 cu 0 se"mente 6multiplexare8
;e"mentele ntr=un afi!a5 cu 0 se"mente sunt aran5ate astfel nct s formeze un sin"ur di"it de la , la F) dup
cum se observ n desenC
Putem afi!a un numr pe mai muli di"ii prin conectarea de afi!a5e adiionale. Chiar dac este mult mai
confortabil s lucrm cu /C>uri) afi!a5ele cu 0 se"mente sunt nc un standard n industrie. <ceasta din cauza
rezistenei la temperatur) vizibilitii !i un"hiului lar" de observare. ;e"mentele sunt marcate cu litere miciC a)
b) c) d) e) f) " !i dp) unde dp este punctul zecimal. Cele 1 /E>uri din cadrul fiecrui afi!a5 pot fi aran5ate cu catod
comun sau cu anod comun. /a un afi!a5 cu catod comun) catodul comun trebuie s fie conectat la linia de ,v !i
/E>urile sunt activate cu unu lo"ic. <fi!a5ele cu anod comun trebuie s prezinte anodul comun conectat la linia
de 32v. ;e"mentele sunt activate cu zero lo"ic. >imensiunea afi!a5ului este msurat n milimetriV se msoar
doar nlimea di"itului 6nu carcasa) doar di"itulW8. <fi!a5ele sunt disponibile cu di"ii de nlimi de 0) 9,) 97.2)
+, sau +2 milimetri. ;unt de diferite culori incluzndC ro!u) portocaliu !i verde. Cea mai simpl metod pentru a
comanda un afi!a5 este prin intermediul unui driver de afi!a5. <cestea sunt disponibile pentru pn la : afi!a5e.
<lternativ) afi!a5ele pot fi comandate de un microcontroler) !i) dac este necesar mai mult dect un afi!a5)
metoda de comandare se nume!te $multiplexare'. Principala diferen dintre cele dou metode este numrul de
linii de comand. Ln driver special poate avea numai o sin"ur linie de tact !i inte"ratul de comand va accesa
toate se"mentele !i va incrementa afi!a5ul. >ac avem doar un sin"ur afi!a5 de comandat de ctre
microcontroler) vor fi necesare 0 linii plus una pentru punctul zecimal. Pentru fiecare afi!a5 zecimal) este
necesar doar cte o linie n plus. Pentru a produce un afi!a5 cu :) 2 sau . di"ii) toate afi!a5ele cu 0 se"mente
vor fi conectate n paralel. /inia comun 6linia catodului comun8 este conectat separat !i aceast linie este
conectat la zero lo"ic pentru o perioad scurt de timp pentru a activa afi!a5ul. Fiecare afi!a5 este activat de
9,, ori pe secund !i vor da impresia c toate afi!a5ele sunt active n acela!i timp. (n timp ce fiecare afi!a5 este
activat) informaia trebuie livrat astfel nct el va afi!a informaia corect. Pot fi accesate pn la . afi!a5e n
acest mod fr ca strlucirea fiecrui afi!a5 s fie afectat. Fiecare afi!a5 este activat efectiv pentru 9T. din timp
!i persistena vizual a ochilor d impresia c afi!a5ul este pornit tot timpul. #oate semnalele de sincronizare
pentru afi!a5 sunt produse de pro"ram) avanta5ul unui afi!a5 controlat de un microcontroler este flexibilitatea.
<fi!a5ul poate fi confi"urat ca un contor cresctor) contor descresctor) !i poate produce un numr de mesa5e
folosind literele alfabetului care pot fi u!or de afi!at.
Exemplul de mai 5os arat cum s controlm dou afi!a5e.
Conectarea unui microcontroler cu afi5a>e cu ? segmente n mod multiplexat
Fi!ierul /E>.IBC conine dou macrouriC /E>FInit !i /E>F>isp+. Primul macro este folosit pentru initializarea
afi!a5ului. <ici este definit perioada de remprosptare ct !i pinii microcontrolerului utilizai pentru conectarea
afi!a5elor.
%acroul /E>F>isp+ are un ar"umentC
/E>F>isp+ macro first
first este numrul de la , la ?? care trebuie afi!at pe di"iii %;> !i /;>.
Exemplu: /E>F>isp+ ,x7:
Bumrul 7: va fi afi!at.
Pagina anterioar+ Con,inut Pagina urm+toare

S CopEri"ht +,,7. mi&roEle&troni&a. <ll Ai"hts Aeserved. For anE comments contact ebmaster.
<fi!a5 /C>
%ulte dispozitive cu microcontroler folosesc /C>uri
inteli"ente pentru a afi!a informaia vizual. Lrmtorul
material se ocup de conectarea unui afi!a5 />C Ditachi la
un microcontroler PIC. <fi!a5ele /C> proiectate cu
D>::01,) modulul pentru /C> fabricat de Ditachi) nu sunt
scumpe !i sunt u!or de folosit) !i chiar posibil s produc
verificarea datelor afi!ate folosind cei 1x1, pixeli ai
afi!a5ului. <fi!a5ele /C> Ditachi conin un set de caractere
<;CII plus simboluri 5aponeze) "rece!ti !i matematice.
A 1:x2 line 2itac.i 2(@@?AB displa#
Fiecare dintre cei .:, de pixeli ai afi!a5ului trebuie s poat fi accesat individual !i aceasta se poate realiza cu un
numr de inte"rate ;%> pentru control montate pe spatele afi!a5ului. <ceasta ne salveaz de o cantitate
enorm de fire !i de un control adecvat astfel nct sunt necesare doar cteva linii pentru a accesa afi!a5ul.
Putem comunica cu afi!a5ul prin intermediul unui bus de date pe 1 bii sau de : biti. Pentru un bus de 1 biti)
afi!a5ul are nevoie de o tensiune de alimentare de 32v !i 99 linii IT4. Pentru un bus de : bii sunt necesare doar
liniile de alimentare !i 0 linii. Cnd afi!a5ul /C> nu este pornit liniile de date sunt #AI=;#<#E) ceea ce nseamn
c ele sunt n stare de nalt impedan 6ca !i cum ar fi deconectate8 !i astfel nu interfereaz cu
funcionabilitatea microcontrolerului cnd afi!a5ul nu este adresat. /C>ul necesit de altfel 7 linii de control de la
microcontroler.
/inia Ena1le /E0 permite accesul la afi!a5 prin intermediul liniilor AT@ !i A;. Cnd aceast linie este /4@) /C>ul
este dezactivat !i i"nor semnalele de la AT@ !i A;. Cnd linia 6E8 este DIMD) /C>ul verific starea celor dou
linii de control !i rspunde corespunztor.
/inia Read&Crite /R&C0 stabile!te direcia datelor dintre /C> !i microcontroler. Cnd linia este /4@) datele
sunt scrise n /C>. Cnd este DIMD) datele sunt citite de la /C>.
Cu a5utorul liniei Register select /RS0) /C> interpreteaz tipul datelor de pe liniile de date. Cnd este /4@) o
instruciune este scris n /C>. Cnd este DIMD) un caracter este scris n /C>.
;tarea lo"ic a liniilor de controlC
E , <ccesul la /C> dezactivat
9 <ccesul la /C> activat
R&C , ;crie date n /C>
9 Cite!te date din /C>
RS , Instruciuni
9 Caracter
;crierea datelor n /C> se realizeaz n civa pa!iC
se seteaz bitul AT@ /4@
se seteaz bitul A; n , sau 9 lo"ic 6instruciune sau caracter8
se trimit datele ctre liniile de date 6dac se execut o scriere8
se seteaz linia E DIMD
se citesc datele de la liniile de date 6dac se execut o citire8
Citirea datelor de la /C> se realizeaz similar) cu deosebirea c linia de control AT@ trebuie s fie DIMD. Cnd
trimitem un DIMD ctre /C>) el se va reseta !i va accepta instruciuni. Instruciunile tipice care sunt transmise
ctre un afi!a5 /C> dup reset suntC pornirea afi!a5ului) activarea cursorului !i scrierea caracterelor de la stn"a
spre dreapta. (n momentul n care un /C> este iniializat) el este pre"tit sa primeasc date sau instruciuni.
>ac recepioneaz un caracter) el l va afi!a !i va muta cursorul un spaiu la dreapta. Cursorul marcheaz
locaia urmtoare unde un caracter va fi afi!at. Cnd dorim s scriem un !ir de caractere) mai nti trebuie s
setm adresa de start) !i apoi s trimitem cte un caracter pe rnd. Caracterele care pot fi afi!ate pe ecran sunt
memorate n memoria video >> A<% 6>ata >isplaE A<%8. Capacitatea memoriei >> A<% este de 1, bEtes.
<fi!a5ul /C> mai conine .: bEtes CM A<% 6 Character
Menerator A<%8. <ceast memorie este rezervat
pentru caracterele definite de utilizator. >atele din CM
A<% sunt reprezentate sub form de caractere bitmap
de 1 biti. Fiecare caracter ocup maxim 1 bEtes n CM
A<%) astfel numrul total de caractere pe care un
utilizator poate s le defineasc este 1. Pentru a afi!a
caracterul bitmap pe /C>) trebuie setat adresa CM
A<% la punctul de start 6de obicei ,8 !i apoi s fie scrise
datele n afi!a5. >efinirea unui caracter RspecialJ este
exemplificat n fi"ur.
(nainte de a accesa >> A<%) dup definirea unui caracter special) pro"ramul trebuie s seteze adresa n >>
A<%. 4rice scriere !i citire a datelor din memoria /C> este realizat de la ultima adres care a fost setat)
folosind instruciunea set=adress. 4dat ce adresa >> A<% este setat) un caracter nou va fi afi!at n locul
potrivit pe ecran. Pn acum am discutat operaia de scriere !i citire a memoriei unui /C> ca !i cum ar fi o
memorie obi!nuit. <cest lucru nu este adevrat. Controlerul /C> are nevoie de :, pn la 9+, microsecunde
6us8 pentru scriere !i citire. <lte operaii pot dura pn la 2 ms. (n acest timp microcontrolerul nu poate accesa
/C>ul) astfel un pro"ram trebuie s !tie cnd un /C> este ocupat. Putem rezolva aceasta n dou metode.
4 metod este verificarea bitului PL;X de pe linia de date >0. <ceasta nu este cea mai bun metod pentru c
/C>ul se poate bloca !i pro"ramul va sta ntr=o bucl infinit verificnd bitul PL;X. 4 alt metod este
introducerea unei ntrzieri n pro"ram. (ntrzierea trebuie s fie destul de lun" pentru ca /C>ul s termine
operaia n desf!urare. Instruciunile pentru scriere !i citire cu memoria /C>ului sunt afi!ate mai sus. /a
nceput am menionat c avem nevoie de 99 linii IT4 pentru a comunica cu un /C>. 4ricum) putem comunica cu
un /C> printr=un bus de : linii. Putem reduce numrul total de linii de comunicaie la 0. ;chema pentru
conectarea printr=un bus de : biti este n ima"inea de mai 5os. (n acest exemplu folosim un afi!a5 /C> cu +x9.
caractere) denumit /%9.x+9+ fabricat de productorul 5aponez ;harp. %esa5ul RcharacterJ este scris pe prima
linie urmat de dou caractere speciale RYJ !i RZJ. Pe a doua linie este scris cuvntul Rmi&roEle&troni&aJ.
Conectarea unui afi5a> la un microcontroler
Fi!ierul 'C(4inc conine un "rup de macrouri pentru lucrul cu afi!a5ele /C>.
Pagina anterioar+ Con,inut Pagina urm+toare

S CopEri"ht +,,7. mi&roEle&troni&a. <ll Ai"hts Aeserved. For anE comments contact ebmaster.
Convertor analo" * di"ital de 9+ bii
>eoarece totul n lumea microcontrolerelor este reprezentat cu , !i 9) ce facem cu un semnal care este ,.2 sau
,.00[ <proape toat lumea exterioar unui calculator consist din semnale analo"ice. (n afar de vorbire !i
muzic) sunt multe cantiti care trebuie cuantificate ntr=un calculator. Lmiditatea) temperatura) presiunea
aerului) culoarea) tur1idit#) !i concentraia metanului sunt doar o parte. Aspunsul este s lum un numr de
linii di"itale pe care s le combinm asfel nct ele s exprime o valoare analo"ic. 4 valoare analo"ic este
orice valoare dintre , !i 9. 4 putei numi $valoare fracional'. #oate cantitile de mai sus trebuie s fie
convertite la o valoare cuprins ntre , !i 9 astfel s fie utilizat ntr=un calculator. <cesta este conceptul cel mai
rspndit. El devine ceva mai puin complex n aplicaii. >ac lum 1 linii !i le aran5m astfel nct s accepte
valori binare) rezultatul total va fi +2. 6acesta este obinut de o numrare pn la +22 plus valoarea ,8. >ac
conectm aceste 1 linii ntr=o $cutie nea"r') vor fi numite linii de ie!ire !i astfel trebuie s=i furnizm o sin"ur
linie de intrare. Cu acest aran5ament putem detecta pn la +22 incrementri ntre $,' !i $9'. <ceast cutie
nea"r este denumit C4B-EA#4A !i pentru c noi convertim din Analo" n (i"ital) convertorul se nume!te
convertor A( sau A(C /Analo" to (i"ital Convertor8. Convertoarele <> pot fi clasificate dup parametrii diferii.
Cei mai importani parametri sunt precizia !i modul de transfer al datelor. Aeferitor la precizie) domeniul esteC 1
bii) 9, bii) 9+ bii) 9: bii) 9. bii. >eoarece conversia pe 9+ bii este un standard industrial) exemplul de mai
5os a fost realizat cu a5utorul unui convertor pe 9+ bii. Cellalt parametru important este modul prin care datele
sunt transferate n microcontroler. Poate fi paralel sau serial. #ransmisia paralel este mai rapid. 4ricum) aceste
convertoare sunt deobicei mai scumpe. #ransmisia serial este mai lent) dar considernd preul sczut !i
numrul redus de linii de intrare la un microcontroler) este transmisia preferat pentru multe aplicaii. ;emnalele
analo"ice pot dep!i limitele de intrare ale unui <>C. <ceast lucru poate duce la stricarea convertorului. Pentru a
prote5a intrarea sunt conectate dou diode) dup cum se observ n schem. <cestea vor prote5a de tensiuni de
peste 2- !i sub ,-. (n exemplul nostru am folosit /#C9+1.) un <>C pe 9+ biti 6/inear #echnolo"E8. Convertorul
este conectat cu microcontrolerul prin intermediul a trei liniiC data) cloc& !i C; 6Chip ;elect8. /inia C; este
folosit pentru a selecta un dispozitiv de intrare ca s fie posibil s fie conectate !i alte dispozitive de intrare 6ex.
re"istru de deplasare de intrare) re"istru de deplasare de ie!ire) <>C serial8 pe acelea!i linii ale
microcontrolerului. Circuitul de mai 5os arat cum s conectm un <>C) tensiune de referin !i un afi!a5 /C> la
un microcontroler. <fi!a5ul /C> a fost adu"at pentru a vizualiza rezultatele conversiei <>.
Conectarea unui conDertor A( cu tensiune de referin,+ la un microcontroler
%acroul folosit n acest exemplu este /C>1. !i este localizat n fi!ierul /#C9+1..inc.
Pagina anterioar+ Con,inut Pagina urm+toare

S CopEri"ht +,,7. mi&roEle&troni&a. <ll Ai"hts Aeserved. For anE comments contact ebmaster.
Comunicaia serial
;CI este o abrevire pentru ;erial Communication Interface) !i ca un subsistem special exist la ma5oritatea
microcontrolerelor. Cnd nu este disponibil) cum ar fi n cazul lui PIC9.F1:) poate fi creat n softare.
Ca !i n cazul comunicaiei hardare) folosim formatul standard BAO 6Bon Aeturn to Oero8 cunoscut ca 1 6?8=B=9
sau 1 sau ? bii de date) fr paritate !i cu un bit de stop. 'inia li1er+ este definit starea unu logic. ;tartul
transmisiei * *itul de Start) are starea 6ero logic. >up biii de date care urmeaz bitului de start 6primul bit
este cel mai puin semnificativ bit8 urmeaz un *it de Stop care are starea unu logic. >urata bitului de stop R#J
depinde de viteza transmisiei !i este a5ustat dup necesitile transmisiei. Pentru o vitez de transmisie de ?.,,
baud) # este 9,:us.
9. C> 6Carrier >etect8
+. AH> 6Aeceive >ata8
7. #H> 6#ransmit >ata8
:. >#A 6>ata terminal AeadE8
2. MB> 6Mround8
.. >;A 6>ata ;et AeadE8
0. A#; 6AeUuest #o ;end8
1. C#; 6Clear #o ;end8
?. AI 6Ain" Indicator8
(escrierea pinilor ai unui conector RS2<2
Pentru a conecta un microcontroler la un port serial al unui calculator PC) trebuie s a5ustm nivelul semnalelor
pentru ca s aib loc comunicaia. Bivelul semnalului la un PC este =9,- pentru zero lo"ic !i 39,- pentru unu
lo"ic. >in cauz c nivelul semnalului la un microcontroler este de 32- pentru unu lo"ic !i ,- pentru zero lo"ic)
avem nevoie de un stadiu intermediar care s realizeze conversia nivelurilor. Ln inte"rat special proiectat pentru
aceast sarcin este %<H+7+. ;chema interfeei este n dia"rama de mai 5osC
Conectarea unui microcontroler la un PC prin intermediul unei interfe,e reali6ate cu MAE2<24
Fi!ierul A;+7+.inc conine un "rup de macrouri folosite pentru comunicaia serial.
Pagina anterioar+ Con,inut Pagina urm+toare

S CopEri"ht +,,7. mi&roEle&troni&a. <ll Ai"hts Aeserved. For anE comments contact ebmaster.