13
“AÑO DEL CENTENARIO DE MACHU PICCHU PARA EL MUNDO” PROFESOR: CESAR QUISPE CURSO: MICROPROCESADORES Y MICROCONTROLADORES PROYECTO: RELOJ DIGITAL CON PIC 16F84A ALUMNOS: SINCHE ROMERO, Jesús Miguel VASQUEZ QUINTANA 2011

Informe de Reloj Digital Con Pic 16f84a

Embed Size (px)

Citation preview

Page 1: Informe de Reloj Digital Con Pic 16f84a

“AÑO DEL CENTENARIO DE MACHU PICCHU PARA

EL MUNDO”

PROFESOR:

CESAR QUISPE

CURSO:

MICROPROCESADORES Y MICROCONTROLADORES

PROYECTO:

RELOJ DIGITAL CON PIC 16F84A

ALUMNOS:

SINCHE ROMERO, Jesús Miguel

VASQUEZ QUINTANA

2011

Page 2: Informe de Reloj Digital Con Pic 16f84a

INFORME DE RELOJ DIGITAL CON PIC 16f84a

1.- DESCRIPCION.-

El circuito es un sencillo reloj digital el cual utiliza muy pocos componentes.

Es bien sabido que existen muchas formas de llegar a algo en concreto, en este proyecto se ha utilizado un oscilador externo un cristal de 4MHz el cual fija la frecuencia base y entrega los pulsos de reloj, pero también podría haber utilizado el oscilador interno del pic (modificando el programa) para evitar utilizar este componente.

El pulsador se utiliza para ajustar la hora y poner el circuito en marcha, al hacer el programa para que solo funcione con el oscilador interno es más exacto.

2.-COMPONENTES:

PIC 16f84aResistores: 10k, 220Crystal 4 MHzCondensador 22pFPulsadoresLCD 1602bSwitch

3.-DIAGRAMA DEL CIRCUITO:

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U1

PIC16F84A

X1CRYSTAL

C1

22pF

C2

22pF

1

D7

14D6

13D5

12D4

11D3

10D2

9D1

8D0

7

E6

RW

5RS

4

VSS

1

VDD

2

VEE

3

LCD1LM016L

R3

220

R1

10k R2

10k

Page 3: Informe de Reloj Digital Con Pic 16f84a
Page 4: Informe de Reloj Digital Con Pic 16f84a

EXP - MINUTO_INC

Page 5: Informe de Reloj Digital Con Pic 16f84a

HORA_INC

Page 6: Informe de Reloj Digital Con Pic 16f84a

MINUTO_INC

Page 7: Informe de Reloj Digital Con Pic 16f84a

5.-CODIGO EMPLEADO:

List P=16f84aINCLUDE "P16F84A.INC"

__CONFIG _XT_OSC & _CP_OFF & _PWRTE_ON & _WDT_OFF#DEFINE BANCO0 BCF STATUS,RP0#DEFINE BANCO1 BSF STATUS,RP0#DEFINE LCD_CTRL PORTA#DEFINE LCD_DATA PORTB

RUTINAS EQU 0x0CSEGUNDO1 EQU 0x0FSEGUNDO2 EQU 0x10MINUTO1 EQU 0x11MINUTO2 EQU 0x12HORA1 EQU 0x13HORA2 EQU 0x14TIEMPO EQU 0x15CAMBIOHORA EQU 0X16LCD_LM EQU 0X17

ORG 0X00INICIOBANCO1

bsf TRISA,3bsf TRISA,4

BANCO0clrf PORTAclrf PORTBclrf SEGUNDO1clrf SEGUNDO2clrf MINUTO1clrf MINUTO2clrf HORA1clrf HORA2CALL LCD_UPCALL LCD_INI

movlw 0x05call LCD_SETDDADDRESS

MOVLW 'P' CALL LCD_WRITEDATO

MOVLW 'I'CALL LCD_WRITEDATO

MOVLW 'C'CALL LCD_WRITEDATO

MOVLW ':'CALL LCD_WRITEDATO

REPcall EXP

incf SEGUNDO1,Fmovlw .10xorwf SEGUNDO1,Wbtfss STATUS,Zgoto REPclrf SEGUNDO1

incf SEGUNDO2,Fmovlw .6xorwf SEGUNDO2,Wbtfss STATUS,Zgoto REPclrf SEGUNDO2

incf MINUTO1,Fmovlw .10xorwf MINUTO1,Wbtfss STATUS,Zgoto REPclrf MINUTO1

incf MINUTO2,Fmovlw .6xorwf MINUTO2,Wbtfss STATUS,Zgoto REPclrf MINUTO2

movlw .2xorwf HORA2,Wbtfsc STATUS,Zgoto X;;;;;;v

goto XX;;;;;;fX

incf HORA1,Fmovlw .4xorwf HORA1,Wbtfss STATUS,Zgoto REPclrf HORA1goto XXX

XXincf HORA1,Fmovlw .10xorwf HORA1,Wbtfss STATUS,Zgoto REPclrf HORA1

Page 8: Informe de Reloj Digital Con Pic 16f84a

goto XXXXXX

incf HORA2,Fmovlw .3xorwf HORA2,Wbtfss STATUS,Zgoto REPclrf HORA2goto REP

EXPMOVLW .250MOVWF TIEMPO

EXP2movlw .4call RUTINA_Cbtfss PORTA,3GOTO HORA_INCbtfss PORTA,4GOTO MINUTO_INCdecfsz TIEMPO,Fgoto EXP2

EXP3movlw 0x45call LCD_SETDDADDRESSmovf HORA2,Wcall LCD_TABNUMCALL LCD_WRITEDATO

movf HORA1,Wcall LCD_TABNUMCALL LCD_WRITEDATO

movlw ':'CALL LCD_WRITEDATO

movf MINUTO2,Wcall LCD_TABNUMCALL LCD_WRITEDATO

movf MINUTO1,Wcall LCD_TABNUMCALL LCD_WRITEDATOmovlw ':'

CALL LCD_WRITEDATOmovf SEGUNDO2,W

call LCD_TABNUMCALL LCD_WRITEDATO

movf SEGUNDO1,W

call LCD_TABNUMCALL LCD_WRITEDATO

return

HORA_INCbtfss PORTA,3GOTO $-.1

movlw .2xorwf HORA2,Wbtfsc STATUS,Zgoto X1;;;;;;v

goto XX2;;;;;;fX1

incf HORA1,Fmovlw .4xorwf HORA1,Wbtfss STATUS,ZGOTO EXP3clrf HORA1goto XXX3

XX2incf HORA1,Fmovlw .10xorwf HORA1,Wbtfss STATUS,ZGOTO EXP3clrf HORA1goto XXX3

XXX3incf HORA2,Fmovlw .3xorwf HORA2,Wbtfss STATUS,ZGOTO EXP3clrf HORA2

GOTO EXP3

MINUTO_INCbtfss PORTA,4GOTO $-.1incf MINUTO1,Fmovlw .10xorwf MINUTO1,Wbtfss STATUS,ZGOTO EXP3

Page 9: Informe de Reloj Digital Con Pic 16f84a

clrf MINUTO1incf MINUTO2,Fmovlw .6xorwf MINUTO2,Wbtfss STATUS,ZGOTO EXP3clrf MINUTO2GOTO EXP3

#define ENABLE bsf LCD_CTRL,2;Activa E

#define DISABLE bcf LCD_CTRL,2;Desactiva

#define LEER bsf LCD_CTRL,1;Pone LCD en Modo RD

#define ESCRIBIR bcf LCD_CTRL,1 ;Pone LCD en Modo WR#define DATO bsf LCD_CTRL,0

;Desactiva RS (modo comando)#define COMANDO bcf

LCD_CTRL,0 ;Activa RS (modo dato) cblock LCD_LMLCD_TEMP1 ;Registro temporal de posicion de la tablaLCD_TEMP2 ;Registro temporal del caracter ASCII Endc

SUBRUTINAS DEL LCD

LCD_UP BANCO1clrf LCD_DATA ;RB <0-7> salidas digitalesmovlw B'11111000'andwf LCD_CTRL,F ;RA0=RS RA1=R/W RA2=E salidas digitalesBANCO0bcf INTCON,GIE ;Desactivar interrupcionesCOMANDO ;RS=0ESCRIBIR ;R/W=0DISABLE ;E=0return

LCD_INI movlw 0x0Fcall RUTINA_C ;Espera un poco más de 15msmovlw B'00111000' ;Datos de 8 bits, 2 lineas y caracteres de 5x7call LCD_COMANDmovlw 0x05

call RUTINA_C ;5ms > 4.1ms.(Especificacion de Fabricante)movlw B'00111000' ;Datos de 8 bits, 2 lineas y caracteres de 5x8call LCD_COMAND

movlw .110call RUTINA_A ;110us > 100us.(Especificacion de Fabricante)movlw B'00111000' ;Datos de 8 bits, 2 lineas y caracteres de 5x8call LCD_COMANDmovlw B'00001000' ;b3 y b2 puedn ser cambiados para otra configuracióncall LCD_FUNCIONSET ;después de este punto no podran ser cambiados N ni Fmovlw B'00000100' ;Cursor apagado y Display prendidogoto LCD_DISPCURSCONT

LCD_MENSAJE movwf LCD_TEMP1;Salva posicion de la tabla

M_E_N_S movf LCD_TEMP1,0;Recupera posicion de la tabla

call LCD_TABLA ;Busca caracter de salida

movwf LCD_TEMP2;Guarda el caractermovf LCD_TEMP2,1btfsc STATUS,Z ;¿Hay más

caracteres?Return

call LCD_WRITEDATO ;Visualiza en el LCD el caracter

incf LCD_TEMP1,1 ;Siguiente caracter

goto M_E_N_S ;Repite con siguiente caracterLCD_TABLA movwf PCL

;Desplazamiento sobre la tabla

LCD_CLEAR movlw B'00000001';Borra LCD y cursor a Homegoto LCD_COMAND

LCD_HOME movlw B'00000010';Cursor a Homegoto LCD_COMAND

Page 10: Informe de Reloj Digital Con Pic 16f84a

LCD_ENTRYMODE andlw 0x03 ;Nos quedamos con b1-b0iorlw 0x04 ;Incorporamos el bit de función

goto LCD_COMAND

-------------------------------------------------------------------------LCD_DISPCURSCONT andlw 0x07

;Nos quedamos con b2-b1-b0iorlw 0x08 ;Incorporamos el bit de función

goto LCD_COMAND

-------------------------------------------------------------------------LCD_DISPCURSSHIFT andlw 0x0C

;Nos quedamos con b3-b2iorlw 0x10 ;Incorporamos

el bit de funcióngoto LCD_COMAND

-------------------------------------------------------------------------LCD_SETCGADDRESS andlw 0x3F

;Nos quedamos con b5-b4-b3-b2-b1-b0iorlw 0x40 ;Incorporamos

el bit de funcióngoto LCD_COMAND

-------------------------------------------------------------------------LCD_SETDDADDRESS iorlw 0x80

;Incorporamos el bit de funcióngoto LCD_COMAND

-------------------------------------------------------------------------LCD_READAC call

LCD_BUSYLEERBANCO1comf LCD_DATA,1 ;Puerto B como

entradaBANCO0ENABLEnopmovf LCD_DATA,0andlw 0x7F ;Valor

de la dirección de la DDRAM o CGRAMDISABLEBANCO1clrf LCD_DATABANCO0ESCRIBIRreturn

-------------------------------------------------------------------------LCD_WRITEDATO movwf LCD_DATA

;Valor a escribir en la DDRAM o CGRAM

call LCD_BUSYDATO

goto LCD_E;Genera pulso de E

-------------------------------------------------------------------------LCD_READDATO call LCD_BUSY

DATOLEERBANCO1comf LCD_DATA,1

;Puerto B como entradaBANCO0ENABLEnopmovf LCD_DATA,0 ;Valor

leido de la DDRAM o CGRAMDISABLEBANCO1clrf LCD_DATABANCO0ESCRIBIRCOMANDOreturn

-------------------------------------------------------------------------LCD_TABNUM addwf PCL,1

dt "0123456789ABCDEF"

SUBRUTINAS INTERNAS DEL LCD

LCD_BUSY: Lectura del Flag Busy y la direccion.LCD_BUSY LEER

BANCO1comf LCD_DATA,1

;Puerto B como entradaBANCO0ENABLEnopbtfsc LCD_DATA,7

;Chequea bit de Busygoto $-1DISABLEBANCO1clrf LCD_DATA

;Puerto B como salidaBANCO0ESCRIBIRreturn

Page 11: Informe de Reloj Digital Con Pic 16f84a

-------------------------------------------------------------------------;LCD_E: Pulso de EnableLCD_E ENABLE

nopDISABLE;Desactiva ECOMANDOReturn

-------------------------------------------------------------------------;LCD_COMAND: Escritura de comandos del LCDW = Codigo de comando para el LCDW ==> LCD_DATALCD_COMAND movwf LCD_DATA Codigo de comando.call LCD_BUSYgoto LCD_E ;Genera pulso de E

-------------------------------------------------------------------------;LCD_FUNCIONSET: Configura ela fuente del caracter y número de lineas. No se cambia DL; El modo de control deseado deberá cargarse en los 2 bits terceros de W:; x x x x b3 b2 x x; b2 : 0 = caracter de 5x7

1 = de 5x10; b3 : 0 = display de 1 linea

1 = de 2 lineas; b0,1,4-7 : sin importanciaLCD_FUNCIONSET andlw 0x0C ;Nos quedamos con b3-b2 (DL no se cambia)iorlw 0x30 ;Incorporamos el bit de función y 8 bitsgoto LCD_COMAND

; BLOQUE DE ETIQUETAS

CBLOCK RUTINAS ;Inicio de las variables. La primera dirección libre disponible

RUTINA_1RUTINA_2TEMPORIZACIONENDC

RUTINA_A movwf RUTINA_1bcf STATUS,Crrf RUTINA_1,1bcf STATUS,Crrf RUTINA_1,1

RUTINA_B nop

decfsz RUTINA_1,Fgoto RUTINA_Breturn

RUTINA_C movwf RUTINA_1BANCO1movf OPTION_REG,Wmovwf TEMPORIZACIONmovlw B'11010001'movwf OPTION_REGBANCO0

RUTINA_D clrwdtclrf TMR0bcf INTCON,T0IF

RUTINA_E btfss INTCON,T0IFgoto RUTINA_Edecfsz RUTINA_1,Fgoto RUTINA_DBANCO1movf TEMPORIZACION,Wmovwf OPTION_REGBANCO0return

RUTINA_F movwf RUTINA_1BANCO1movf OPTION_REG,Wmovwf RUTINA_Cmovlw B'11010011'movwf OPTION_REGBANCO0

RUTINA_G clrf RUTINA_2RUTINA_H clrwdt

bcf INTCON,T0IFclrf TMR0

RUTINA_I btfss INTCON,T0IFgoto RUTINA_Idecfsz RUTINA_2,Fgoto RUTINA_Hdecfsz RUTINA_1,Fgoto RUTINA_GBANCO1movf TEMPORIZACION,Wmovwf OPTION_REGBANCO0return

END

Page 12: Informe de Reloj Digital Con Pic 16f84a

6.-FUNTE DE INFORMACION:

http://www.ucontrol.com.ar/forosmf/tutoriales-guias-y-cursos-en-ucontrol/mis-primeros-programas-pic16f84a-y-pic16f628a/15/

www.mmtelec.com/.../CA1602B-Datasheet-16x2-Character-LCD-module.pdf

http://rolandopalermo.blogspot.com/2010/04/reloj-digital-con-displays-de-7.html

http://members.fortunecity.es/electronico/reloj.html

electronicatuxtla.com/Download02.php

http://perso.wanadoo.es/pictob/ensamblador.htm