Multiplexacion Pic16F84a displays

Necesito ordenar tres datos ascendentemente utilizando un pic16f84a y luego mostralos en los displays en un módulo y para eso necesito multiplexacion, si alguien pudiese ayudarme le agradeceria muchisimo
 
Vitor dijo:
Porfavor necesito una ayudita, necesito ordenar tres datos ascendentemente utilizando un
pic16f84a y luego mostralos en los displays en un módulo y para eso necesito multiplexacion, si alguien pudiese ayudarme le agradeceria muchisimo

¿De qué tipo de displays estamos hablando? LCD? 7 segmentos? otro?

¿Qué conocimiento tienes de los PICs?

¿En qué lenguaje programas?
 
Necesito programarlo en MPLAB a un display de 7 segmentos, la verdad tengo la base de como programar el dispositivo pero me da duro el tema de la multiplexacion para mostrarlo,
6. TENIENDO DATO1, DATO2 Y DATO 3. (EN REGISTROS) ORDENARLOS DE FORMA ASCENDENTE .
A) MOSTRARLOS POR PUERTO B EN 3 DISPLAYS DE 7 SEGMENTOS.
B) MOSTRAR POR PUERTO B CON RETARDOS

son 6 puntos de mostrar, por displays, por leds y demás, pero no fui capaz con el tema de multiplexación y he buscado acerca del tema pero no he podido despegar,

si me podes ayudar Gracias
 
Vitor dijo:
Necesito programarlo en MPLAB a un display de 7 segmentos, la verdad tengo la base de como programar el dispositivo pero me da duro el tema de la multiplexacion para mostrarlo,
6. TENIENDO DATO1, DATO2 Y DATO 3. (EN REGISTROS) ORDENARLOS DE FORMA ASCENDENTE .
A) MOSTRARLOS POR PUERTO B EN 3 DISPLAYS DE 7 SEGMENTOS.
B) MOSTRAR POR PUERTO B CON RETARDOS

son 6 puntos de mostrar, por displays, por leds y demás, pero no fui capaz con el tema de multiplexación y he buscado acerca del tema pero no he podido despegar,

si me podes ayudar Gracias

Vitor, yo te puedo 'guiar' pero no te haré la tarea.

Si quieres aprender estoy dispuesto a indicarte el camino que a mí me parece de acuerdo a mis años de experiencia, pero no estoy de acuerdo en resolver tareas.

Intenta leer algo del datasheet, algo del assembler, haz algún bosquejo de código y tendrás mi ayuda para mostrarte alguna opción de resolución de tu problema.

El camino para aprender es hacer las cosas tu mismo y si te guía alguien que sabe 'antes' que tu mejor! pero el esfuerzo lo tienes que poner tu.

Saludos
 
caballero como dice maunix aqui te doy algo para que estudies.
anodo comun display





visu movf unidades,w
call display
movwf portb
bcf porta,0 ; encendemos display unidades
bsf porta,1
bsf porta,2 ; apagamos display decenas,centenas
call retardo

movf decenas,w
call display
movwf portb
bcf porta,1
bsf porta,0
bsf porta,2
call retardo

movf centenas,w
call display
movwf portb

bcf porta,2
bsf porta,0
bsf porta,1
call retardo

clrf portb
bsf porta,2
bsf porta,0
bsf porta,1
return
 
Aqui un esquematico que te puede servir... en PB1, PB2 y PB3 tienes bits de control con lo cual con un '1' activas el display... ya que tienes el display activado le mandes el dato, esperas un pequeno tiempo, activas otro display y le mandas dato, activas el siguiente, y comienzas nuevamente...

P.D. Se me olvidaron las resistencias de los segmentos... (330, 470 Ohms, entre la salida del 74LS48 y el Display de 7 Segmentos, una resistencia por segmento no lo olvides)
 

Adjuntos

  • muxcs3_179.gif
    muxcs3_179.gif
    20.7 KB · Visitas: 882
Gracias a todos por la ayuda, ya lo resolvi de la siguiente manera, como en el display solo necesito ABCD entonces utilizo los ultimos 4 bits del puerto para enviar el dato, y con los primeros cuatro acciono los displays que quiero con un 1 como lo mencionaron. Asi muestra los 3 datos al tiempo en forma ascendente, claro despues de haberlos ordenado.


MOSTRAR
MOVF D1,W
XORLW B'0001 0000'
MOVWF PORTB

MOVF D2,W
XORLW B'0010 0000'
MOVWF PORTB

MOVF D3,W
XORLW B'0100 0000'
MOVWF PORTB
CALL MOSTRAR

GRACIAS
 
hola que tal yo tambien necesito ayuda me pidieron hacer uno que cuente hasta el 0-9999
pero como seria el programa si lo tiene me lo podrian pasar porfavor gracias
 
#use delay (clock=4000000)
#byte porta=0x05
#byte portb=0x06
#bit ra0=0x05.0
#bit ra1=0x05.1
#bit ra2=0x05.2
#bit ra3=0x05.3

void main()
{
int i=0,j=0,m=0,k=0;
set_tris_a(0);
set_tris_b(0);
portb=0;
while(1)
{
porta=0;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
for(k=0;k<10;k++)
{
for(m=0;m<10;m++)
{
ra0=1;
portb=i;
delay_ms(50);
ra0=0;
ra1=1;
portb=j;
delay_ms(50);
ra1=0;
ra2=1;
portb=k;
delay_ms(50);
ra2=0;
ra3=1;
portb=m;
delay_ms(50);
ra3=0;
}
}
}
}
portb=0;
porta=255;
delay_ms(1000);
}
}

lo que pienso es conectar el pic 16f84 a un 7447 de la salida del pic supongo que tiene que estar codificado para que lo decodifique el 7447 y lo represente en los 7 segmentos que le faltaria al programa
 
hola gente del foro... he tenido unos problemas con este tema de multiplexacion de display con pic...entiendo todo sobre esto, programacion de pics y eso , asi que deberia ser sencillo para mi , pero nose q pasa...estoy realizando un contador de 0 - 999 y los muestro en display usando multiplexacion el detalle es que cundo uso un tiempo mayor (100 ms o mas) los numeros salen en su orden normal pero obviamente se nota el papadeo, si le disminuyo el tiempo me sale el problema que ya los numeros se desfasan y no visualizo lo que quiero... nose si es cuestion del proteus que no simula bien o esq usando display individuales no se visualiza biien por que cuando uso el modulo de display juentos si se visualiza bien.. el detalle esuq necesito visualizarlo en display indiiduales porque la idea es hacer esto pero con display de leds mas grandes... como un panel de leds...gracias por su ayuda a ver si alguien me corrige si estoy equivocado en algo...adjunto la simulacion y el codigo en pbp.
 

Adjuntos

  • adjunto.rar
    64.5 KB · Visitas: 233
Hola juanchi23

El problema es del ISIS de Proteus.
Cuando utilizas Display’s individuales más los transistores más las resistencias de Base le toma más tiempo “atender“ cada dispositivo.
En cambio cuando utilizas un módulo con Display’s de 7 segmentos éste lo toma menos tiempo el “atenderlo”.

Ármalo en la realidad con Display’s individuales y verás que funciona como lo esperas.

saludos
a sus ordenes
 
Gracias MrCarlo... precisamente en eso estoy armando todo en un protoboard para sacarme la duda... sospecho que puede ser la simulacion en proteus... lo pruebo y les aviso q tal va
 
Atrás
Arriba