[Resolvido] Leitura Analógica + LCD + Mikroc - Programação de microcontroladores - Clube do Hardware
[Resolvido] Leitura Analógica + LCD + Mikroc
Por mateuscrv, 27 de agosto de 2013 em Programação de microcontroladores
mateuscrv 0
Estou usando o PIC 18f4520, e preciso fazer um programinha simples para ler uma entrada analógica e mostrar no LCD. Peguei alguns exemplos na internet e junto com o que eu sei, fiz um programa básico aqui:
int anag=0;
trise=7;
anag = ADC_Read(0);
Lcd_Chr(1,1,0x30+(anag/10));
Lcd_Chr(1,2,0x30+(anag%10));
O que acontece: quando simulo no Proteus, começa os valores, 10, 20, 31... ai depois começa A3, %7 &4 $6, fica assim mostrando coisas estranhas e não os números da entrada. Gostaria que alguém me ajudasse a achar o erro, creio eu que deve ser na minha forma de pegar uma variável e mostrar no LCD.
Ola mateuscrv.
Isso acontece porque o LCD interpreta o valor que você quer gravar como se fosse um string (caractere), então ele mostra o caractere correspondente ao valor da variável (que não condiz com seu valor real) e isso resulta que no LCD vão aparecer caracteres estranhos (como aconteceu com você).
Para exibir o real valor de uma variável no display é simples, basta converter o valor para string e salvar dentro de uma matriz. O compilador faz isso para você através da instrução "wordtostr(a,x);" para variáveis de 16 bits e "floattostr(a,x);" (para variáveis float) onde sua variável a ser exibida é "a" e "x" é a matriz. então veja o exemplo:
{ int a=20;
char x[6];  //Matriz onde sera salvo o resultado da conversão
Lcd_Cmd(_LCD_CURSOR_OFF);  //desliga cursor
Lcd_Cmd(_LCD_CLEAR);           // limpa LCD
wordtosrt(a,x);                      //  Converte o valor de "a" (20) Para caractere
lcd_out(1,1,x);                      // Exibe o valor no display
Mas cuidado pois como sua matriz tem 6 elementos ela vai ocupar 6 "espaços" no display (se você compilar o programa acima, vai ver que o numero 20 vai aparecer lá para a quinta coluna do display). O mesmo vale para valores "quebrados" (variáveis float), porém nessas eu lhe recomendo limitar o valor para não ter problemas com o display, para isso basta igualar a zero o elemento da matriz correspondente a posição á que você quer limitar (a virgula conta). então se quer limitar o numero 20,345 no quarto caractere basta inserir a instrução "x[5]=0;" abaixo da instrução de conversão e no display sairia "20,3". Neste caso você pode aumentar a matriz para até 15 elementos e exibir um numero de até 14 dígitos..... XD
Se quiser algo mais completo de uma olhada aqui>>http://www.mikroe.com/download/eng/documents/compilers/mikroc/pro/avr/help/conversions_library.htm#wordtostr