Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

10/07/2011 #1


Ayuda!! Cargar números en displays
Tengo que resolver un programa, lo que pasa soy incapaz de hacerlo, os enseño el esquema.


El caso es que tengo que cargar un nº en esos display, concretamente el 2048, el caso es que soy capaz de cargar un solo número, pongo las instrucciones adecuadas, la tabla con los segmentos a encender y ya, muy fácil pero ya no se como continuar desde ese punto.

He visto por San Google que tengo que poner las rutinas de retardo, darle a los displays una frecuencia determinada para que el ojo no capte el parpadeo de la frecuencia, etc... pero son todo variantes de este y la verdad es que estoy echo un lío.

A ver si podeís echarme una mano o mejor dicho, un brazo.

Gracias.
10/07/2011 #2
Moderador

Avatar de Chico3001

Es simple:

1.- Puerto B = dato display1
2.- BitA display1 = 1
3.- Esperas 8mS
4.- Puerto B = dato display2
5.- BitA display2 = 1
6.- Esperas 8mS
7.- .....
y asi sucesivamente, despues repites desde el inicio... a la tecnica se le conoce como "multiplexado de displays"
12/07/2011 #3


Actualizo--> Ya lo tengo, os lo enseño.

Código:
;Diseña un programa que muestre el nº 2011 en cuatro displays conectados al puerto B (multiplexados)

LIST P=16F84A
INCLUDE<P16F84A.INC>

ORG	0


INICIO		;Configuracion de puertos

	bsf	STATUS,RP0	;entro en el banco 1
	clrf	TRISB	;configuro como salidas los puertos A y B
	clrf	TRISA

	bcf	STATUS,RP0	;vuelvo al banco 0
	clrf PORTA 		;pongo a 0 los puertos A y B por si no lo estuvieran
	clrf PORTB



PRINCIPAL

	bsf PORTA, 	RA0				;Activamos el transistor del primer display
	movlw .2 					;cargo el 2 en decimal
	call Conversion_7segmentos	;Llamamos a la funcion o rutina que obtiene las salidas activas para el numero que queremos representar en el registro W
	movwf PORTB					;recupero el valor de W que contiene los puertos que tienen que estar activados y los carga en PORTB
	call Retardo_20ms			;Llamo a la funcion de retardo de 20 ms del fichero RETARDOS.INC
	bcf PORTA, RA0				;Desactivamos el transistor del primer display

	bsf PORTA, RA1				;Activamos el transistor del segundo display
	movlw .0 					;cargo el 0 en decimal
	call Conversion_7segmentos	;Llamamos a la funcion o rutina que obtiene las salidas activas para el numero que queremos representar en el registro W
	movwf PORTB					;recupero el valor de W que contiene los puertos que tienen que estar activados y los carga en PORTB
	call Retardo_20ms			;Llamo a la funcion de retardo de 20 ms del fichero RETARDOS.INC
	bcf PORTA, RA1				;Desactivamos el transistor del segundo display

	bsf PORTA, RA2				;Activamos el transistor del tercer display
	movlw .4 					;cargo el 4 en decimal
	call Conversion_7segmentos	;Llamamos a la funcion o rutina que obtiene las salidas activas para el numero que queremos representar en el registro W
	movwf PORTB					;recupero el valor de W que contiene los puertos que tienen que estar activados y los carga en PORTB
	call Retardo_20ms			;Llamo a la funcion de retardo de 20 ms del fichero RETARDOS.INC
	bcf PORTA, RA2				;Desactivamos el transistor del tercer display

	bsf PORTA, RA3				;Activamos el transistor del cuarto display
	movlw .8 					;cargo el 8 en decimal
	call Conversion_7segmentos	;Llamamos a la funcion o rutina que obtiene las salidas activas para el numero que queremos representar en el registro W
	movwf PORTB					;recupero el valor de W que contiene los puertos que tienen que estar activados y los carga en PORTB
	call Retardo_20ms			;Llamo a la funcion de retardo de 20 ms del fichero RETARDOS.INC
	bcf PORTA, RA3				;Desactivamos el transistor del cuarto display

	goto PRINCIPAL				;Volvemos a empezar a hacer el bucle

Conversion_7segmentos

	addwf PCL, F ; cargo a PCL, su valor actual y el del numero que quiero tener en el display
	
	retlw 3Fh	;Codigo 7 segmentos para el "0"
	retlw 06h	;Codigo 7 segmentos para el "1"
	retlw 5Bh	;Codigo 7 segmentos para el "2"
	retlw 4Fh	;Codigo 7 segmentos para el "3"
	retlw 66h	;Codigo 7 segmentos para el "4"
	retlw 6Dh	;Codigo 7 segmentos para el "5"
	retlw 7Dh	;Codigo 7 segmentos para el "6"
	retlw 07h	;Codigo 7 segmentos para el "7"
	retlw 7Fh	;Codigo 7 segmentos para el "8"
	retlw 67h	;Codigo 7 segmentos para el "9"


INCLUDE <RETARDOS.INC>

END
12/07/2011 #4


Hola


No havia visto la modificacion hecha
Tienes que activar el transistor del display despues de tener el dato cargado en PORTB
Visualizaras el 2048

Un saludo
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.