TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: alejandrozama2002 en 05 de Marzo de 2012, 23:18:10
-
hola que tal les pido ayuda ya que me dejaron una practica en la escuela con display de 7 segmentos, he visto varios ejemplo pero todos son diferentes al que me pide el maestro por eso recurro a ustedes ya que no se como realizar el programa, adjunto la imagen para que vean que este contador es diferente a los que se han publicado
-
Ese diseño tiene varios errores graves. El primero y mas evidente es que si conectas el transistor NPN de ese modo y con el emisor puesto a GND, tanto el transistor como el microcontrolador que lo ataca corren un serio riesgo de estropearse, ya que no hay ninguna resistencia de base, que limite la corriente a traves de ella. En segundo lugar, la conexion del transistor PNP tampoco es correcta, ya que en caso de utilizar ese tipo de transistor, el display deberia ser de tipo anodo comun y el emisor del transistor iria a Vcc y su colector al anodo del display. En tercer lugar, si se respetase ese montaje a pesar de todo lo anterior, los displays estarian permanentemente encendidos ambos y no se produciria el multiplexado, que supongo es la finalidad del montaje, ya que al estar las bases unidas directamente y los emisores a Vcc, el del PNP a traves de su display y a GND el del NPN, suponiendo que no saliesen ardiendo, quedarian ambos en estado de saturacion permanente, o sea no servirian de nada.
Saludos.
-
Me parece que el circuito está correcto, salvo el tema de las resistencias que es algo muy obvio, pero creo que el mismo es mas bien una representación genérica que apunta a la programación, con un 0 en las bases enciende el display derecho y con un 1 enciende el izquierdo, Cada segmento es activo por alto. Creo que con estos datos tienes como para empezar ¿no, Alejandro? ;-)
-
Hola
Interesante opción para manejar 2 display con 1 solo pin .... me la voy a robar :evil:
Saludos
-
hola saludos y gracias por sus respuestas, la verdad es que a imagne la adjunto el profe al archivo de word donde se encuentra la practica yo la publique tal y como venia, de manera general si se lo que se deve de hacer pero no se como programar unas cosas ademas de que me revuelvo con facilidad y se me pierde la idea. siempre que trato de hacer algo tardo como una hora y termino donde inicie es por eso que pido su ayuda para que me echen la mano.
lo mas paracedi que encontre fue esta publicacion
http://www.forosdeelectronica.com/f24/programas-pic-c-compiler-tutorial-21770/
(vienen varios ejemplo pero ahi se encuentra uno igual a mi imagne solo que esta programa en c y no se mucho en c, ademas de que la simule tal y como esta y no me funciono).
estare pendiente de sus respuestas
-
En el foro hay muchos ejemplos de como hacer un contador de 0 a 99 con display de 7 segmentos, por ejemplo puedes usar este:
Contador 00a99 automatico (7seg) (http://www.todopic.com.ar/foros/index.php?topic=4530.msg38883#msg38883)
Basicamente lo unico que debes cambiar son las lineas de control de las bases de cada transistor, en estos ejemplos se utilizan 2 transistores del mismo tipo.
Por ejemplo debes cambiar estas lineas:
do{ //bucle...
output_high(PIN_A1); //2º 7seg off
output_low(PIN_A0); //1º 7seg on
delay_ms(15);
output_b(tab7seg[ i ]); //muestra por portb digito 7 segmentos
output_low(PIN_A1); //2º 7seg on
output_high(PIN_A0); //1º 7seg off
delay_ms(15);
output_b(tab7seg[ j ]); //muestra por portb digito 7 segmentos
}while(TRUE); //...infinito
Por unas parecidas a estas:
do{ //bucle...
output_b(tab7seg[ i ]); //muestra por portb digito 7 segmentos
output_low(PIN_A1); //Seleccionamos primer display
delay_ms(15);
output_b(~tab7seg[8]); //Apagamos todos los segmentos del primer display
delay_ms(1);
output_high(PIN_A1); //Seleccionamos el segundo display
output_b(~tab7seg[ j ]); //muestra por portb digito 7 segmentos
delay_ms(15);
output_b(tab7seg[ 8 ]); //apagamos los 7 segmentos
delay_ms(1);
output_low(PIN_A1); //2º 7seg off
}while(TRUE); //...infinito
En las líneas anteriores puedes observar que:
output_b(~tab7seg[ 8 ]); //muestra por portb digito 7 segmentos sirve para apagar todos los segmentos, esto es porque cuando pones el numero 8 en el display enciendes todos los segmentos, por lo tanto la lógica dice que para apagarlos solo debes invertir el código del numero 8.
Ya que el segundo Display funciona de manera inversa al primero debes invertir tambien el código de salida, por lo tanto se pone la línea de código siguiente para apagar el segundo Display.
output_b(tab7seg[ 8 ]); //muestra por portb digito 7 segmentos
PD.: Agregue ciertos errores al código que deberas modificar por tu cuenta. :lol:
-
que buen circuito, habrá que probarlo y en caso de que funcione quedaria muy fino el refresco usando un timer y toggle en pin.