Aplicati PIC16F84 Luca Ionut

15
Student: Luca Ionut Cristian EA IV Proiect Microcontrolere Universitatea Ovidius Constanta Facultatea de Stiinte Aplicate si Inginerie, Sectia Electronica Aplicata

description

Model de aplicatie cu PIC16F84

Transcript of Aplicati PIC16F84 Luca Ionut

Proiect Microcontrolere

Student: Luca Ionut CristianEA IVProiect Microcontrolere

Universitatea Ovidius ConstantaFacultatea de Stiinte Aplicate si Inginerie, Sectia Electronica AplicataMicrocontrolerul PIC 16F84PIC16F84 apartine unei clase de microcontrolere de 8 biti cu arhitectura RISC. Structura lui generala este aratata in schita urmatoare reprezentand blocurile de baza.Memoria program (FLASH)-pentru inmagazinarea unui program scris. Pentru ca memoria ce este facuta in tehnologia FLASH poate fi programata si stearsa mai mult decat odata, aceasta face microcontrolerul potrivit pentru dezvoltarea de componenta

EEPROM-memorie de date ce trebuie sa fie salvate cand nu mai este alimentare. Este in mod uzual folosita pentru inmagazinarea de date importante ce nu trebuie pierdute daca sursa de alimentare se intrerupe dintr-o data. RAM-memorie de date folosita de un program in timpul executarii sale. In RAM sunt inmagazinate toate rezultatele intermediare sau datele temporare ce nu sunt cruciale la intreruperea sursei de alimentare.PORTUL A si PORTUL B sunt conexiuni fizice intre microcontroler sin lumea de afara. Portul A are 5 pini, iar portul B are 8 pini.TIMER-ul LIBER este un registru de 8 biti in interiorul microcontrolerului ce lucreaza independent de program. La fiecare al patrulea impuls de ceas al oscilatorului isi incrementeaza valoarea lui pana ce atinge maximul (255), si apoi incepe sa numere tot din nou de la zero. Semnificatia pinilor

RA0...RA3 portul ARB0...RB7 portul BMCLR reseteaza intrarea si tensiunea de programare Vpp a microcontrolerului.VSS alimentare, masaVdd polul pozitiv al surseiOSC1 pin desemnat pentru conectarea la un oscilatorOSC2 pin desemnat pentru conectarea la un oscilatorCeas digital cu PIC 16f84Schema este foarte simplu de realizat i este alctuit din trei elemente, circuit-ul de alimentare, microcontrolerul i display-ul cu 7 segmente. Pentru alimentare am folosit un regulator de tensiune, respectiv 7805 (un regulator des folosit pentru aceste microcontrolere), acesta asigur tensiunea de 5 V necesar microcontrolerului.PB1 este folosit pentru a seta minutele, PB2 este folosit pentru a seta ora, PB3 este buton de reset. LED/ul D1 indica secundele.

List componente:R1 R8100R910kR10 R1310kC122pFC222pFD1LEDU1 U4Display cu 7 segmente, catod comunQ1 Q4C828Xtal14 MHz CristalIC17805 Regulator ICPIC1PIC 16F84 sau PIC16F84APB1 -PB3Buton fr meninere (microcontact)Codul de programare al unui ceas cu afisaj de 12 oreCBLOCK0ChS1S10M1M10H1H10DELDEL0DEL01DEL02WHATQSTATENDC#DEFINEDP PORTB,0 ; PIN NO 06 DECIMA POINTDELAY01DECFSZDEL,1GOTO$-.1CLRFPORTBRETURNDELAY02MOVLW.2MOVWFDEL01DECFSZDEL01,1GOTO$-.1RETURN; SEVEN SEGMENT DISPLAY CONNECTING TABLETABLEADDWFPCL,1;hgfedcba segmentsRETLWB'01111110';0 ;RETLWB'00001100';1RETLWB'10110110';2RETLWB'10011110';3RETLWB'11001100';4RETLWB'11011010';5RETLWB'11111010';6RETLWB'00001110';7RETLWB'11111110';8RETLWB'11011110';9

SCANMOVLWB'00000001' ;SEGMENT 01MOVWFPORTAMOVFM1,0CALLTABLEMOVWFPORTBCALLDELAY01MOVLWB'00000010';SEGMENT 02MOVWFPORTAMOVFM10,0CALLTABLEMOVWFPORTBCALLDELAY01MOVLWB'00000100';SEGMENT 03MOVWFPORTAMOVFH1,0CALLTABLEMOVWFPORTBCALLDELAY01MOVLWB'00001000';SEGMENT 04MOVWFPORTAMOVFH10,0CALLTABLEMOVWFPORTBCALLDELAY01RETURNINCRINCFS1,1MOVFS1,0BCFSTATUS,ZXORLW.10BTFSSSTATUS,ZRETURNCLRFS1INCFS10,1MOVFS10,0BCFSTATUS,ZXORLW.6BTFSSSTATUS,ZRETURNCLRFS10INCR_SMINCFM1,1MOVFM1,0BCFSTATUS,ZXORLW.10BTFSSSTATUS,ZRETURNCLRFM1INCFM10,1MOVFM10,0BCFSTATUS,ZXORLW.6BTFSSSTATUS,ZRETURNCLRFM10

INCR_SHINCFH1SWAPFH10,0ADDWFH1,0BCFSTATUS,ZXORLW13hBTFSSSTATUS,ZGOTO$+6CLRFH1CLRFH10MOVLW .1MOVWFH1RETURNMOVFH1,0BCFSTATUS,ZXORLW.10BTFSSSTATUS,ZRETURNCLRFH1INCFH10,1RETURNISRBCFINTCON,GIEMOVWFWHATSWAPFSTATUS,0MOVWFQSTATBCFINTCON,T0IFMOVLW.5MOVWFTMR0INCFDEL0,1MOVFDEL0,0ANDLWB'01111111'BCFSTATUS,ZXORLW.125BTFSSSTATUS,ZGOTOLABLEBTFSSDEL0,7GOTO$+.5CLRFDEL0CALLINCRGOTOLABLEGOTOLABLEBTFSSDEL0,7GOTO$+.5CLRFDEL0BCFDP; DECIMAL POINTCALLINCRGOTOLABLEMOVLW.200 ; DECIMAL POINT DELAY SETTINGMOVWFDEL0;DECIMAL POINTBSFDPLABLESWAPFQSTAT,0MOVWFSTATUSSWAPFWHAT,1SWAPFWHAT,0BSFINTCON,GIERETFIEKEYBSFOPTION_REG,7BCFINTCON,GIEBSFSTATUS,RP0MOVLWB'11101111'MOVWFTRISBBCFSTATUS,RP0MOVLWB'00000000'MOVWFPORTBCALLDELAY02; **********************************SM1BTFSCPORTB,1 ; SET MINITUSGOTOSH1CALLINCR_SMGOTOKEYX;***********************************;***********************************SH1CALLDELAY02 BTFSCPORTB,2 ; SET HOURGOTOKEYDECALLINCR_SH;***********************************KEYXBSFSTATUS,RP0CLRFTRISBBCFSTATUS,RP0MOVLW.100MOVWFDEL02CALLSCANDECFSZDEL02,1GOTO$-.2BSFINTCON,GIEBCFOPTION_REG,7RETURNKEYDEBSFSTATUS,RP0CLRFTRISBBCFSTATUS,RP0BSFINTCON,GIEBCFOPTION_REG,7RETURNMAINCLRFS1CLRFS10CLRFM1CLRFM10CLRFH1CLRFH10CLRFDELCLRFDEL0CLRFDEL01CLRFDEL02CLRFWHATCLRFQSTATBSFSTATUS,RP0CLRFTRISBCLRFTRISAMOVLWB'00000011'MOVWFOPTION_REGBSFINTCON,T0IEBSFINTCON,GIEBCFSTATUS,RP0CALLSCANCALLKEYGOTO$-.2ORG2007hDATA3FF1hENDSchema cablajului

Aranjarea pieselor pe cablaj

Ceasul in forma finala