FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT IOAN [630568]

FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN
SLAVICI” TIMIȘOARA
UNIVERSITATEA “IOAN SLAVICI” TIMIȘOARA
FACULTATEA DE INGINERIE
DOMENIUL CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI
FORMA DE ÎNVĂȚĂMÂNT – ZI

LUCRARE DE LICENȚĂ

CONDUCĂTOR ȘTIINȚIFIC
Prof. univ. dr . Vlăduțiu Mircea

ABSOLVENT: [anonimizat] 2013 –

FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN
SLAVICI” TIMIȘOARA
UNIVERSITATEA “IOAN SLAVICI” TIMIȘOARA
FACULTATEA DE INGINERIE
DOMENIUL CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI
FORMA DE ÎNVĂȚĂMÂNT – ZI

SISTEM DE MONITORIZARE PARCARE
AUTO CU PIC16F877
CONDUCĂTOR ȘTIINȚIFIC
Prof. univ. dr . Vlăduțiu Mircea
ABSOLVENT: [anonimizat]

2013

UNIVERSITATEA DIN ORADEA
FACU LTATEA de Inginerie Electrică și Tehnologia Informației
DEPARTAMENTUL Calculatoare și tehnologia informației
TEMA _________________
Lucrare de Finalizare a studiilor a student: [anonimizat]_____________ ___________
1). Tema lucrării de finalizare a studiilor :____________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
2). Termenul pentru predarea lucrării ______________________________________________
3). Elemente inițiale pentru elaborarea lucrării de finalizare a studiilor _______________ ___
________________________________________________________________________________
________________________________________________________________________________
4). Conținutul lucrării de finalizare a studiilor :______________________________________ _
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
5). Material grafic:________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
6). Locul de documentare pentru elaborarea lucrării:
________________________________________________________________________________
________________________________________________________________________________
7). Data emiterii temei_____________________________________________________________

Coordonator științific ,
Prof. univ. dr. Vlăduțiu Mircea

UNIVERSITATEA DIN OR ADEA

FACULTATEA DE INGINERIE ELECTRICĂ
ȘI TEHNOLOGIA INFORMAȚIEI
Adresa Oradea, Cod 410087, Bihor, Romania, Strada Universit ății, nr. 1 ,
Tel/Fax :+40 259/408412, Tel:+40 259/408104; +40 259/408204

REFERAT
PRIVIND LUCRAREA DE LICENȚĂ
A

ABSOLVENT: [anonimizat] / ABSOLVENT: [anonimizat] : ……………………………………….

DOMENIUL Calculatoare și tehnologia informației
SPECIALIZAREA Calculatoare
PROMOȚIA 2013

1. Titlul lucrării ………………………………………………………………… ……..
…..………………………………………………………………………………………… …….. .

2. Structura lucrării ………………………………………………………. ……………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………… ……
……………………………………………… ……………………………………………………………
3. Aprecieri asupra conținutului lucrării de LICENȚĂ (finalizare a studiilor ),
mod de abordare, complexitate , actualitate, deficiențe
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
…….. …………………………………………………………………………………………………………………………….
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………

4. Aprecieri asupra lucrării (se va menționa: numărul titlurilor bibliografice
consultate, frecvența notelor de subsol, calitatea și diversitatea surselor
consult ate; modul în care absolventul a prelucrat informațiile din surse
teoretice)
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
(se va menționa: opțional locul de documentare și modul în care absolventul a realizat
cercetarea menționându -se contribuția autorului)
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
5. Concluzii (coordonatoru l lucrării trebuie să aprecieze valoarea lucrării
întocmite, relevanța studiului întreprins, competențele absolventului,
rigurozitatea pe parcursul elaborării lucrării, consecvența și seriozitatea de
care a dat dovadă absolventul pe parcurs)
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………

6. Redactarea lucrării respectă …………………………………………………. cerințele
academice de redactare (părți, capitole, subcapitole, note de subsol și
bibliografie).
7. Consider că lucrarea îndeplinește/ nu îndeplinește condiț iile pentru susținere
în sesiunea de Examen de LICENȚĂ (finalizare a studiilor) din IULIE 201 3 și
propun acordarea notei ………………

Oradea,
Data Conducător științific

Sistem de monitorizare parcare auto cu PIC 16F877

CUPRINS

REZUMAT ………………………………………………………………………………………………………………………….. 6
CAP.1 INTRODUCERE ………………………………………………………………………………………………………….. 7
CAP. 2 BAZE TEORETICE ………………………………………………………………………………………………………. 8
2.1. Microcontrolerul PIC16F877 ……………………………………………………………………………………… 8
2.1.1. Caracteristici principale ale PIC16F877 …………………………………………………………………. 8
2.1.2. Diagrama bloc a controlerului PIC16F877 …………………………………………………………………. 9
2.1.3 Memoria microcontrolerului PIC16F877 ………………………………………………………………… 9
2.1.4 Porturile de intrare/ieșire (I/O) și regiștrii corespondenți ………………………………………. 13
2.1.5. Modulul TIMER0 ………………………………………………………………………………………………. 16
2.1.6 Convertorul analog/digital (ADC) ………………………………………………………………………… 18
2.1.7. Întreruperi ………………………………………………………………………………………………………. 22
2.2. Traductoare …………………………………………………………………………………………………………… 25
2.2.1. Introducere ……………………………………………………………………………………………………… 25
2.2.2. Structura generală a unui traductor ……………………………………………………………………. 25
2.2.3. Caracteristicile și performanțele traductoarelor ………………………………………………….. 26
2.3.4. Tipuri de traductoare ……………………………………………………………………………………….. 28
CAP.3 PROIECTUL TEHNIC …………………………………………………………………………………………………. 30
3.1. Schema bloc ………………………………………………………………………………………………………….. 30
3.2. Blocul de alimentare ……………………………………………………………………………………………… 31
3.3. Blocul de comandă și control (microcontrolerul) ……………………………………………………….. 32
3.4. Blocul multiplexor ………………………………………………………………………………………………… 39
3.5. Blocul format din regiștrii de șiftare și decodificatoare ………………………………………………. 40
3.7. Blocul de afișare ……………………………………………………………………………………………………. 43
CAP. 4 REZULTATE ……………………………………………………………………………………………………………. 47
CAP. 5 CONCLUZII …………………………………………………………………………………………………………….. 47
Anexa 1. Codul sursă ………………………………………………………………………………………………………… 48
ANEXA 2- Circuite imprimate ……………………………………………………………………………………………. 64
ANEXA 3 ………………………………………………………………………………………………………………………….. 69
BIBLIOGRAFIE ………………………………………………………………………………………………………………….. 70

Sistem de monitorizare parcare auto cu PIC 16F877

6
REZUMAT

Lucrarea prezentată reprezintă o machetă a unei parcări etajate, având un sistem
propriu de gestionare a locurilor de parcare, sistem care se dorește a fi o îmbunătățire a sistemelor de gestionare deja existente pe piață, principalul obiectiv fiind de a reduce cât
mai mult timpul pierdut de conducătorii auto pentru a găsi și a ocupa un loc de parcare. Sistemul implementat în lucrarea de față este capabil să :
− contorizeze și să afișeze numărul locurilor de parcare libere,
− permită accesul în parcare indicând direct locul de parcare liber situat cel mai
aproape de intrarea in parcare,
− afișeze temperatura ambientală,
− controleze barierele de la intrarea și ieșirea parcării
− controleze și să acționeze sistemul de iluminat interior al parcării în funcție de cantitatea de lumină exterioară.

Sistem de monitorizare parcare auto cu PIC 16F877

7
CAP.1 INTRODUCERE

În ultimul deceniu industria a cunoscut o dezvoltare din ce în ce mai puternică mai ales în ceea ce privește producția de automobile atât pe plan mondial cât și pe plan național. Acest fapt a
dus la creșterea numărului de vehicule noi din țara noastră. Datorită legislației adoptate în ultimii ani în țara noastră, a putut fi importat un număr foarte ma re de vehicule second hand din afara
României, și acest fapt ducând la supraaglomerarea șoselelor și mai ales a parcărilor, mai ales în orașe precum Sibiul, construite cu mult timp în urmă, având străzi înguste, fără prea multe posibilități de a crea locur i de parcare noi.
Municipalitatea orașului Timișoara a ales ca soluție la problemele descrise mai sus,
declararea străzilor înguste ca fiind cu sens unic, circulația desfășurându -se astfel pe o singură
bandă, cealaltă bandă fiind transformată în locuri de parcare (mai ales în zonele centrale ale
orașului). Această idee are dezavantajele următoare:
− suprafața terenului alocat locurilor de parcare este întinsă
− circulația se desfășoară anevoios și lent în preajma acestor parcări
− timpul necesar găsirii unui loc de parcare liber poate fi foarte îndelungat, șoferul odată intrat
pe o stradă cu sens unic fiind obligat să o parcurgă în totalitate pentru a putea găsi un loc de parcare în altă locație
− incertitudinea găsirii unui loc liber de parcare.
O soluție pentru rezolvarea neajunsurilor enumerate mai sus este inspirată din experiența și inteligența inginerilor japonezi care și-au adaptat stilul de proiectare a clădirilor noi în funcț ie de
spațiul disponibil, optând pentru dezvoltarea verticală a clădirilor în locul dezvoltării orizontale. Având la bază această idee se poate implementa un sistem de parcări supraetajate, având următoarele avantaje:

1. întinderea pe orizontală a unei parcări supraetajate este mult mai mică
2. circulaț ia în vecinătatea parcării etajate nu mai are de suferit
3. parcarea supraetajată poate beneficia de un sistem de informare în timp real a șoferilor cu privire la numărul locurilor disponibile în parcare (pe o șosea intens circulată din apropierea parcării poate fi montată o tabelă electronică pen tru a afișa numărul locurilor libere în
parcare), fiind astfel evitată situaț ia neplăcută pentru șoferi de a ajunge la parcare și a
constata ca nici un loc nu e liber, fiind o pierdere importantă de timp
4. pentru a reduce și mai mult timpul necesar unui șof er pentru a găsi un loc liber in parcarea
etajată se poate implementa un sistem capabil sa identifice fiecare loc al acelei parcări, etajul la care este situat locul respectiv și starea în care se află (ocupat sau liber), comunicând șoferului la intrarea în parcare care loc este liber și cel mai apropiat de intrarea în parcare.
Prin lucrarea de faț ă se dorește realizarea practică a unei machete de parcare supraetajată
având implementate sistemele de gestionare enumerate mai sus. Această machetă poate sta la baza realizării la scară normală a unei parcări supraetajate, fiind necesare doar câteva adaptări
tehnologice neimportante, principiul de funcț ionare rămânând același.

Sistem de monitorizare parcare auto cu PIC 16F877

8

CAP. 2 BAZE TEORETICE

2.1. Microcontrolerul PIC16F877

Microcontrolerul PIC16F877 face parte din clasa medie de microcontrolere produse de
compania Microchip, fiind des utilizat intr -o gamă largă de aplicații datorită versatilității sale și
ușurinței în folosire. Din familia din care face parte PIC16F877 mai fac parte si PIC16F873, PIC16F874 si
PIC16F876, având structură și funcționalitate asemănătoare cu cele ale PIC16F877.
2.1.1. Caracteristici principale ale PIC16F877

 Procesor RISC de înaltă performanță
 Folosește un set de 35 de instrucțiuni în limbaj de asamblare
 Toate instrucțiunile sunt executate intr-un singur ciclu cu excepția ramurilor de
 program care necesită doi cicli
 Viteze de operare : – C.C – 20MHz pentru intrarea de clock
– C.C – 200ns pentru un ciclu de instrucțiuni
 Memorie FLASH (Program) cu capacitate de 8K bytes o rganizată în cuvinte de câte 14 biți
 Memorie RAM cu capacitate de 368 bytes organizată in cuvinte de câte 8 biți
 Memorie EEPROM cu capacitate de 256 bytes structurată în cuvinte de câte 8 biți
 Posibilitatea de funcționare cu întreruperi având 14 surse de întrerupere
 Dispune de stivă hardware de opt nivele
 Adresarea se poate face direct , indirect sau relativ
 Power -on reset (POR)
 Power -up timer (PWRT)
 Timer de Watchdog (WDT) având propriul oscilator RC
 Protecție la programarea codului
 Mod de economisire a energiei (modul Sleep)
 Opțiuni de selectare a tipului de oscilator
 Programare seriala în circuit (ICSP)
 Debugging prin intermediul a doi pini
 Consum mic de putere

Sistem de monitorizare parcare auto cu PIC 16F877

9
2.1.2. Diagrama bloc a controlerului PIC16F877

Blocurile funcționale ale lui PIC16F877, modul de comunicare cât și dimensiunile bus-urilor de date sunt prezentate in diagrama bloc următoare (fig.1):

Figura 1: Diagrama bloc a microcontrolerului PIC16F877

2.1.3 Memoria microcontrolerului PIC16F877

Organizarea memor iei

Microcontrolerul PIC16F877 are trei blocuri de memorie .
a) Memoria program
Memoria FLASH este împărțită in cuvinte de 14 biți, spațiul total al memoriei program fiind de
8K bytes. Accesarea unui spațiu din memorie se face printr -un program counter pe 13 biți.
Vectorul RESET se află la adresa 0000h iar vectorul de întrerupere se află la adresa 0004h.
Structura memoriei program si adresele la care se găsește aceasta sunt prezentate in
diagrama din figura 2:

Sistem de monitorizare parcare auto cu PIC 16F877

10

Figura 2: Structura memoriei program

Scrierea și citirea memoriei program (FLASH )

1) Citirea memoriei program
Citirea memoriei program se face ca și citirea memoriei EEPROM, cu diferența că, după
setarea bitului de citire RD, sunt introduse două instrucțiuni NOP care executa două cicluri de
instrucțiuni. Aceste cicluri vor fi folosite de microcontroler la citirea datelor din afara memoriei
program și introducerea acestora în regiștrii EEDATH:EEDATA. Datele vor fi disponibile după a doua instrucțiune NOP. Regiștrii EEDATH și EEDATA vor menține valorile pe care le au până când este inițializată o noua citire sau o noua scriere. Pașii care trebuie parcurși pentru a realiza citirea memoriei sunt:
− scrierea adresei in regiștrii EEADRH:EEADR
− setarea bitului EEPGD să indice memoria program
− setarea bitului RD pentru a porni operația de citire
− executarea a două instrucțiuni NOP pentru a permite microcontrolerului citirea în afara
memoriei program
− citirea datelor din regiștrii EEDATH:EEDATA

2) Scrierea memoriei program
În timpul operației de programare, microcontrolerul nu execută instrucțiuni. Oscilatorul și
toate perifericele continuă să funcționeze. Odată operația de scriere terminată, procesorul începe
executarea codului de unde a rămas. Pentru a se putea face scrierea în memoria program este necesar ca bitul WRT să fie setat.

Sistem de monitorizare parcare auto cu PIC 16F877

11

Scrierea memori ei program se face urmând pașii de mai jos:
− Scrierea adresei in registrii EEADRH:EEADR
− Scrierea valorii de pe 14 biți a datelor ce urmează a fi programate în regiștrii
− EEDATH:EEDATA
− Setarea bitului EEPGD pentru a indica memoria program
− Setarea bitului WREN pentru a activa scrierea programului
− Dezactivarea întreruperilor (dacă au fost active)
− Executarea secvenței speciale de cinci instrucț iuni :
• Scrierea adresei 55h în registrul EECON2 în doi pași (întâi în registrul W, apoi în
registrul EECON2)
• Scrierea adr esei AAh în registrul EECON2 în doi pași (întâ i în registrul W, apoi în
regis trul EECON2)
• Setarea bitului WR
− Executarea a doua instrucț iuni NOP pentru a permite microcontrolerului să se
− pregătească pentru operaț ia de scriere
− Activarea întreruperilor
− Punerea pe zero a bitului WREN

3) Protecția la scriere a memoriei program.
Cuvântul de configurare conține un bit menit să protejeze memoria program la scriere, bit
numit WRT. Acest bit poate fi accesat doar daca programarea PIC -ului se face prin ICSP. Odată
activată protecția la scriere, doar o ștergere completă a PIC-ului va dezactiva protecția.
b) Memoria de date (RAM)
Memoria RAM conține toate variabilele din programul scris. Memoria de date este împărțită în mai multe bankuri ce conțin regiștrii cu scop general și
regiștrii cu funcții speciale. Selectarea bank -urilor se face cu ajutorul biților RP1 respectiv RP0
astfel (fig. 3):

Figura 3: Selectarea bank-urilor de memorie
Fiecare bank are 128 bytes. Partea inferioară a fiecărui bank este rezervată regiștrilor cu
funcții speciale. Deasupra zonei rezervate acestora se află regiștrii cu scop general, implementați ca
RAM static. Regiștrii cu funcții speciale care sunt utilizați frecvent intr -un bank pot fi “în oglindă”
in alt bank în scopul de reduce codul și de a facilita accesul la date. Regiștrii cu scop general pot fi accesaț i direct sau i ndirect prin registrul de selecț ie FILE
SELECT (FSR).
Regiștrii cu funcții speciale sunt folosiți de procesor și de modulele per iferice pentru a
controla funcționarea dorită a dispozitivului. Acești regiștrii sunt implementați ca RAM static.
În figura 4 se poate observa structura memoriei de date, dispunerea regiștrilor c u scop
general, a celor cu funcții special e și numele regiștrilor cu funcț ii speciale:

Sistem de monitorizare parcare auto cu PIC 16F877

12

Figura 4: Structura memoriei de date
locații de memorie neimplementate, citite ca"O"
*nu este un registru fizic NOTE: 1. acești regiștrii nu sunt implementați in PIC16F876 2. acești regiștrii sunt rezervați a se menține liberi.
c) Memoria EEPROM
Memoria EEPROM conț ine toate constantele programului scris in memoria
microcontrolerului. Dimensiunea m emoriei EEPROM este de 256 oct eți. Prin urmare pot fi scrise
256 constante a câte un octet.
Această memorie este nevolatilă , valorile înscrise in ea rămânând înscrise chiar și după
întreruperea tensiunii de alimentare.

Sistem de monitorizare parcare auto cu PIC 16F877

13

Citirea și scrierea memoriei EEPRO M
Pentru a putea înțelege funcț ionarea memoriei EEPROM cât și a memoriei program este
necesară analizarea structurii registrului EECON1, prezentat în figura următoare:

unde: EEPGD – bit care selectează memoria program EEPROM sau memoria de date EEPROM
WRERR – bit flag de eroare
WREN – bit ce permite sau nu scrierea EEPROM WR – bit de control al scrierii
RD – bit de control al citirii

1) Citirea memoriei EEPROM
Citirea memoriei EEPROM necesită doar ca adresa ce va fi accesată să fie scrisă în registrul
EEADR, iar bitul EEPGD să fie pus pe zero. După ce bitul RD va fi setat, datele vor fi disponibile în registrul EEDATA după următorul set de instrucțiuni. Registrul EEDATA va rămâ ne in această
stare până va fi iniț ializată o altă citire sau scriere.
Pașii de urmat pentru citirea memoriei EEPROM sunt următorii:
− scrierea adresei în registrul EEDATA
− punerea pe z ero a bitului EEPGD pentru a indica memoria EEPR OM
− setarea b itului RD pentru a începe operaț ia de citire
− citirea datelor din registrul EEDATA

2) Scrierea memoriei EEPROM
Pentru scrierea memori ei EEPROM sunt necesari mai mulți pași, în cele ce urmează fiind
prezentaț i acești pași:
− scrierea adresei în reg istrul EEADR
− scrierea celor 8 biț i de date care urmează a fi programați, în registrul EEDATA
− punerea pe zero a bitului EEPGD pentru a indica memoria EEPROM
− setarea bitului WREN
− dezactivarea întreruperilor
− executarea unei secvențe speciale de ci nci instrucțiuni:
• Scrierea adresei 55h în registrul EECON2 în doi pași (întâi în registrul
• W, apoi în registrul EECON2)
• Scrierea adresei AAh în registrul EECON2 în doi pași (întâi în registrul
• W, apoi în registrul EECON2)
• Setarea bitului WR
− activarea întreruperilor
− punerea pe zero a bitului WREN
− la terminarea ciclului de scriere, bitul WR e pus pe zero iar flagul de întrerupere
EEIF e setat.
2.1.4 Porturile de intrare/ieșire (I/O) și regiștrii corespondenț i
Porturile de int rare/ieșire au rolul de interfață î ntre controler și mediul extern, datele putând
circula în ambele sensuri. Tipul datelor poate fi atât digital cât și analogic, în funcț ie de modul de
setare a porturilor, tipul acestora și a anumitor biți. Cu toate acestea semnalele de ieș ire vor fi
numai digitale.
Anumiț i pini ai porturilor pot fi multiplexați cu alte funcții decât cele specifice. Prin setarea
unui bit al unui registru pe “1” va avea ca rezultat setarea pinului corespondent , din portul alocat

Sistem de monitorizare parcare auto cu PIC 16F877

14

acelui registru, ca intrare. Dacă bitul din registru este setat pe “0”, pinul core spondent va fi setat ca
ieșire.

Portul A, registrul TRISA și registrul ADCON1
Portul A are o lățime de 6 biți, fiind port bidirecț ional. Registrul de date corespondent este
TRISA. Prin citirea portului A se face de fapt citirea pinilor portului. Pentru scrierea portului se
citesc pinii acestuia, se modifica datele iar apoi se scrie noua valoare in latch -ul de date al portului.
Pinul RA4 este multiplexat cu semnalul clock al TIMER0. Setat ca intrare acest pin se
comportă ca o intrare Trigger Schmitt, iar setat ca ieșire se comporta ca o drenă lăsată în aer (open
drain). Toți ceilalți pini se comporta ca intră ri TTL sau ieșiri CMOS, in funcț ie de setări (ca pini de
ieșire sau intrare).
Câțiva pini ai portului A sunt multiplexaț i cu intrări analo gice și tensiune de referință.
Modul de funcț ionare al fiecărui pin este selectat prin biții de control din registrul ADCON1
(registru de co ntrol analog/digital). La apariția unui reset în momentul cuplării a limentării acești
pini vor fi configuraț i ca intrări analogice și citiți ca „0”.
Structura portului A și a regiștrilor asociați se prezintă în felul următor (fig. 5):

Figura 5: Structura portului A
Semnificația biților registrului ADCON1 este:
ADFM – bit de selecție a formatului rezultatului conversiei A/D
PCFG3:PCFG0 – biți de configurare analog/digitală
În funcție de combinația binară asociată acestor biți rezultă setarea ca intrări digitale sau
analogice (fig. 6):

Figura 6: Modul de configurare al intrărilor

Sistem de monitorizare parcare auto cu PIC 16F877

15

Un exemplu de inițializare a portului A se prezintă astfel:
void main (void) { PORTA = 0x00; // se inițializează portul A punând toate ieșirile în 0 TRISA = 0b11001111; // se configurează RA4, RA5 ca ieșiri
ADCON1 = 0b00000110; // se configurează RA0, RA1 ca intrări digitale }

Portul B, registrul TRISB și registrul OPTION_REG
Portul B are o lățime de 8 biți, fiind port bidirecțional. Registrul de date corespondent este
TRISB. Configurarea pinilor ca intrări sau ieșiri se face în același mod ca și la portul A. Trei pini ai
portului sunt multiplexați cu funcția de programare la tensiune redusă: RB3/PGM, RB6/PGC și RB7/PGD.
Fiecare pin al portului are o r ezistență pull- up internă. Aceste rezistențe sunt activate sau
nu de un bit numit RBPU . Când portul este configurat ca ieșire, rezistențele pull -up sunt
scoase din circuit automat.
Pinii RB7:RB4 sunt asociați unei opțiuni de întrerupere la schimbare daca sunt
configurați ca intrări. Întreruperea apare daca valoarea unei intrări diferă față de cea anterioara a aceleiași intrări.
Pinul RB0/INT este pin de intrare pentru întreruperi externe, fiind configurat cu bitul
INTEDG din registrul OPT ION_REG.
Structura portului B și a regiștrilor asociați se prezintă conform figurii 7:

Figura 7: Structura portului B
Portul C și registrul TRISC
Portul C are lățimea de 8 biți și este bidirecțional. Registrul de date asociat este TRISC.
Pinii portului C au buffere Trigger Schmitt, iar pinii 4:3 pot fi configurați cu nivel normal I2C daca modulul I2C este activ sau cu nivele SMB folosind bitul CKE din registrul SSPSTAT. La activarea funcțiilor periferice trebuie acord ată atenție definirii biților registrului TRISC
pentru fiecare pin al portului deoarece anumite periferice suprascriu biții din registrul TRISC. Instrucțiunile de citire, modificare și scriere in registrul TRISC trebuie evitate când perifericele sunt activ e pe portul C.
Portul este structurat astfel (fig. 8):

Figura 8: Structura portului C

Sistem de monitorizare parcare auto cu PIC 16F877

16
Portul D și registrul TRISD
Portul D are lățimea de 8 biți, iar intrările au buffere Trigger Schmitt. Registrul de date
alocat acestui port este TRISD.
Portul D poate fi configurat ca port paralel slave prin setarea bitului PSPMODE al
registrului TRISE. Prin aceasta setare bufferele de intrare in port sunt TTL.

Structura portului D și regiștrilor asociați este arătată in figura 9:

Figura 9: Structura portului B
Portul E și registrul TRISE
Portul E are trei pini (RE0,RE1 și RE2) care sunt configurași individual ca intrări sau ieșiri. Acești pini au buffere de intrare Trigger Schmitt. Pinii portului E dev in pini de intrare pentru
microprocesor când bitul PSPMODE al registrului TRISE este setat. În modul acesta, utilizatorul trebuie sa se asigure că biții 0, 1 și 2 ai registrului TRISE sunt setați și că pinii sunt configurați ca intrări digitale. De asemenea trebuie verificat ca registrul ADCON1 (prezentat la portul A) să fie setat pentru intrări digitale. În această situație, bufferele de intrare ale portului E sunt TTL. Registrul TRISE controlează funcționarea portului paralel slave. Pinii portului E sunt multiplexați cu intrări analogice. Când acești pini sunt setați ca intrări
analogice, valoarea citită pe ei va fi „0”. Portul E și registrul TRISE au următoarea structură (fig. 10):

Figura 10: Structura portului E
Semnificația biților registrului TRISE este prezentată în cele ce urmează:
IBF – bit de stare a umplerii bufferului de intrare
OBF – bit de stare a bufferului de ieșire
IBOV – bit de detecție a suprascrierii in bufferul de intrare
PSPMODE – bit de selecți e a modului de funcționare (ca intrări/ieșiri sau ca port paralel slave)
Bitul 2 – bit de control al direcției (intrare/ieșire) pentru pinul RE2
Bitul 1 – bit de control al direcției (intrare/ieșire) pentru pinul RE1
Bitul 0 – bit de control al direcției (intrare/ieșire) pentru pinul RE0
2.1.5. Modulul TIMER0

• Modulul timer/numărător TIMER0 dispune de următoarele caracteristici:
• timer/numărător pe 8 biți

Sistem de monitorizare parcare auto cu PIC 16F877

17

• poate fi scris și citit
• prescaler disponibil pe 8 biți, programabil software
• posibilitate de selecție între clock intern sau extern
• selectarea frontului pentru clock -ul extern.

Diagrama bloc a modulului este prezentată în figura 11:

Figura 11: Diagrama bloc a modulului TIMER0

Modul Timer este selectat prin punerea pe „0” a bitului T0CS din registrul O PTION_REG.
În acest nod de funcț ionare modului va incr ementa fiecare ciclu de instrucțiuni (fără prescaler).
Daca registrul TMR0 e scris, incrementarea e oprită pentru următoarele două cicluri de instrucțiuni.
Modul de funcționare ca numărător se selectează prin setarea bitului T0CS din registrul OPTION_REG. În acest mod de funcț ionare, modulul va face incrementarea fie la fiecare front
crescător fie la fiecare front descrescător de pe pinul RA4/T0CI. Determinarea frontului care va fi
incrementat se face prin bitul T0SE din registrul OPTION_REG astfel: punerea pe „0” a bitului determină selectarea frontului crescător.
Întreruperile în TIMER0 sunt generate de fiecare data când se produce încărcarea
registrului, fapt ce setează bitul T0IE din registrul INTCON în „1”. Acest bit trebuie pus pe „0”
software înainte de reactivarea acestei întreruperi.
Există un s ingur prescaler care este împărț it între Timer0 și Watchdog Timer. O asignare a
prescalerului pentru Timer0 va rezulta în lipsa prescalerului pentru Watchdog timer și invers.
Prescalerul nu se poate scrie sau citi. Prescalerul poate fi asignat prin bitul PSA iar raportul prescalerului se co nfigurează prin biț ii PS2:PS0 din registrul OPTION_REG. Dacă prescal erul este
asignat Timerului0 , toate instrucțiunile de scriere în registrul TMR0 vor șterge prescalerul.
Structura și semnificația biților registrului OPTION_REG sunt prezentate astfel:

unde

Sistem de monitorizare parcare auto cu PIC 16F877

18

T0CS – bit de selecție a sursei semnalului de clock pentru TMR0
T0SE – bit de selecție a frontului
PSA – bit de asignare a prescalerului
PS2:PS0 – biți de selectare a raportului prescalerului:

Structura regiștrilor TMR0, INTCON și OPTION_REG se prezintă după cum urmează
(fig.12):

Figura 12: Structura regiștrilor TMR0, INTCON și OPTION_REG
2.1.6 Convertorul analog/digital (ADC)
Modulul ADC dispune de 8 intrări în cazul microcontrolerului PIC16F877. Semnalul analogic de pe intrare este convertit prin aproximații succesive în semnal digital, valoarea rezultată
fiind pe 10 biți. Software se pot selecta referințe de tensiune înaltă sau joasă, acestea fiind combinații între Vdd, Vss, RA2 și RA3. Modulul ADC are particularitatea că poate funcționa în timp ce dispoziti vul este în modul
sleep. Pentru astfel de funcționare, semnalul clock al blocului A/D trebuie derivat din oscilatorul intern RC al blocului. Modulul A/D are în componența sa patru regiștrii:
− ADRESSH (registru superior pentru rezultatul conversiei)
− ADRESSL (registru inferior pentru rezultatul conversiei)
− ADCON0 (registrul 0 de control)
− ADCON1 (registrul 1 de control)
Registrul ADCON0 controlează funcționarea modulului de conversie A/D. Registrul ADCON1 configurează funcț iile pinilor portulu i A și E, care po t fi configuraț i ca intrări sau ieșiri
(pinul RA3 poate fi configurat ca referinț ă de tensiune). Regiștrii ADRESSH și ADRESSL conțin
rezultatul pe 10 biț i al c onversiei A/D. Când conversia e terminată, rezultatul e încărcat în această
pereche de regiștrii, bitul GO/ DONE din registrul ADCON0 este pus pe ”0” fiind astfel setat bitul
flag ADIF (întrerupere).
Diagrama bloc a modulului convertor A/D este arătată în figura 13:

Sistem de monitorizare parcare auto cu PIC 16F877

19

Figura 13: Diagrama bloc a convertorului A/D
Structura și semnificația biților registrului ADCON0 se prezintă după cum urmează:

unde
ADCS1:ADCS0 – bit de selecția a semnalului clock pentru conversia A/D
CHS2: CHS0 – bit de selecție a canalului analogic de intrare
GO/ DONE – bit de stare a conversiei A/D
ADON – bit de activare a convertorului A/D
Structura și semnificația biților registrului ADCON1 este ur mătoarea:

unde
ADFM – bit de selectare a formatului rezultatului conversiei
PCFG3:PCFG0 – biți de configurare a pinilor portului A/D
Pentru a realiza o conversie analog/digitală trebuie urmați pașii următori:
 configurarea modulului A/D:
• configurarea pinilor analogici/referință de tensiune și a celor digitali (ADCON1)
• selectarea intrărilor (ADCON0)
• selectarea clock -ului pentru conversia analog/digitală (ADCON0)
• activarea modulului A/D (ADCON0)
 configurarea întreruperilor (dacă se doresc):

Sistem de monitorizare parcare auto cu PIC 16F877

20

• punerea pe „0 ” a bitului ADIF
• setarea bitului ADIE pe „1”
• setarea bitului PEIE pe „1”
• setarea bitului GIE pe „1”
 așteptarea timpului necesar achiziției
 startul conversiei prin setarea bitului GO/ DONE din registrul ADCON0
 așteptare până când conversia e terminată (bit ul GO/ DONE devine „0” sau apare o
întrerupere)
 citirea rezultatului din regiștrii ADRESSH și ADRESSL

Cerințe care trebuie îndeplinite pentru achiziția semnalului analogic
Pentru ca modulul de conversie să beneficieze de acuratețea specifică, condensatorul de
menținere de la intrarea analogică (CHOLD), vizibil în schema următoare (fig.14), trebuie să
se încarce complet până la nivelul maxim al tensiunii de intrare :

Figura 14: S chema electrică necesar ă achiziției semnalului analogic
în care: C PIN – capacitatea de intrare
R IC – rezistență de interconectare
Impedanța sursă Rs și impedanța comutatorului de eșantionare intern (Rss)
afectează direct timpul necesar încărcării condensatorului C HOLD. Imped anța maximă recomandată
pentru surse analogice este de 10kΩ. Pe măsură ce impedanța scade, scade și timpul de achiziție. Timpul minim de achiziție este T
ACQ = 19,72us
Selectarea semnalului clock pentru conversie
Timpul de conversie raportat la bit este definit ca T AD. Conversia A/D pe 10 biți necesită un
minim de 12 T AD. Sursa semnalului clock este selectată software din următoarele opțiuni posibile:
2Tosc , 8T osc , 32T osc sau oscilatorul intern RC al modulului A/D. Pentru conversii executate corec t
este necesar ca frecvența semnalului clock să fie aleasă astfel încât T AD ≤ 1,6µs .
Frecvențele maxime de funcționare în funcție de TAD sunt reprezentate în tabelul din figura
15:

Figura 15: Frecvențele de funcționare
NOTE: 1 . oscilatorul RC are T AD tipic de 4us dar poate varia între 2 -6us

Sistem de monitorizare parcare auto cu PIC 16F877

21

2. când frecvențele dispozitivului depășesc 1MHz, clock- ul generat de oscilatorul
RC este recomandat doar pentru funcționarea în modul sleep.
Conversia analog/di gitală
O conversie în curs de desfășurare este oprită dacă bitul GO/ DONE este pus pe
„0”. Rezultatul parțial obținut nu va fi încărcat în regiștrii, aceștia continuând menținerea ultimului rezultat al conversiei. După oprirea conversiei e necesar un timp de așteptare egal cu 2TAD înainte ca următoarea achiziție să fie pornită. Achiziția va fi pornită automat după timpul de
așteptare. În acest moment bitul GO/ DONE poate fi setat pentru a se începe conversia dar setarea lui trebuie făcută separat faț ă de comanda de activare a convertorului.
Ciclii de realizare a conversiei se prezintă astfel (fig. 16):

Figura 16: Ciclii de realizare a conversiei
Regiștrii ce conțin rezultatul conversiei
Regiștrii ADRESSH și ADRESSL reprezintă locația în care este încărcat rezultatul
conversiei. Împr eună, cei doi regiștrii oferă 16 biți. Rezultatul pe 10 biți al conversiei poate ocupa
toți biții registrului ADRESSL și doar doi biți din registrul ADRESSH sau invers (justificare la
stânga sau la dreapta), în funcție de modul de setare a bitului ADFM. Biții ramași liberi sunt
considerați „0”. Modul de încărcare a regiștrilor cu rezultatul conversiei se prezintă în diagrama următoare (fig. 17):

Figura 17: Împărțirea rezultatului conversiei

Sistem de monitorizare parcare auto cu PIC 16F877

22

Regiștrii asociați convertorului A/D sunt prezentați în tabelul următor (fig.18):

Figura 18: Regiștrii asociați convertorului A/D

2.1.7. Întreruperi

Prin întrerupere se înțeleg următoarele:
• întreruperea fluxului de instrucțiuni al programului principal la apariția unui eveniment al
unei surse de întrerupere;
• executarea unor sarcini specifice acelui eveniment;
• revenirea în programul principal, și apoi continuarea executării acestuia din punctul în care a
avut loc întreruperea.
PIC16F877 acceptă până la 14 surse de întreruperi, așa cum este prezentat
sintetic în figura 19 :

Figura 19: Surse de întreruperi

Sistem de monitorizare parcare auto cu PIC 16F877

23
Fiecărei surse de întrerupere îi corespunde o variabilă internă (un flag). Fizic, acestea sunt
biți ai regiștrilor de control a întreruperilor (INTCON, PIR1 și PIR2) . Iată câteva din sursele de
întrerupere, cele mai uzuale:
• T0IF = depășire în registrul timer 0;
• TMR1IF = depășire în registrul timer 1;
• RBTF = Schimbarea valorii oricărui bit din portul B;
• INTF = Setarea bitului 0 al portului B;
• RCIF = recepția unui octet pe interfața de comunicație serială;
• TXIF = transmisia unui octet pe interfața de comunicație serială;
• ADIF = terminarea unei conversii analog numerice.
• etc.
La debutul programului, toate aceste flag -uri au valoarea zero. Atunci când apare
evenimentul, flagul aferent devine automat 1.
La scrierea programului, se pot utiliza doar numele flagului, fără a trebui știut și registrul din care face parte.
Fiecare din cele 14 surse poate genera o întrerupere nu mai dacă acel eveniment este validat
cu ajutorul unor biți de mascare. Fiecărui flag al unei surse de întrerupere îi corespunde câte un bit de mascare, așa cum se observă în figura de mai sus. Dacă flag -urile menționate anterior erau
setate/resetate autom at de evenimentele aferente, biții de validare trebuie setați/resetați software.
Sursele date ca exemplu mai sus, au următorii biți de validare:
• T0IE = depășire în registrul timer 0;
• TMR1IE = depășire în registrul timer 1;
• RBTE = Schimbarea valorii oricăr ui bit din portul B;
• INTE = Setarea bitului 0 al portului B;
• RCIE = recepția unui octet pe interfața de comunicație serială;
• TXIE = transmisia unui octet pe interfața de comunicație serială;
• ADIE = terminarea unei conversii analog numerice.
• etc.
Există și două flag- uri cu caracter general:
• GIE = General Interrupt Enabable bit. Acesta este cel care validează sau invalidează toate
sursele de întrerupere. Dacă GIE = 0; atunci nici un eveniment nu va putea genera
întreruperi.
• PIE = Periferal Interrupt Enab le bit. Acesta validează întreruperile generate de blocurile
numite periferice: convertorul A/D, comunicația serială, etc. Spre exemplu dacă se dorește validarea întreruperi de recepție serială asincronă RCIF, atunci vor trebui să validați toți biții de va lidare aferenți:
RCIE = 1;
PIE = 1;
GIE = 1;
Când apare un eveniment care lansează o întrerupere în execuț ie, primul lucru care are loc
este punerea automată pe zero a bitului de validare generală a întreruperilor GIE. Aceasta
face ca nici o altă întrerupere să nu mai oprească întreruperea aflată în execuț ie. La terminarea
tratării întreruperii, GIE este setată din nou, în mod automat, permiț ând astfel continuarea
programului în așteptarea unei noi întreruperi. De la apariț ia evenimentului până la lansarea efectivă
în execuț ie a rutinei de întrerupere, trece un anumit timp. La apariția evenimentului,
microcontrole rul termină de executat instrucțiunea aflată în curs de execuție, își salvează datele pe
stivă, după care face un salt la adresa 0004h, unde se află punctul de start al rutinei de întrerupere. Interval de timp scurs de la apariția evenimentului până la startul rutinei de întrerupere (latency) nu
depășește trei sau patru cicluri de mașină, indiferent dacă instrucțiunea în curs era de un ciclu sau de doi cicli.

Sistem de monitorizare parcare auto cu PIC 16F877

24
Rutina de întreruperi este practic o funcție în care sunt descrise toate acț iunile ce tr ebuie să
fie executate la apariția evenimentului care a generat întreruperea. După ce este executată rutina de
întrerupe re, programul revine la instrucț iunea următoare celei de la care s -a făcut întreruperea.
Toate evenimentele care generează întreruperi, produc în final același semnal către CPU,
semnal care lansează în final o singură rutină de întreruperi. Deci în cazul în c are există mai multe
evenimente care trebuie să producă întreruperi, în momentul starului rutinei de întrerupere nu se știe care eveniment a generat întreruperea. Aflarea sursei întreruperii, respectiv a evenimentului care a cauzat întreruperea se face în rutina de întrerupere, prin interogare. Pentru aceasta în rutina de
întrerupere, sunt testate pe rând (interogate) flagurile aferente evenimentelor ce pot genera întreruperi. După identificarea sursei de întrerupere, și executarea sarcinilor aferen te, flagul
trebuie "șters" software, pentru ca după ieșirea din întrerupere, să fie evitate întreruperile recursive și să poată avea loc o nouă întreruperea datorată aceleiași surse. Dacă de la o sursă de întrerupere evenimentele care o cauzează se succed foarte repede, este posibil ca unele să "scape" și să nu genereze întreruperi. Acest lucru se întâmplă atunci când evenimentul se repetă mai repede decât timpul nec esar rutinei de întrerupere să- și efectueze sarcinile. De aceea, în astfel de cazuri, est e bine
ca rutina de întrerupere să fie cât mai scurtă posibil.

Sistem de monitorizare parcare auto cu PIC 16F877

25

2.2. Traductoare

2.2.1. Introducere

În diferite aplica ții practice de conducere automată a unor procese indiferent de mijloacele și
procedeele aplicate una din cele mai importante funcț ii este de informare. Deciziile în ansamblul
global al unei astfel de scheme se pot lua numai ținând cont de informa țiile complete și corecte
asupra evoluț iei unor parametrii semnificativi ce caracterizează procesul. Aceste informaț ii
reprezintă de fapt valor i ale unor mărimi fizice ce se pot ob ține ca rezultat a unor operaț ii de
măsurare. În majoritatea cazurilor aceste operaț ii de măsurare sunt efectuate de către aparate de
măsură sau de către sisteme de achizi ție date care introduc calculatorul în co ntrolul unui astfel
de proces. În sistemele automate conduse de calculator aceste operaț ii sunt efectuate de către
traductoare, dispozitive care stabilesc o coresponden ță între mărimea de măsurat și o mărime cu un
domeniu de varia ție calibrat, aptă d e a fi recep ționată și prelucrată de echipamentele de conducere.
Din punct de vedere a caracteristicilor statice și dinamice principalele cerin țe impuse traductoarelor
sunt: o rela ție liniară de dependen ță intrare ieșire și dinamică proprie care sa nu influenț eze
esențial funcționarea traductorului.

2.2.2. Structura generală a unui traductor

Realizarea funcț iilor de către traductoare astfel încât semnalul ob ținut la ieșirea acestuia să
reprezinte valoric mărimea măsurată, sub formă disponibilă instala țiilor de automatizare, implică o
serie de operaț ii de conversie cu caracter informa țional însoț ite de transformări energetice bazate pe
energia asociată procesului. În acest scop structura unui traductor conț ine următoarele componente
(fig.20):

Figura 20: Structura unui traductor
Elementul sensibil (captator sau senzor) este elementul care realizează detectarea mărimii
fizice pe care traductorul trebuie sa o măsoare (mărimea X). Elementele sensibile se împart în do uă
mari categorii:
elemente sensibile parametrice: sunt componente pasive sau active de circuit care își modifică parametrul în func ție de influenț a mărimii de măsurat. De exemplu: rezisten ța electrică
modificată de influen ța temperaturii, capacitate electrică modificată de varia ția distan ței dintre
armaturi.
elemente sensibile generatoare: sunt caracterizate prin faptul că generează o sarcină electrică, tensiune sau curent propor ționale cu mărimea de măsurat. Adaptorul ar e rolul de adaptare a
informa ției ob ținute de elementul sensibil la cerin țele impuse de aparatura de măsurare. Forma de

Sistem de monitorizare parcare auto cu PIC 16F877

26

variaț ie a semnalelor de la ieșirea adaptorului pot realiza o clasificare în adaptoare numerice și
analogice.
2.2.3. Caracteristicile și performan țele traductoarelor
Caracteristica statică
Caracteristica statică reprezintă dependen ța î n t r e i n t r a r e a ș i i e ș i r ea u n u i t r a d u c t o r ,
ținând cont de întregul ansamblu de factori menționați în structura generala a traductoarelor, dată de
relația:
Y=f(X)
în care X și Y îndeplinesc cerin țele unei măsurări statice. Relaț ia de mai sus exprimă totuși o
situa ție idealizată, în cazul real intervenind o serie de perturbaț ii externe (PE1…PEm) sau interne
(PI1…PIn) traductorului . Mărimile perturbatoare externe au o influenț ă directă asupra caracteristicii
statice și pot fi de natura unor factori de mediu, temperatură, presiune, umiditate, câmpuri
magnetice externe, etc. Mărimile perturbatoare interne se manifestă ca urmare a efectului
zgomotului generat de rezistoare, semiconductoare, modificarea proprietăț ilor materialelor prin
îmbătrânire , frecări în lagăre, etc. Influen ța acestor mărimi determină abaterea de la rela ția de
dependenț ă ideală – erori de influen ță. Prin urmare caracteristica reala a unui traductor este descrisă
de relaț ia:
Y=f(X; PI1…PIn; PE1…PEn) Admi țând că influenț ele perturbaț iilor nu depășesc eroarea tolerată, atunci
caracteristica statică uzuală pentru traductoarele analogice este: Y=K(X -Xo)+Yo
unde Xo și Yo pot lua valori pozitive sau negative inclusiv 0, așa cum se poate observa în figura 21:

Figura 21: Caracteristica statică a traductoarelor analogice
Erorile de neliniaritate și histerezis
În general caracteristicile statice reprezintă o aproximare a caracteristicilor statice reale
neliniare. Pentru evaluarea acestei aproximări se utilizează abaterea de la neliniaritate sau eroarea de
neliniaritate. Pent ru aceasta se trasează o dreaptă AB prin fixarea punctelor extreme care să aproximeze
cât mai b ine caracteristica reala (fig.22 ):

Figura 22: Caracteristica reală a traductoarelor
Se trasează dreptele A’B’ și A’’B’’. Cea mai mare dintre diferen țele ∆Y’ și ∆Y’’

Sistem de monitorizare parcare auto cu PIC 16F877

27
reprezintă eroarea de neliniaritate care, raportată la domeniul (Y min, Ymax) este:

∈ 𝑛 =∆𝑌𝑚𝑎𝑥
𝑌max− 𝑌 𝑚𝑖𝑛100%

Domeniul de măsură
Domeniul de măsură se situează de regulă în zona liniară a caracteristicii statice si se
exprimă prin: X
min…X .
Atât Xmin cât și Ymin pot fi zero sau diferite de zero.
Sensibilitatea
În cazul caracteristicilor statice liniare sensibilitatea se exprimă ca fiind coeficientul
unghiular al dreptei :
𝑆=𝑑𝑦
𝑑𝑥=Δ𝑦
Δ𝑥=𝐾=𝑡𝑔∝
sau raportat la domeniu:
𝑆=𝑌𝑚𝑎𝑥−𝑌𝑚𝑖𝑛
𝑋𝑚𝑎𝑥−𝑋𝑚𝑖𝑛
Uneori este utilizată și forma sensibilită ții relative Sr ca fiind raportul dintre sensibilitatea
relativă a mărimii de ieșire și sensibilitatea relativă a mărimii d e intrare:

𝑆=𝑌
𝑌
𝑑𝑋
𝑋

Rezolu ția
Rezolu ția este definită ca fiind intervalul minim de varia ție a mărimii de intrare care poate
determina apari ția unui salt al semnalului de ieșire. Fiind un parametru calitativ al unui traductor,
rezolu ția este utilizată în special în cadrul traductoarelor numerice a căror caracteristică variază în
trepte unde se reprezintă comod prin numărul de biți (de exemplu pentru un semnal de ieșire pe 10 biți, domeniul de măsurare se cuantifică în 1024 nivele pos ibile ceea ce duce la o rezolu ție de 0,1%
din valoarea domeniului).
Precizia
Precizia este cel mai important indicator al calită ții procesului de măsurare. Astfel precizia
este cu atât mai bună cu cât, pentru o probabilitate dată (care adesea se ia apr opiată de 1), intervalul
în care se situează valoarea reala este mai restrâns. Diferen ța dintre rezultatul măsurării și valoarea
reală este denumită eroare de măsurare și este evident că măsurarea e cu atât mai bună cu cât aceste erori sunt mai mici.
Erorile se pot clasifica după cum urmează, în funcț ie de cauzele care le generează:
− eroarea de interacț iune – este cauzată de exercitarea acț iunii directe asupra valorii reale de
însuși elementul sensibil al aparatului de măsurat astfel încât valoarea efectiv măsurată diferă de cea reală
− eroarea de model – o sursă de erori poate fi determinarea imperfectă a caracteristicii
statice prin idealizarea lor. Când aceste caracteristici sunt deduse experimental utilizând

Sistem de monitorizare parcare auto cu PIC 16F877

28
etaloane, acestea la rândul lor av ând precizii limitate, iar condiț iile reale de utilizare pot
diferi de cele corespunzătoare etalonării.
− eroarea de influen ță – există cazuri când în aplica țiile practice există tendin ța de a nu se ține
cont de efectele influen țelor externe și interne.
În funcț ie de proprietăț ile lor generale prin care se pot stabili formalizări matematice, erorile
pot fi clasificate și pe următoarele criterii:
• erori sistematice – se produc în același sens în condiț ii neschimbate de repetare
• a măsurării și au valori constante sau variabile după o lege dată
• erori aleatoare – apar întâmplător sau accidental, la repetarea măsurărilor apar
• diferen țe atât ca sens cât și ca valoare cu variaț ii imprevizibile.
• erori grosiere – conduc la rezultate total eronate iar defectele lor nu p ot fi luate în
considerare.
În determinările calitative ale erorilor de măsurare se utilizează și următoarea clasificare:
 eroarea reală – diferen ța ∆X i dintre valoarea reală X și valoarea măsurată a
mărimii V i : ∆X i=V i-X

 eroarea absolută – diferen ța ∆V i dintre valoarea măsurată V i și valoarea de referin ță V:
∆V i=V i-V

 eroarea relativă – se definește ca fiind raportul dintre eroarea reală și valoarea adevărată:
∆X i real=∆X i/X sau ∆V i real=∆V i/V.

2.3.4. Tipuri de traductoare

Traductoarele pot fi clasificate în următoarele categorii:
A. Traductoare de temperatură:
• traductoare termoelectrice generatoare (termocupluri)
• termometre cu cuar ț
B. Traductoare de deplasare
• traductoare rezistive de deplasare
• traductoare inductive pentru deplasări liniare mici:
− elemente sensibile inductive cu miez mobil
− elemente sensibile inductive cu întrefier variabil
• traductoare capacitive pentru deplasări liniare mici:
− elemente sensibile capacitive cu modigicarea distan ței dintre armături
− elemente sensibile capacitive cu modificarea suprafeț ei
− elemente sensibile capacitive cu modificarea dielectricului
• traductoare numerice pentru deplasări unghiulare:
− traductoare numerice cu contact o
− traductoare numerice magnetice o
− traductoare numerice optice
C. Traductoare de proximitate:
• traductoare magnetice de proximitate
• traductoare capacitive de proximitate
• traductoare fotoelectrice de proximitate
• traductoare Hall
• traductoare de proximitate integrate
D. Traductoare de turaț ie:
• Tahogeneratoare de curent continuu

Sistem de monitorizare parcare auto cu PIC 16F877

29
• Tahogeneratoare de curent alternativ
• Traductoare de turaț ie cu reluctan ță variabilă
• Traductoare de turaț ie cu elemente fotoelectrice
• Traductoare de turaț ie cu elemente sensibile inductive
• Traductoare de turaț ie cu elemente sensibile magnetice
• Traductoare de turație inductive cu senzor de proximitate inte grat
E. Traductoare de viteză
F. Traductoare de vibraț ii și acceleraț ii
G. Traductoare pentru forț e și momente
• Traductoare de tip tensorezistiv
• Traductoare cu coardă vibrantă
• Traductoare magnetostrictive

Sistem de monitorizare parcare auto cu PIC 16F877

30
o blocul de alimentare
o blocul de comandă și control format din microcontrolerul PIC16F877
o blocul format din senzorii de acces, parcare, temperatură și iluminat
o blocul multiplexor
o blocul format din regiștrii de șiftare și decodificatoare pentru șapte segmente
o blocul de afișare a temperaturii, numărului de locuri libere și interfața cu

o utilizatorul
blocul driver .
CAP.3 PROIECTUL TEHNIC

3.1. Schema bloc
Funcționarea dispozitivul controlat de microcontroler are la bază următoarea schemă bloc (fig.33) în componențe căreia se regăsesc blocurile:

Figura 23: Schema bloc

Comunicarea între blocurile enumerate mai sus se realizează utilizând semnal digital, cu
excep ția semnalelor recep ționate de către microcontroler de la senzorul de temperatură și senzorul
de luminozitate, semnale de natură analogică, care vor fi convertite in semnal digital. În figura de mai sus se prezintă modul în care microcontrolerul comunică cu restul blocurilor și numărul de biți pe care se face comunicarea.
Blocul senzorilor de parcare este alcătuit din 15 senzori optici reflectivi, fiecare montat pe
câte un loc de parcare. Am adoptat această soluție pentru a micșora timpul care ar fi necesar

Sistem de monitorizare parcare auto cu PIC 16F877

31

șoferului pentru a căuta un loc li ber, prin varianta aleasă el fiind informat cu privire la locul exact
de parcare pe care îl va ocupa.
Fiecare ieșire a acestor senzori este multiplexată pe rând de către două multiplexoare
comandate pe patru biți de microcontroler. Valorile logice ale ieș irilor senzorilor sunt „ citite” de
microcontroler care numără locurile libere de parcare și trimite informația rezultată la registrii de
șiftare care stochează temporar informația primită serial de la microcontroler. Când informația este completă ea este trimisă către patru decodificatoare care comandă patru digiți pe care va fi afișat numărul locurilor libere din parcare. Tot pe acești digiți se va afișa, alternând cu afișarea numărului de locuri libere, temperatura sesizată de senzorul de temperatură. Semnalul analogic furnizat de
senzorul de temperatură intră in convertorul analog numeric al microcontrolerului care îl transformă in semnal digital, rezultatul fiind apoi trimis către digiți și afișat.
Am implementat soluția de afișare a numărului locurilor libere și a temperaturii cu ajutorul
digiților în ideea că acest panou cu digiți este amplasat pe o șosea din apropierea parcării în vederea informării șoferilor cu privire la disponibilitatea locurilor de parcare astfel încât se evită pierderea timpului cu deplasarea fără rezultat până la intrarea în parcare. Afișarea temperaturii are doar rol
informativ.
Blocul senzorilor de acces este format din patru senzori reflectivi identici celor folosiți la
locurile de parcare. În acest bloc am folosit în plus un senzor tip bariera optica necesar „citirii” unui
card de acces în parcare. În funcție de starea senzorilor de acces, microcontrolerul ia deciziile de permitere sau restricționare a accesului în sau din parcare prin comandarea blocului driver. În componența blocului driver am inclus doua motoare de curent continuu utilizate pentru acționarea barierelor de intrare și ieșire. Cele două motoare sunt controlate cu ajutorul a doua circuite integrate specializate, comandate la rândul lor de m icrocontroler. În acest bloc am mai
inclus un releu de comandă prin intermediul căruia se dorește iluminarea incintei parcării la lăsarea întunericului. Semnalizarea lăsării întunericului este făcută de un fototranzistor, semnalul preluat de la acesta fiind prelucrat de microcontroler care dă co manda releului și aprinde lumina.
Pe lângă blocurile menționate mai sus am mai utilizat și un bloc de afișare cu LCD, acesta
având rolul de interfață între sistemul electronic și utilizator. Microcontrolerul comandă scrierea pe LDC a diferitelor texte prin care se solicită cardul de acces, se comunică locul liber pe care șoferul îl va ocupa, sau prin care se arată că accesul este interzis.
3.2. Blocul de alimentare
Asigurarea alimentării cu tensiune a a nsamblului electronic se face utilizând un
transformator 12V/1A. Tensiunea de 12V c.a. se redresează printr- o punte redresoare, urmând a fi
apoi stabilizată cu ajutorul unui circuit integrat stabilizator de tipul LM7805, capabil sa genereze la ieșire o ten siune de 5V c.c., curentul maxim suportat fiind de 1A.
Pentru o bună funcționare a dispozitivului este necesar ca fiecare circuit integrat să
beneficieze de filtraj propriu asigurat de cate un condensator electrolitic cu valoare de 10uF. O atenție deosebită trebuie acordată filtrajului tensiunii de comandă a motoarelor de acționare a barierelor; astfel se impune utilizarea unui condensator de filtraj de valoare ridicata (4700uF).
Daca alimentarea dispozitivului se face direct cu tensiune continuă, se va utiliza urmă toarea
schemă electronică (fig.2 4):

Figura 24: Schema electrică a blocului de alimentare

Sistem de monitorizare parcare auto cu PIC 16F877

32

Prin utilizarea variantei de alimentare cu transformator, dioda D1 trebuie inlocuită cu o
punte redresoare.
3.3. Blocul de comandă și control (microcontrolerul)
Blocul de comandă și control este alcătuit din microcontrolerul PIC16F877 (sau PIC16F877A). Cu ajutorul acestui microcontroler se generează semnale de comandă, se citesc și convertesc semnale analogice în semnale d igitale și se supraveghează întreg sistemul de parcare.
Microcontrolerul dispune de cinci porturi de intrare -ieșire, care reprezintă interfaț a dintre
microcontroler și celălalte componente externe ale sistemului, prin intermediul acestor porturi realizându -se transferul de date înspre și dinspre microcontroler.
Funcț iile principale pe care microcontrolerul trebuie sa le realizeze în acest proiect sunt
următoarele:
 Generarea
− semnalului SRG_CLK necesar funcționării corecte a regiștrilor de șiftare
− semnalelor EN1, EN2 pentru comanda alimentării circuitelor driver pentru comanda motoarelor
− semnalelor de control și comanda ale displayului
− semnalelor de acordare a accesului în/din parcare prin comanda
barierelor (ENTRANCE_UP și EXIT_UP)
− semnalelor de select are a multiplexoarelor și a canalelor de intrare în multiplexoare
(MUX_ENABLE, respectiv MUX_A, MUX_B, MUX_C).
− semnalului de aprindere a luminii ambientale la lăsarea întunericului
(Lights_UP)

 Citirea
− semnalelor referitoare la prezen ța mașinilor la intrarea în parcare sau la ieșirea din
parcare (I_CAR_1, I_CAR_2, respectiv E_CAR_1, E_CAR_2)
− semnalelor referitoare la starea barierelor (I_UP, I_DOWN, E_UP, E_DOWN)
− semnalului de clock necesar programării (PGC)
− semnalul de validare a cartelei de acces în parcare (Access_card)
− semnalului provenit de la ieșirea multiplexorelor.
− semnalului analogic de acț ionare a iluminatului
− semnalului analogic ce con ține informaț ia legată de temperatură.
Schema electrică de conectare a microcontrolerului cât și semnalele alocate
pinilor se prezintă după cum urmează (fig.25):

Figura 25: Schema electrică de conectare a microcontrolerului

Sistem de monitorizare parcare auto cu PIC 16F877

33

Pentru a putea fi programat direct pe placa electronică principală a sistemului, am optat
pentru utilizarea unui conector (J8) cu nouă pini, astfel având posibilitatea de a lucra cu
programatorul PICKIT2, cu ajutorul căruia am și realizat scrierea soft -ului în memoria
microcontrolerului. Utilizarea acestui conector a făcut posibilă și „depanarea” softului pe măsură ce
acesta a fost creat, datorită mediului de lucru MPLAB, care permite funcț ionarea în modul debug
pentru a depista eventualele erori ale softu lui creat. Scrierea softului se poate face în două moduri:
fie utilizând limbajul mașină (denumit și limbaj de asamblare) care are un set de 35 de instruc țiuni,
fie utilizând limbajul de programare C sau C++. Datorită simplită ții în în țelegere și a numărul ui
mult mai mic de linii necesare programului am ales realizarea soft- ului în limbaj de programare C,
funcționarea acestuia fiind explicată în cele ce urmează cu ajutorul unor diagrame logice. Pentru programarea microcontrolerului cu ajutorul programator ului PICKIT2 se recomandă
următoarele măsuri:
1) evitarea asignării a două funcț ii unui singur pin al microcontrolerului mai ales daca pinul
respectiv are și rol de pin de programare (de exemplu pinii 39 și 40 – PGC și PGD). Prin
utilizarea unui pin atât ca intrare/ieșire cât și ca pin de programare poate duce la reacț ii
nedorite ale microcontrolerului în timpul programării, aceasta putând fi chiar împiedicată.
2) este de preferat ca dispozitivul electronic (așa cum este cazul de faț ă ) în care este montat și
microcontrolerul să fie alimentat de la o sursă proprie de energie, pentru a evita consumul exagerat de curent de la ieșirile programatorului, fapt care poate duce la distrugerea acestuia.
Funcț ionarea microcontrolerului având implementat soft -ul necesar aplicaț iei are la bază
următoarea schemă logică principală (fig.26):
După ce d ispozitivul este a limentat (START ) se
realizează inițializarea microcontrolerulu i și a display-ulu i,
fiind șterse porturile de ie șire a le c ontrolerului și
caractere le care ar p utea s ă apar ă din întâmplare pe
display. După aceste etap e începe rularea efectiv ă a
programulu i impleme ntat în microcontroler , prin num ărarea
locur ilor de parcar e libe re și afișarea acesto ra, alternând cu
conver sia s emnalulu i analog ic furnizat de senzorul d e
temperatur ă în semnal digi tal și afișarea valor ii rezul ta te a
temperaturii.
În func ție de semnale le genera te de s enzoru l de
intrare în parcar e sau cel de ie șire din parcar e (în cazul în
care sunt p rezente mașini în aceste punct e de acces), se
inițializeaz ă procedur ile de com unicar e cu utilizatorul și
proce durile de acces în parcare sa u în ex teriorul e i, urm ate
de comanda m otoar elor de acționare a barierelor.
Pentru o func ționare corect ă a microcontrolerulu i este
necesar ă sincro nizare a citirii/scrieri i informa țiilor pe portur i
cu u n sem nal cuarț (extern microcontrolerului) și a
modulului TIMER0 al microcontrolerului, care dispune de
Figura 26: Schema logică principală
un presc aler cu ajutorul căruia poate fi selectată o anumită frecve nță de clock (numită
întrerupere) , depinzând de frecven ța de oscilaț ie a cuar țului. Am ales pentru această
aplica ție un cuar ț cu frecvenț a de oscila ție de 4MHz.
P rin punerea pe „0” logic a bitului T0CS din registrul OPTION_REG, se selectează timerul
intern al microcontrolerului.
Prin setarea bitului PS2 din registrul OPTION_REG pe valoarea logică „0”, bitul PS1 pe „1” logic, iar bitul PS0 pe „0” logic, se obț ine un raport al prescalerului de 1:8. Având o frecvenț ă a
oscilatorului extern de 4MHz, aceasta este divizată intern, rezultând la intrarea prescalerului o

Sistem de monitorizare parcare auto cu PIC 16F877

34

frecven ță de 1MHz. Datorită raportului ales pentru prescaler de 1:8, rezultă la ieșirea acestuia o
frecven ță de 125kHz care va ajunge la

registrul TMR0. După umplerea registrului TMR0 acesta setează bitul flag TOIF care semnalizează apari ția întreruperii. Frecven ța acestei întreruperi este :
f=125000/256=488,28 Hz, iar perioada de repetare este:
T=1/488,28=2ms. Numărarea și afișarea numărului locurilor libere și a temperaturii pe patru digi ți se face
conform schemei logice din figura 27:

Pentru a putea afișa alternativ numărul locurilor libere și valoarea temperaturii măsurate de senzor, am implementat software un numărător (t1), acesta contorizând secundele, în funcț ie de
frecven ța de clock generată de modulul TIMER0 folosit . A fișarea se
realizează astfel: dacă numărătorul t1=0s, digi ții vor afișa numărul
locurilor libere; daca numărătorul este diferit de zero, acesta continuă numărătoarea, iar în momentul în care a ajuns la t1=4s trece la afișarea temperaturii, iar dacă numărăt oarea a ajuns la opt secunde,
acest ciclu de numărare se termină, numărătorul fiind resetat iar ciclul se reia cu t1=0.
Numărarea locurilor libere este făcută de microcontroler, acesta contorizând pe rând starea fiecărei intrări ( care reprezintă de fapt
senzorii de parcare) din blocul multiplexor, rezultând astfel numărul
de locuri libere din parcare, care va fi apoi afișat pe doi din cei patru digiți.

Figura 27: Schema logică de numărare și afișare
Comunicarea cu utilizat orul se face cu ajutorul unui display pe care vor fi afișate texte,
îndrumând astfel utilizatorul să execute operaț ii specifice precum introducerea cardului de acces sau
parcarea la un anumit loc de parcare. De asemen ea pe display vor fi afișate și mesaje de întâmpinare
a utilizatorului sau care indică faptul ca parcarea este ocupată. Display -ul afișează textele periodic, având o perioadă de refresh de 200ms.
La alimentarea cu tensiune a ansamblului electronic, display -ul trece întâi printr -o secven ță
de inițializare în care se sterg toate caracterele existente în acel moment afișate pe display.
Această operaț ie este necesară deoarece altfel pot să apară caractere nedorite pe display.
Schema logică după care se realizează funcționarea părț ii software d e afișare a textelor se
prezintă după cum urmează (fig.28):

Sistem de monitorizare parcare auto cu PIC 16F877

35

Figura 28: Schema logică de afișare a textelor

După punerea în funcț iune a dispozitivului, display -ul este ini țializat. Dacă la intrare în
parcare nu este prezentă o mașină, microcontrolerul comandă display- ul să afișeze textul „Bună
ziua!”. În momentul în care la intrarea în parcare este prezentă o mașină, microcontrolerul analizează daca există locuri de parcare libere, iar daca toate locurile de parcare s unt ocupate, pe
display va fi afișat textul „Parcare ocupată!”. Dacă în parcare există cel pu țin un loc liber,
microcontrolerul „cere” cardul de acces, afișând pe display texul „Introduceț i card!”. După
introducerea cardului, microcontrolerul analizează ca rdul în vederea stabilirii validită ții acestuia,
afișând textul „Acces permis”, dacă acest card este valid, și indicând în același timp cel mai
apropiat loc de parcare liber prin textul „Parcaț i la ” . În acest mod de gestionare a locurilor de
parcare s e economisește mult timp, utilizatorul fiind avantajat în mod cert.
Refresh -ul display -ului este realizat software cu ajutorul unui counter (t2) care numără până
când ajunge la o valoare echivalentă cu 200ms, după care ciclul este reluat. Procedurile de acces în interiorul și exteriorul parcării sunt necesare pentru a permite
accesul în parcare sau în afara ei a mașinilor, implicând secven țe de control (prin „citirea” cardului
de acces) și siguranță (prin stabilirea unui anumit timp de acces pentru part ea de intrare în parcare).

Sistem de monitorizare parcare auto cu PIC 16F877

36

Schema logică ce permite accesul în interiorul parcării se prezintă in figura 29:

Figura 29: Schema logică de acces
Dacă accesul în parcare este permis, un timer numără 20 secunde, timp in care accesul
mașinii este permis, la terminarea acestui timp accesul fiind blocat. Intervalul de timp de 20
secunde este impus datorită procedurilor pe care trebuie sa le execute utilizatorul la intrarea în parcare precum recuperarea cardului și manevrarea autovehiculului către parcare. Dacă accesul în parcare nu este permis, se verifică daca este inserat cardul de acces, iar daca acesta este inserat, un al doilea timer numără intervalul de timp cât cardul este inserat. Dacă se men ține
cardul inserat timp de patru secunde, accesul va fi permis, în caz contrar accesul fiind blocat, presupunând că acel card nu este valid. Comenzile barierelor se realizează software de către microcontroler, în funcț ie de stările
senzorilor de la intrarea în parcare (dinaintea barierei – I_CAR_1_SENSE și de după barieră –
I_CAR_2_SENSE), senzorilor de la ieșire din parcare ( dinaintea barierei – E_CAR_1_SENSE și de după barieră – E_CAR_2_SENSE), senzorilor limitatori de cursă de la intrare (I_DOWN_LIM și
I_UP_LIM) și de la ieșire (E_DOWN_LIM și E_UP_LIM). Pentru a stabili func ționarea corectă a comenzilor barierelor, am construit tabele de adevăr pe baza
cărora am stabilit func țiile logice necesare a fi executate de microcontroler pentru a comanda
driverele motoarelor c are pun în mișcare barierele. Astfel , pentru cazul comenzii barierei de intrare
am realizat următorul tabel de adevăr (fig.40), care ține cont de stările senzorilor de la intrare în
parcare, stările limitatoarelor de cursă ale barierelor, starea senzorului de „citire” a cardului.
Valoarea logică a semnalelor ENTRANCE_UP (activ în „1”) și /EN1 (activ în zero) se impune astfel încât funcț ionalitatea să fie cea dorită.

Sistem de monitorizare parcare auto cu PIC 16F877

37

Figura 30: Tabel de adevăr pentru comanda barierei de intrare
Pe baza acestui tabel de adevăr am realizat funcț iile ENTRANCE_UP și EN1 utilizând
diagrama Karn augh cu logică negativă (fig. 31 și fig. 32):

Figura 31: Diagrama Karnaugh a funcției ENTRANCE_UP
Dacă se notează : /I_CAR_1 =a, /I_CAR_2 = b ACCESS = c, I_DOWN = d, I_UP = e,
rezultă funcția logică ENTRANCE_UP:
ENTRANCE_UP = a b + a c= a ( b +c)

Figura 32: Diagrama Karnaugh a funcției EN1

Sistem de monitorizare parcare auto cu PIC 16F877

38

Funcția logică EN1 va fi:
EN1= abde + abce + abcd + ad + abd
În cazul comenzii barierei de intrare am realizat tabelul de adevăr din figura 43, care ține
cont de stările senzorilor de la ieșire din parcare și de stările limitatoarelor de cursă ale barierei. Valoarea logică a semnalelor EX IT_UP (activ în „1”) și /EN2 (activ în zero) se impune astfel încât
funcț ionalitatea să fie cea dorită.

Figura 33: Tabel de adevăr pentru comanda barierei de ieșire
Pe baza acestui tabel de adevăr am realizat funcț iile EXIT_UP și EN2 utilizând diagrama
Karnaugh cu logica negativă (fig.34 și fig. 35):

Figura 34: Diagrama Karnaugh a funcției EXIT_UP
Pentru ușurinț ă am notat /E_CAR_1= a, /E_CAR_2=b, E_DOWN=c, E_UP=d, func ția
logică EXIT_UP fiind:
EXIT_UP= a
Funcția logică EN2 este dată de următorul tabel:

Figura 35: Diagrama Karnaugh a funcției EN2
Funcția logică EN2 va f i:
EN2= abd + ac + ab

Sistem de monitorizare parcare auto cu PIC 16F877

39
INTRĂRI IEȘIRI
C B A CE Y Y
X X X H Z Z
L L L L D0 D0
L L H L D1 D1
L H L L D2 D2
L H H L D3 D3
H L L L D4 D4
H L H L D5 D5
H H L L D6 D6
H H H L D7 D7
3.4. Blocul multiplexor
În componenț a blocului multiplexor am introdus două circuite integrate CMOS,
reprezentând două multiplexoare 8:1 (cu opt intrări și o ieșire) de tipul 74HC251. Cu ajutorul
acestor multiplexoare, stările senzorilor locurilor de parcare sunt citite de către microcontroler .
Pe lângă cele două multiplexoare am introdus în schema electrică și rezisten țe pull -up pentru
ieșirile senzorilor.
Schema de conectare a componentelor enumerate mai sus se prezintă astfel (fig. 36 ):

Figura 36: Schema electrică a blocului multiplexor
Ieșirile senz orilor se conectează la rezisten țele pull -up și la intrările multiplexoarelor
prin intermediul conectorului J1. Fiecare intrare a multiplexorului este selectată pe rând, în func ție
de combina ția valorilor intrărilor de comandă A, B și C, apoi intrarea selectată este transferată la
ieșirea multiplexo rului doar dacă intrarea de comandă CE (output enable) este pusă în zero
logic, în caz contrar ambele ieșiri vor fi în înaltă impedan ță. Funcț ionarea multiplexorului este
descrisă și de următorul tabel de adevăr: Unde: Z – stare de înaltă impedanță
D0 – D7 valorile intrărilor respective
X – valoare indiferentă

Sistem de monitorizare parcare auto cu PIC 16F877

40

Activarea ieșirilor celor două multiplexoare se face alternativ, microcontrolerul trimițând
bitul de validare direct pe intrarea CE a multiplexorului U4 și printr -o poartă inversoare la intrarea
CE a multiplexorului U12, valoarea fiind astfel inversată. În acest
mod unul din multiplexoare va avea ieșirea activă i ar celălalt va avea ieșirea în stare de
înaltă impedan ță. Microcontrolerul schimbă valoarea logică a bitului de validare (MUX_ENABLE)
după ce fiecare din cele opt intrări ale unui multiplexor au fost multiplexate și citite de microcontroler, urmând apoi ca celelalte opt intrări ale celuilalt multiplexor să fie citite de
microcontroler.
3.5. Blocul format din regiștrii de șiftare și decodificatoare
Pentru conversia și afișarea rezultatului numărătorii făcute de microcontroler privind numărul locurilor lib ere din parcare și temperatura ambiantă, am utilizat un ansamblu format din
două circuite integrate TTL de tipul 74LS164, reprezentând doi regiștrii de șiftare pe opt biț i
fiecare, și patru circuite integrate de tipul 74LS247, reprezentând patru decodifica toare
BCD/7segmente.
Schema electrică a ansamblului format din regiștrii de șiftare și decodificatoarele BCD/7 segmente se prezintă după cum urmează (fig.59):

Figura 37

Informa ția ce urmează a fi decodificată și afișată într -o secven ță este primită serial de la
microcontroler și este cuprinsă în 16 biți de date. Cei doi regiștrii de șiftare pe opt biț i se comportă
ca un registru de șiftare pe 16 biț i. Informa ția con ținută în cei 16 biț i este împăr țită în patru cuvinte

Sistem de monitorizare parcare auto cu PIC 16F877

41
INTRĂRI IEȘIRI
Clear Clock A B QA QB…QH
L X X X L L … L
H L X X QA0 QB0…QH0
H ↑ H H H QAn…QGn
H ↑ L X L QAn…QGn
H ↑ X L L QAn…QGn

binare care se regăsesc la ieșirile regiștirlor de șiftare. Aceste cuvinte trebuie decodificate de
decodificatoarele BCD/7 segmente pentru a putea fi afișate cifrele respective, reprezentând
informa ția.
Funcționarea regiștrilor de șif tare se bazează pe funcț ionarea bistabililor de tip
RS și se face conform tabelului de adevăr următor:
unde: H – nivel logic ridic at
L – nivel logic scăzut
X – stare indifer entă
↑ – tranziție din L în H
QA0, QB0…QH0 – nivele le inițiale ale
ieșirilor
QAn…QGn – nivele le ieșirilor după ce a
mai recentă tranziție

Semnalul de clock este generat prin softul implementat în microcontroler. Diagrama
temporală de funcționare a regiștrilor de șiftare se prezintă în figura 38:

Figura 38

Atât timp cât una din intrări are nivel logic zero, la ieșirea Q A semnalul va avea valoare
logică zero. Dacă intrările se află la nivel logic „1”, la următorul front crescător al semnalului clock,
ieșirea QA trece în nivel logic „1”. Dacă intrările rămân în stare logică „1”, la următorul front crescător al semnalului clock, ieșirea QA își men ține starea, iar ieșirea QB
trece în „1” logic la următorul front crescător al semnalului clock. La trecerea unei intrări în „0” logic, ieșirea QA va trece în „0” logic odata cu frontul crescător al semnalului clock. Daca ambele intrări revin din nou în „1” logic, ieșirea QA va bascula la următorul front crescător al clock, trecând în „1” logic, iar ieșirea QB va trece în „0” logic. Funcționarea continuă în acest fel.

Sistem de monitorizare parcare auto cu PIC 16F877

42
FUNC
ȚIA INTRĂRI BI IEȘIRI
LT RBI D C B A RB0 QA QB QC QD QE QF QG
0
1
2
3 H
H
H
H H
X X
X L
L L
L L
L L
L L
L H
H L
H L
H H
H H
H OFF
ON
OFF
OFF OFF
OFF
OFF
OFF OFF
OFF
ON
OFF OFF
ON
OFF
OFF OFF
ON
OFF
OFF OFF
ON
ON
ON ON
ON
OFF
OFF
4
5
6
7 H
H
H
H X
X X
X L
L L
L H
H H
H L
L
H
H L
H L
H H
H H
H ON
OFF
OFF
OFF OFF
ON
ON
OFF OFF
OFF
OFF
OFF ON
OFF
OFF
ON ON
ON
OFF
ON OFF
OFF
OFF
ON OFF
OFF
OFF
ON
8
9
10
11 H
H
H
H X
X X
X H
H H
H L
L L
L L
L
H
H L
H L
H H
H H
H OFF
OFF
ON
ON OFF
OFF
ON
ON OFF
OFF
ON
ON OFF
OFF
OFF
OFF OFF
ON
OFF
ON OFF
OFF
ON
ON OFF
OFF
OFF
OFF
12
13
14
15 H
H H
H X
X X
X H
H H
H H
H H
H L
L
H
H L
H L
H H
H H
H ON
OFF
ON
ON OFF
ON
ON
ON ON
ON
ON
ON ON
OFF
OFF
ON ON
ON
OFF
ON OFF
OFF
OFF
ON OFF
OFF
OFF
ON
BI
RBI
LT X
H
L X
L
X X
L
X X
L
X X
L
X X
L
X L
L
H ON
ON
OFF ON
ON
OFF ON
ON
OFF ON
ON
OFF ON
ON
OFF ON
ON
OFF ON
ON
OFF

Daca intrarea CLEAR este pusă în „0” logic, toate ieșirile vor trece în „0” logic. Cele patru
decodificatoare pe care le- am utilizat au rolul de a transforma cuvintele binare pe patru bi ți de
la ieșirile regiștrilor de șiftare în semnale compatibile cu digiț i cu șapte segmente, pe care se vor
afișa cifre r eprezentând numărul locurilor libere în parcare și valoarea temperaturii ambientale.
Funcț ionarea celor patru decodificatoare poate fi explicată cu ajutorul tabelului de adevăr
care urmează (fig.39):

Figura 39: Func ționarea decodificatoarelor

unde: H – nivel logic ridicat
L – nivel logic zero
X – irelevant
Segmentele digitului, care se aprind pentru fiecare func ție din tabelul anterior, se prezintă în
figura 62:

Figura 40
Identificarea segmentelor unui digit făcându-se după cum urmează:

Sistem de monitorizare parcare auto cu PIC 16F877

43

3.7. Blocul de afișare

În blocul de afișare am inclus un display cu cristale lichide (LCD) de tipul AC162B care are rolul de interfaț ă de comunicare între sistemul electronic și utilizator, și două afișoare cu câte
doi digi ți fiecare de tipul DA04 -11GWA, cu consum redus, cu ajutorul cărora va fi afișat numărul
locurilor de parcare libere și temperatuta ambiantă. Datorită semnalelor de ieșire ale decodificatoarelor, am uitilizat digiți cu anod comun, comanda de aprindere fiind dată prin punerea la masă a catozilor segmen telor.
Catodul fiecărui segment este conectat la o rezisten ță de 820Ω, curentul absorbit de segment
fiind de 6mA. Schema electrică de conectare a celor patru digi ți se prezintă în figura 41:

Figura 41: Modul de conectare a digi ților
Corespondenț a între segmentele digiților și numărul pinilor se determină cu ajutorul
schemelor următoare (fig.42):

Figura 42

Sistem de monitorizare parcare auto cu PIC 16F877

44

în care : – Dig1 și Dig2 reprezintă digiț ii
– 4, 5 reprezintă anozii celor doi digiț i (pinii de alimentare)
– 1,2,3,6,7,8,9,10,11,12,13,14,15,16 reprezintă catozii segmentelor (pinii de comandă).
În func ție de semnalul primit de la cele patru decodificatoare, fiecare digit va afișa un
caracter, conform tabelului de identificare a segmentelor aprinse prezentat la blocul decodificator.
Comunicarea dintre sistem si utilizator se face cu ajutorul display -ului, capabil sa afișeze 32
caractere (câte 16 caractere pe un rând). Am utilizat un dis play de tipul AC162B care nu
beneficiază de backlight, având însă posibilitatea de a regla contrastul caracterelor afișate.
Schema de conectare a display -ului și semnalele de comunicare cu microcontrolerul se
prezintă după cum urmează (fig.43):

Figura 43
Semnifica ția pinilor și simbolurile lor sunt explicate cu ajutorul tabelului următor:

NUMĂR PIN SIMBOL FUNCȚ IE
1 VSS Masă (0V)
2 VDD Alimentare (+5V sau +3V3)
3 VEE Contrast
4 RS Date/set de instrucțiuni
5 RW Selecție scriere sau citire
6 E Semnal de activare
7 DB0 Bus de date
8 DB1
9 DB2

10 DB3
11 DB4
12 DB5
13 DB6
14 DB7

Sistem de monitorizare parcare auto cu PIC 16F877

45

Datorită faptului că display -ul beneficiază de un bus de date pe opt biț i, transmiterea datelor
de la microcontroler către LCD se poate face fie prin cuvinte a câte opt biț i, caz în care sunt utilizate
opt ieșiri ale microcontrolerului, timpul necesar conversiei cuvântului în caractere fiind mai mic, fie prin cuvinte a câte patru bi ți, numărul ieșirilor necesare din micr ocontroler fiind doar de patru, dar
timpul necesar conversiei este mai mare. Pentru a beneficia de cât mai multe ieșiri disponibile din microcontroler, am optat pentru configuraț ia de transmitere a informa ției pe patru biț i.
Display -ul folosit are propriul lui controler, care decodifică informa ția primită de la
microcontroler de pe portul C de ieșire și gestionează afișarea caracterelor necesare. Fiecare caracter are atribui ți opt bi ți, scrierea acelui caracter pe display făcându -se în mai multe etape, întâi
fiind pus în „0” logic bitul RW (pentru a se putea face scrierea), bitul RS este pus în „1” logic, etapă urmată de setarea bitului de activare E al display – ului, urmează apoi a fi transmiși cei mai
semnificativi patru biți către LCD, urmând din nou setarea bitului de activare E, după care se
transmit cei mai pu țin semnificativi patru biț i.
Diagrama temporală care descrie secven ța de scriere a datelor se prezintă conform figurii
66:

Figura 44: diagrama temporală a secvenței de scriere

în care:
− tcycE – timp de activare a ciclului de scriere (minim 500ns)
− PW EH – lățimea pulsului de activare (minim 230ns)
− tEr, tEf – timp de creștere respectiv descreștere (maxim 20ns)
− tAS – timp de selectare a adresei de m emorie (minim 40ns)
− tAH – timp de men ținere a adresei de memoriei (minim 10ns)
− tDSW – timp de setare a datelor (minim 80ns)
− tH – timp de men ținere a datelor (minim 10ns).
Tabelul de identificare a caracterelor care pot fi afișate pe tipul de display uti lizat
și a combinațiilor binare corespunzătoare, se prezintă după cum urmează (fig. 45):

Sistem de monitorizare parcare auto cu PIC 16F877

46

Figura 45: Tabel de identificare a caracterelor display -ului

Sistem de monitorizare parcare auto cu PIC 16F877

47
CAP. 4 REZULTATE

Pornind de la o idee proprie de îmbunătăț ire a sistemelor de parcări existente în țară, am
realizat fizic un dispozitiv electronic capabil sa aducă îmbunătă țiri sistemelor de parcare deja
existente, utilizând componente electronice relativ ușor de procurat. Prin utilizarea microcontrole rului PIC16F877 am reușit realizarea tuturor funcț ionalită ților
propuse, fiind utilizate toate porturile de intrare/ieșire disponibile ale microcontrolerului și convertorul analog numeric. Anumite func ționalită ți precum generarea semnalului PWM pentru
comanda celor două motoare de curent continuu au fost realizate prin utilizarea limbajului de programare C++ , codul sursă rezultat fiind compilat în faza de testare cu compilatorul disponibil în mediul de dezvoltare MPLAB, programarea fiind făcută cu ajutorul programatorului PIC KIT2. Prin utilizarea limbajului de programare C++ , testarea func ționalită ților și depanarea s -au
putut face mult mai repede și mai ușor decât în cazul utilizării limbajului de asamblare.
CAP. 5 CONCLUZII
Privind în viitor se poat e spune că autovehiculul, indiferent că acesta funcț ionează pe bază
de combustibili fosili sau pe bază de combustibili alternativi, va avea un viitor asigurat, existen ța
acestuia fiind perpetuată datorită numărului mare de locuitori ai Terrei dornici sa se deplaseze,
autovehiculul oferind cea mai bună soluț ie pe distan țe mici și medii. Ca urmare numărul
autovehiculelor va fi în continuare foarte mare, fiind necesare tot mai multe locuri de parcare. Pentru ț ări precum România, extinderea parcărilor pe orizontală nu va mai fi posibilă pentru
foarte mult timp, cel pu țin în orașele mari și aglomerate. Ca urmare, o solu ție eficientă de realizare
a parcărilor este dată de modelul proiectat și prezentat în această lucrare, adică de realizare a parcărilor supraet ajate.
Pe lângă cele scrise mai sus, se știe ca trăim într -o eră a vitezei pe toate planurile, toate
procesele fiind astfel calculate încât rezultatele să fie ob ținute în timpi cât mai mici cu putin ță.
În trafic, timpul contează pentru majoritatea conducătorilor de autovehicule. Aceasta implică
automat și timpul petrecut pentru a găsi un loc de parcare în parcările amenajate. Datorită
aglomeraț iei și numărului mare de vehicule, acest timp petrecut pentru căutarea unui loc de parcare
are de foarte multe ori un rol important pentru șofer. În ț ara noastră sistemul de parcări existente
este unul învechit, neexistând prea multe parcări care au un sis tem eficient de gestionare a locurilor
de parcare și a timpului de acces. Această problemă ar putea fi rezolvată prin implementarea sistemelor omoloage celui proiectat în lucrarea prezentată, capabil sa gestioneze eficient locurile de parcare, în timpul cel mai scurt posibil, timpul pierdut de conducătorul auto fiind mult redus. Cu toate că lucrarea de faț ă are mai mult scop didactic, ea a fost gândită în așa fel încât să
poată fi implementată fizic, la scară normală, cu mici adaptări .

Sistem de monitorizare parcare auto cu PIC16F877

48
Cocoș Bogdan Inginerie Anexa 1. Codul sursă

#include <pic1687x.h>
//#include <htc.h>
#include <sys.h> #include < string.h>
#include "delay.h"
#include "lcd.h"

static bit
LIGHT_DRIVE_
OUTPUT @
((unsigned)&PORTA*8+4) ;//ligh
t drive on RA4

static bit
EXIT_BARRIE
R_MOTO R_EN
ABLE

//access card sensor input
static bit ACCE SS_CARD @ ((unsigned)&PO RTC*8 +3);//ent rance a ccess c ard sensor

#define pol 1 //sensor pol arity (active on 0/1)
#define PARKI NG_SIZ E 16
#define TMR0_C OUN TER 700 //1,4 s econds int errupts
#define MOTOR_COUNTER_1 100 //200 ms PWM period (5Hz)
#define MOTOR_COUNTER_2 60 //120 ms PWM period (5Hz)
#define MIN_LIGHT 4500 //minimum light level
// entrance b arrier sensor inputs and motor drive outputs
static bit ENTRANCEBARRIERSENSORDOWN

@

((unsigned)&PORTC*8 );

//entrance barrier sensor down
static bit ENTRANCE_BARRIER_SENSOR_UP @
static bit ENTRANCE_CAR_SENSOR_1 @
static bit ENTRANCE_CAR_SENSOR_2 @
static bit ENTR ANCE_MOTO R_SENSE @
static bit ENTR ANCE_BARRI ER_M OTO R_ENABLE

@ ((unsigned)&PORTD*8);
((unsigned)&PO RTB*8+3) ;
((unsigned)&PO RTB*8+1) ;
((unsigned)&PO RTD*8+1) ;
((unsigned)&PO RTC*8 +1); //entrance barrier sensor up
//entrance car p resence sensor 1
//entrance car p resence sensor 2
//entrance b arrier motor drive
//entrance b arrier motor enable

// exit barrier sensor inputs and motor drive outputs
static bit E XIT_BARRIER_SENSOR_DOWN @ ((unsigned)&PORTE*8 +1); //exit barrier sensor down static
bit E XITBARRIERSENSORUP @ ((unsigned)&PORTE*8 ); //exit barrier sensor up
static bit E XIT_CAR_SENSOR_1
static bit E XIT_CA R_SENSOR_2
static bit E XIT_MOTOR_SENSE @
@
@ ((unsigned)&PORTE*8+2);
((unsigned)&PO RTA*8+5) ;
((unsigned)&PORTD*8+2); //exit car presence sensor 1
//exit car pre sence sensor 2
//exit barrier motor drive

Sistem de monitorizare parcare auto cu PIC16F877

49
Cocoș Bogdan Inginerie #define A CCE SS_GR ANTED_C OUNTER 2000 //4 seconds acce ss card ac tivation delay
#define A CCE SS_DISABLE_C OUNTER 10000 //20 s econds acce ss deactivation
#define DISPL AY_REF RESH 500 //200ms display r efresh

#define RE SERVED_PARKING_PLA CE 8 //reserved p arking place (is not considered fr ee)

#define ENTR ANCE_STATUS_NO_CA R 0
#define ENTR ANCE_STATUS_CA R_AT_BA RRIER 1
#define ENTR ANCE_STATUS_CAR_INSIDE 2
#define EXIT_STATUS_NO_CA R 0
#define EXIT_STATUS_CA R_AT_BARRI ER 1
#define EXIT_STATUS_CA R_OUTSID E 2
#define MOTO R_ENTRANCE_DO WN 0
#define MOTOR_ENTRANCE_UP 1
#define MOTOR_EXIT_UP 0
#define MOTOR_EXIT_DOWN 1
#define BARRIER_ENABLE 0
#define BARRIER_DISABLE 1

unsigned char p arking_lot[PARKING_SI ZE] = {0, 0,0,0,0,0,0,0,1, 0,0,0,0,0,0,0}; //par king lot me mory: 0 = not occupied
// 1A 1B 2A 2B par king map
bank2 unsigned char ex it_moto r_up = 0, ex it_mo tor_enable = 0, entrance_ moto r_up = 0, ent rance_moto r_enable = 0, access = 0;
bank2 unsigned char enable_ent rance = 0, enable_ex it = 0;
bank2 unsigned char st atus = ENTR ANCE_STATUS_NO_CA R;
bank2 char in dex[PARKI NG_SI ZE][4]={"1A","1B","1C","1D","1E","1F","1G","1H","2A","2B","2C","2D","2E","2 F","2G","2H"};

extern void lcd_wr ite(unsigned ch ar);
unsigned char count_inputs_port D(unsigned char pol arity);
void init_barr iers(void);
void barr ier_managemen t(void);
void display_fr ee_lot(un signed char nr);
void display_te mperature(char n r);
char * itos ( int x);//conver ts integer x to a char acter st ring
char* float_to_string (f loat x);//conver ts a float to a char acter st ring
void lig ht_init(void);

Sistem de monitorizare parcare auto cu PIC16F877

50
Cocoș Bogdan Inginerie static bit LIGHT_DRIVE_OUTPUT @ ((unsigned)&PO RTA*8+4) ;//light drive on RA4

static bit E XIT_BARRIER_MOTO R_ENA BLE @ ((unsigned)&PO RTC*8 +2); //exit barrier motor enable
//access card sensor input
static bit ACCE SS_CARD @ ((unsigned)&PO RTC*8 +3);//ent rance a ccess c ard sensor
#define pol 1 //sensor pol arity (active on 0/1)
#define PARKI NG_SIZ E 16
#define TMR0_C OUN TER 700 //1,4 s econds int errupts
#define MOTOR_COUNTER_1 100 //200 ms PWM period (5Hz)
#define MOTOR_COUNTER_2 60 //120 ms PWM period (5Hz)
#define MIN_LIGHT 4500 //minimum light level

void uC_init(void);void init_a2d(void);unsigned int read_a2d(un signed char channel);
unsigned char ge t_first_free_pla ce(void);
unsigned char old = 1, new = 0; long te mperature = 0;
void ma in(void)
{ long light_mv = 0;
uC_init ();
while(1)
{

new = count_inputs_port D(pol);
// te mperatu re = ((5.19*r ead_a2d(1)/1024)-0.5)*98; //for MC P9700 sensor
temperatu re = ((5.19*r ead_a2d(1)/1024))*150/2.8 – 33; //for MC P9701 sensor
// te mperatu re = 12;
light_mv = (5.19*r ead_a2d(0)*1000)/1024.0;
if (light_mv > MIN_LIGHT {

}
else
{

} LIGHT_DRI VE_OUTPU T = 1;

LIGHT_DRI VE_OUTPU T =

Sistem de monitorizare parcare auto cu PIC16F877

51
Cocoș Bogdan Inginerie barrier_management ();

}
}//end void ma in(void)

void lig ht_init(void)
{
TRIS B = TRIS B & 0x3F; //RB7 as output
PORTB &= 0x7F; //set RB7 to 0
}//end void lig ht_init(void)

/* Sa mple code to se t up the A2D module */
void init_a2d(void){
ADC ON0 = 0xC0; // select inter nal AD oscilator
ADC ON1 = 0x04; // select lef t justify re sult. A/D port configuration 4
ADON = 1; // turn on the A2D conversion module
}//end void init_a2d( void)

void init_barr iers(void)
{
TRISA &= 0b11101111; // RA4 is dig ital output
TRISA |= 0b00100000; // RA5 is dig ital input
TRIS B |= 0x4A ;//define RB1, RB3 and RB6 a s inputs
TRIS C = (TRISC | 0x09) & 0xF 9;//define RC0, RC3 as inputs and RC1, RC2 as outputs
TRISD = (TRISD | 0x01) & 0xF 9;//define RD0 as input and RD1, RD2 as outputs
TRIS E = (TRISE & 0xEF) | 0x 07;//d efine RE as inputs
//ADC ON1 = 0x02;//s et RE0-2 as dig ital inputs
ENTR ANCE_BARRIER_MOTO R_ENA BLE = BARRI ER_DISABL E;//dis able ent rance motor
EXIT_BARRI ER_M OTO R_ENABLE = BARRI ER_DISABL E;//dis able ex it motor

}//end void init_barr iers(void)

void uC_init(void) { //4M Hz cry stal osc illator is used

Sistem de monitorizare parcare auto cu PIC16F877

52
Cocoș Bogdan Inginerie T0IE = 1; //enable timer 0 overflow int errupt
T0CS = 0; //inter nal clock used
PSA = 0;
PS2 = 0;
PS1 = 1; PS0 = 0; //prescaler set to 1:8 -> 488.281 Hz int errupt (cca 2 ms)

TRISA &= 0b11101111; // RA4 is dig ital output
TRISA |= 0b00100000; // RA5 is dig ital input
TRISD = 0xFF; //all inputs

lcd_init ();
lcd_cl ear();

light_init ();
init_b arriers();
init_a2d();

GIE = 1; //enable int errupts

}//end void uC_init(void)

/* Re turn an 10 bit re sult */
unsigned int read_a2d(unsi gned char channel){
unsigned int re sult_10bit = 0;
channel &= 0x07; // truncate channel to 3 bits ADC ON0
&= 0xC5; // clear cu rrent channe l select ADC ON0 |=
(channel<<3); // apply the new channel sel ect ADGO = 1;
// initia te conver sion on the sel ected channe l
while(ADGO )continue;
res ult_10bit |= AD RESH;
result_10bit = (re sult_1 0bit<<2) | (( ADRE SL>>6) & 0x03);
return result_10bit; // return 8 MSB of the result

Sistem de monitorizare parcare auto cu PIC16F877

53
Cocoș Bogdan Inginerie }//end unsigned int read_a2d(unsigned char channe l)

unsigned char count_inputs_port D(unsigned char pol arity)
{
//RD7 is input for a ll parking lots
//with R D6-RD3 a tot al of 16 par king lots can be read
//reading is done this way: se t RD6-RD3 to a specif ic value according to t he core sponding p arking place and read the value of RD7
//polarity indi cates if the used sensor s are 0- active or 1- active
//returns the number of free par king pla ces
//parking_lot w ill sto re the status of par king places (1 = occupied)
unsigned char count = 0; int i = 0;
unsigned char te mp = 0;

TRISD &= 0x 87; //R D7 is input, RD6-RD3 ar e outputs and RD2-RD0 ar e not aff ected
TRISD |= 0x80;

for(i=0;i<PARKING_SIZ E;i++)
{
temp = (PO RTD &
0b10000111); temp |=
(((i%2)==1)?0x10:0); temp |=
((((i>>1)%2) ==1)?0x20 :0); te mp
|= ((((i>>2)%2) ==1)?0x40 :0);
temp |=
((((i>>3)%2) ==1)?0x08 :0);
PORTD = temp;
DelayUs(200)
; //temp =
!((PO RTD>>7)|pol arity);
if (i!=RESERVED_PARKI NG_PLA CE) parking_lot[i] =
(polarity==0)? (!(PO RTD>>7)):(PO RTD>>7);

Sistem de monitorizare parcare auto cu PIC16F877

54
Cocoș Bogdan Inginerie if (par king_lot[ i] == 0)
count ++;
}//end for(i=0;i<PARK ING_SIZE;i++)
return count;
}//end unsigned char count_inputs_port D(unsigned char polarity)

void barr ier_management(void)
{
//entrance motor management s ection
if((!(EN TRANCE_CAR_SENSOR_1))&&(( !ENTRANCE _CAR_SENSOR_2) || acce ss)) ENTR ANCE_MOTO R_SENSE
= MOTO R_ENTR ANCE_UP;
else ENTR ANCE_MOTO R_SENSE = MOTO R_ENTR ANCE_DOWN;
enable_entrance = ! ((ENTRANCE_BARRI ER_SENSOR_UP & & (!EN TRANCE _CAR_SENSOR_1) && ENTR ANCE_CA R_SENSOR_2
&& access) || (ENTRANCE_BARRI ER_SENSOR_DOWN & & (!EN TRANCE_CA R_SENSOR_1) && ENTR ANCE_CA R_SENSOR_2 & &
(!acce ss)) | | (ENTRANCE_BARRIE R_SENSOR_DOWN && ENTR ANCE_CA R_SENSOR_1) || ((!E NTRANCE_CA R_SENSOR_1) &&
(!EN TRANCE_CA R_SENSOR_2) && (!EN TRANCE_BARRI ER_SENSOR_DOWN) && ENTRANCE_BARRI ER_SENSO R_UP) | |
(ENTRANCE_CA R_SENSOR_1 & & (!EN TRANCE_CA R_SENSOR_2) && (!EN TRANCE_BARRI ER_SENSOR_DOW N)));

//exit motor manageme nt section
if(!EXIT_CA R_SENSOR_1) EXIT_MOTO R_SENSE = MOTOR_EXIT_UP;
else EXIT_MOTO R_SENSE = MOTOR_EXIT_ DOWN;
enable_ex it = !(( EX IT_BARRI ER_SENSOR_UP & & (!EXIT_CA R_SENSOR_1)) | | (EXIT_CA R_SENSOR_1 & &
EXIT_BARRI ER_SENSOR_DOWN) | | (EXIT_CA R_SENSOR_1 && (! EXIT_CA R_SENSOR_2))) ;

if(EN TRANCE_CA R_SENSOR_1 & & ENTR ANCE_CA R_SENSOR_2 && ENTR ANCE_BA RRIER_SENSOR_DOWN &&
(!EN TRANCE_BARRIE R_SENSOR_UP)) st atus = ENTR ANCE_STATUS_NO_CA R;
if((!EN TRANCE_CA R_SENSOR_1) && EN TRANCE_CA R_SENSOR_2 && ENTR ANCE_BARRI ER_SENSOR_DOWN &&
(!EN TRANCE_BARRIE R_SENSOR_UP) && (!access)) st atus = EN TRANCE_STATUS_CA R_AT_BARRI ER;

}//end void barr ier_management(void)

void display_fr ee_lot(un signed char nr)
{

Sistem de monitorizare parcare auto cu PIC16F877

55
Cocoș Bogdan Inginerie //display s the "nr" parameter on the 2 dig its LED displa y
unsigned int bcd_code = 0;
unsigned char aux = 0; unsigne d int i = 0;

TRIS B &= 0b11001111;//RB4-RB4 are outputs; rest of the PO RTB bits are not af fected
//RB4 is s erial data output – LSB fir st
//RB5 is s erial clock output lo w/high ac tive transition

if(nr< 10)
{

}

bcd_code = nr ;//nr. to be displayed is 1 dig it long -> can be displayed a s it is
else if (nr<100)
{

}
else
{bcd_code = ((nr/10)<<4 & 0xF0) | ((nr%10) & 0x0F) ;//nr. to be displ ayed is 2 dig its long -> a bcd code must be obta ined for both dig it

Sistem de monitorizare parcare auto cu PIC16F877

56
Cocoș Bogdan Inginerie //nr. to be displayed is bigger th an 99 and it can not be displayed (may be a error message inst ead?)
}
//serial transmission loop
for (i=0; i<16; i++)
{
//put R B5 to 0
PORTB &= 0b11011111;
aux = PO RTB;
aux &= 0b11101111; //pre pare for data bit ins ertion
aux |= ((bcd_cod e%2)<<4) ;//data bit ins ertion
bcd_code /= 2;//shif t bcd_code to right
PORTB = aux ;//put d ata bit to R B4
PORTB |= 0b00100000;//se t rising edge to s erial clock (RB5)
}//end for (i=0; i< 16; i++)
}//end void display_fr ee_lot(unsigned char nr)
void display_te mperature(char nr)
{
//display s the "nr" parameter on the 4 dig its LED displa y
unsigned int bcd_code = 0; unsign
ed char aux = 0; unsigne d int i = 0;

TRIS B &= 0b11001111;//RB4-RB4 are outputs; rest of the PO RTB bits are not af fected
//RB4 is s erial data output – LSB fir st
//RB5 is s erial clock output lo w/high ac tive transition
if(nr< 10)
{

}

bcd_code = nr ;//nr. to be displayed is 1 dig it long -> can be displayed a s it is

Sistem de monitorizare parcare auto cu PIC16F877

57
Cocoș Bogdan Inginerie else if (nr<100)
{
bcd_code = ((nr/10)<<4 & 0xF0) | ((nr%10) & 0x0F) ;//nr. to be displ ayed is 2 dig its long -> a bcd code must be obta ined for both dig its
}
else
{

}

//nr. to be displayed is bigger th an 99 and it can not be displayed (may be a error message inst ead?)

Sistem de monitorizare parcare auto cu PIC16F877

58
Cocoș Bogdan Inginerie bcd_code += 14<<12; //place bcd code for "t" a s first dig it

//serial transmission loop
for (i=0; i<16; i++)
{
//put R B5 to 0
PORTB &= 0b11011111;
aux = PO RTB;
aux &= 0b11101111; //pre pare for data bit ins ertion
aux |= ((bcd_cod e%2)<<4) ;//data bit ins ertion
bcd_code /= 2;//shif t bcd_code to right
PORTB = aux ;//put d ata bit to R B4
PORTB |= 0b00100000;//se t rising edge to s erial clock (RB5)
}//end for (i=0; i< 16; i++)
}//end void display_temp eratu re(char nr)

//conver ts a float to a character st ring
char* float_to_string (f loat x)
{
char te mp[11] = "";//temporary result storage
char result[ 11] = "";//re sult string
unsign ed char nr_leng th = 0;
unsigned char i = 0;

x *= 1000; for (nr_leng th = 0; ((int)x >0) || (nr_leng th<3); nr_leng th++) //calcula te the nr of dig its of x and ext racts the digits into inv erse[]
{
temp[nr_length] = '0' + (int)x%10;
x /= 10;
if (nr_length == 2)

{
nr_length ++;
temp[nr_length] = '.';//ins ert decimal point after 3 LSB

Sistem de monitorizare parcare auto cu PIC16F877

59
Cocoș Bogdan Inginerie }
}
temp[nr_length] = '\0';
for (i=0;i<nr_leng th ;i++)
{
result[i] = temp[nr_length-i-1] ;//because the dig it extraction is in reverse order , they must be rev ersed back to re sult[]
}
result[i] = '\0' ;//end string
return result;
}//end char * float_to_str ing (float x)

char * itos ( int x)//conver ts integer x to a cha racter string
{
unsigned char nr_leng th = 0;
unsigned int temp = x ;
char inverse[7] = "" ;
char result[ 7] = "";
unsigned char i = 0;

if (x<0) temp &= 0x7F;
for (nr_leng th = 0; t emp >0; nr_leng th++) //calcula te the nr of dig its of x and ext racts the digits into inv erse[]
{

}
if (x==0)
{ inver se[nr _length] = '0' + temp%10;
temp /= 10;

Sistem de monitorizare parcare auto cu PIC16F877

60
Cocoș Bogdan Inginerie inver se[nr _length++] = '0';
}
inver se[nr _length] = '\0';
for (i=0;i<nr_leng th ;i++)
{
result[i] = inver se[nr_leng th-i-1];//because the digit extraction is in reverse order , they must be reversed back to result[]
}
result[i] = '\0' ;//end string
return result;
}//end char * itos ( int x)

unsigned char ge t_first_free_pla ce(void)
{
unsigned char i = 0;
while((parking_lot[i] !=0)&&(i<PARKING_SI ZE)) i ++;
return i;
} static void int errupt my_is r(void)
{ static unsigne d int counter _timer 0 = 0;
static unsigne d int counter_enable_motor_ent rance = 0;
static unsigne d int counter_enable_motor_ex it = 0;
static unsigne d int a ccess _timer = 0;
bank2 s
ta tic unsigne d int displ ay_timer = 0;
GIE = 0; //disable int errupts dur ing this routine
if(T0IF == 1 ) //timer 0 interrupts occured
{
//access control dr iver
if(access==0)
{
if(ACCE SS_CAR D==1) //access card is ins erted
{
access_tim er++;
if((access_tim er==ACCE SS_GR ANTED_C OUNTER) && (new!=0)) //access granted
{

Sistem de monitorizare parcare auto cu PIC16F877

61
Cocoș Bogdan Inginerie

access = 1;
}//end i f(access_tim er== ACCE SS_GR ANTE D_COUNTER)
}//end i f(ACCE SS_CAR D==1)
else access_tim er = 0;
}//end i f(access==0)

if(access==1)
{
access_tim er++;
if(access_tim er==ACCE SS_DISABLE_CO UNT ER)
{
access_tim er = 0;
access = 0;
}//end i f(access_tim er== ACCE SS_DISABLE_C OUNTER)
}//end i f(access==1)

//moto rs PWM driver
if(enable_ent rance==1)
{
if (counter_enable _moto r_ent rance == 0) ENTR ANC E_BARRI ER_M OTO R_ENABLE = BARRI ER_DISABL E;
if (counter_enable _moto r_ent rance == MOTOR_C OUNTER_1-6) EN TRANCE_BARRI ER_M OTO R_ENABLE =
BARRI ER_EN ABL E;
}//end i f(en able_e ntrance==1)
else ENTR ANCE_BARRI ER_M OTO R_ENA BLE = BARRI ER_DISA BLE;
count er_enable_motor_ent rance++;
count er_enable_motor_ent rance %= MOTO R_COUNTER_1;

if(enable_ex it==1)
{
if (counter_enable _moto r_exit == 0) EXIT_BA RRIER_MOTO R_ENABLE = BARRI ER_DISABLE;
if (counter_enable _moto r_exit == MOTO R_COUN TER_2 -7 ) EXIT_BA RRIER_M OTO R_ENA BLE = BARRI ER_EN ABLE;
}//end (e nable_ex it==1)
else EXIT_BARRI ER_MOTO R_ENA BLE = BARRI ER_DISABL E;count er_enable_motor_ex it++;

Sistem de monitorizare parcare auto cu PIC16F877

62
Cocoș Bogdan Inginerie

count er_enable_motor_ex it %= MOTO R_COUN TER_2;
//LED display dr iver
if(counter_timer 0 == 0) //display free parking lots
{
display_f ree_lot(n ew);
}//end i f(counter_timer0 == 0)
if(counter_timer 0 == TMR0_C OUNTER) //display te mperature
{
display_te mperature(temperatu re);
}//end i f(counter_timer0 == TMR0_C OUNTER)
count er_timer 0 ++;
count er_timer 0 %= 2*TMR0_C OUNTER;

//LCD display dr iver
if(display _timer == 0)
{
lcd_gotoxy2(1,1) ;
lcd_puts2(" ") ;
lcd_gotoxy2(1,2) ;
lcd_puts2(" ") ;
lcd_gotoxy2(1,1);

switch(status)
{

case ENTR ANCE_STATUS_NO_CA R:
{
lcd_put
s2("Buna z iua!");
// lcd_gotoxy2(1,2);
// lcd_puts2("L inia 2");
break;
}
case ENTR ANCE_STATUS_CA R_AT_BARRI ER:
{if(access == 1{

Sistem de monitorizare parcare auto cu PIC16F877

63
Cocoș Bogdan Inginerie

lcd_puts2("A cces permis!") ;
lcd_gotoxy2(1,2) ; lcd_puts2("
");
lcd_gotoxy2(1,2) ;
lcd_puts2("Par cati la ");
//lcd_puts2((get_fir st_free_pl ace()==0)?"1A":"xx");
lcd_puts2(index[ge t_first_free_place()]);
}
else if(new !=0) lcd_puts2("Introduceti card");
else lcd_puts2("P arcare ocupata!");
break;
}//end case ENTR ANCE_STATUS_CA R_AT_BARRI ER:
default: b reak;
}//end sw itch(status)
}//end i f(display _timer == 0)
display _timer ++;
display _timer %= DISPL AY_REF RESH;

T0IF = 0; //clear int errupt flag
}//end i f(T0IF == 1)
GIE = 1; //enable back inte rrupts

}//end sta tic void int errupt my_is r(void)

Sistem de monitorizare parcare auto cu PIC16F877

64
Cocoș Bogdan Inginerie
ANEXA 2- Circuite imprimate
1. Circuit ul imprimat al plăcii principale (roșu=+5V , albastru = masă )
– strat superior ( top):

– strat inferior (bottom):

Sistem de monitorizare parcare auto cu PIC16F877

65
Cocoș Bogdan Inginerie
2. Circuit ul imprimat al plăcii driver (roșu=+5V, albastru = masă )
– stratul superior ( top)

– stratul inferior (bottom):

Sistem de monitorizare parcare auto cu PIC16F877

66
Cocoș Bogdan Inginerie 3. Circuit ul imprimat al plăcii af ișoare (roșu=+5V, albastru = mas ă)
– stratul superior ( top)

– stratul inferior (bottom):

Sistem de monitorizare parcare auto cu PIC16F877

67
Cocoș Bogdan Inginerie
4. Circuit ele imprimate ale plăcilor senzorilor de parcare
(roșu=+5V , albastru = masă)
– stratul superior al pl ăcii de la parter – str atul inferior al pl ăcii de la parter:

– stratul superior al pl ăcii de la etaj (top):

– stratul inferior al pl ăcii de la etaj (bottom):

Sistem de monitorizare parcare auto cu PIC16F877

68
Cocoș Bogdan Inginerie 5. Circuit ul imprimat al plăcii senzor ilor de acces (roșu=+5V , albastru = mas ă)

– stratul superior ( top):

– stratul inferior (bottom):

/g48/g38/g47/g53
/g57/g39/g39/;####################/g37/;####################/g36
/;#####################/g37/;#####################/g36
/g44/g66/g71/g82/g90/g81 /g44/g66/g88/g83
/g40/g66/g71/g82/g90/g81 /g40/g66/g88/g83/g36/g70/g70/g72/g86/g86/g66/g70/g68/g85/g71/g47/g44/g42/g43/g55
/g47/g44/g42/g43/g55/g55/g40/g48/g51
/g55/g40/g48/g51/g40/g49/;####################
/g40/g49/;#####################
/;#####################/g43/;#####################/g42/;####################/g43/;####################/g42/;####################/g41/;####################/g40/;####################/g39/;####################/g38
/g40/g49/;####################/g40/g49/;#####################
/g40/g81/g87/g85/g68/g81/g70/g72/g66/g56/g51/g40/g91/g76/g87/g66/g56/g51
/;####################/g43
/;####################/g42
/;####################/g41
/;####################/g40
/;####################/g38/;####################/g39
/;#####################/g38/;#####################/g39/;#####################/g40/;#####################/g41/;#####################/g43
/;#####################/g42/g40/g66/g38/g36/g53/g66/;#####################/g40/g66/g38/g36/g53/g66/;####################
/g44/g66/g38/g36/g53/g66/;#####################/g44/g66/g38/g36/g53/g66/;####################
/g44/g66/g50/g66/g48/g50/g39/g56/g47/g40/;####################/g37/;####################/g36
/;#####################/g37
/g51/g36/g53/g46/g66/g47/g50/g55
/g51/g36/g53/g46/g66/g47/g50/g55
/g44/g66/g50/g66/g48/g50/g39/g56/g47/g40
/g51/g36/g53/g46/g66/g47/g50/g55/g54/g43/g53/g66/g44/g49/g51/g56/g55/g54/g43/g53/g66/g44/g49/g51/g56/g55
/;#####################/g40
/;#####################/g41/;#####################/g39/;#####################/g38/g47/g44/g42/g43/g55/g54/g66/g56/g51
/g40/g66/g38/g36/g53/g66/;#####################/g53/g36/;###################/;##################/g36/g49/;###################/;#####################
/g53/g36/;####################/;##################/g36/g49/;####################/;######################
/g53/g36/;#####################/;##################/g36/g49/;#####################/;##################/g57/g53/g40/g41/;################/;#######################
/g53/g36/;#######################/;##################/g55/;###################/g38/g46/g44/;#########################
/g53/g36/;########################/;##################/g36/g49/;#######################/;##################/g54/g54/;##########################
/g53/g40/;###################/;##################/g36/g49/;########################/;##################/g53/g39/;###########################
/g53/g40/;####################/;##################/g36/g49/;#########################/;##################/g58/g53/;############################
/g53/g40/;#####################/;##################/g36/g49/;##########################/;##################/g38/g54/;####################/;###################/g50/g54/g38/;####################/;##################/g38/g47/g46/g44/g49/;####################/;######################
/g50/g54/g38/;#####################/;##################/g38/g47/g46/g50/g56/g55/;####################/;#######################
/g53/g38/;####################/;##################/g55/;####################/g50/g54/g44/;##################/g38/g38/g51/;#####################/;####################/;#########################
/g53/g38/;#####################/;##################/g38/g38/g51/;####################/;####################/;##########################
/g53/g38/;######################/;##################/g54/g38/g46/;##################/g54/g38/g47/;####################/;###########################
/g53/g39/;###################/;##################/g51/g54/g51/;###################/;####################/;############################
/g53/g39/;####################/;##################/g51/g54/g51/;####################/;#####################/;###################/g53/g37/;##########################/;##################/g51/g42/g39/;#######################/;###################/g53/g37/;#########################/;##################/g51/g42/g38/;######################/;############################/g53/g37/;########################/;######################/;###########################/g53/g37/;#######################/;######################/;##########################/g53/g37/;######################/;##################/g51/g42/g48/;######################/;#########################/g53/g37/;#####################/;######################/;########################/g53/g37/;####################/;######################/;#######################/g53/g37/;###################/;##################/g44/g49/g55/;######################/;######################
/g53/g39/;##########################/;##################/g51/g54/g51/;##########################/;######################/;###################/g53/g39/;#########################/;##################/g51/g54/g51/;#########################/;#####################/;############################/g53/g39/;########################/;##################/g51/g54/g51/;########################/;#####################/;###########################/g53/g39/;#######################/;##################/g51/g54/g51/;#######################/;#####################/;##########################/g53/g39/;######################/;##################/g51/g54/g51/;######################/;#####################/;#####################/g53/g39/;#####################/;##################/g51/g54/g51/;#####################/;#####################/;####################/g53/g38/;##########################/;##################/g53/g59/;##################/g39/g55/;#####################/;#########################/g53/g38/;#########################/;##################/g55/g59/;##################/g38/g46/;#####################/;########################/g53/g38/;########################/;##################/g54/g39/g50/;#####################/;#######################/g53/g38/;#######################/;##################/g54/g39/g44/;##################/g54/g39/g36/;#####################/;######################/g53/g36/;######################/;##################/g36/g49/;######################/;##################/g57/g53/g40/g41/;##############/;########################
/g53/g38/;###################/;##################/g55/;####################/g50/g54/g50/;##################/g55/;####################/g38/g46/g44/;####################/;########################/g48/g38/g47/g53/;##################/g57/g83/g83/;##################/g55/g43/g57/;####################/g56/;####################
/g51/g44/g38/;####################/;#########################/g41/;###########################/;##########################/;##########################
/g53/;###########################
/;####################/;###########################/g78
/g57/g39/g39
/g53/;####################
/;####################/;###########################/g78/g53/;##########################
/;####################/;###########################/g78/g53/;#########################
/;####################/;###########################/g78/g53/;#######################
/;####################/;###########################/g78/g53/;######################
/;####################/;###########################/g78
/g39/;##########################/;####################/;#######################/g39/;#########################/;####################/;######################/g39/;########################/;####################/;#####################/g39/;#######################/;####################/;####################/g39/;######################/;####################/;###################/g39/;#####################/;############################/g39/;####################/;###########################/g39/;###################/;##########################/g40/;#########################/g53/g58/;########################/g53/g54/;#######################/g57/g54/g54/;####################
/g57/g39/g39/;#####################
/g57/g40/g40/;######################/g47/g38/g39/;####################
/g47/g48/;###################/;####################/;#########################/g47
/g57/g39/g39/g36/;##########################/g52/g36/;####################/;######################
/g37/;####################/g52/g37/;####################/;#####################
/g38/;#####################/g52/g38/;####################/;####################
/g39/;#########################/g52/g39/;####################/;###################
/g37/g44/;##################/g53/g37/g50/;#######################/g52/g40/;############################
/g53/g37/g44/;########################/g52/g41/;####################/;########################
/g47/g55/;######################/g52/g42/;####################/;#######################/g56/;#########################
/;##########################/;#######################/;#####################/;#######################/;##########################
/g57/g39/g39
/g57/g39/g39/g53/g57/;####################
/;####################/g78/g57/g39/g39
/g51/g68/g85/g78/g76/g81/g74/;###/g83/g79/g68/g70/g72/;###/g86/g72/g81/g86/g82/g85/g86/g40/g81/g87/g85/g92/;###/g71/g76/g86/g83/g79/g68/g92
/;##############/;###########################/;###########################/;#################/;###########################
/;##############/;###########################/;###########################/;#################/;###########################/g57/g39/g39
/g40/g81/g87/g85/g68/g81/g70/g72/;###/g80/g82/g87/g82/g85
/g40/g91/g76/g87/;###/g80/g82/g87/g82/g85/g53/;####################/;####################
/;#####################/;#####################/;###################/g78/g53/;####################/;#####################
/;#####################/;#####################/;###################/g78/g53/;####################/;#######################
/;########################/;#########################/g78/g53/;####################/;########################
/;#########################/;#####################/;###################/g78/g53/;####################/;#########################
/;#####################/;#####################/;###################/g78
/g57/g39/g39/g44/g66/g88/g83
/g44/g66/g88/g83
/g53/;#####################/;########################
/;####################/;###########################/g78/g53/;#####################/;#######################
/;####################/;###########################/g78/g53/;#####################/;######################
/;####################/;###########################/g78/g53/;#####################/;#####################
/;####################/;###########################/g78/g53/;#####################/;####################
/;####################/;###########################/g78/g53/;#####################/;###################
/;####################/;###########################/g78/g44/g66/g71/g82/g90/g81
/g44/g66/g70/g68/g85/g66/;####################/g36/g70/g70/g72/g86/g86/g66/g70/g68/g85/g71
/g40/g66/g88/g83
/g40/g66/g71/g82/g90/g81
/g40/g66/g70/g68/g85/g66/;####################/g44/g66/g71/g82/g90/g81/g44/g66/g70/g68/g85/g66/;####################
/g40/g66/g70/g68/g85/g66/;####################/g40/g66/g71/g82/g90/g81/g40/g66/g88/g83
/g51/g68/g85/g78/g76/g81/g74/;###/g73/g79/g82/g82/g85/;###/;####################
/g51/g68/g85/g78/g76/g81/g74/;###/g73/g79/g82/g82/g85/;###/;#####################/g36/;##########################/g52/g36/;####################/;######################
/g37/;####################/g52/g37/;####################/;#####################
/g38/;#####################/g52/g38/;####################/;####################
/g39/;#########################/g52/g39/;####################/;###################
/g37/g44/;##################/g53/g37/g50/;#######################/g52/g40/;############################
/g53/g37/g44/;########################/g52/g41/;####################/;########################
/g47/g55/;######################/g52/g42/;####################/;#######################/g56/;###########################
/;##########################/;#######################/;#####################/;#######################/;##########################
/g57/g39/g39/g54/g53/g42/;###########################/g53
/g38/;####################/;##################/;################/g33
/;#########/;####################/g39/;#################### /;######################
/;#####################
/;#######################
/;########################
/;#########################
/;####################/;###################/;###########################
/;####################/;####################
/;####################/;#####################/;############################
/;####################/;######################/g56/;############################
/;##########################/;#######################/;####################/;#########################/;#######################/g57/g39/g39
/g51/g42/g39
/g47/g76/g74/g75/g87/g86/g66/g88/g83/;##################/g51/g42/g39/g36/g70/g70/g72/g86/g86/g66/g70/g68/g85/g71
/g69/g68/g85/g85/g76/g72/g85/;###/g71/g82/g90/g81
/g69/g68/g85/g85/g76/g72/g85/;###/g71/g82/g90/g81
/g44/g66/g70/g68/g85/g66/;#####################/g40/g66/g70/g68/g85/g66/;#####################/g44/g66/g70/g68/g85/g66/;#####################
/g51/g42/g38
/g36/;##########################/g52/g36/;####################/;######################
/g37/;####################/g52/g37/;####################/;#####################
/g38/;#####################/g52/g38/;####################/;####################
/g39/;#########################/g52/g39/;####################/;###################
/g37/g44/;##################/g53/g37/g50/;#######################/g52/g40/;############################
/g53/g37/g44/;########################/g52/g41/;####################/;########################
/g47/g55/;######################/g52/g42/;####################/;#######################/g56/;########################
/;##########################/;#######################/;#####################/;#######################/;##########################
/g36/;##########################/g52/g36/;####################/;######################
/g37/;####################/g52/g37/;####################/;#####################
/g38/;#####################/g52/g38/;####################/;####################
/g39/;#########################/g52/g39/;####################/;###################
/g37/g44/;##################/g53/g37/g50/;#######################/g52/g40/;############################
/g53/g37/g44/;########################/g52/g41/;####################/;########################
/g47/g55/;######################/g52/g42/;####################/;#######################/g56/;##########################
/;##########################/;#######################/;#####################/;#######################/;##########################/g54/g53/g42/;###########################/g53
/g38/;####################/;##################/;################/g33
/;#########/;####################/g39/;#################### /;######################
/;#####################
/;#######################
/;########################
/;#########################
/;####################/;###################/;###########################
/;####################/;####################
/;####################/;#####################/;############################
/;####################/;######################/g56/;####################/;###################
/;##########################/;#######################/;####################/;#########################/;#######################
/;####################/;#################### /;####################/;###################/g56/;####################/;####################/;#############################/g40
/;##########################/;#######################/g47/g54/;###################/;########################
/;####################/;###################### /;####################/;#####################/g56/;####################/;####################/;#############################/g41
/;##########################/;#######################/g47/g54/;###################/;########################
/;############################ /;###########################/g56/;####################/;####################/;#############################/g39
/;##########################/;#######################/g47/g54/;###################/;########################/g53/g47/;####################
/;########################/g57/g57/g39/g39/g47/;####################
/;########################/g57/g57/g39/g39
/g57/g39/g39
/g54/g72/g81/g93/g82/g85/;###/g87/g72/g80/g83/g72/g85/g68/g87/g88/g85/g68
/g54/g72/g81/g93/g82/g85/;###/g79/g88/g80/g76/g81/g68/g70/g82/g81/g87/g85/g68/g86/g87
/g47/g76/g74/g75/g87/;###/g85/g72/g79/g68/g92/g48/g82/g87/g82/g85/g86/;###/g71/g85/g76/g89/g72/g85/g53/;#####################/;##########################
/;#####################/;#####################/g78
/g53/;#####################/;############################
/;#####################/;#####################/g78
/;####################
/;#####################
/;######################
/;#######################
/;########################
/;#########################
/;##########################
/;###########################
/;############################
/;####################/;###################
/;####################/;####################
/;####################/;#####################
/;####################/;######################
/;####################/;#######################
/;####################/;########################
/;####################/;#########################
/;####################/;##########################
/;####################/;###########################/g45/;####################
/g38/g50/g49/g49/;################/g54/g44/g47/;####################/;###########################/g57/g39/g39
/;####################
/;#####################
/;######################
/;#######################
/;########################
/;#########################
/;##########################
/;###########################/g45/;#####################
/g38/g50/g49/g49/;################/g54/g44/g47/;###########################
/;####################
/;#####################/;###################
/;#####################
/;#####################/;####################
/;######################
/;#####################/;#####################
/;#######################
/;#####################/;######################
/;########################
/;#####################/;#######################
/;#########################
/;#####################/;########################
/;##########################
/;#####################/;#########################
/;###########################
/;#####################/;##########################
/;############################
/;#####################/;###########################
/;####################/;###################
/;#####################/;############################
/;####################/;####################
/;######################/;###################
/;####################/;#####################
/;######################/;####################
/;####################/;######################
/;######################/;#####################
/;####################/;#######################
/;######################/;######################
/;####################/;########################
/;######################/;#######################
/;####################/;#########################
/;######################/;########################
/;####################/;##########################
/;######################/;#########################
/;####################/;###########################
/;######################/;##########################
/;####################/;############################/g45/;######################
/g38/g50/g49/g49/;################/g39/;######################/;##########################/g41
/g57/g39/g39/g57/g39/g39/g59/;####################
/g38/g53/g60/g54/g55/g36/g47/g38/;####################
/;####################/;########################/g83
/g38/;#####################
/;####################/;########################/g83
/g53/;######################/;###################
/;####################/;#####################/g78
/g57/g44/;####################/g57/g50/;######################/g42/g49/g39/;#####################/g56/;#####################
/;##########################/;###########################/;###################/;########################
/g38/;######################
/;#######################/;##########################/;###################/g88/g38/;#######################
/;####################/;###################/;###################/g88/g39/;####################
/;####################/g49/;#######################/;###################/;###################/;####################/;####################
/;#####################/g45/;##########################
/g54/g44/g47/;################/;####################/;###################/;###################/;################/;###################/;#####################/g48/g38/g47/g53
/g51/g42/g39
/g51/g42/g38
/;####################/;#####################/;######################/;#######################/;########################/;#########################/;##########################/;###########################/;############################/;####################/;###################/;####################/;####################/;####################/;#####################
/g45/;#######################
/g38/g50/g49/g49/;################/g43/;####################/;#####################
/g38/;########################
/;####################/;###################/g88/g38/;#########################
/;####################/;###################/g88/g38/;##########################
/;####################/;###################/g88/g38/;###########################
/;####################/;###################/g88/g38/;############################
/;####################/;###################/g88/g38/;####################/;###################
/;####################/;###################/g88/g38/;####################/;####################
/;####################/;###################/g88/g38/;####################/;#####################
/;####################/;###################/g88/g38/;####################/;######################
/;####################/;###################/g88/g38/;####################/;#######################
/;####################/;###################/g88/;####################/;#########################/;#####################/;##########################/;######################/;###########################/;#######################/;############################/;########################/g45/;###########################
/g38/g50/g49/g49/;################/g39/;############################/g48
/g53/;######################/;####################
/;#####################/;#####################/g78/g57/g39/g39
/g57/g39/g39/g39/;###################/;#######################
/g39/;####################/;######################
/g39/;#####################/;#####################
/g39/;######################/;####################
/g39/;#######################/;####################/;########################
/g39/;########################/;####################/;#######################
/g39/;#########################/;####################/;######################
/g39/;##########################/;####################/;#####################
/g36/;####################/;####################
/g37/;####################/;###################
/g38/;############################
/g50/g40/;##########################/g60/;########################/g60/;#########################/g56/;#######################
/;##########################/;#######################/g43/g38/;#####################/;########################/;####################
/g39/;###################/;#######################
/g39/;####################/;######################
/g39/;#####################/;#####################
/g39/;######################/;####################
/g39/;#######################/;####################/;########################
/g39/;########################/;####################/;#######################
/g39/;#########################/;####################/;######################
/g39/;##########################/;####################/;#####################
/g36/;####################/;####################
/g37/;####################/;###################
/g38/;############################
/g50/g40/;##########################/g60/;########################/g60/;#########################/g56/;####################/;#####################
/;##########################/;#######################/g43/g38/;#####################/;########################/;####################
/g38/;####################/;########################
/;####################/;###################/g88/;######################## /;#########################/g56/;####################/;####################/;#############################/g38
/;##########################/;#######################/g47/g54/;###################/;########################/g53/;######################/;#####################
/;####################/;###########################/g78/g57/g39/g39
/;#########################
/;########################
/;#######################/;####################
/;#####################/g44/g66/g39/g50/g58/g49/g66/g47/g44/g48
/g50/g51/g55/g50/g38/g50/g56/g51/g47/g40/g53/;################/g49/g51/g49/;#########################
/;########################
/;#######################/;####################
/;#####################/g44/g66/g56/g51/g66/g47/g44/g48
/g50/g51/g55/g50/g38/g50/g56/g51/g47/g40/g53/;################/g49/g51/g49/g53/;########################/;######################
/;####################/;########################/;###################/g53/;########################/;#######################
/;####################/;#####################/;###################/g57/g39/g39
/g57/g39/g39
/;#########################
/;########################
/;#######################/;####################
/;#####################/g40/g66/g39/g50/g58/g49/g66/g47/g44/g48
/g50/g51/g55/g50/g38/g50/g56/g51/g47/g40/g53/;################/g49/g51/g49/;#########################
/;########################
/;#######################/;####################
/;#####################/g40/g66/g56/g51/g66/g47/g44/g48
/g50/g51/g55/g50/g38/g50/g56/g51/g47/g40/g53/;################/g49/g51/g49/g53/;########################/;##########################
/;####################/;########################/;###################/g53/;########################/;###########################
/;####################/;#####################/;###################/g57/g39/g39
/g57/g39/g39/;#########################
/;########################
/;#######################/;####################
/;#####################/g36/g38/g38/g40/g54/g54/g66/g38/g36/g53/g39
/g42/g51/;####################/g54/;########################/;#########################/;###################/g53/;###########################/;####################
/;#####################/;#####################/;###################/g57/g39/g39/g44/g43/;####################/;##########################
/g44/g47/;#####################/;####################/;######################
/g44/g43/;#####################/;############################
/g44/g47/;####################/;#####################
/g54/g47/;####################/;#####################/;#########################
/g54/g47/;####################/;#####################/;##########################
/g54/g47/;#####################
/;####################/;#########################
/g54/g47/;#####################
/;####################/;##########################
/g42/g49/g39
/;#########################/g54/g43/;#####################/;#####################/;###################
/g54/g43/;#####################/;#####################/;####################
/g39/g47/;#####################/;####################/;#####################
/g39/g47/;#####################/;####################/;#######################
/g39/g47/;#####################/;####################/;########################
/g39/g47/;#####################/;####################/;###########################
/g54/g43/;####################/;#####################/;#####################
/g54/g43/;####################/;#####################/;######################
/g39/g47/;####################/;####################
/g39/g47/;####################/;######################
/g39/g47/;####################/;#####################/;########################
/g39/g47/;####################/;#####################/;###########################/g39/g43/g57/g54/;########################
/g39/g43/g57/g54/;####################/;###################
/g39/g43/g57/g54/;####################/;############################
/g39/g43/g57/g54/;#####################/;#######################/g56/;####################/;######################
/g37/g55/g54/;##########################/;##########################/;#######################/;###################/g42
/g44/g43/;####################/;##########################
/g44/g47/;#####################/;####################/;######################
/g44/g43/;#####################/;############################
/g44/g47/;####################/;#####################
/g54/g47/;####################/;#####################/;#########################
/g54/g47/;####################/;#####################/;##########################
/g54/g47/;#####################
/;####################/;#########################
/g54/g47/;#####################
/;####################/;##########################
/g42/g49/g39
/;#########################/g54/g43/;#####################/;#####################/;###################
/g54/g43/;#####################/;#####################/;####################
/g39/g47/;#####################/;####################/;#####################
/g39/g47/;#####################/;####################/;#######################
/g39/g47/;#####################/;####################/;########################
/g39/g47/;#####################/;####################/;###########################
/g54/g43/;####################/;#####################/;#####################
/g54/g43/;####################/;#####################/;######################
/g39/g47/;####################/;####################
/g39/g47/;####################/;######################
/g39/g47/;####################/;#####################/;########################
/g39/g47/;####################/;#####################/;###########################/g39/g43/g57/g54/;########################
/g39/g43/g57/g54/;####################/;###################
/g39/g43/g57/g54/;####################/;############################
/g39/g43/g57/g54/;#####################/;#######################/g56/;####################/;#######################
/g37/g55/g54/;##########################/;##########################/;#######################/;###################/g42/g53/;###########################/;######################
/;###########################/;#####################/g78
/g52/;######################
/g38/;####################/;#########################
/;####################/;###################/g88/g38/;####################/;##########################
/;####################/;###################/g88/g53/g57/;#######################
/g48/g51/g38/;############################/;##########################/;###################/;###################/;######################/;#######################
/;#####################/g38/;####################/;###########################
/;####################/;###################/;###################/g81/g52/;####################
/g37/g55/g54/;####################/;##########################/;####################/g53/;#####################
/;#####################/;#####################/g46
/g52/;#####################
/g37/g55/g54/;####################/;##########################/;####################/g53/;########################
/;#####################/;#####################/g46/g57/g39/g39
/g38/;####################/;############################
/;####################/;###################/g88/g38/;#####################/;###################
/;####################/;###################/g88/;####################
/;#########################
/;#####################
/;##########################
/;######################
/;###########################
/;#######################
/;############################
/;########################
/g45/;#########################
/g38/g50/g49/g49/;################/g39/;############################/g48/g57/g39/g39
/g40/g49/;####################
/g40/g49/;#####################
/g40/g81/g87/g85/g68/g81/g70/g72/g66/g56/g51
/g40/g91/g76/g87/g66/g56/g51
/g48/g56/g59/g66/g40/g49/g36/g37/g47/g40/g48/g56/g59/g66/g40/g49/g36/g37/g47/g40/g48/g56/g59/g66/g50/g56/g55/g48/g56/g59/g66/g50/g56/g55/g39/g44/g54/g51/g47/g36/g60/g66/g53/g54
/g39/g44/g54/g51/g47/g36/g60/g66/g53/g54/g39/g44/g54/g51/g47/g36/g60/g66/g40
/g39/g44/g54/g51/g47/g36/g60/g66/g40/g39/g44/g54/g51/g47/g36/g60/g66/g39/;#########################/g39/g44/g54/g51/g47/g36/g60/g66/g39/;########################/g39/g44/g54/g51/g47/g36/g60/g66/g39/;#######################
/g39/g44/g54/g51/g47/g36/g60/g66/g39/;#######################
/g39/g44/g54/g51/g47/g36/g60/g66/g39/;########################
/g39/g44/g54/g51/g47/g36/g60/g66/g39/;#########################
/g39/g44/g54/g51/g47/g36/g60/g66/g39/;##########################/g39/g44/g54/g51/g47/g36/g60/g66/g39/;##########################/g54/g53/g42/g66/g38/g47/g46
/g54/g53/g42/g66/g38/g47/g46/g57/g39/g39
/g57/g39/g39
/g57/g39/g39
/g57/g39/g39 /g57/g39/g39 /g57/g39/g39 /g57/g39/g39/g57/g39/g39
/g57/g39/g39/g54/g58/;####################
/g54/g58/;################/g54/g51/g39/g55/;################/g48/g50/g48
/g54/g58/;#####################
/g54/g58/;################/g54/g51/g39/g55/;################/g48/g50/g48/g39/;#####################
/g38/g49/g60/;#########/;############/g57/g39/g39/;#####################/g50/g56/g55/;######################/g42/g49/g39/;####################/g40/g66/g38/g36/g53/g66/;#####################/g66/g54/g40/g49/g54
/g55/g54/g50/g51/;###/;####################/;##########################/;######################/;###########################/g57/g39/g39/;#####################/g50/g56/g55/;######################/g42/g49/g39/;####################/g40/g66/g38/g36/g53/g66/;####################/g66/g54/g40/g49/g54
/g55/g54/g50/g51/;####################/;##########################/;######################/;###########################
/g57/g39/g39/;#####################/g50/g56/g55/;######################/g42/g49/g39/;####################/g44/g66/g38/g36/g53/g66/;#####################/g66/g54/g40/g49/g54
/g55/g54/g50/g51/;####################/;##########################/;######################/;###########################/g57/g39/g39/;#####################/g50/g56/g55/;######################/g42/g49/g39/;####################/g44/g66/g38/g36/g53/g66/;####################/g66/g54/g40/g49/g54
/g55/g54/g50/g51/;####################/;##########################/;######################/;###########################/g53/;######################/;#######################
/;########################/;####################/;###################/g53
/g53/;######################/;#########################
/;########################/;####################/;###################/g53/g53/;######################/;######################
/;########################/;####################/;###################/g53
/g53/;######################/;########################
/;########################/;####################/;###################/g53/g39/;######################
/g38/g49/g60/;##########################/;###################
/g39/;#######################
/g38/g49/g60/;##########################/;###################
/g39/;########################
/g38/g49/g60/;##########################/;###################/g38/;#####################/;####################
/;####################/;###################/g88
/g38/;#####################/;#####################
/;####################/;###################/g88
/g38/;#####################/;######################
/;####################/;###################/g88
/g38/;#####################/;#######################
/;####################/;###################/g88/g57/g39/g39/g57/g39/g39
/g57/g39/g39
/g39/;##########################
/g38/g49/g60/;##########################/;###################/g57/g39/g39/;#####################/g50/g56/g55/;######################/g42/g49/g39/;####################/;####################/g37
/g55/g54/g50/g51/;###/;####################/;##########################/;######################/;###########################/g57/g39/g39/;#####################/g50/g56/g55/;######################/g42/g49/g39/;####################/;####################/g36
/g55/g54/g50/g51/;####################/;##########################/;######################/;###########################
/g57/g39/g39/;#####################/g50/g56/g55/;######################/g42/g49/g39/;####################/;#####################/g37
/g55/g54/g50/g51/;####################/;##########################/;######################/;###########################
/g53/;######################/;###########################
/;########################/;####################/;###################/g53/g53/;#######################/;###################
/;########################/;####################/;###################/g53/g53/;######################/;##########################
/;########################/;####################/;###################/g53/g39/;#########################
/g38/g49/g60/;##########################/;###################
/g39/;############################
/g38/g49/g60/;##########################/;###################/g38/;#####################/;########################
/;####################/;###################/g88
/g38/;#####################/;#########################
/;####################/;###################/g88/g38/;#####################/;###########################
/;####################/;###################/g88
/g53/;#######################
/g39/g38/;##########################/g52/;######################/g42/g49/g39/;####################/g57/g38/g38/;###########################
/g55/g53/;#####################/g55/g43/;#########################/g38/g57/;########################/g56/;######################
/g49/g40/;########################/;########################/;########################/g38/;#####################/;############################
/;####################/;###################/g88
/g57/g39/g39
/g53/;############################
/;########################/g78/;#########################
/g53/;####################/;###################
/;####################/g78/;###########################
/g53/;####################/;######################
/;######################/;#########################/;###################/g53/;####################/;##########################
/;########################/g78/;#########################
/g53/;####################/;###########################
/;########################/g78/;#########################/g53/;####################/;############################
/;####################/;###################/g78
/g53/;#####################/;#########################
/;####################/g78/;###########################/g38/;#####################/;###################
/;#####################/g81/;#####################/g38/;######################/;###################
/;#####################/g81/;#####################/g52/;#######################
/g37/g38/;########################/;#########################/;###################
/g52/;########################
/g37/g38/;########################/;#########################/;###################/g57/g39/g39 /g57/g39/g39/g48/g56/g59/g66/g36
/g48/g56/g59/g66/g37
/g48/g56/g59/g66/g38/g48/g56/g59/g66/g36/g48/g56/g59/g66/g37/g48/g56/g59/g66/g38/g52/g36/g66/g56/;#########################
/g52/g37/g66/g56/;#########################
/g52/g38/g66/g56/;#########################
/g52/g39/g66/g56/;#########################
/g52/g40/g66/g56/;#########################
/g52/g41/g66/g56/;#########################
/g52/g42/g66/g56/;#########################
/g52/g36/g66/g56/;#########################
/g52/g37/g66/g56/;#########################
/g52/g38/g66/g56/;#########################
/g52/g39/g66/g56/;#########################
/g52/g40/g66/g56/;#########################
/g52/g41/g66/g56/;#########################
/g52/g42/g66/g56/;#########################/g52/g36/g66/g56/;###########################
/g52/g37/g66/g56/;###########################
/g52/g38/g66/g56/;###########################
/g52/g39/g66/g56/;###########################
/g52/g40/g66/g56/;###########################
/g52/g41/g66/g56/;###########################
/g52/g42/g66/g56/;###########################
/g52/g36/g66/g56/;###########################
/g52/g37/g66/g56/;###########################
/g52/g38/g66/g56/;###########################
/g52/g39/g66/g56/;###########################
/g52/g40/g66/g56/;###########################
/g52/g41/g66/g56/;###########################
/g52/g42/g66/g56/;###########################/g52/g36/g66/g56/;########################
/g52/g37/g66/g56/;########################
/g52/g38/g66/g56/;########################
/g52/g39/g66/g56/;########################
/g52/g40/g66/g56/;########################
/g52/g41/g66/g56/;########################
/g52/g42/g66/g56/;########################
/g52/g36/g66/g56/;########################
/g52/g37/g66/g56/;########################
/g52/g38/g66/g56/;########################
/g52/g39/g66/g56/;########################
/g52/g40/g66/g56/;########################
/g52/g41/g66/g56/;########################
/g52/g42/g66/g56/;########################/g52/g36/g66/g56/;##########################
/g52/g37/g66/g56/;##########################
/g52/g38/g66/g56/;##########################
/g52/g39/g66/g56/;##########################
/g52/g40/g66/g56/;##########################
/g52/g41/g66/g56/;##########################
/g52/g42/g66/g56/;##########################
/g52/g36/g66/g56/;##########################
/g52/g37/g66/g56/;##########################
/g52/g38/g66/g56/;##########################
/g52/g39/g66/g56/;##########################
/g52/g40/g66/g56/;##########################
/g52/g41/g66/g56/;##########################
/g52/g42/g66/g56/;##########################/g53/;#######################/;####################
/;###########################/;#####################/;###################/g53
/g53/;#######################/;#####################
/;###########################/;#####################/;###################/g53
/g53/;#######################/;######################
/;###########################/;#####################/;###################/g53
/g53/;#######################/;#######################
/;###########################/;#####################/;###################/g53/g53/;#######################/;########################
/;###########################/;#####################/;###################/g53
/g53/;#######################/;#########################
/;###########################/;#####################/;###################/g53
/g53/;#######################/;##########################
/;###########################/;#####################/;###################/g53/g53/;#######################/;###########################
/;###########################/;#####################/;###################/g53
/g53/;#######################/;############################
/;###########################/;#####################/;###################/g53
/g53/;########################/;###################
/;###########################/;#####################/;###################/g53/g53/;########################/;####################
/;###########################/;#####################/;###################/g53/g53/;########################/;#####################
/;###########################/;#####################/;###################/g53/g53/;########################/;########################
/;###########################/;#####################/;###################/g53
/g53/;########################/;#########################
/;###########################/;#####################/;###################/g53/g53/;########################/;############################
/;###########################/;#####################/;###################/g53
/g53/;#########################/;###################
/;###########################/;#####################/;###################/g53
/g53/;#########################/;####################
/;###########################/;#####################/;###################/g53/g53/;#########################/;#####################
/;###########################/;#####################/;###################/g53
/g53/;#########################/;######################
/;###########################/;#####################/;###################/g53
/g53/;#########################/;#######################
/;###########################/;#####################/;###################/g53/g53/;#########################/;########################
/;###########################/;#####################/;###################/g53/g53/;#########################/;#########################
/;###########################/;#####################/;###################/g53
/g53/;#########################/;##########################
/;###########################/;#####################/;###################/g53
/g53/;#########################/;###########################
/;###########################/;#####################/;###################/g53/g53/;#########################/;############################
/;###########################/;#####################/;###################/g53
/g53/;##########################/;###################
/;###########################/;#####################/;###################/g53
/g53/;##########################/;####################
/;###########################/;#####################/;###################/g53/g53/;##########################/;#####################
/;###########################/;#####################/;###################/g53

Sistem de monitorizare parcare auto cu PIC16F877
70
Cocoș Bogdan Inginerie
BIBLIOGRAFIE

1) BERILIU, I. – Microcontrollere:aplicații, Editura Universității „Lucian Blaga” din
Sibiu , 2008
2) KERNIGHAN, B. W., RITCHIE, D. M. – The C Programming Language (traducere)

3) VIOREL – CONSTANTIN PETRE – Introducere în microcontrolere și automate
programabile, Editura Matrix-Rom 2010
4) TOACȘE, G., NICULA, D. – Electronică digitală Vol. I, Editura Tehnică București, 2005 5) LUCIAN CIOBANU – Tratat de inginerie electrică. Senzori și traductoare,
Editura Matrix-Rom, 2007
6) http://www.fairchildsemi.com
7) http://www.infineon.com
8) http://www.kingbright.com
9) http://www.motorola.com
10) http://www.microchip.com
11) http://www.ti.com
8. http://www.vishay.com

INTERN
ET:

Similar Posts