Agora os dados no display nem aparecem. E não e problema de hardware porque testei outro codigo. Simplesmente não aparece nada. Eu ja fiz uma tabela de linearização com 12 valores, mas o meu problema é pegar a conversão do ad, comparar dentros dos if's e depois fazer aparecer o valor no display.
So não sei onde esta o problema.
Trecho do codigo abaixo:
- Código: Selecionar todos
int leitura_tensao_conv;
int leitura_tensao;
void main(void)
{
inicializa_lcd(); //Chama função de inicialização lcd
setup_adc(ADC_CLOCK_DIV_8); // Configura clock da conversão
setup_adc_ports(RA0_ANALOG); // Configura A/D
set_adc_channel(0); // Lê a entrada 0
while(1)
{
leitura_tensao=read_adc();
if((leitura_tensao >=562)&& (leitura_tensao<=561)) // tensao maior ou igual 220v e menor ou igual a 210v
leitura_tensao_conv = ((leitura_tensao * 99)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=560)&& (leitura_tensao<=544)){ // tensao maior ou igual 210v e menor ou igual a 200v
leitura_tensao_conv = ((leitura_tensao * 97)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=543)&& (leitura_tensao<=526)){ // tensao maior ou igual 200v e menor ou igual a 190v
leitura_tensao_conv = ((leitura_tensao * 95)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=525)&& (leitura_tensao<=509)){ // tensao maior ou igual 190v e menor ou igual a 180v
leitura_tensao_conv = ((leitura_tensao * 95)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=508)&& (leitura_tensao<=487)){ // tensao maior ou igual 180v e menor ou igual a 170v
leitura_tensao_conv = ((leitura_tensao * 94)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=486)&& (leitura_tensao<=464)){ // tensao maior ou igual 170v e menor ou igual a 160v
leitura_tensao_conv = ((leitura_tensao * 93)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=463)&& (leitura_tensao<=438)){ // tensao maior ou igual 160v e menor ou igual a 150v
leitura_tensao_conv = ((leitura_tensao * 93)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=437)&& (leitura_tensao<=411)){ // tensao maior ou igual 150v e menor ou igual a 140v
leitura_tensao_conv = ((leitura_tensao * 93)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=410)&& (leitura_tensao<=385)){ // tensao maior ou igual 140v e menor ou igual a 130v
leitura_tensao_conv = ((leitura_tensao * 93)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=384)&& (leitura_tensao<=359)){ // tensao maior ou igual 130v e menor ou igual a 120v
leitura_tensao_conv = ((leitura_tensao * 93)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=358)&& (leitura_tensao<=329)){ // tensao maior ou igual 120v e menor ou igual a 110v
leitura_tensao_conv = ((leitura_tensao * 93)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=328)&& (leitura_tensao<=301)){ // tensao maior ou igual 110v e menor ou igual a 100v
leitura_tensao_conv = ((leitura_tensao * 93)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao >=300)&& (leitura_tensao<=272)){ // tensao maior ou igual 100v e menor ou igual a 90v
leitura_tensao_conv = ((leitura_tensao * 93)>>8);
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
if((leitura_tensao <=272)){
leitura_tensao_conv = ((leitura_tensao * 93)>>8); // tensao menor que 90v
delay_ms(3000);
lcd_locate(1,0);
printf(lcd_dado,"V=");
lcd_locate(1,2); //Posiciona o cursor na segunda linha
printf(lcd_dado,"%3u",leitura_tensao_conv); //Mostra a tensão medida
lcd_locate(2,0);
printf(lcd_dado,"Monitorando...");
}
}