Sunteți pe pagina 1din 3

#include <pic18f4550.

h>
#define ADC0 LATAbits.RA0
//#define ADC1 LATAbits.RA1
#define LCD_EN LATCbits.LC0
#define LCD_RS LATCbits.LC1
#define LCD_PORTB LATB
//#define _XTAL_FREQ 8000000
//_delay_ms();
unsigned int a=0,b=0;
unsigned int r,v;
//unsigned int e=0;
void DELAY(int x)
{
unsigned int i;
for(i=0;i<x;i++)
{

}
}

void data(unsigned char z)


{
LCD_PORTB=z;
LCD_RS=1;
LCD_EN=1;
DELAY(3000);
LCD_EN=0;
}
void COMMAND(unsigned char y)
{
LCD_PORTB=y;
LCD_RS=0;
LCD_EN=1;
DELAY(3000);
LCD_EN=0;
}

void INIT()
{
COMMAND(0x38);
DELAY(30);
COMMAND(0x0E);
DELAY(30);
COMMAND(0x01);
DELAY(30);
COMMAND(0x06);
DELAY(30);
COMMAND(0x80);
DELAY(30);
}
unsigned int ADC_READ()
{ ADCON1=0;
ADCON0=0;
ADCON2=0x24;
ADCON0=0x03;
while(ADCON0bits.DONE==1)
{
r=ADRESL;
v=ADRESH;
}
}
/*unsigned int ADC_READ1()
{
ADCON1=0;
ADCON0=0x04;
ADCON2=0x20;
ADCON2=0x24;
ADCON0=0x05;
ADCON0=0x07;
while(!(ADCON0bits.DONE==1))
{
}
k=ADRESL;
d1=ADRESH;
DELAY(30000);
return(ADRESH);
}*/
void convert_value()
{
unsigned int result;
//unsigned int result1;
//long float result2;
// result1=(v/51);
// result2=(v/51);
result=5*v*10;
result=result/255;

/* a=result1;
a=a+48;*/
/*a=result2;
a=a+48;*/
//result=result*5;

//result=255;
// result=result/5;
a=result/10;
a=a+48;
b=result/1;
b=b%10;
b=b+48;
/*c=result/10;
c=c%10;
c=c+48;
d=result/1;
d=d%10;
d=d+48;*/

}
void main(void)
{
TRISA=0xFF;//port d as a input
TRISB=0x00;//port d as a output
TRISD=0x00;//port d as a output
TRISCbits.RC0=0;//for en
TRISCbits.RC1=0;//for rs
ADC_READ();
DELAY(30000);
convert_value();
INIT();
data(a);
DELAY(30000);
data(46); //for decimal point
data(b);
DELAY(30000);
DELAY(30);
}

S-ar putea să vă placă și