TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: perla en 02 de Mayo de 2019, 17:28:58
-
Hola a todos.
Conecte el pic 16f88 a dos HC595 conectados en serie para controlar dos display de siete segmentos con los puntos decimales. Puse en el código que funcionase a 16 bits y funciona todo muy bien. De esta forma tengo el control de todos los segmentos.
El problema es el siguiente. Si añado otra serie de HC595 a la que ya tengo y cambio el código a 32 bits tengo que enviar tantos datos al primer circuito que no coge dentro de la variable Word.
Me explicare mejor, si para para encender todos los segmentos del primer dígito necesito enviar 255 datos y para encender el primero más el segundo necesito enviar 65535, según ésta lógica, ¿cuantos datos tengo que enviar para encender todos los segmentos a la vez de los cuatro dígitos ?. !! UNA BURRADA !!.
Alguien sabe como hacerlo ?????????
-
Que tal perla,
Tu razonamiento lógico es bastante ilógico. Porque en realidad solo envias un dato de dígito, este dato es de 8 bits y cuando enciendes todos los segmentos envias un dato con valor 255 decimal o FF hexadecimal. Si quieres encender dos dígitos entonces envías dos datos de 8 bits, es decir envías un 255 dos veces. Siguiendo esta lógica, entonces para tres dígitos envías 3 datos con un valor 255, y así sucesivamente.
Si lo ves de esa forma simplemente ves n cantidad de datos igual a n cantidad de dígitos.
elreypic.
-
Muchas gracias elreypic2.
Sabia que yo no tenia razón y de un plumazo chas solucionado.
Ahora si entiendo que puedes poner tantos digitos como quieras.
GRACIAS :-/
-
Y porqué no utilizar el tradicional sistema de multiplexado?
Sólo requiere un puerto de 7 u 8 pines si quieres controlar cada segmento cómo comentas o bien utilizar sólo 4 bits en modo BCD.
Por otro lado, se necesita un pin de habilitación por cada dígito, o también puedes usar dos bits, y añadír un decodificador a 4, si estás escasos de puertos.
-
Y porqué no utilizar el tradicional sistema de multiplexado?
Sólo requiere un puerto de 7 u 8 pines si quieres controlar cada segmento cómo comentas o bien utilizar sólo 4 bits en modo BCD.
Por otro lado, se necesita un pin de habilitación por cada dígito, o también puedes usar dos bits, y añadír un decodificador a 4, si estás escasos de puertos.
A nivel de código, para manejar cifras por dígitos yo también uso bcd en hexadecimal.
-
Es que lo que quiero es poner los menos componentes posibles, es decir, quiero hacer un aplaca pequeña de cuatro display y un controlador, y cuando reciba pulsos a traves de un cable de la placa base se vean reflejado en el display.
-
De la forma que comento, utilizas una mínima cantidad de componentes, sólo el controlador, 8 resistencias una por segmento, los displays que necesites y un transistor por dígito o bien implementar un ULN 20XX cómo driver.
-
y si querés simplificar, podrias investigar el max7219 o la familia de los tm1637 (tm16xx) que incluyen la lectura de pulsadores, en un solo chip, suelen controlar 6 o más dígitos, son spi ó i2c, no requieren resistencias limitadoras de corriente, porque tienen control de corriente. Y para simplificar poder compar los módulos armados con esto de la fiebre arduinera....
-
Vale gracias por el consejo AleSergi
-
Es que lo que quiero es poner los menos componentes posibles, es decir, quiero hacer un aplaca pequeña de cuatro display y un controlador, y cuando reciba pulsos a traves de un cable de la placa base se vean reflejado en el display.
Lo más flexible y sencillo es enviar por un cable serie (UART o SPI) 4x8 bits de los cuatro dígitos, con un bit por cada segmento y punto.
Con pulsos es muy difícil llegar a las cifras más altas. Se puede hacer, pero no es habitual.
Saludos.