Universidad Antonio Nariño

Aplicación Industrial de Micros
Código: 444405

  CAPITULO 4
Experimentos introductorios

4.2 Visualización 7 segmentos
Objetivos:
FIG. 4.2.1 Diagrama eléctrico para visualización dinámica
en display 7 segmentos de dos dígitos

Procedimiento:
El hecho de visualizar datos en display de 7 segmentos de la forma en que se muestra en la figura 4.2.1 obliga a interconectar entre si los pines correspondientes a los segmentos del dígito 1 (d1) con los pines de los segmentos del dígito 2 (d2), de esta manera se ahorran líneas de conexión.

El método utilizado para la visualización dínamica consiste en visualizar cada dígito durante un instante de tiempo y a una velocidad tal que gracias a la persistencia del ojo el efecto final es que todos los dígitos están encendidos al tiempo.

Diagrama de flujo:

FIG. 4.2.2 Diagrama de flujo para visualización dinámica en
display 7 segmentos de dos dígitos

Listado del programa del display en assembler

;rutina de display dinámico de dos dígitos
#define BANK0  bcf STATUS,RP0
#define BANK1  bsf STATUS,RP0
Cont2     equ     0x0D
Dato1     equ     0x0E
Dato2     equ     0x0F
Del1      equ     0x10
Del2      equ     0x11
Display
          BANK1
          clrf    TRISA          ;puerto A como salida
          clrf    TRISB          ;puerto B como salida
 BANK0
          movlw   0x03           ;inhabilita transistores
          movwf   PORTA
;
          movlw   .10            ;valor de repeticiones
          movwf   Cont2
LoopDisp
;
;Sacar al puerto el Dato 1 por un tiempo específico
;
          movf    Dato1,W      ;Dato para decodificar
          call    Tabla        ;Decodificación del dato
          movwf   PORTB        ;Dato decodificado a puerto
          bcf     PORTA,0      ;Habilita Q dato 1
          call    RetDig       ;Retardo de dígito
          bsf     PORTA,0      ;Inhabilita Q dato 1
          nop                  ;Retardo de apagado
          nop
          nop
          nop
;
;Sacar al puerto el Dato 2 por un tiempo específico
;
          movf    Dato2,W      ;Dato para decodificar
          call    Tabla        ;Decodificación del dato
          movwf   PORTB        ;Dato decodificado a puerto
          bcf     PORTA,1      ;Habilita Q dato 2
          call    RetDig       ;Retardo de dígito
          bsf     PORTA,1      ;Inhabilita Q dato 2
          nop                  ;Retardo de apagado
          nop
          nop
          nop
;
          decfsz Cont2,F       ;Decrementa Cont2, elude sig. sí cero
          goto   LoopDisp      ;Repite ciclo
          return
Tabla
          addwf  PCL,F
          retlw  0x01          ;Cuando el dígito es 0
          retlw  0x4F          ;Cuando el dígito es 1
          retlw  0x12          ;Cuando el dígito es 2
          retlw  0x06          ;Cuando el dígito es 3
          retlw  0x4C          ;Cuando el dígito es 4
          retlw  0x24          ;Cuando el dígito es 5
          retlw  0x20          ;Cuando el dígito es 6
          retlw  0x0F          ;Cuando el dígito es 7
          retlw  0x00          ;Cuando el dígito es 8
          retlw  0x04          ;Cuando el dígito es 9
          retlw  0x08          ;Cuando el dígito es A
          retlw  0x60          ;Cuando el dígito es B
          retlw  0x31          ;Cuando el dígito es C
          retlw  0x42          ;Cuando el dígito es D
          retlw  0x30          ;Cuando el dígito es E
          retlw  0x38          ;Cuando el dígito es F
;
RetDig
          movlw  2
          movwf  Del1
Loop1
          movlw  .50
          movwf  Del2
Loop2
          decfsz Del2,F
          goto   Loop2
          decfsz Del1,F
          goto   Loop1
          return
;
El listado anterior debe colocarse en un archivo llamado display.asm, en el programa que se va a utilizar incluirlo con una línea del tipo: #include <display.asm> y llamarlo desde el programa con una línea: call display sin olvidar cargar previamente las variables dato1 y dato2 con los valores hexadecimales que se desea visualizar.


  índice de capítulo