Sunteți pe pagina 1din 10

Universitatea tefan cel Mare Suceava Facultatea de Inginerie Electric i tiina Calculatoarelor Specializarea Automatic i Informatic Aplicat

Proiect
Automate programabile i Microprogramare -Decodor infrarou cu PIC16F84-

ndrumtor Conf.dr.univ. Mahalu George

Student Tanas Ana-Maria Grupa 1241a

Cuprins
1. Noiuni introductive PIC16F84..............................................................................................3

2. 3. 4. 5. 6.

Prezentarea aplicaiei...........................................................................................................5 Programarea microcontroller-ului..........................................................................................6 Schema electronic a decodorului........................................................................................7 Codul surs..........................................................................................................................8 Bibliografie..........................................................................................................................10

Bibliografie

1. Noiuni introductive PIC16F84


PIC16F84 aparine unei clase de microcontrolere de 8 bii cu arhitectur RISC. Structura lui general este artat n schia urmtoare reprezentnd blocurile de baz. Memoria program (FLASH)-pentru memorarea unui program scris. Pentru c memoria ce este fcut n tehnologia FLASH poate fi programat i tears mai mult dect odat, aceasta face microcontrolerul potrivit pentru dezvoltarea de component. EEPROM-memorie de date ce trebuie s fie salvate cnd nu mai este alimentare. Este n mod uzual folosit pentru memorarea de date importante ce nu trebuie pierdute dac sursa de alimentare se ntrerupe dintr-o dat. De exemplu, o astfel de dat este o temperatur prestabilit n regulatoarele de temperatur. Dac n timpul ntreruperii alimentrii aceast dat se pierde, va trebui s facem ajustarea nc o dat la revenirea alimentrii. Astfel componenta noastr pierde n privina auto-meninerii. RAM-memorie de date folosit de un program n timpul executrii sale. n RAM sunt memorate toate rezultatele intermediare sau datele temporare ce nu sunt cruciale la ntreruperea sursei de alimentare. PORTUL A i PORTUL B sunt conexiuni fizice ntre microcontroler i lumea de afar. Portul A are 5 pini, iar portul B are 8 pini. TIMER-UL LIBER (FREE-RUN) este un registru de 8 bii n interiorul microcontrolerului ce lucreaz independent de program. La fiecare al patrulea impuls de ceas al oscilatorului i ncrementeaz valoarea lui pn ce atinge maximul (255), i apoi ncepe s numere tot din nou de la zero. Dup cum tim timpul exact dintre fiecare dou incrementri ale coninutului timer-ului, poate fi folosit pentru msurarea timpului ce este foarte util la unele componente. UNITATEA DE PROCESARE CENTRAL are rolul unui element de conectivitate ntre celelalte blocuri ale microcontrolerului. Coordoneaz lucrul altor blocuri i execut programul utilizatorului.

PIC16F84 se potrivete perfect n multe folosine, de la industriile auto i aplicaiile de control casnice la instrumentele industriale, senzori la distan, mnere electrice de ui i dispozitivele de securitate. Este de asemenea ideal pentru cardurile smart ca i pentru aparatele alimentate de baterie din cauza consumului lui mic. Memoria EEPROM face mai uoar aplicarea microcontrolerelor la aparate unde se cere memorarea permanent a diferitor parametri (coduri pentru transmitoare, viteza motorului, frecvenele receptorului, etc.). Costul sczut, consumul sczut, mnuirea uoar i flexibilitatea fac PIC16F84 aplicabil chiar i n domenii unde microcontrolerele nu au fost prevzute nainte (exemple: funcii de timer, nlocuirea interfeei n sistemele mari, aplicaiile coprocesor, etc.). Programabilitatea sistemului acestui cip (mpreun cu folosirea a doar doi pini n transferul de date) face posibil flexibilitatea produsului, dup ce asamblarea i testarea au fost terminate. Aceast capabilitate poate fi folosit pentru a crea producie pe linie de asamblare, de a nmagazina date de calibrare disponibile doar dup testarea final, sau poate fi folosit pentru a mbunti programele la produsele finite. PIC16F84 are un numr total de 18 pini. Cel mai adesea se gsete ntr-o capsul de tip DIP18 dar se poate gsi de asemenea i ntr-o capsul SMD care este mai mic ca cea DIP. DIP este prescurtarea de la Dual In Package. SMD este prescurtarea de la Surface Mount Devices sugernd c gurile pentru pini unde s intre acetia, nu sunt necesare n lipirea acestui tip de component.

Pinii microcontrolerului PIC16F84 au urmtoarea semnificaie:

Pin nr.1 RA2 Al doilea pin la portul A. Nu are funcie adiional. Pin nr.2 RA3 Al treilea pin la portul A. Nu are funcie adiional. Pin nr.3 RA4 Al patrulea pin la portul A. TOCK1 care funcioneaz ca timer se gsete de asemenea la acest pin. Pin nr.4 MCLR Reseteaz intrarea i tensiunea de programare Vpp a microcontrolerului. Pin nr.5 VSS Alimentare, mas. Pin nr.6 RB0 Pin de zero la portul B. Intrarea ntrerupere este o funcie adiional. Pin nr.7 RB1 Primul pin la portul B. Nu are funcie adiional. Pin nr.8 RB2 Al doilea pin la portul B. Nu are funcie adiional. Pin nr.9 RB3 Al treilea pin la portul B. Nu are funcie adiional. Pin nr.10 RB4 Al patrulea pin la portul B. Nu are funcie adiional. Pin nr.11 RB5 Al cincilea pin la portul B. Nu are funcie adiional. Pin nr.12 RB6 Al aselea pin la portul B. Linia de 'Clock' n mod programare. Pin nr.13 RB7 Al aptelea pin la portul B. Linia 'Data' n mod programare. Pin nr.14 Vdd Polul pozitiv al sursei. Pin nr.15 OSC2 Pin desemnat pentru conectarea la un oscilator. Pin nr.16 OSC1 Pin desemnat pentru conectarea la un oscilator. Pin nr.17 RA2 Al doilea pin la portul A. Nu are funcie adiional. Pin nr.18 RA1 Primul pin la portul A. Nu are funcie adiional.

2. Prezentarea aplicaiei
Nu exist nicio ndoial faptul c telecomenzile sunt extrem de populare i a devenit foarte greu s ne imaginm o lume fr ele. Acestea sunt utilizate pentru a controla tot felul de aparate, cum ar fi televizor, sistem, DVD, receiver de satelit etc.. Ori de cte ori un astfel de aparat ajunge la sfritul duratei sale de via incepe sa isi piarda din functionarea corecta. Acestea pot fi refolosite pentru a controla alte lucruri, ca de exemplu luminile n camera de zi sau perdele. n centrul schemei este procesorul PIC16F84. Acesta este nsoit de componentele sale standard cum ar fi condensatorul cu cristal de 4.000 MHz i circuitul de resetare. S-au folosit doua tipuri de receptoare IR n acest proiect, unul acordat la 36 kHz i unul la 38 kHz . Acest lucru asigur o sensibilitate adecvat pentru toate protocoalele suportate. Semnalele sunt suprapuse prin 2 diode nainte de a fi aplicate pe PORTA 4 a PIC-ului. Trebuie conectat cte un condensator de 22 F aproape de pinii de alimentare a fiecrui receptor. Butonul care este de asemenea conectat la intrarea corespunztoare din PIC, nu are nici o funcie n acest moment. Este inclus doar n cazul n care am decide crearea unui program care poate citi mai multe protocoale IR. Butonul pot fi apoi folosit pentru a selecta protocolul. Display-ul cu LED-uri afieaz descrierea diagramei. Este un display multiplexor cu LED-uri . S-a folosit unul cu 4 cifre, deoarece este mult mai uor de folosit dect dac sar folosi unul cu cu 4 cifre separate. Pentru fiecare segment curentul este limitat de o rezistenta de 180 . Anozii comuni a celor 4 cifre sunt alimentate de patru tranzistoare PNP.
5

Circuitul utilizeaz o surs extern de alimentare de 5 V la aproximativ 100 mA.

3. Programarea microcontroller-ului
Sarcinile pe care software-ul trebuie s efectueze: Primete i decodeaz mesajele IR Scaneaz afiajul terge ecranul la 2 secunde dup primirea ultimului mesaj IR Toate aceste sarcini vor fi executate simultan. Primirea semnalelor IR este un proces critic i nu poate fi deranjat de alte sarcini. A doua sarcin este, de asemenea, destul de important. Toate cifrele trebuie s fie prezentate la rndul lor, ntr-un ritm rapid i constant, altfel putem vedea plpirea ecranului. Aceast sarcin este, de asemenea, un moment destul de critic. Iar ultima nu sunt critic, dar trebuie s fie efectuat ntr-un mod n care nu influeneaz primele dou sarcini. Exist doar o singur bucl principal a programului, iar dup iniializarea mainii va rmne acolo pn la oprirea din funciune a procesorului.

1. Schema electronic a decodorului

2. Codul surs
;---------------------------------------------------------------------------; ; Main program loop ; ;---------------------------------------------------------------------------MAIN ;-----------------------------------------CALL THE IR RECEIVER STATE MACHINE-CALL IR_MACHINE Call the IR receiver state machine

;-----------------------------------------------------SCAN DISPLAY EVERY 5MS-DECF BTFSC CALL SCAN_DELAY,F STATUS,ZERO SCAN_DISP Decrement scan delay counter Only scan display if counter = 0

;-------------------------------------------------------SYNC MAIN WITH TIMER-.SYNC GOTO MOVLW ADDWF GOTO .SYNC TIMER_UPDATE TMR0,F MAIN BTFSC TMR0,7 Not 0 yet! Reload timer again Wait until bit 7 of TMR = 0

;---------------------------------------------------------------------------; ; Scan display routine ;

;----------------------------------------------------------------------------

SCAN_DISP

MOVLW MOVWF MOVLW MOVWF MOVF MOVWF

MS5_COUNT SCAN_DELAY %1111.1111 PORTA SCAN_STATE,W PCL

Reload scan delay

Switch off all Anode drivers during the switch Jump to next display's routine

;-------------------------------------------------------------SCAN DISPLAY 1--

SCAN_DISP1

MOVF MOVWF MOVLW MOVWF MOVLW MOVWF RETURN

DIGIT1,W PORTB %1111.1110 PORTA #SCAN_DISP2 SCAN_STATE

Get pattern of left most digit and send it out Switch left most digit on

Next time do SCAN_DISP2

;-------------------------------------------------------------SCAN DISPLAY 2--

SCAN_DISP2

MOVF MOVWF MOVLW MOVWF MOVLW MOVWF

DIGIT2,W PORTB %1111.1101 PORTA #SCAN_DISP3 SCAN_STATE

Get pattern of 2nd left digit and send it out Switch 2nd left digit on

Next time do SCAN_DISP3

DECF BTFSS RETURN

DP_DELAY,F STATUS,ZERO

Decrement DP_DELAY every 20ms

We're done if counter <> 0 !

BSF RETURN

DIGIT2,7

Clear Digit 2's decimal point now

;-------------------------------------------------------------SCAN DISPLAY 4--

SCAN_DISP4

MOVF MOVWF MOVLW MOVWF MOVLW MOVWF

DIGIT4,W PORTB %1111.0111 PORTA #SCAN_DISP1 SCAN_STATE

Get pattern of right most digit and send it out Switch right most digit on

Next time do SCAN_DISP1 again

DECF BTFSS RETURN

CLR_DELAY,F STATUS,ZERO

Decrement CLR_DELAY every 20ms

We're done if counter <> 0 !

MOVLW MOVWF MOVWF MOVWF MOVWF RETURN

%1011.1111 DIGIT1 DIGIT2 DIGIT3 DIGIT4

Only display 4 dashes

3. Bibliografie
http://electrodb.ro/atelier/decodor-ir-cu-pic16f84/
http://facultate.regielive.ro/.../microcontrolerul_pic16f84-174483.html Help-ul programului Multisim

10

S-ar putea să vă placă și