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:
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.