LCD 16x2 CGRAM

Boa Tarde.
Hoje consegui fazer meu LM35 + LCD16x2 funcionar, e agora vamos em frente.
Se possivel alguem poderia me explicar como gerar um Caracter no LCD tipo °C ou uma Barra de progresso?
Um routina simples com o intuito de aprendizado, um simples exemplo explicado. segue abaixo meu primeiro codigo totalmente em C, usava java ><.
A variação da temperatura fica entre 31~34 (ADC 0063 - 0073) tem como diminuir essa variação? e por um 30.1 por exemplo.?
Fico Muito Grato pela antenção.
Hoje consegui fazer meu LM35 + LCD16x2 funcionar, e agora vamos em frente.
Se possivel alguem poderia me explicar como gerar um Caracter no LCD tipo °C ou uma Barra de progresso?
Um routina simples com o intuito de aprendizado, um simples exemplo explicado. segue abaixo meu primeiro codigo totalmente em C, usava java ><.
- Código: Selecionar todos
#include"lcd.c"
#include<avr/io.h>
#define F_CPU 11059200UL
void InitADC()
{
ADMUX=(1<<REFS0);// Aref = AVcc;
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1);
/* ADEN = 1 ADC ENABLE | 0 ADC DISABLE
* ADSC = COLOCAMOS EM 1 P/ FAZER UMA CONVERSÃO
* ADIF = 1 QUANDO A CONVERSÃO FOR CONCLUIDA
* ADPS0/1/2 SÃO OS DIVISORES DE FRREQUENCIA*/
}
uint16_t ReadADC(uint8_t ch)
{
//ADC channel 0-7
ch = ch & 0b00000111;
ADMUX |= ch;
//Inicia uma simples conversão
ADCSRA |= (1<<ADSC);
//Espera até a conversão esta completa
while(!(ADCSRA &(1<<ADIF)));
//Limpa a ADIF
ADCSRA |= (1<<ADIF);
return(ADC);
}
void Wait()
{
uint8_t i;
for(i=0; i<20; i++)
_delay_loop_2(0);
}
void main()
{
uint16_t adc_result;
//Inicia o LCD
InitLCD(LS_BLINK|LS_ULINE);
LCDClear();
//Inicia o ADC
InitADC();
//Imprime algo
LCDWriteString("ADC Teste");
LCDWriteStringXY(0,1,"Temp:");
while(1)
{
//le uma entrada do canal 0 analogico
adc_result = ReadADC(0);
//imprime com 4 colunas.
uint16_t temperatura = (5 * adc_result * 100) / 1024;
LCDWriteIntXY(4,1,temperatura,2);
LCDWriteString("C ");
LCDWriteInt(adc_result,4);
Wait();
}
}
A variação da temperatura fica entre 31~34 (ADC 0063 - 0073) tem como diminuir essa variação? e por um 30.1 por exemplo.?
Fico Muito Grato pela antenção.