Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: nahueldiaz1992 en 10 de Febrero de 2016, 01:06:12
Título: Conversion de binario a decimal para 7 segmentos xc8
Publicado por: nahueldiaz1992 en 10 de Febrero de 2016, 01:06:12
Hola , buenas noches , en el proyecto que estoy haciendo tomo el valor en binario del adc y lo muestro en dos 7 segmentos , la cuestion es que no encuentro codigo que pueda comprender para realizar la conversion de uno a otro . alguien sabe de un codigo o forma en la que pueda hacerlo ??
Título: Re:Conversion de binario a decimal para 7 segmentos xc8
Publicado por: KILLERJC en 10 de Febrero de 2016, 01:11:59
El ADC posee 8/10 bits, por lo cual si queres pasar ese valor a decimal necesitarias 3/4 displays , con 8 bits para representar de 0 a 255, y con 10 de 0 a 1024.
Y Aqui mi pregunta... ¿ Es eso lo que queres hacer, sabiendo que con 2 displays no vas a poder representar todos los valores ?.
O estas buscando hacer algo que te de un valor de 0 a 99 % ¿?
Título: Re:Conversion de binario a decimal para 7 segmentos xc8
Publicado por: nahueldiaz1992 en 10 de Febrero de 2016, 16:39:18
en realidad la idea era solo representar de 0 a 1024 en 3 displays 7 segmentos , si , se que no voy a poder representar todos los valores , igualmente solo querria saber un metodo para realizar la conversion dando un resultado decimal con 3 digitos de aprox. osea 5,00 ej.
Título: Re:Conversion de binario a decimal para 7 segmentos xc8
Publicado por: KILLERJC en 10 de Febrero de 2016, 18:20:50
Tenes 2 formas de hacerlo.. las simple a vista seria:
Código: C
valor = xxxxx;
milesima = valor /1000;
valor = valor %1000;
centena = valor /100;
valor = valor %100;
decena = valor /10;
unidad = valor %10;
El tema es el costo computacional de la division y el modulo, Y tal ves lo mejor sea restas sucesivas, solo hasta 999:
Código: C
for(milesima=0;milesima<10&& valor >1000;milesima++,valor-=1000);
for(centena=0;centena<10&& valor >100;centena++,valor-=100);
for(decena=0;decena<10&& valor >10;decena++,valor-=10);