TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Myto en 13 de Diciembre de 2007, 13:55:03
-
Hola a todos! =D
Ando queriendo manejar VARIOS DISPLAY (supongamos, 4), con el PIC16F84A.
Ahora bien, utilizando sus librerias, conectas directo el Display a los 8 salidas del puerto B, por lo que no puedo colocr mas displays.
COmo hago para usar, con un solo micro, varios display?
Desde ya, gracias.
-
Multiplexando. Conectas un controlado r de tu display ya sea anodo o catodo al 16f84 -hablo de los chip 7447 y el otro- con ello controlas las salidas de la tabla de verdad del display.
Las salidas del 7447 -por ejemplo- las conectas a todos los displays y con los otros pines controlas la activacion de los mismos.
Desconozco el lenguaje que uses pero este ejemplo y diagrama te pueden ayudar (http://www.todopic.com.ar/foros/index.php?topic=3613.msg62408#msg62408)
-
Buenisimo gracias!
Uso assembler.
A ver si entendi.
Con los 8 puertos de PORTB, por ejemplo, controlo el codigo del display, y con alguno de los otros, del puerto A, controlo que display voy a modificar?
-
Si asi es, con los del PORTA mandas que Display se activa
-
Y una vez que active uno, y paso a otro para activarlo, el anterior mantiene "guardado" el dato que le envié?
Debo estar constantemente renovando esa info?
-
asi es generalmente el refresco es de 5 milisegundos por lo cual el ojo humano no percibe este cambio
-
Buenisimo, muchas gracias por todo =D
-
Listo, lo hice, y no utilize ningún integrado aparte...
En realiad, el 7447 servía para decodificar y nada mas, logicamente.
Pero como yo ya lo sacaba del PIC decodificado, no lo necesitaba.
Y como vos me dijiste, use las lineas del Puerto A, para seleccionar el Display a escribir.
Lo comico es que yo no te habia entendido, porque pense que decias que el 7447 tmb podia elegir que display escribir.
Ahora bien, lo que hice fue: Agarre 4 displays de Catodo Comun, y cada catodo digamos, lo conecte a una linea del Puerto A.
Entonces, constantemente iba actualizando cada display, llendo de una linea a la otra, y en el medio leía que habia en puerto B y lo escribia.
-
Exacto eso tambien es muy valido, yo comentaba lo del uso del 7447 por aquello del ahoro de pines en el PIC pero si no necesitas mas pines asi esta mas que excelente
-
Claro...
Cuando necesite SI o SI pines, utilizaré ese deco, sino, me tomo la libertad de facilitar el PCB xD
Obviamente, en realidad al Catodo Comun va con un transistor, el cual en su base tiene conectado el pin del puerto A, pero para la simulacion todo bien xD
-
talvez te sirva: http://www.todopic.com.ar/foros/index.php?topic=19435.0
-
Te puedes ahorrar mas pines incluso con un convertidor serial-paralelo. ej cd4094
un ejemplito (http://www.todopic.com.ar/foros/index.php?topic=16648.msg110341#msg110341)
claro eso depende si te sale mas caro comprar chips adicionales o hacerlo todo con el uC PIC.
-
Buenisimo, garcias ^^
Ahora bajo el datasheet del convertidor y lo examino un rato ^^
-
Hola.... Disculpen mi atrevimieto.... Pero no tienen un ejemplito de refrescamiento para 4 displays???.... es que he hecho ya dos, y pues no me funciona.... Si es en C, del CCs mejor, pero si lo tienen en asembler pues no importa, me encargaré de analizarlo y entenderlo... Gracias! y disculpe mi atrevimiento!!!
Atte: Enigma... La llanerita de Guayana :shock:
-
?? nadie tiene??? :(
Atte: Enigma... La llanerita de Guayana :oops:
-
Hola Enigma, aqui tienes un ejemplo de visualizacion de 4 digitos
http://www.todopic.com.ar/asm/_PRINCIPIANTES/contador4dig.TXT (http://www.todopic.com.ar/asm/_PRINCIPIANTES/contador4dig.TXT)
espero te sirva....
Suerte!
Norberto
-
Hola... Gracias Todopic... lo revisaré!!!! :mrgreen:
Atte: Enigma... La llanerita de Guayana :D
-
aca hice como un algoritmo de lo que siempre hago y me va mbien con los displays, he manejado hasta 5 con ello y sin problema, y creo qeu pudiera usarse talvez mas displays
aca el link, talvez ya lo leiste, pero por si acaso :mrgreen: http://www.todopic.com.ar/foros/index.php?topic=19435.msg140323#msg140323
-
Si le estaba echando una ojeada a ese precisamente ayer, y vi el hardware y así es que lo pense, pero cuando lo hago en software, no me da, mando a rotar los nibbles, y pues bueno no lo hace, ha de ser una mala codificación... seguiré intentando!!! Gracias amigo cryn
Atte: Enigma... La llanerita de Guayana :D
-
bueno pues mira, haber para que le des otra ojeada :mrgreen:
esta es la funcion que me hice para manejar 4 displays conectados a RB1-7 y los transistores de C0 a C3 (mas o menos como la imagen que te mostre en un otro post creo, sobre la conexion con transistores, en el mismo hilo del anterior link, creo :mrgreen:)
antes la definicion de los datos:
#byte port_b=6
unsigned int CONST LED [10]={0x7E,0x0C,0xB6,0x9E,0xCC,0xDA,0xFA,0x0e,0xfe,0xde}; // para catodo
//unsigned int CONST LED [10]={0x80,0xF2,0x48,0x60,0x32,0x24,0x04,0xF0,0x00,0x20}; // para anodo
void mux() // función de multiplexación
{
port_b=LED[unit]; // se despliega dato correspondiente a unidades
output_high(PIN_C0); // displays de anodo común, se activa anodo correspondiente
delay_us(250); // retardo para observación contínua
output_low(PIN_C0); // apagamos display, para pasar al siguiente
port_b=LED[dec]; // se despliega dato correspondiente a decenas
output_high(PIN_C1); // displays de anodo común, se activa anodo correspondiente
delay_us(250); // retardo para observación continua
output_low(PIN_C1); // apagamos display, para pasar al siguiente
port_b=LED[cen]; // se despliega dato correspondiente a centenas
output_high(PIN_C2); // displays de anodo común, se activa anodo correspondiente
delay_us(250); // retardo para observación contínua
output_low(PIN_C2); // apagamos display, para pasar al siguiente
port_b=LED[mil]; // se despliega dato correspondiente a los miles
output_high(PIN_C3); // displays de anodo común, se activa anodo correspondiente
delay_us(250); // retardo para observación continua
output_low(PIN_C3); // apagamos display, para pasar al siguiente
}
y bueno aca en mi ejemplo unit, dec, cen y mil son variables que teinen un valor diferente y ese valor eqeuivale a la posición el en arreglo led que corresponde al numero que se mostrara en el dislpay correspondiente
tb aclarar que el puerto C, o al menos los bits de C0 a C3 se inician en este caso en bajo (osea en '0' logico) se mantendran asi siempre y solo en la rutina del mux cambian de estado para habilitar el display correspondiente y otra vez vuleven al estado inicial
este codigo para displays de catodo comun, ya que para anodo cambia la liena comentada de arriba y se usaran transistores pnp, de lo cual tb hay un esquema en alguna parte, jeje :mrgreen: creo que en el mismo hilo de link que deje antes, porque lo vi no hace muhco tiempo, bueno un salute, espero te sirva :mrgreen:
-
Hola.... Disculpen mi atrevimieto.... Pero no tienen un ejemplito de refrescamiento para 4 displays???.... es que he hecho ya dos, y pues no me funciona.... Si es en C, del CCs mejor, pero si lo tienen en asembler pues no importa, me encargaré de analizarlo y entenderlo... Gracias! y disculpe mi atrevimiento!!!
Atte: Enigma... La llanerita de Guayana :shock:
mira aquí (http://www.todopic.com.ar/foros/index.php?topic=4847.msg36612#msg36612)
la aplicación es mostrar el resultado del cad y llevarlo a voltios medidos dc, revisa la parte de multiplexaje de los 7-seg
-
Beeerrrro!!!! :lol: Gracias Palitroquez.... Eres el mejor!, te agradezco un montón.... ahora si entendi claramente.... jejejeje Con los otros ejemplos tenia la idea y me había hecho unos pensamientos en la cabeza, pero con este ejemplo termine de entender!.... Voy a probar un ejemplito y luego publico resultados! jejeje :g)
Atte: Enigma... La llanerita de Guayana :g)
-
es el mismo método que explica el amigo Cryn acá (http://www.todopic.com.ar/foros/index.php?topic=19435.msg140323#msg140323) y que lo llevé al C
-
:mrgreen: si me di cuenta la ver tu codigo :lol:
tb lo plsame al CCS en uno de mis anteriores post en este hilo: http://www.todopic.com.ar/foros/index.php?topic=19663.msg145414#msg145414
pero nose talvez no estaba muy entendible, y yo aca directamente usaba una variable para cada digito, unidades, decenas, centenas y miles; muy interesante lo de las estructuras (struct) hay de eso en el manual de ccs??
y tb me parece muy interesante la idea de los negadores para que el proteus no se vuelva demasiado lento, pero ello creo es debido a los retardos que usas, yo utilice 250us en la realida, pero para simular el ponia hasta 10ms o un poco mas, y se veia algo mejor, intentare colocarle los negadpores a ver si va mejor al velocidad
un saludo
-
...muy interesante lo de las estructuras (struct) hay de eso en el manual de ccs??
...
eso fué una vez que me dió por practicar con lenguaje c :z), busca en la página 51 de Compiler Manual for PCB, PCM, PCH, PCW, & PCWH (http://www.ccsinfo.com/downloads/CReferenceManual.pdf)
-
ok, buscando, gracias, un saludo :mrgreen: