Aqui está o código.
// LCD module connections
sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
// End LCD module connections
#include "built_in.h"
unsigned char ch,resultado, *frase; //
unsigned int t; // Declaração das variáveis ("unsigned int adc_rd;")
char a[17]; //
long tlong; //
void main() {
INTCON = 0; // Todas as interrupções desabilitadas
ANSEL = 0x04; // Pin RA2 é configurado como uma entrada analógica
TRISA = 0x04;
ANSELH = 0; // Os pinos restantes são configurados como digital
Lcd_Init(); // inicialização do display doLCD
Lcd_Cmd(_LCD_CURSOR_OFF); // Comando LCD(cursor off)
Lcd_Cmd(_LCD_CLEAR); // Comando LCD (Limpar LCD)
frase= " ESER 2010 "; // Definir a primeira mensagem
Lcd_Out(1,1,frase); // Escreve a primeira mensagem na primeira linha
frase = " Fábio, Paulo, Maciel "; //Definir a segunda mensagem
Lcd_Out(2,1,frase); // Escreve a segunda mensagem na segunda linha
TRISA = 0xFF; // Todas as portas A são configuradas como entradas
Delay_ms(500);
ADCON1 = 0x82; // A / D de referência de tensão é VCC
ANSEL =0b00000001; //o pino RA0 como entrada
frase= "volt :"; // Definir a terceira mensagem
while (1) {
t = ADC_Read(0); // conversão A/D. Pin RA0 é de entrada.
Lcd_Out(2,1,frase); // Escreve o resultado na segunda linha
tlong = (long)t * 9600; // Converte os resultados em milivolts
tlong = tlong / 1023; // 0..1023 -> 0-5000mV
ch = t / 1000; // conversão de volts para milivolts
Lcd_Chr(2,7,48+ch); // Escreve o resultado em formato ASCII
ch = (tlong / 960) % 10; // Conversão das cenenas de milivolts
Lcd_Chr_CP(48+ch); // Escreve o resultado em formato ASCII
ch = (tlong / 96) % 10; // Conversão para dezenas de milivolts
Lcd_Chr_CP(48+ch);
Lcd_Chr_CP('.'); // Escreve o resultado em formato ASCII
ch = tlong % 10; // Extract digits for millivolts
Lcd_Chr_CP(48+ch); // Escreve o resultado em formato ASCII
ch*100;
Lcd_Chr_CP('%');
Delay_ms(1);
}
Espero que seja util a alguém.
Abraço malta.