Autor Tema: ¿Mostrar un numero en un display de cátodo común?  (Leído 6503 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kiwwi

  • PIC10
  • *
  • Mensajes: 7
¿Mostrar un numero en un display de cátodo común?
« en: 23 de Octubre de 2004, 21:19:00 »
Hola, Solo una pregunta (por ahora) queria saber si alguien por casualidad sabe como mostrar un numero en un display de catodo comun de 7 segmentos,

Se que se utiliza el siguiente código para mostrar el cero:
         
         High PortB.0
         High PortB.1
         High PortB.2
         High PortB.3
         High PortB.4
         High PortB.5
         Low PortB.6

como estoy iniciando en esto de la programacion pues es la unica forma q me se.

pero debe haber otra forma, en serio les agradeceria mucho si me dijeran alguna otra forma menos tediosa, Gracias por su tiempo!!!!

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #1 en: 23 de Octubre de 2004, 23:28:00 »
HOLA:

hay varias formas de encender un display de catodo o anodo comun ,primero debes partir de la base que cada segmento es un led ,exactamente igual,veras que en el Ds (Data Sheet) del display te figuran los segmentos ,es decir cada led con una letra ,A;B;C;D;F;G;H:I  y en que posicion se ubican ,asi por ejemplo si quieres enceder un numero 1 seran 2 leds o segmentos ,entonces deberas tratarlos como si fuesen 2 leds que estuviesen conectados a 2 patas de tu pic y entonces poniendo high PORTB.0 encenderas el led conectado a esa pata y luego dejando encendido ese ,HIGH PORTB.1 encenderas el otro ,conectando el catodo comun a masa a travez de una R de 470 ohms.Asi con la combinacion que desees.Con respecto a "OTRAS FORMAS" si las hay ,te comentare que el uso de 7 segmentos no es muy practico dado que cuando debes tener varios digitos encendidos se utiliza una tecnica que se llama MULTIPLEXADO que significa que "enciendes" cada digito y te vas a encender el siguiente y asi sucesivamente hasta el ultimo es decir los enciendes de a uno en vez ,como la cosa es tan rapida tu ojo no "ve" que se apago el primero y despues el segundo ,ante tu vista estan todos los numeros encendidos pero en realidad no es asi,esa tarea llamada multiplexado insume mucho tiempo y recursos del pic y no es que no lo pueda hacer sino que le resta tiempo de ejecuciuon de otras tareas ,pues cuando desatiendes ese barrido o multiplexado los numeros se apagaran,en realidad no va a suceder un apagado total sino que a tu vista comenzara un "PARPADEO" de los digitos.Todo esto que te comente nos lleva al uso de panel de LCD o bien si insistes en usar 7 segmentos existen unos ICs llamados 4511 que recibiendo una entrada de BCD (Binario codificado a Decimal) solo 4 bits ,4 patas del pic ,pueden encargarse de presentar el digito en el 7 segmentos.Con 4 bits podemos representar un numero hasta el 15 ,nos sobra para presentar del 0 al 9 .Si lo haces en plus solo bastara que saques por un puerto el valor del digito que quieres presentar por ejemplo el numero 7 en binario EJEMPLO :symbol led=PORTA
le estas diciendo que el valor que le des a led sera la salida en porta ,led =7 ,saldra por el porta 00000111 ,(esto se lee porta7=0 porta6=0......porta0=1).Que es lo que esta saliendo ???ni mas ni menos que BCD,siempre y cuando no pongas en led un numero mayor a 9,que de todas maneras no te serviria puesto que tu display es uno y solo puedes encender numeros del 0 al 9.
Para empezar ya tienes bastante ahora si tienes interes continua y cualquier duda pregunta...

saludos
khasistos

Desconectado kiwwi

  • PIC10
  • *
  • Mensajes: 7
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #2 en: 25 de Octubre de 2004, 00:57:00 »
Muchas gracias por tu reespuesta Khasistos.

Dejame ver si entendi.

Primero necesito comprar un BCD 4511, el cual tiene 4 entradas A, B, C, D, las cuales iran conectadas a 4 patas del PIc16f84. Luego en el codigo tengo q hacer lo siguiente para contar del o al 9 (te pregunto porque en este momento no tengo un programador para el pic y solo compile este codigo y como no me salio ningun error la verdad quisiera saber si funcionaria ya aplicado al pic):

symbol led = PORTA
i var byte

contar:
for i = 0 to 9
    led = i;
    pause 1000
next i
goto contar


MUCHAS GRACIAS POR TU TIEMPO NOS VEMOS LUEGOY PORFAVOR CHECA ESTE CODIGO EN SERI ME SERIA DE MUCHA AYUDA

BAY KHASISTOS...

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #3 en: 25 de Octubre de 2004, 11:05:00 »
HOLA:

si es correcto ,solo que ahora te lo mostrare en la vida real .

El 4511 tiene un lacht enaable ,que significa ,pues que presenta un numero y tiene almacenado en su lacht el que entro luego,para que borre el que tiene presentado y presente el siguiente se necesita un pulso de lacht.
No es nada complicado....mira defines una variable para el contador por ejemplo x

entonces ponemos for x =1 to 1000

led=low
led= dig x,0
portc.0=0
delayus 2
portc.0=1

led=low
led= dig x,1
portc.1=0
delayus 2
portc.1=1

led=low
led= dig x,2
portc.2=0
delayus 2
portc.2=1

led=low
led= dig x,3
portc.3=0
delayus 2
portc.3=1

next x

Los ports no son determinantes puedes usar cualquiera yo puse portC por dar el ejemplo puedes usar port a o lo que tengas libre,no olvides definir que ese port y el de led son salidas y si usas un 16F62xx decirle que todas sus patas son digitales ..ALL_DIGITAL= TRUE    o     CMCON=7
y asi con cuantos digitos quieras agregar ,cada uno con su 4511
fijate que al primero le estoy diciendo que presente el digito 0 de un numero de por ej 4 cifras,mando el lacht enable que es un pulso de 2Us y comando esa presentacion la del digito 0 asi sucesivamente con el resto de los que quiera agregar ,solo comandando el lacht enable para cada uno de los digitos pues salen por diferentes pins de un port y el dig correspondiente asi tendras un contador de la cantidad de digitos que desees y eso que es mas que lo querias hacer es en realidad como se hace con 7 segmentos ,tambien existe un max 7119 que en lugar de usar el bcd la info va por I2C pero no es facil de conseguir ,es caro  y mas complejo de programar..

este es un ejemplo real ,debes definir entradas /salidas con trisX.X  demas instrucciones de config como pic, clock,variables etc va lo ususal en cualquier prog....

Bueno vos tenias un comando para el 0 ahora tenes un contador hasta 9999,asi es una de las formas de hacerlo habra ,mas algunas de ellas usando solamente el pic ,pero como te explique no se acostumbra por las tareas requeridas para presentar el display y los tiempos que le "sacas" al pic para realizar otras tareas...
asi lo hice y esta funcionando ,solo te paso mis escasos conocimientos ,tal vez alguno mas capacitado pueda darte mas info...

Cualquier duda pregunta si lo se te ayudare..y si no aprendere...

saludos
Khasistos



Desconectado kiwwi

  • PIC10
  • *
  • Mensajes: 7
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #4 en: 27 de Octubre de 2004, 00:38:00 »
hola khasistos gracias por tu respuesta
ya entendi ahora si (por fin)
solo q tengo un pequeño problema el compilador me marca un error en la instruccion del dig, como estoy usando el picbasic por lo que estuve leyendo se declara de la siguiente forma :

led = x dig 0

pero como quiera me marca el siguiente error:

error:macro dig?tcb not foun in macro file

no se si por casualidad sabes como puedo corregirlo , pero como quiera sigo investigando

GRACIASS FOR YOUR TIME

NOS VEMOSSSS!!

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #5 en: 27 de Octubre de 2004, 11:37:00 »
Pana Kiwi.
Del manual:
Variable = DIG Value , Digit number

donde value= de donde se extrae el valor
            variable= valor que retorna          
           digit number=el digito(bit) que se extrae

Un abrazo pana

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #6 en: 27 de Octubre de 2004, 13:13:00 »
Hola:

perdon me comi una coma

led=dig x,0

led es el port por donde saldra el dato bcd pues has puesto symbol led = porta por ej

dig x,0 significa que es el digito 0 (el ultimo de la derecha) de la variable x.

Ejemplo x=1234

led= dig x,0   "saldra por porta el 4 en bcd (0100)

led=digx,1    "  saldra por porta  el 3 en bcd (0011)

led=dig x,2    "saldra por el porta  el 2 en bcd (0010)

y asi

Gracias pana por la otra explicacion que le has dado


Saludos
khasitos




Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #7 en: 27 de Octubre de 2004, 17:13:00 »
De nada pana khasistos, pero el error no es tuyo:
led=low
led= dig x,0
portc.0=0
delayus 2
portc.0=1

led=low
led= dig x,1
portc.1=0
delayus 2
portc.1=1

led=low
led= dig x,2
portc.2=0
delayus 2
portc.2=1

led=low
led= dig x,3
portc.3=0
delayus 2
portc.3=1

ese es tu codigo, y todos tienen comas, se le a de haber olvidado ponerlo al pana Kiwwi.
Otra cosa, tambien pueden usar el  MAX7219,aqui les dejo el link , aunque la mejor forma siempre es sin estos componentes(como el ejemplo del pana khasistos, por velocidad y costo),tambien por interrupciones Muchas risas
http://ee.cleversoul.com/max7219.html
salu2 panas

Desconectado kiwwi

  • PIC10
  • *
  • Mensajes: 7
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #8 en: 28 de Octubre de 2004, 00:18:00 »
Si tenias razon lager, el error lo cometi yo, TE PIDO UNA DISCULPA KHASISTOS
es que estaba un poco distraida, como ultimamente no e dormido mucho por los trabjos que ando haciendo, etc,..

MUCHAS GRACIASSS LAGER Y KHASISTOS ESPERO SEGUIER CONTANDO CON SU AYUDA EN EL FUTURO Y AASI IR APRENDIENDO MAS!!!

NOS VEMOS PRONTO

CHAOOO!!

Desconectado jorgeansuini

  • PIC18
  • ****
  • Mensajes: 340
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #9 en: 28 de Octubre de 2004, 05:27:00 »
Hola:

Aqui tienen una direccion con ejemplos para manejar display de 7 segmentos directamente sin otros integrados.-

http://www.melabs.com/resources/articles/ledart.htm

Saludos

Jorge

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #10 en: 28 de Octubre de 2004, 08:49:00 »
HOLA:

gracias jorge ,la tengo vista ,lo que pasa con ese ejemplo es que el muestreo se lleva una enormidad de recursos del pic pues casi solo atiende la muestra,por ese motivo es que no se lo di, puesto que se supone que lo va a usar en "algo" mas .A titulo de ejemplo esta Ok pero en el uso REAL mucho no sirve ...Ya lo dice el ejemplo en el final del articulo" si el pic no tiene otra cosa que hacer .....esta barbaro sino  considere la posibilidad de usar un LCD"

GRACIAS por tu preocupacion y busqueda

te mando un gran saludo

khasistos

Desconectado jorgeansuini

  • PIC18
  • ****
  • Mensajes: 340
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #11 en: 28 de Octubre de 2004, 12:22:00 »
Hola khasistos:

Si,indudablemente si el micro tiene otra cosa que hacer, no podra multiplexar el display, pero lo interesante del ejemplo es el uso de las tablas para decodificar los 7 segmentos.-

Te comento que para hacer un voltimetro ,como ser, se lo puede hacer trabajar sin problemas ,que la frecuencia de refresco es lo suficientemente alta como para ejecutar ambas tareas.-

Por supuesto que si uno quiere hacer algo más,la solucion son los lcd inteligentes.-

Aparte,la idea del vínculo es que salten a buscar más información de la mano del fabricante del producto.-

Saludos

Jorge

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: ¿Mostrar un numero en un display de cátodo común?
« Respuesta #12 en: 28 de Octubre de 2004, 14:37:00 »
Que onda panas, Sonrisa Gigante
lo que dice el pana khasistos es totalmente cierto, hay muchos ejemplos en distintos sitios y funcionan muy bien, por ejemplo el que nos diste tu pana Jorge, es muy buena opcion, Aqui realmente la posicion es la siguiente :  (dirigido este comentario al pana Kiwwi) si se tiene un microcontrolador, hay que tratar de explotarlo al maximol, hay veces que es disculpable el usar mas chips de uso especifico(por el resultado, mas optimo, mas velocidad, menos recursos), pero si se tiene la opcion de usar un dispositivo programable, seria bueno usarlo al maximo y quitar por asi decirlo intermediarios en recursos hardware, es como usar un micro para aprender y apagar un led(ojo no digo que no se deba,no soy quien para decidirlo) . Esta bien para estudiar el proceso, pero la verdad no lo veo como solucion, por ahi me comentaban como controlar dispositivos SPI(como el max que comente) no es necesario un comando especifico si se tiene el recurso(un comando de t/r sincronica) y el concimiento de como funciona(como un I2C, con direccionamiento, etcc..) por ende que tan practico seria tener un comando especifico que te haga esa tarea, la verdad seria practico en el aspecto de SENCILLEZ, pero esto acarrea que sea mas VOLUMINOZO el codigo final(mas tmaño que ocupar del micro, etc), y al fin y al cabo deslindarse del saber como funciona.
Bueno, basta de tanta parla, los ejemplos(u opciones) que mostraron panas son EXCELENTES, solo es cosa de que el pana Kiwwi analize que es lo que necesita realmente, con toda esta info que han expuesto todos aprendemos cada ves mas.

Salu2 panas


 

anything