TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: ingero en 26 de Agosto de 2012, 13:30:40
-
Necesito ese diagrama para empezar a trabajar alguien me lo puede facilitar,
necesito manipular 2 displays (7 segmentos) con un pic 18f2550, como hago la conexión
en proteus
de ante mano muchas gracias .
-
Necesito ese diagrama para empezar a trabajar alguien me lo puede facilitar,
necesito manipular 2 displays (7 segmentos) con un pic 18f2550, como hago la conexión
en proteus
de ante mano muchas gracias .
Hola, existe un buscador utilizalo y encontraras lo que necesites, sino (que no lo creo) mira por ACA (https://www.google.com.pe/search?q=multiplexar+display+7+segmentos&hl=es&client=firefox-a&hs=uE2&rls=org.mozilla:es-ES:official&prmd=imvnsfd&source=lnms&tbm=isch&sa=X&ei=C1g6UJDXGYbs9ATQ6YDAAg&ved=0CAoQ_AUoAQ&biw=1429&bih=677)
Saludos.
-
Puedes visitar mi pagina, talvez te pueda ser de utilidad la información que publiqué ahí. El manejo de 2 displays debes hacerlo multiplexando. Alli monto un ejemplo simple y simulado en proteus. Tambien tiene el video en youtube explicando el proceso. Varios displays en un PIC (http://controlautomaticoeducacion.com/multiplexaje-de-display/)
-
Puedes visitar mi pagina, talvez te pueda ser de utilidad la información que publiqué ahí. El manejo de 2 displays debes hacerlo multiplexando. Alli monto un ejemplo simple y simulado en proteus. Tambien tiene el video en youtube explicando el proceso. Varios displays en un PIC (http://controlautomaticoeducacion.com/multiplexaje-de-display/)
Una consulta gente...
si tengo que mostrar el resultado del ADC de 8 bits en 3 displays, por ejemplo el ADC me devuelve DC y yo quiero visualizar un 220 en los tres displays, como debería ser la gestión de la variable promedio en la rutina VOID MOSTRAR () según el ejemplo de elchecho en su pagina?
NOTA: copié su código y agregué la gestión del dígito de las centenas... pero tengo mis dudas de que sea así... la función % (modulo) en ccs no me queda clara... es una and lógica?
Gracias de antemano!
VOID MOSTRAR() //Rutina mostrar
{
INT UNI, DEC, CEN; //Declarar las variables UNI, DEC y CEN
//como un entero, es decir de 8bits
CEN=promedio/100;
DEC=promedio/10;
UNI=promedio%10;
PORTB=(DISPLAY[UNI]); //Muestra lo que hay en unidades
//en el display
BIT_SET (TUNI); //Enciende el display de unidades
DELAY_MS(1); //Retardo de 1 milisegundos
BIT_CLEAR(TUNI); //Apaga el display de unidades
PORTB=(DISPLAY[DEC]); //Muestra lo que hay en unidades
//en el display
BIT_SET (TDEC); //Enciende el display de decenas
DELAY_MS(1); //Retardo de 1 milisegundos
BIT_CLEAR(TDEC); //Apaga el display de decenas
BIT_SET (TCEN); //Enciende el display de centenas
DELAY_MS(1); //Retardo de 1 milisegundos
BIT_CLEAR(TCEN); //Apaga el display de centenas
}
-
NOTA: copié su código y agregué la gestión del dígito de las centenas... pero tengo mis dudas de que sea así... la función % (modulo) en ccs no me queda clara... es una and lógica?
La funcion % modulo es de C, es el resto de la division
Ejemplo
int8 a,b; // enteros 8 bits
a = 43 / 10; // en "a" se va a guardar 4, por que es un entero
b = 43 % 10; // en "b" se va a guardar 3. Que es el resto, de la division
O para que tengas otro ejemplo
a = 43/10;
b = 43 - a*10; // Equivalente a hacer 43 % 10
-
Gracias KILLER,
entonces, si promedio vale 0xDC (d220) y quisiera tener
CEN = 2
DEC = 2
UNI = 0
entiendo entonces debería hacer así mi código?
CEN = promedio / 100;
promedio % = 100;
DEC = promedio / 10;
UNI = promedio % 10;
Hace poco estoy empezando en este mundo del C, me está costando un poco debo admitirlo... :?
y para colmo las matemáticas no son lo mio.. :(
Muchas gracias!
-
No se cual sera la mejor manera de pasarlo por que eso depende del codigo generado en ASM. Tu codigo deberia hacerlo bien. Solo tenes que recordar que estas "destruyendo" el contenido de la variable promedio, si es que la usas en otro lado. sino tendrias que hacer algo que no requiere que modifiques promedio como
DEC = (promedio/10) - (CEN*10);
Que viene de :
(promedio - (CEN*100)) / 10
O para que se entienda, a promedio le resto las centenas, si es 234 le resto 200 quedando 34 y luego divido por 10, quedando 3.4 pero solo se guarda el entero asi que queda 3 nomas.
-
Gracias KILLER, nop, promedio solo la genero para después calcular esto, de todos modos, tienes razón, la estoy "destruyendo"...
Lo correcto seria hacerlo como sugieres...
Quedaría así verdad?
CEN = promedio / 100;
DEC = ( promedio - (CEN*100)) / 10;
UNI = ( promedio - (CEN*100)) % 10;
-
La unidad solo
UNI = promedio % 10;
Ya que si dividis por 10 y miras el resto lo unico que te quedan son las unidades.
Si realmente no vas a utilizar mas la variable promedio, no importa si le haces cambios. Yo lo dije por si lo necesitabas en otro parte del codigo ademas de esa. Si la usas en esa modificala todo lo que quieras.
-
Gracias KILLERJC, ya está funcionando... Grossso :-/