Autor Tema: Conversion de binario a decimal para 7 segmentos xc8  (Leído 2441 veces)

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

Desconectado nahueldiaz1992

  • PIC12
  • **
  • Mensajes: 75
Conversion de binario a decimal para 7 segmentos xc8
« 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
??

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Conversion de binario a decimal para 7 segmentos xc8
« Respuesta #1 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 % ¿?
« Última modificación: 10 de Febrero de 2016, 03:43:10 por KILLERJC »

Desconectado nahueldiaz1992

  • PIC12
  • **
  • Mensajes: 75
Re:Conversion de binario a decimal para 7 segmentos xc8
« Respuesta #2 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.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Conversion de binario a decimal para 7 segmentos xc8
« Respuesta #3 en: 10 de Febrero de 2016, 18:20:50 »
Tenes 2 formas de hacerlo.. las simple a vista seria:

Código: C
  1. valor = xxxxx;
  2.  
  3. milesima = valor / 1000;
  4. valor = valor % 1000;
  5. centena = valor / 100;
  6. valor = valor % 100;
  7. decena = valor / 10;
  8. 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
  1. for(milesima=0;milesima<10 && valor > 1000;milesima++,valor-=1000);
  2.         for(centena=0;centena<10 && valor > 100;centena++,valor-=100);
  3.         for(decena=0;decena<10 && valor > 10;decena++,valor-=10);
  4.         unidad=valor;

Eso es lo mismo que esto:

Código: C
  1. milesima=0;
  2.         centena=0;
  3.         decena=0;
  4.         unidad=0;
  5.  
  6.         while(valor>1000 && milesima<10)
  7.         {
  8.             milesima++;
  9.             valor-=1000;
  10.         }
  11.         while(valor>100 && centena<10)
  12.         {
  13.             centena++;
  14.             valor-=100;
  15.         }
  16.         while(valor>10 && decena<10)
  17.         {
  18.             decena++;
  19.             valor-=10;
  20.         }
  21.         unidad = valor;
« Última modificación: 10 de Febrero de 2016, 18:41:13 por KILLERJC »


 

anything