Sei sulla pagina 1di 7

RELOJ DIGITAL CON MICROCONTROLADOR PIC16F84A En este artculo presentaremos un apoyo a nuestros lectores para disear y construir un reloj

digital en tiempo real basado en un microcontrolador PIC16F84A. Para poder realizar este diseo, es necesario contar con 3 displays dobles o 6 de un solo digito. Ya sea se utilicen 3 display dobles o 6 de un solo digito, estos deben estar conectados de forma paralela, es decir pin para el segmento a de un display, debe estar conectado a cada uno de los pines correspondientes al segmento a de los displays restantes; esto mismo debe realizarse con los pines de los segmentos restantes (b, c, d, e, f, g). Para poder visualizar las horas minutos y segundos en los display utilizaremos una tcnica que le llama barrido. Debido a que todos los display se encuentran conectados paralelamente, enviar un cdigo en 7 segmentos hacia estos, implica que el mismo numero aparezca en los 6 displays; mas sin embargo, esto no ocurrir, debido a que controlaremos en forma de barrido el pin comn de cada uno de los display. Como se logra esto? Observando la figura 1, se puede uno dar cuenta que existe en el display 2 pines que dice Comn aparte de los correspondientes para los 7 segmentos y el de punto decimal. El pin mencionado puede ser utilizado como habilitacin del display; es decir colocando este pin a un nivel de voltaje adecuado ocasiona que el display funcione o quede deshabilitado. Qu es un nivel de voltaje adecuado? Existen en el mercado dos tipos de displays de 7 segmentos: los que son de nodo Comn y los de Ctodo Comn. Los display de nodo Comn, el pin denominado Comn debe conectarse a 5 volts positivos para que este dispositivo funcione. Los display de Ctodo Comn, el pin denominado Comn debe conectarse a masa o tierra de la fuente de alimentacin de 5 volts positivos empleada para que este funcione. Si en cualquiera de los display mencionados anteriormente se hace una conexin opuesta a la indicada por el fabricante, este dispositivo no funciona. a)
Figura 2. a) display triple; b) display doble.

a)

b)

Figura 1. a) distribucin de los segmentos de un display. b) distribucin de los pines de un display de un solo digito.

b)

Electrnica Tuxtla (www.electronicatuxtla.com)

Un tiempo tpico de 500 useg de encendido por cada display, dar la impresin de observar todos al mismo tiempo encendidos. A continuacin se muestra la lista de materiales empleados para el reloj y el diagrama de armado correspondiente: LISTA DE MATERIALES: 1 microcontrolador PIC16F84A. 1 circuito integrado 74LS138. 2 capacitores cermicos de 22 o 33 pF. 1 Cristal de cuarzo de 4 MHz. 2 resistencias de 10Kohm a watt. 1 resistencia de 1Kohm a watt. 1 resistencia de 100 ohms a watt. 1 resistencia de 220 ohms a watt. 6 display de un solo digito o 3 display dobles. 2 diodos led de uso general. 2 push boton normalmente abiertos. Fuente de alimentacin de 5 volts.

Figura 3. Conexin de tipos de displas

Para nuestro reloj digital, se emplearon display de Ctodo Comn, de forma tal que cada display estar habilitado con una conexin a tierra y deshabilitado con una conexin a Vcc. Con las caractersticas anteriormente explicadas, el barrido se consigue de la siguiente manera: Para enviar el digito de las unidades del segundo, se habilita el display correspondiente llevndolo a tierra (habilitado) mientras los otros 5 displays se envan a Vcc (deshabilitados) inmediatamente despus se coloca el numero correspondiente en 7 segmentos en los 7 pines del display, de esta manera el numero solo se visualizar en el display cuya lnea comn se encuentra habilitada. Para enviar el digito de las decenas del segundo, se habilita el display correspondiente llevndolo a tierra (habilitado) mientras los otros 5 displays se envan a Vcc (deshabilitados) inmediatamente despus se coloca el numero correspondiente en 7 segmentos en los 7 pines del display, de esta manera el numero solo se visualizar en el display cuya lnea comn se encuentra habilitada. El mismo procedimiento se sigue para los dems displays consiguiendo con ello el barrido. Si el procedimiento anterior se hace de manera repetida a una alta velocidad, obtendremos la impresin de ver a todos los display encendidos al mismo tiempo, aunque como ya explicamos esto se hace manera secuencial a una alta velocidad.

En el diagrama esquemtico, se puede observa que hay dos interruptores designados como HORA y MINUTO; a travs de estos interruptores podemos configurar la hora y los minutos del reloj. Los leds solamente se utilizan para generar un efecto de parpadeo continuo, para darle algo ms vistoso a nuestro reloj. Si el lector desea puede omitir estos leds.

Electrnica Tuxtla (www.electronicatuxtla.com)

HORA

R8
10k

MINUTO C1
22pF

HORA

MINUTO

SEGUNDO

R9
10k

D1
LED-GREEN

X1
CRYSTAL

U1 14
16 17 OSC1/CLKIN RA0 15 18 OSC2/CLKOUT RA1 1 RA2 2 4 MCLR RA3 3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 6 7 8 9 10 11 12 13

D2
LED-GREEN

C2
22pF

R1
1k

RESET
PIC16F84A

U3
1 A 2 B 3 C Y0 Y1 Y2 Y3 Y4 6 E1 Y5 4 E2 Y6 5 E3 Y7 74LS138 15 14 13 12 11 10 9 7

R2
220

R3
100

Electrnica Tuxtla (www.electronicatuxtla.com)

;A continuacin se muestra el programa escrito en ;lenguaje ensamblador para el reloj digital:


__CONFIG _XT_OSC && _CP_OFF && _WDT_OFF

movlw b'10000111' movwf OPTION_REG bcf STATUS,RP0 movlw b'10100000' movwf INTCON movlw d'12' movwf TMR0 movlw d'16' movwf aux1 movlw .160 movwf RX1 movwf RX2 clrf PORTA clrf PORTB clrf segundo clrf minuto clrf hora ;PROGRAMA PRINCIPAL ;******************************* CICLO_P movlw d'6' movwf PORTA movf segundo,w call conv_BCD decf PORTA,1 movf unidad,w call envia decf PORTA,1 movf decena,w call envia ;xxxxxxxxxxxxxxxxxxxx movf minuto,w call conv_BCD decf PORTA,1 movf unidad,w call envia decf PORTA,1 movf decena,w call envia ;xxxxxxxxxxxxxxxxxxxx movf hora,w call conv_BCD decf PORTA,1 movf unidad,w call envia decf PORTA,1 movf decena,w call envia

list p=16f84a include "p16f84a.inc" CBLOCK 0x0c aux1 segundo minuto hora dato unidad decena r_dato r_time AX1 AX2 AX3 AX4 aux_w aux_edo RX1 RX2 auxPtoB ENDC org 0 goto inicio org 4 goto inter org 5 tabla_7seg addwf PCL,F retlw b'00111111' ;0 retlw b'00000110' ;1 retlw b'01011011' ;2 retlw b'01001111' ;3 retlw b'01100110' ;4 retlw b'01101101' ;5 retlw b'01111101' ;6 retlw b'00000111' ;7 retlw b'01111111' ;8 retlw b'01101111' ;9 inicio bsf STATUS,RP0 movlw b'00011000' movwf TRISA ;RA0:RA2 = Salidas; RA3:RA4=entradas clrf TRISB ;puertoB = Salidas

Electrnica Tuxtla (www.electronicatuxtla.com)

GOTO CICLO_P ;******************************* ;jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj envia call tabla_7seg btfss auxPtoB,0 goto jmp1 andlw b'01111111' goto jmp2 jmp1 iorlw b'10000000' jmp2 movwf PORTB call tiempo return ;jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj

;rutina para convertir un valor binario a BCD ;----------------------------------------------------conv_BCD movwf dato movwf r_dato clrf unidad clrf decena lazo movlw d'10' subwf dato,1 btfsc STATUS,Z goto skip2 btfss STATUS,C goto skip1 incf decena,1 movf dato,w movwf r_dato goto lazo skip2 incf decena,1 goto salir skip1 movf r_dato,w movwf unidad salir return ;----------------------------------------------------;+++++++++++++++++++++++++++++ tiempo movlw d'150' movwf r_time time

btfss PORTA,3 ;incrementa los minutos goto conti1 decfsz AX1,1 goto pros1 movlw d'200' movwf AX1 decfsz AX2,1 goto pros1 movwf AX2 incf minuto,1 movf minuto,w sublw d'60' btfss STATUS,Z goto pros1 clrf minuto goto pros1 conti1 movlw d'200' movwf AX1 movwf AX2 btfss PORTA,4 ;incrementa la hora goto conti2 decfsz AX3,1 goto pros1 movlw d'150' movwf AX3 decfsz AX4,1 goto pros1 movwf AX4 incf hora,1 movf hora,w sublw d'13' btfss STATUS,Z goto pros1 movlw d'1' movwf hora goto pros1 conti2 movlw d'150' movwf AX3 movwf AX4 pros1 decfsz RX1,F goto continua1 movlw d'160' movwf RX1 decfsz RX2,F goto continua1 movwf RX2 btfss auxPtoB,0 goto setear bcf auxPtoB,0

Electrnica Tuxtla (www.electronicatuxtla.com)

goto continua1 setear bsf auxPtoB,0 continua1 decfsz r_time,1 goto time movlw b'10000000' andwf PORTB,F return ;+++++++++++++++++++++++++++++ ;ZONA DE INTERRUPCION ;========================== inter movwf aux_w movf STATUS,w movwf aux_edo decfsz aux1,1 goto sigue1 incf segundo,1 movf segundo,w sublw d'60' btfss STATUS,Z goto nextA clrf segundo incf minuto,1 movf minuto,w sublw d'60' btfss STATUS,Z goto nextA clrf minuto incf hora,1 movf hora,w sublw d'13' btfss STATUS,Z goto nextA movlw d'1' movwf hora nextA movlw d'16' movwf aux1 sigue1 movlw d'12' movwf TMR0 movlw b'10100000' movwf INTCON movf aux_edo,w movwf STATUS btfss STATUS,Z goto w1 movf aux_w,w

bsf STATUS,Z goto w2 movf aux_w,w w2 retfie ;========================== end

Electrnica Tuxtla (www.electronicatuxtla.com)

Electrnica Tuxtla (www.electronicatuxtla.com)

Potrebbero piacerti anche