olá. na minha neutra opinião estás a complicar algo relativamente simples. não propositalmente, óbvio, mas devido às tuas limitações (sem ofensa). Vamos por partes
permiti-me usar o exemplo do amigo tcp pois apesar de não muito otimizado, é mais didático
digamos que o resultado da saída ad seja a variável unsigned int adc 512
- Código: Selecionar todos
adc=adcread(0)/3; //resultado máximo seria pouco maior que 300. e como vais medir até 30V apenas, vamos aproximar (depois tu ajustas) por hora não te preocupes com virgula
adc = ad/100 /*divide o valor em ad por 100 //....(//----> ou seja vai de 0 a 3)
D1 = digito[adc]; /*busca na matriz o dígito que será o resultado da
...divisão acima e o coloca na variável D1/
adc = (ad/10) % 10; /*divide o valor em ad por 10 e o resultado é ....(//----> ou seja vai de 0 a 9)
...dividido por 10 e somente utilizado o resto da
...última divisão.*/
D2 = digito[adc]; /*busca na matriz o dígito que será o resultado da
...divisão acima e o coloca na variável D2*
adc = ad % 10; /*divide o valor em ad por 10 e somente utilizado ....(//----> ou seja vai de 0 a 9)
...o resto da última divisão.*/
D3 = digito[adc]; /*busca na matriz o dígito que será o resultado da
...divisão acima e o coloca na variável D3*/
p.ex. se adc=170 teremos D1=0b00000110,D2=00000111,D3=0b00111111 --> consegues perceber de onde vêm estes dados? se sim pronto! questão resolvida e já podes prosseguir sozinho
isso teoricamente já deve te dar muita luz sobre a questão inicial que é separar os numeros com um adicional bacana de já prepará-los (decodificá-los) para o display.
Após perceberes estes princípios, terás maior facilidade em prosseguir nesta jornada. Caso desejes, (talvez, na medida do possível) possamos (posso) acompanhar-te. Sugiro que faça uma simulação no proteus ou até mesmo no mplab. coloque algus break points e veja a mágica acontecer com as variáveis.
Com relação ao pic16f676 sim ele daria conta. Só não tem pinos suficientes. Terias que usar um shift register externo (já o fiz) Porém acho que não é o momento pra isso.
Ah... há um detalhe importante: só sei que nada sei. rs
abç