Tu problema es que no sabes como mostrar los datos...
Me explico:
vos hace esto:
voltaje=read_adc()
voltaje no es de 0v a 99v, sino que es un valor de 0 a 255 (si el ADC es de 8bits) y de 0 a 1023 ( si es de 10 bits )
De ahora en adelante supongo que es de 10 bits
Entonces ahi tenes que calcular exactamente el valor ... ejemplo..
Tengo 90v, y tengo unos divisores resistivos con una ganancia de 0.05 , cuando tenga 90V voy a tener en la entrada del ADC 4.5V
Si el ADC lo tengo con referencias entre GND y VCC ( 0v y 5v ) entonces 4.5V es (1023 * 4.5/5) = 921
Es decir que cuando sea mayor a 921 lo que obtenes en voltaje significa que es mayor a 90v
Por ahi una parte.
La otra parte es que es un dato binario:
921d = 399h = 0011 1001 1001
Con lo cual si mando eso al puerto el dislpay no va a entender nada.
Lo que deberia hacer es pasarlo al verdadero vaolr de voltaje: ( 921 * 5 / 1024 ) * ( 20 ) = 89.94 = 89V ( Ese 20 es 0.05^-1 , es decir la inversa de la ganancia del divisor resistivo )
Perfecto, ahora guardo ese 89 en un registro... pero eso es un valor en decimal!
89d = 59h = valor
Para multiplexar deberia de sacar de ese numero hexadecimal los valores por separado de 8 y 9
int decenas = valor / 10
int unidades = valor - (decenas * 10 )
Ahora si quedaria:
decenas = 8
unidades = 9
Pero ahora depende de si tenes el puerto directo al display o si usas un decodificador BCD a 7 segmentos.
En el primer caso deberias de pasar el numero a 7 segmentos
Suponete algo asi:
int Seg[10]={0x00,0x00,0x00,0x00. .. .. . .0x7F,0x00} (Falta completar la tabla aca)
Cada uno de esos valores son 8 bits, que en realidad te interesan solo 7 ( para manejar todos los segmentos ), Yo solo puse el ejemplo del 8.
Como en el 8 se encienden todos los segmentos del display mi valor es
abc defg
0x7F = 0111 1111
Entonces lo usaria como
Puertob = Seg[decenas];
Lo mismo para las unidades.
Ahora si tenes un decodificador BCD a 7 segmentos solo deberias mandar esos 4 bits al puertob :
puertob = decenas;
Finalmente si no me entendiste deberias buscar info sobre como manejar un display o como se manejan los displays 7 segmentos. ( son 7 leds no es mucho drama ) , depende de como lo tengas conectado ( ej. puerto b1 es el segmento A ) eso va a hacer cambiar el valor de tu array.
Y una cosa mas, tene ojo con no exceder la tension limite del pin, supone un maximo de 5v ( si es que es de 5V el micro ), no se que tal funcionaran unos diodos de campling en la entrada del ADC