El programa consiste en mostrar una serie caracteres en 4 display multiplexados.
los caracteres se muestran en grupos de 4 y se desplazan a la izquierda.
Diagrama de Conexión:
Funcionamiento:
- Aplicando un procedimiento de multiplexaje se muestran los primeros 4 caraceres (CHAR1, CHAR2, CHAR3 y CHAR4).
- transcurrido un tiempo tal que el ojo pueda captar los caracteres se desplaza la cadena hacia la izquierda y se muestran los siguientes 4 caracteres (CHAR2, CHAR3, CHAR4, CHAR5).
- El programa comprueba si se mostraron todos los caracteres y cuando esto ocurre el proceso se repite.
;-----------------------------------------------------------
;Autor: LONELY113
; http://lonely113.blogspot.com
;
;Programa para multiplexar 4 display
;Muestra mensaje LONELY113 con desplazamiento a la izquierda
;Salidas: Puerto D (PD1-PD7) 7 segmentos de display
; Puerto A (PB0-PB3) habilitacion de display
;Tipo de display: Catodo comun
;Calibrado para oscilador interno de 8 MHz
;-----------------------------------------------------------
.nolist
.include "m8def.inc"
.list
.device atmega8
.def CHAR=r1
.def COUNT1=r20
.def COUNT2=r21
.def COUNT3=r22
.def TEMP=r18
.org 0x0000
;Inicializacion de Stack
ldi r16,HIGH(RAMEND)
out SPH,r16
ldi r16,LOW(RAMEND)
out SPL,r16
; Fin inicializacion de Stack
; Inicio de programa
ldi r16,0xFF
out DDRB,r16 ;PORTB como salida de habilitacion
ldi r16,0xFF
out DDRD,r16 ;PORTD como salida a displays
ldi r16,0x0F
out PORTB,r16 ;Deshabilitacion de displays
clr r16
out PORTD,r16
clr CHAR
ldi COUNT1,0xFF ; Inicia contadores
ldi COUNT2,0x20
ldi COUNT3,0x10
BEGIN: rcall CONVER
out PORTD,TEMP
cbi PORTB,3
nop ; Habilita display 4
sbi PORTB,3
inc CHAR
rcall CONVER
out PORTD,TEMP
cbi PORTB,2
nop ; Habilita display 3
sbi PORTB,2
inc CHAR
rcall CONVER
out PORTD,TEMP
cbi PORTB,1
nop ; Habilita display 2
sbi PORTB,1
inc CHAR
rcall CONVER
out PORTD,TEMP
cbi PORTB,0
nop ; Habilita display 1
sbi PORTB,0
ldi r16,0x03
sub CHAR,r16
dec COUNT1 ; Rutina de repeticion de
brne BEGIN ; visualizacion de los
ldi COUNT1,0xFF ; 4 caracteres
dec COUNT2
brne BEGIN
ldi COUNT1,0xFF
ldi COUNT2,0x20
dec COUNT3
brne BEGIN
ldi COUNT1,0xFF ; Reinicia contadores
ldi COUNT2,0x20
ldi COUNT3,0x10
inc CHAR ; 4 siguientes caracteres
ldi r16,0x0D
cp r16,CHAR
brne BEGIN
clr CHAR
rjmp BEGIN
; Subrutinas
CONVER: ldi ZH,HIGH(2*TABLE)
ldi ZL,LOW(2*TABLE)
add ZL,CHAR
lpm
mov TEMP,r0
ret
TABLE:
.DB 0x00,0x00,0x00,0x70,0x7E,0x6E,0xF3,0x70
.DB 0xDC,0x0C,0x0C,0x9E,0x00,0x00,0x00,0x00
Archivos de Programa:
Descargar
como hago para programarlo en arduino uno?
ResponderEliminar