Autor Tema: Despertador con pic y display 7 segmentos  (Leído 2380 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Phako_mx

  • PIC10
  • *
  • Mensajes: 11
Despertador con pic y display 7 segmentos
« en: 31 de Mayo de 2004, 20:27:00 »
Bueno intente subir una foto como archivo ajunto pero me dice que no hay espacio suficiente para cargarla. de todos modos aqui esta el asm y las instrucciones de uso la foto pueden pedirmela a mi email---->   ojendez@hotmail.com y con gusto se las mando... espero les sirva..



;Relog despertador

AJUSTV   EQU   09FH      ;SI ATRASA HAY QUE BAJAR ESTE NUMERO    
REFRESV   EQU   011H      
VAR1V   EQU   0C8H
VAR2V   EQU   14H
SEGV   EQU   3CH
FSR   EQU   04H
INDF   EQU   00H
CUENTA1   equ   0Ch
CUENTA2   EQU   0DH
CUENTA3   EQU   0EH
DISP1   EQU   0FH
DISP2   EQU   10H
VAR1   EQU   11H
VAR2   EQU   12H
SEG   EQU   13H
MIN   EQU   14H
HOR   EQU   15H
ACU   EQU   16H
REFRES   EQU   17H
STAT   EQU   18H
AJUST   EQU   19H
AL_HOR   EQU   20H
HORAL   EQU   21H
MINAL   EQU   22H
HORAL2   EQU   23H
MINAL2   EQU   24H
STATUS   EQU   03H
PORTA   EQU   05H
PORTB   EQU   06H
TRISA   EQU   05H
TRISB   EQU   06H
TMR0   EQU   01H   ;AQUI SE PONE LO Q QUIERES QUE CUENTE EL TIMER (BANCO 0)
INTCON   EQU   0BH
F   EQU   1
W   EQU   0

   ORG   00H
   GOTO   INICIO
   ORG   04H
   MOVWF   ACU
   MOVLW   0DH   ;CON 0DH SALTA LA INTERRUPCION CADA 250 uSEG (CON CRISTAL 4MHZ)
   MOVWF   TMR0
   MOVF   STATUS,W
   MOVWF   STAT
   BTFSS   AL_HOR,2
   GOTO   AJUAJU
   BTFSS   PORTA,0
   GOTO   SON1
   BCF   PORTA,0
   GOTO   AJUAJU
SON1   BSF   PORTA,0


AJUAJU   DECFSZ   AJUST,F      
   GOTO   BLABLA
   MOVLW   04H
   ADDWF   TMR0
   MOVLW   AJUSTV
   MOVWF   AJUST

BLABLA   DECFSZ   REFRES,F
   GOTO   CONT
   MOVLW   REFRESV
   MOVWF   REFRES
   BTFSc   PORTB,4   ;ESCRIBE EN DISPLAYS
   GOTO   ESCDIS2
   BTFSc   PORTB,5
   GOTO   ESCDIS3
   BTFSc   PORTB,6
   GOTO   ESCDIS4
   BTFSC   PORTB,7
   GOTO   ESCDIS1
   GOTO   ESCDIS2
ESCDIS1   BTFSC   AL_HOR,1
   GOTO   BORRA
   SWAPF   HOR,W
   BTFSC   AL_HOR,0
   SWAPF   HORAL,W
   ANDLW   0FH
   BTFSC   STATUS,2
   GOTO   BORRA
   IORLW   10H
   MOVWF   PORTB
   GOTO   CONT
BORRA   CLRF   PORTB
   GOTO   CONT

ESCDIS2   BTFSC   AL_HOR,1
   GOTO   BORRA
   MOVF   HOR,W
   BTFSC   AL_HOR,0
   MOVF   HORAL,W
   ANDLW   0FH
   IORLW   20H
   MOVWF   PORTB
   GOTO   CONT

ESCDIS3   BTFSC   AL_HOR,1
   GOTO   BORRA
   SWAPF   MIN,W
   BTFSC   AL_HOR,0
   SWAPF   MINAL,W
   ANDLW   0FH
   IORLW   40H
   MOVWF   PORTB
   GOTO   CONT

ESCDIS4   BTFSC   AL_HOR,1
   GOTO   BORRA
   MOVF   MIN,W
   BTFSC   AL_HOR,0
   MOVF   MINAL,W
   ANDLW   0FH
   IORLW   80H
   MOVWF   PORTB

CONT   DECFSZ   VAR1,F   ;CONTABILIZA
   GOTO   SAL1
   MOVLW   VAR1V
   MOVWF   VAR1
   DECFSZ   VAR2,F
   GOTO   SAL1
   MOVLW   VAR2V
   MOVWF   VAR2
INCSEG   DECFSZ   SEG,F      ;CUENTA SEGUNDOS
   GOTO   SAL1
   MOVLW   SEGV
   MOVWF   SEG
INCMIN   INCF   MIN,F
   MOVF   MIN,W      ;VA A MIRAR SI MIN<60H
   BCF   STATUS,0
   SUBLW   59H
   BTFSS   STATUS,0
   GOTO   MIN0      ;HAY QUE IR A PONER MIN A CERO e incrementar hor
   BCF   STATUS,0
   MOVF   MIN,W      ;VA A MIRAR SI MIN ES DE TIPO 2A, 3A...
   ANDLW   0FH
   SUBLW   09H
   BTFSC   STATUS,0
   GOTO   SAL
   MOVLW   06H
   ADDWF   MIN,F
   MOVLW   0F0H
   ANDWF   MIN,F

SAL   BTFSC   AL_HOR,3
   CALL   MIRAL
SAL1   MOVF   STAT,W
   MOVWF   STATUS
   MOVF   ACU,W
   BCF   INTCON,2   
   RETFIE


MIRAL   MOVF   MINAL,W
   BTFSC   AL_HOR,5
   MOVF   MINAL2,W
   SUBWF   MIN,W
   BTFSC   STATUS,2
   GOTO   MIRHOR
   RETURN
MIRHOR   MOVF   HORAL,W
   BTFSC   AL_HOR,5
   MOVF   HORAL2,W
   SUBWF   HOR,W
   BTFSC   STATUS,2
   BSF   AL_HOR,4
   RETURN



MIN0   CLRF   MIN
   INCF   HOR,F
   BCF   STATUS,0
   MOVF   HOR,W
   SUBLW   23H
   BTFSS   STATUS,0
   GOTO   HOR0      ;HAY QUE IR A PONER HOR A CERO
   BCF   STATUS,0
   MOVF   HOR,W      ;VA A MIRAR SI HOR ES DE TIPO 2A, 3A...
   ANDLW   0FH
   SUBLW   09H
   BTFSC   STATUS,0
   GOTO   SAL
   MOVLW   06H
   ADDWF   HOR,F
   MOVLW   0F0H
   ANDWF   HOR,F
   GOTO   SAL

   
HOR0   CLRF   HOR
   GOTO   SAL

INICIO   BCF   PORTA,0
   CLRF   HORAL
   CLRF   MINAL
   CLRF   AL_HOR
   MOVLW   AJUSTV
   MOVWF   AJUST
   MOVLW   REFRESV
   MOVWF   REFRES
   MOVLW   VAR1V
   MOVWF   VAR1      ;VAR1 SE CARGA CON 200
   MOVLW   VAR2V
   MOVWF   VAR2      ;VAR2 SE CARGA CON 20
   MOVLW   SEGV
   MOVWF   SEG
   CLRW
   MOVWF   MIN
   MOVWF   PORTB
   MOVWF   HOR
   BCF   INTCON,2      ;FLAG DE DESBORDAMIENTO DE TMR0 (PONER A CERO POR SOFTWARE)
   BSF   INTCON,5      ;PERMITE INTERRUPCION POR DEBORDAMIENTO DE TMR0
   BSF   INTCON,7      ;PERMITE INTERRUPCIONES
   BSF   STATUS,5
   CLRW
   MOVWF   TRISB
   MOVLW   1EH
   MOVWF   TRISA
   BCF   01H,5
   BCF   STATUS,5
   CLRF   TMR0
   GOTO   PULSA1

REP   BTFSS   PORTA,4
   GOTO   CAMBHOR
   BTFSS   PORTA,3
   GOTO   CAMBAL
   BTFSS   PORTA,2
   CALL   MUEAL
   BTFSS   PORTA,1
   GOTO   CONECAL
   BCF   AL_HOR,3
   BCF   AL_HOR,4
   BCF   AL_HOR,2
   BCF   PORTA,0
   BCF   AL_HOR,5
REP1   BTFSC   AL_HOR,4
   GOTO   SONAR
   
   GOTO   REP

REBOT   MOVLW   0FFH      ;PARA PROBLEMAS CON LOS REBOTES
   MOVWF   CUENTA1
REBO   DECFSZ   CUENTA1,F
   GOTO   REBO
   RETURN

SONAR   MOVLW   08H
   MOVWF   CUENTA3
SONAR1   CALL   DELAY3
   MOVLW   04H
   XORWF   AL_HOR,F   ;permuta el bit 2 de al_hor
   BTFSS   PORTA,2
   GOTO   SALSON
   BTFSC   PORTA,1
   GOTO   REP
   DECFSZ   CUENTA3,F
   GOTO   SONAR1
   CALL   DELAY3
   CALL   DELAY3
   CALL   DELAY3
   CALL   DELAY3
   GOTO   SONAR

SALSON   BCF   AL_HOR,4   ;AQUI HAY QUE PARAR LA ALARMA PERO Q VUELVA  A SONAR
   BCF   AL_HOR,2
   BCF   PORTA,0
   MOVF   HORAL,W
   BTFSC   AL_HOR,5
   MOVF   HORAL2,W
   MOVWF   HORAL2
   MOVF   MINAL,W
   BTFSC   AL_HOR,5
   MOVF   MINAL2,W
   ADDLW   05H
   MOVWF   MINAL2
   BCF   STATUS,0
   SUBLW   59H
   BTFSS   STATUS,0
   GOTO   REBA      ;HAY QUE sumar 6 y and por 0f, e incrementar horal2, y bsf al_hor,5
   BCF   STATUS,0
   MOVF   MINAL2,W
   ANDLW   0FH
   SUBLW   09H
   BTFSS   STATUS,0
   GOTO   SUMA6
SALSON2   CALL   REBOT
SALSON1   BTFSS   PORTA,2
   GOTO   SALSON1
   BSF   AL_HOR,5
   CALL   REBOT
   GOTO   REP
SUMA6   MOVLW   06H
   ADDWF   MINAL2,F
   GOTO   SALSON2
REBA   MOVLW   06h
   ADDWF   MINAL2,W
   ANDLW   0FH
   MOVWF   MINAL2
   INCF   HORAL2,W
   MOVWF   HORAL2
   BCF   STATUS,0
   SUBLW   23H
   BTFSS   STATUS,0
   GOTO   REBA2      ;poner a cero horal2
   BCF   STATUS,0
   MOVF   HORAL2,W
   ANDLW   0FH
   SUBLW   09H
   BTFSC   STATUS,0
   GOTO   SALSON2
   MOVLW   06H
   ADDWF   HORAL2,F
   GOTO   SALSON2
REBA2   CLRF   HORAL2
   GOTO   SALSON2


DELAY3   CLRF   CUENTA1
   MOVLW   01FH
   MOVWF   CUENTA2
DELAY4   DECFSZ   CUENTA1
   GOTO   DELAY5
   DECFSZ   CUENTA2
   GOTO   DELAY4
   RETURN
DELAY5   BTFSC   PORTA,1
   RETURN
   GOTO   DELAY4

CONECAL   BSF   AL_HOR,3
   GOTO   REP1

CAMBHOR   CALL   DELAY
   BTFSC   PORTA,4
   GOTO   REP
   CALL   PARPAD      

SUELTA1   BTFSS   PORTA,4      ;ESPERA A QUE SE SUELTE EL BOTON
   GOTO   SUELTA1            

PULSA1   CALL   DELAY2
   BTFSS   PORTA,4      ;ESPERA A Q SE PULSE
   GOTO   INCREM
   BTFSS   PORTA,3
   GOTO   INCREH
   BTFSS   PORTA,2
   GOTO   SALHOR
   CALL   PARPAD
   GOTO   PULSA1

INCREM   CALL   REBOT      
   BTFSC   PORTA,4
   GOTO   PULSA1
   BCF   STATUS,0
   INCF   MIN,F
   MOVF   MIN,W
   BCF   STATUS,0
   SUBLW   59H
   BTFSS   STATUS,0
   GOTO   MIN02      ;HAY QUE IR A PONER MIN A CERO E IR A INCREM
   BCF   STATUS,0
   MOVF   MIN,W      ;VA A MIRAR SI MIN ES DE TIPO 2A, 3A...
   ANDLW   0FH
   SUBLW   09H
   BTFSC   STATUS,0
   GOTO   INCREM1
   MOVLW   06H
   ADDWF   MIN,F
   MOVLW   0F0H
   ANDWF   MIN,F
   GOTO   INCREM1
MIN02   CLRF   MIN
INCREM1   CALL   DELAY1
   GOTO   INCREM

INCREH   CALL   REBOT
   BTFSC   PORTA,3
   GOTO   PULSA1
   INCF   HOR,F
   MOVF   HOR,W
   BCF   STATUS,0
   SUBLW   23H
   BTFSS   STATUS,0
   GOTO   HOR02      ;HAY QUE IR A PONER HOR A CERO
   BCF   STATUS,0
   MOVF   HOR,W      ;VA A MIRAR SI HOR ES DE TIPO 2A, 3A...
   ANDLW   0FH
   SUBLW   09H
   BTFSC   STATUS,0
   GOTO   INCREH1
   MOVLW   06H
   ADDWF   HOR,F
   MOVLW   0F0H
   ANDWF   HOR,F
   GOTO   INCREH1

CAMBAL   CALL   DELAY
   BTFSC   PORTA,3
   GOTO   REP
   CALL   PARPAD
   BSF   AL_HOR,0
ACA   BTFSS   PORTA,3
   GOTO   ACA

PULSA2   CALL   DELAY2
   BTFSS   PORTA,4
   GOTO   INMINAL
   BTFSS   PORTA,3
   GOTO   CAHORAL
   BTFSS   PORTA,2
   GOTO   SALAL
   CALL   PARPAD
   GOTO   PULSA2

INMINAL   BCF   AL_HOR,5
   CALL   REBOT
INMINA2   BTFSC   PORTA,4
   GOTO   PULSA2
   INCF   MINAL,F
   MOVF   MINAL,W
   BCF   STATUS,0
   SUBLW   59H
   BTFSS   STATUS,0
   GOTO   MINAL0      ;HAY QUE IR A PONER MINAL A CERO E IR A INCREM
   BCF   STATUS,0
   MOVF   MINAL,W      ;VA A MIRAR SI MINAL ES DE TIPO 2A, 3A...
   ANDLW   0FH
   SUBLW   09H
   BTFSC   STATUS,0
   GOTO   INMINA3
   MOVLW   06H
   ADDWF   MINAL,F
   GOTO   INMINA3

MINAL0   CLRF   MINAL
INMINA3   CALL   DELAY1
   GOTO   INMINA2

CAHORAL   BCF   AL_HOR,5
   CALL   REBOT
CAHORA2   BTFSC   PORTA,3
   GOTO   PULSA2
   INCF   HORAL,F
   MOVF   HORAL,W
   BCF   STATUS,0
   SUBLW   23H
   BTFSS   STATUS,0
   GOTO   HORAL0      ;HAY QUE IR A PONER HORAL A CERO
   BCF   STATUS,0
   MOVF   HORAL,W      ;VA A MIRAR SI HOR ES DE TIPO 2A, 3A...
   ANDLW   0FH
   SUBLW   09H
   BTFSC   STATUS,0
   GOTO   CAHORA3
   MOVLW   06H
   ADDWF   HORAL,F
   GOTO   CAHORA3


SALAL   BCF   AL_HOR,0
SUELTA3   BTFSS   PORTA,2
   GOTO   SUELTA3
   GOTO   REP

HORAL0   CLRF   HORAL
CAHORA3   CALL   DELAY1
   GOTO   CAHORA2

HOR02   CLRF   HOR
INCREH1   CALL   DELAY1
   GOTO   INCREH
SALHOR   BTFSC   PORTA,2   
   GOTO   REP
   GOTO   SALHOR

DELAY   MOVLW   06H
   GOTO   DEL
DELAY1   MOVLW   02H      ;SE REGULA LA VELOCIDAD DE CAMBIAR LA HORA
   GOTO   DEL
DELAY2   MOVLW   01H
DEL   MOVWF   CUENTA3
JOD   MOVLW   0FFH
   MOVWF   CUENTA1
JODER   MOVLW   0FFH
   MOVWF   CUENTA2
JODE   DECFSZ   CUENTA2,F
   GOTO   JODE
   DECFSZ   CUENTA1,F
   GOTO   JODER
   DECFSZ   CUENTA3,F
   GOTO   JOD
   RETURN


PARPAD   BSF   AL_HOR,1   ;SUBRUTINA QUE HACE UN PARPADEO
   CALL   DELAY2
   BCF   AL_HOR,1
   RETURN

MUEAL   CALL   PARPAD      ;MUESTRA UNOS INSTANTES LA HORA DE LA ALARMA
   BSF   AL_HOR,0
MUEAL2   BTFSS   PORTA,2
   GOTO   MUEAL2
   CALL   DELAY
   BCF   AL_HOR,0
   CALL   PARPAD
   RETURN
   END



Despertador Instrucciones de uso

Aunque en el esquema no aparece, el integrado 7448 ha de ser alimentado a 5V, el pin 16 a 5V y el 8 a masa.


Los displays son de cátodo común (los cátodos de todos los segmentos están unidos entre si) y se conectan de la siguiente forma: los ánodos del segmento "a" de cada uno de los displays conectados entre si. los ánodos del segmento "b" de cada uno de los displays conectados entre si, los ánodos del segmento "c" de cada uno de los displays conectados entre si.... y así con todos los segmentos. Y los cátodos (comunes) de cada uno de los displays van por separado a un transistor diferente.

Según esto parece que todos los displays se tendrían que encender con el mismo numero, pero no es así ya que el PIC va encendiendo cada display de uno en uno y con el numero que le corresponde de forma muy rápida, de tal forma que a nosotros nos parece que están todos los displays encendidos a la vez. Esto es una práctica muy común y es muy útil para ahorrarnos cableado y pines del PIC, imagínate la cantidad de pines que tendría que tener si manejáramos todos los segmentos de todos los displays por separado...



Instrucciones de Uso:

Cuando enchufes el despertador te saldrán los números del display parpadeando. Si pulsas el botón 3 cambias los minutos y si pulsas el botón 2 cambias la hora. Cuando hallas acabado pulsas el botón 1 y deja de parpadear indicando que la hora ya ha sido ajustada.

Para cambiar la hora en cualquier momento: mantener pulsado el botón 3 durante un segundo (aprox.). Luego pulsar el botón 3 para los minutos y el botón 2 para las horas. Cuando hayas acabado pulsa el botón 1.

Para cambiar la hora de la alarma: mantener pulsado el botón 2 durante un segundo (aprox.). Luego pulsar el botón 3 para los minutos y el botón 2 para las horas. Cuando hayas acabado pulsa el botón 1.

Para ver a que hora tienes puesta la alarma: Pulsar el botón 1, la hora de la alarma aparecerá durante unos segundos.

Para que la alarma suene a la hora deseada: Accionar el interruptor de manera que se encienta el LED. Si el LED esta encendido la alarma sonará a la hora prevista, si esta apagado no sonará.

Cuando la alarma este sonando: para pararla definitivamente accionar el interruptor (apagándose el LED). También se puede parar pulsando el botón 1, pero volverá a sonar a los 5 minutos.


Desconectado Phako_mx

  • PIC10
  • *
  • Mensajes: 11
RE: Despertador con pic y display 7 segmentos
« Respuesta #1 en: 09 de Junio de 2004, 14:38:00 »
Bueno he tratado de subir el esquematico del circuito pero no he podido si alguien sabe como lo puedo subir, que comente como.

Detodos modos aqui esta una explicacion de conexiones, que espero se entienda.



RA0--->(salida alta para alarma)yo lo conecte a la base de un          bc547, el colector a 5v y el emisor a una bocina de 8ohms y de ahi a tierra.

RA1---> 0v alarma activada,  5v alarma desactivada.(interruptor)

RA2--->(Push boton1)
RA3--->(Push boton2)
RA4--->(Push boton3) Normalmente abiertos
trabajan por flanco de bajada.Estan a 5v y cambian cuando se ponen a tierra(masa).
                                                             
RB0---> A -
RB1---> B   -    74LS48          (DECODER BCD A 7 SEGMENTOS)
RB2---> C   -    LT, RBI, BI/RB0  ---> 5V
RB3---> D -

Las salidas del 7448 van a 4 displays de catodo comun,(los cátodos de todos los segmentos están unidos entre si) y se conectan de la siguiente forma: los ánodos del segmento "a" de cada uno de los displays conectados entre si. los ánodos del segmento "b" de cada uno de los displays conectados entre si, los ánodos del segmento "c" de cada uno de los displays conectados entre si.... y así con todos los segmentos. Y los cátodos (comunes) de cada uno de los displays van por separado a un transistor diferente.(al colector)
                                                                           
RB4--> a la base del transistor1(BC547) del display1
RB5--> a la base del transistor2(BC547) del display2
RB6--> a la base del transistor3(BC547) del display3
RB7--> a la base del transistor4(BC547) del display4
Los emisores de los transistores van a tierra


Según esto parece que todos los displays se tendrían que encender con el mismo numero, pero no es así ya que el PIC va encendiendo cada display de uno en uno y con el numero que le corresponde de forma muy rápida, de tal forma que a nosotros nos parece que están todos los displays encendidos a la vez. Esto es una práctica muy común y es muy útil para ahorrarnos cableado y pines del PIC, imagínate la cantidad de pines que tendría que tener si manejáramos todos los segmentos de todos los displays por separado...

El pic utiliza un cristal de 4MHZ , todo el circuito se alimenta con 5v.

Desconectado litris

  • PIC16
  • ***
  • Mensajes: 226
RE: Despertador con pic y display 7 segmentos
« Respuesta #2 en: 10 de Junio de 2004, 08:00:00 »
Si puede mandame el esquema.

Saludos.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Despertador con pic y display 7 segmentos
« Respuesta #3 en: 10 de Junio de 2004, 10:55:00 »
Hace poco publiqué un artículo acerca de un despertador con 16f84. Lo tenéis aquí:
http://miarroba.com/foros/ver.php?foroid=382972&temaid=1989921&msgid=15902801#15902801

Un saludo

Desconectado andpic

  • PIC10
  • *
  • Mensajes: 30
RE: Despertador con pic y display 7 segmentos
« Respuesta #4 en: 26 de Diciembre de 2005, 12:33:00 »
Llorando

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Despertador con pic y display 7 segmentos
« Respuesta #5 en: 26 de Diciembre de 2005, 13:24:00 »
Pako,

para subir fotos ve a

http://picserver.tk

Crea una cuenta. Dale a UPLOAD y sube las fotos. Copia la URL de una foto una vez que la hayas abierto.

Entra a escribir un mensaje en el foro y da click en la y luego pega la URL de la foto que subiste a picserver.

Listo.


 

anything