You are on page 1of 3

#include<avr/io.

h>
#include<stdio.h>
#include<util/delay.h>
#include "sbit.h"
#define RS SBIT(PORTC,0)
#define EN SBIT(PORTC,1)
void initADC();
void init_lcd();
void write_data(char);
void write_cmd(char);
uint16_t ReadADC(uint8_t);
int main()
{
int val,i,j,k,l;
DDRD=0xff;
DDRC=0x03;
init_lcd();
initADC();
while(1)
{
val=ReadADC(2);
val=(val*25)/243;
i=val%10;
val=val/10;
j=val%10;
val=val/10;
k=val%10;
val=val/10;
l=val%10;
write_data(l+'0');
write_data(k+'0');
write_data(j+'0');
write_data(i+'0');
_delay_ms(500);
write_cmd(0x01);
}
}
void initADC()
{
ADMUX=(1<<REFS0);
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
}
uint16_t ReadADC(uint8_t ch)
{
ADMUX &=0XF0;

ch=ch&0b00000111;
ADMUX|=ch;
ADCSRA|=(1<<ADSC);
while(!(ADCSRA &(1<<ADIF)));
ADCSRA|=(1<<ADIF);
return(ADC);
}
void init_lcd()
{
_delay_ms(20);
write_cmd(0x3f);
_delay_ms(5);
write_cmd(0x3f);
_delay_us(120);
write_cmd(0x3f);
write_cmd(0x3f);
write_cmd(0x0c);
write_cmd(0x01);
write_cmd(0x06);
}
void write_data(char d)
{
EN=0;
RS=1;
asm("NOP");
asm("NOP");
EN=1;
PORTD=d;
asm("NOP");
asm("NOP");
EN=0;
asm("NOP");
asm("NOP");
_delay_ms(5);
}
void write_cmd(char c)
{
EN=0;
RS=0;
asm("NOP");
asm("NOP");
EN=1;
PORTD=c;
asm("NOP");
asm("NOP");
EN=0;

asm("NOP");
asm("NOP");
_delay_ms(3);
}
void set_curser(char r,char c)
{
char add;
if(r==1)
{
add=0x00+c;
}
else if(r==2)
{
add=0x40+c;
}
add=add|0x80;
write_cmd(add);
}

You might also like