Translate, Traductor

Mostrando entradas con la etiqueta display. Mostrar todas las entradas
Mostrando entradas con la etiqueta display. Mostrar todas las entradas

sábado, 2 de junio de 2012

Sobre la Multiplexion

Para entender la multiplexion que hemos usado en los anteriores proyectos y entradas de este blog

http://taller-electronica.blogspot.com/2012/06/es-una-tecnica-que-se-usa-para.html

Contador ascendente y descendente con pulsadores

El circuito tiene dos pulsadores, ascendente y descendente

Circuito esquemático



Código fuente



    LIST P=16F886
    INCLUDE P16F886.INC
    ERRORLEVEL -302

; hay que cacharrear  

    __CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
    __CONFIG _CONFIG2, _BOR40V & _WRT_OFF
 
    CBLOCK    0X20
    PDel0, PDel1, DECENAS, UNIDADES, CENTENAS, UMIL
    ENDC



ORG 00
GOTO CONFIGURA


RET_10MS  movlw     .8        ; 1 set number of repetitions (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .120      ; 1 set number of repetitions (A)
        movwf     PDel1     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        clrwdt              ; 1 cycle delay
        decfsz    PDel1, 1  ; 1 + (1) is the time over? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) is the time over? (B)
        goto      PLoop1    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 cycles delay
PDelL2  clrwdt              ; 1 cycle delay
        return              ; 2+2 Done
     
TABLA ADDWF PCL,F
RETLW B'00111111'
RETLW B'00000110'
RETLW B'01011011'
RETLW B'01001111'
RETLW B'01100110'
RETLW B'01101101'
RETLW B'01111100'
RETLW B'00000111'
RETLW B'01111111'
RETLW B'01101111'

MOSTRAR CLRF PORTC
MOVF UNIDADES,W ;cargo el valor de las unidades
CALL TABLA
BSF PORTC,5 ;activo el display unidad
MOVWF PORTB
CALL RET_10MS
BCF PORTC,5
MOVF DECENAS,W
CALL TABLA
BSF PORTC,4
MOVWF PORTB
CALL RET_10MS
BCF PORTC,4
MOVF CENTENAS,W
CALL TABLA
BSF PORTC,3
MOVWF PORTB
CALL RET_10MS
BCF PORTC,3
MOVF UMIL,W
CALL TABLA
MOVWF PORTB
BSF PORTC,2
CALL RET_10MS
BCF PORTC,2

RETURN

VER CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR ;LOGRO UN RETARDO DE 160ms
RETURN

CONFIGURA     NOP
BANKSEL    ANSEL    ;paso al banco 3
CLRF    ANSEL
CLRF    ANSELH
BANKSEL TRISB
MOVLW    B'01101100'
MOVWF    OSCCON
MOVLW    B'00000011'
MOVWF    TRISA
MOVLW    B'00000000'
MOVWF    TRISB
MOVLW    B'00000000'
MOVWF    TRISC
BANKSEL    PORTB    ;paso al banco 0

CLRF    PORTB
CLRF    UMIL
CLRF    CENTENAS
CLRF    DECENAS
CLRF    UNIDADES

INICIO CALL MOSTRAR
BTFSC PORTA,0
GOTO UP
BTFSC PORTA,1
GOTO DOWN
GOTO INICIO


UP CALL VER

INCF UNIDADES,F
MOVLW .10
XORWF UNIDADES,W
BTFSS STATUS,Z
GOTO INICIO



CLRF UNIDADES
INCF DECENAS,F
MOVLW .10
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO

CLRF DECENAS
INCF CENTENAS,F
MOVLW .10
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO

; hay que cacharrear

CLRF CENTENAS
INCF UMIL,F
MOVLW .10
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UMIL
GOTO INICIO

DOWN CALL VER

DECF UNIDADES,F
MOVLW .255
XORWF UNIDADES,W
BTFSS STATUS,Z
GOTO INICIO


MOVLW .9
MOVWF UNIDADES

DECF DECENAS,F
MOVLW .255
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO

MOVLW .9
MOVWF DECENAS
DECF CENTENAS,F
MOVLW .255
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO

MOVLW .9
MOVWF CENTENAS
DECF UMIL,F
MOVLW .255
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
MOVLW .9
MOVWF UMIL
GOTO INICIO
; hay que cacharrear

END



Copyright 2012  edwtron
       
Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o  una version superior.
     Leer la licencia GNU gpl para mas detalles. 

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
    A copy of the license is included in the section entitled "GNU
    Free Documentation License".

Contador de 0 a 9999 con pulsador

Cada vez que se pulse se incrementa una unidad y se muestra en los displays

Circuito esquematico


Código fuente




    LIST P=16F886
    INCLUDE P16F886.INC
    ERRORLEVEL -302
 ; hay que cacharrear
    __CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
    __CONFIG _CONFIG2, _BOR40V & _WRT_OFF
 
    CBLOCK    0X20
    PDel0, PDel1, DECENAS, UNIDADES, CENTENAS, UMIL
    ENDC



ORG 00
GOTO CONFIGURA
; hay que cacharrear
;-------------------------------------------------------------
; Code generated by PDEL  ver 1.0  on 10/13/2010 at 10:24:44 PM
; Description: Waits 10000 cycles
;-------------------------------------------------------------
RET_10MS  movlw     .8        ; 1 set number of repetitions (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .249      ; 1 set number of repetitions (A)
        movwf     PDel1     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        clrwdt              ; 1 cycle delay
        decfsz    PDel1, 1  ; 1 + (1) is the time over? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) is the time over? (B)
        goto      PLoop1    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 cycles delay
PDelL2  clrwdt              ; 1 cycle delay
        return              ; 2+2 Done
     
TABLA ADDWF PCL,F
RETLW B'00111111'
RETLW B'00000110'
RETLW B'01011011'
RETLW B'01001111'
RETLW B'01100110'
RETLW B'01101101'
RETLW B'01111100'
RETLW B'00000111'
RETLW B'01111111'
RETLW B'01101111'

MOSTRAR CLRF PORTC
MOVF UNIDADES,W ;cargo el valor de las unidades
CALL TABLA
BSF PORTC,5 ;activo el display unidad
MOVWF PORTB
CALL RET_10MS
BCF PORTC,5
MOVF DECENAS,W
CALL TABLA
BSF PORTC,4
MOVWF PORTB
CALL RET_10MS
BCF PORTC,4
MOVF CENTENAS,W
CALL TABLA
BSF PORTC,3
MOVWF PORTB
CALL RET_10MS
BCF PORTC,3
MOVF UMIL,W
CALL TABLA
MOVWF PORTB
BSF PORTC,2
CALL RET_10MS
BCF PORTC,2

RETURN

VER CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR ;LOGRO UN RETARDO DE 160ms
RETURN

CONFIGURA     NOP
BANKSEL    ANSEL    ;paso al banco 3
CLRF    ANSEL
CLRF    ANSELH
BANKSEL TRISB
MOVLW    B'01101100'
MOVWF    OSCCON
MOVLW    B'00000011'
MOVWF    TRISA
MOVLW    B'00000000'
MOVWF    TRISB
MOVLW    B'00000000'
MOVWF    TRISC
BANKSEL    PORTB    ;paso al banco 0
; hay que cacharrear
CLRF    PORTB
CLRF    UMIL
CLRF    CENTENAS
CLRF    DECENAS
CLRF    UNIDADES

INICIO CALL MOSTRAR
BTFSS PORTA,0
GOTO INICIO

; hay que cacharrear
CALL VER

INCF UNIDADES,F
MOVLW .10
XORWF UNIDADES,W
BTFSS STATUS,Z
GOTO INICIO


CLRF UNIDADES
INCF DECENAS,F
MOVLW .10
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO

CLRF DECENAS
INCF CENTENAS,F
MOVLW .10
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO

CLRF CENTENAS
INCF UMIL,F
MOVLW .10
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UMIL
GOTO INICIO


END


Copyright 2012  edwtron
       
Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o  una version superior.
     Leer la licencia GNU gpl para mas detalles. 

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
    A copy of the license is included in the section entitled "GNU
    Free Documentation License".

martes, 29 de mayo de 2012

Contador de 0 a 99 con pulsadores

El contador es de 0 a 99 usando la tecnica de la multiplexion, tiene un pulsador para la cuenta ascendente y otro para la cuenta descendente.

IMPORTANTE      recomiendo comparar este codigo con el que no tiene pulsadores.

Video de la implementacion


el circuito esquematico


y el codigo fuente

    LIST P=16F886
    INCLUDE P16F886.INC
    ERRORLEVEL -302
    
    __CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
    __CONFIG _CONFIG2, _BOR40V & _WRT_OFF
    
    CBLOCK    0X20
    PDel0, PDel1, DECENAS, UNIDADES
    ENDC
    


    ORG    00
    GOTO    CONFIGURA


RET_10MS  movlw     .8        ; 1 set number of repetitions (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .249      ; 1 set number of repetitions (A)
        movwf     PDel1     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        clrwdt              ; 1 cycle delay
        decfsz    PDel1, 1  ; 1 + (1) is the time over? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) is the time over? (B)
        goto      PLoop1    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 cycles delay
PDelL2  clrwdt              ; 1 cycle delay
        return              ; 2+2 Done

        
TABLA    ADDWF    PCL,F
    RETLW    B'00111111'
    RETLW    B'00000110'
    RETLW    B'01011011'
    RETLW    B'01001111'
    RETLW    B'01100110'
    RETLW    B'01101101'
    RETLW    B'01111100'
    RETLW    B'00000111'
    RETLW    B'01111111'
    RETLW    B'01101111'
    
MOSTRAR    MOVF    UNIDADES,W    ;cargo el valor de las unidades
    CALL    TABLA
    BSF    PORTC,5    ;activo el display unidad
    BCF    PORTC,4    ;desactivo el display decena
    MOVWF    PORTB
    CALL    RET_10MS
    MOVF    DECENAS,W    ;cargo el valor de las decenas
    CALL    TABLA
    BCF    PORTC,5    ;desactivo el display unidad
    BSF    PORTC,4    ;activo el display decena
    MOVWF    PORTB
    CALL    RET_10MS
    RETURN
    
VER    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR    ;LOGRO UN RETARDO DE 160ms
    RETURN
    
CONFIGURA     NOP
BANKSEL    ANSEL    ;paso al banco 3
CLRF    ANSEL
CLRF    ANSELH
BANKSEL TRISB
MOVLW    B'01101100'
MOVWF    OSCCON
MOVLW    B'00000011'
MOVWF    TRISA
MOVLW    B'00000000'
MOVWF    TRISB
MOVLW    B'00000000'
MOVWF    TRISC
BANKSEL    PORTB    ;paso al banco 0
CLRF    PORTB
CLRF    DECENAS
CLRF    UNIDADES

INICIO   CALL MOSTRAR
BTFSC PORTA,0
GOTO UP
BTFSC PORTA,1
GOTO DOWN
GOTO INICIO 



UP CALL     VER    
INCF     UNIDADES,F
MOVLW     .10
XORWF     UNIDADES,W
BTFSC     STATUS,Z
GOTO     INC_DECENAS
CALL     MOSTRAR
GOTO     INICIO
    
INC_DECENAS     CLRF     UNIDADES
    INCF     DECENAS,F
    MOVLW     .10
    XORWF     DECENAS,W
    BTFSC     STATUS,Z
    CLRF     DECENAS
    CALL     MOSTRAR
    GOTO     INICIO
   
DOWN CALL     VER    
DECF     UNIDADES,F
MOVLW     .255
XORWF     UNIDADES,W
BTFSC     STATUS,Z
GOTO     DEC_DECENAS
CALL MOSTRAR
GOTO     INICIO
    
DEC_DECENAS     MOVLW .9
MOVWF UNIDADES
    DECF     DECENAS,F
    MOVLW     .255
    XORWF     DECENAS,W
    BTFSS     STATUS,Z
    GOTO INICIO
    MOVLW .9
    MOVWF DECENAS
    CALL MOSTRAR
    GOTO     INICIO
        
    END



Copyright 2012 edwtron
       
Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o  una version superior.
     Leer la licencia GNU gpl para mas detalles. 

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
    A copy of the license is included in the section entitled "GNU
    Free Documentation License".

jueves, 14 de octubre de 2010

Contador de 0 a 99 con PIC

Actualizado 21 de junio de 2012 22:48

Implementacion de un contador de 0 a 99 con dos display de 7 segmentos y microcontrolador usando la tecnica de multiplexacion para solo usar un puerto del pic.

 VIDEO DE LA IMPLEMENTACION






CODIGO FUENTE PARA EL PIC

    LIST P=16F883
    INCLUDE P16F883.INC
    ERRORLEVEL -302
   
    __CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_ON & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
    __CONFIG _CONFIG2, _WRT_OFF
   
    CBLOCK    0X20
    PDel0, PDel1, DECENAS, UNIDADES
    ENDC
   


    ORG    00
    GOTO    CONFIGURA

;-------------------------------------------------------------
; Code generated by PDEL  ver 1.0  on 14/10/2010 at 03:01:16 p.m.
; Description: Waits 10000 cycles
;-------------------------------------------------------------
RET_10MS  movlw     .8        ; 1 set number of repetitions (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .249      ; 1 set number of repetitions (A)
        movwf     PDel1     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        clrwdt              ; 1 cycle delay
        decfsz    PDel1, 1  ; 1 + (1) is the time over? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) is the time over? (B)
        goto      PLoop1    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 cycles delay
PDelL2  clrwdt              ; 1 cycle delay
        return              ; 2+2 Done
;-------------------------------------------------------------
       
TABLA    ADDWF    PCL,F
    RETLW    B'00111111'
    RETLW    B'00000110'
    RETLW    B'01011011'
    RETLW    B'01001111'
    RETLW    B'01100110'
    RETLW    B'01101101'
    RETLW    B'01111100'
    RETLW    B'00000111'
    RETLW    B'01111111'
    RETLW    B'01101111'
   
MOSTRAR    MOVF    UNIDADES,W    ;cargo el valor de las unidades
    CALL    TABLA
    BSF    PORTC,5    ;activo el display unidad
    BCF    PORTC,4    ;desactivo el display decena
    MOVWF    PORTB
    CALL    RET_10MS
    MOVF    DECENAS,W    ;cargo el valor de las decenas
    CALL    TABLA
    BCF    PORTC,5    ;desactivo el display unidad
    BSF    PORTC,4    ;activo el display decena
    MOVWF    PORTB
    CALL    RET_10MS
    RETURN
   
VER    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR    ;LOGRO UN RETARDO DE 160ms
    RETURN
   
CONFIGURA    NOP
    BANKSEL    ANSEL    ;paso al banco 3
    CLRF    ANSEL    ;Configura el porta como digital
    CLRF    ANSELH    ;Configura el portb como digital
    BANKSEL    TRISB    ;paso al banco 1
    CLRF    ANSEL
    MOVLW    0X00
    MOVWF    TRISA
    MOVLW    0X00
    MOVWF    TRISB
    MOVLW    0X00
    MOVWF    TRISC
    BANKSEL    PORTB    ;paso al banco 0
    CLRF    PORTB
    CLRF    DECENAS
    CLRF    UNIDADES

CICLO    CALL    VER    ;Esta rutina me sirve como un
            ;retarde de 20ms aprox
    INCF    UNIDADES,F
    MOVLW    .10
    XORWF    UNIDADES,W
    BTFSC    STATUS,Z
    GOTO    INC_DECENAS
    CALL    VER
    GOTO    CICLO
   
INC_DECENAS    CLRF    UNIDADES
    INCF    DECENAS,F
    MOVLW    .10
    XORWF    DECENAS,W
    BTFSC    STATUS,Z
    CLRF    DECENAS
    CALL    VER
    GOTO    CICLO
       
    END


Actualización:

Varias personas me han preguntado como poner un tope a la cuenta, es decir, como hacer que solo cuente hasta 12 o hasta 20 o hasta cualquier número entre 0 y 99, la explicación la deje en uno de los comentarios y el código con las modificaciones lo publique en GitHub:

 https://github.com/edwtron/xorwf/blob/master/contador0a99conTope.asm

fin actualización.




Circuito de la implementación


Para el celular
                         QR code

Copyright 2012  edwtron
       
Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o  una version superior.
     Leer la licencia GNU gpl para mas detalles. 

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
    A copy of the license is included in the section entitled "GNU
    Free Documentation License".