Sie sind auf Seite 1von 4

#include<htc.

h>
//__CONFIG(0X3F3A);
__CONFIG(0X3F39);
#define ALCD_DATA PORTB
#define ALCD_RS RC0
#define ALCD_Enable RC1
#define ADC_START GO_DONE
unsigned char ADC_Arr[7]={'0','0','0','0','0','C','\0'};
unsigned char ADC_Arr1[7]={'0','0','0','0','0','V','\0'};
unsigned int ADC_Result_L = 0;
unsigned int ADC_Result_H = 0;
unsigned int ADC_Raw_Data = 0;
unsigned int Temp = 0;
void ALCD_Init( void );
void ALCD_Comm( unsigned char comm_data );
// Sending Commands
void ALCD_Data( unsigned char disp_data );
void Delay_Little( void );
void ALCD_Message( char disp_addr, char *data_ptr );
void MSDelay( unsigned int Milli_Sec );
// Delay
of 1 milli second
void ADC_IO_Pin_Config(void);
void ADC_Config(void);
unsigned int ADC_Start_Conversion(unsigned char ADC_Channel );
void Device_Init( void );
void main (void)
{
TRISB = 0x00;
TRISC0 = 0;
TRISC1 = 0;
Device_Init();
ADC_IO_Pin_Config( );
ADC_Config( );
while(1)
{
ADC_Raw_Data = ADC_Start_Conversion( 0 );
Temp = ADC_Raw_Data;
ADC_Arr[4] = (Temp%10)+48;
Temp = Temp/10;
ADC_Arr[3] = '.';
ADC_Arr[2] = (Temp%10)+48;
Temp = Temp/10;
ADC_Arr[1] = (Temp%10+48);
Temp = Temp/10;
ADC_Arr[0] = Temp+48;
ALCD_Message( 0x80, "TEMP : ");
ALCD_Message( 0x87, ADC_Arr);
MSDelay( 1000 );
ADC_Raw_Data = ADC_Start_Conversion( 1 );
Temp = ADC_Raw_Data;
ADC_Arr1[4] = (Temp%10)+48;
Temp = Temp/10;
ADC_Arr1[1] = '.';
ADC_Arr1[2] = (Temp%10)+48;
Temp = Temp/10;
ADC_Arr1[3] = (Temp%10+48);
Temp = Temp/10;
ADC_Arr1[0] = Temp+48;
ALCD_Message( 0xC0, "VOLTAGE : ");

ALCD_Message( 0xCA, ADC_Arr1);


MSDelay( 1000 );
}
}
void Device_Init( void )
{
ALCD_Init( );
ALCD_Message( 0x80," WELCOME " );
MSDelay(2000);
}
void ALCD_Init( void )
{
ALCD_Comm( 0x38
ALCD_Comm( 0x0E
ALCD_Comm( 0x01
ALCD_Comm( 0x06
ALCD_Comm( 0x80 );
}

);
);
);
);

//------------------------------------------------------------------------------------------------------------------// void ALCD_Message( char addr, char *data_ptr )


//------------------------------------------------------------------------------------------------------------------// Function Name: void ALCD_Message( char addr, char *data_ptr )
// Arguments : 2 argument used
// addr -> receives ALCD character position address.
// *data_ptr -> receives string to be displayed on ALCD
// Return Value : No Return value
// Description : Send ALCD character position address from where the data se
nt will
// starts of displaying.
void ALCD_Message( char addr, char *data_ptr )
{
ALCD_Comm( addr );
while( *data_ptr != '\0' )
{
ALCD_Data( *data_ptr );
data_ptr++;
MSDelay(20);
}
}

// 0.1 sec delay

//------------------------------------------------------------------------------------------------------------------// void ALCD_Comm( char comm_data )


//------------------------------------------------------------------------------------------------------------------// Function Name: void ALCD_Comm( char comm_data )
// Arguments : 1 argument used
// comm_data -> it receives command for ALCD
// Return Value : No return value

// Description

This function will send command to ALCD

void ALCD_Comm( char comm_data )


{
ALCD_DATA = comm_data ;
ALCD_RS = 0;
ALCD_Enable = 1;
Delay_Little();
ALCD_Enable = 0;
}

// Sending commands to ALCD


// instruction signal

//------------------------------------------------------------------------------------------------------------------// void ALCD_Data( char disp_data )


//------------------------------------------------------------------------------------------------------------------// Function Name: void ALCD_Data( char disp_data )
// Arguments : 1 argument used
// disp_data -> it will receive 1 byte character data, which is display on ALCD
// Return Value : No return value
// Description : This function will display 1 byte character on ALCD
void ALCD_Data( char disp_data )
{
ALCD_DATA = disp_data ;
ALCD_RS = 1;
ALCD_Enable = 1;
Delay_Little();
ALCD_Enable = 0;
}

// Sending data to be displayed


// data signal

//------------------------------------------------------------------------------------------------------------------// void Delay_Little( void )


//------------------------------------------------------------------------------------------------------------------// Function Name: void Delay_Little( void )
// Arguments : No arguments
// Return Value : No return value
// Description : This function will generate a small delay
void Delay_Little( void )
{
unsigned int x;
for(x=0;x<20;x++)
{
;
}
}
void MSDelay( unsigned int Milli_Sec )
{
unsigned int x;
unsigned char y;
for(x=0;x<Milli_Sec;x++)

// For enable pin

{
for(y=0;y<100;y++)
{
;
}
}
}
void ADC_IO_Pin_Config(void)
{
TRISA = 0xFF;
}
/*********************************************************************
*
*
Configure ADC
*
*********************************************************************/
void ADC_Config(
{
ADCON0 =
ADCON1 =
MSDelay(

void )
0x01;
0x89;
50 );

}
/*********************************************************************
*
*
ADC Conversion
*
*********************************************************************/
unsigned int ADC_Start_Conversion( unsigned char ADC_Channel )
{
unsigned int Result = 0;
switch(ADC_Channel)
{
case 0: ADCON0 = 0x01;
break;
case 1: ADCON0 = 0x09;
break;
}
MSDelay( 20 );
ADC_START = 1;
while( ADC_START != 0);
ADC_Result_H = ADRESH;
ADC_Result_L = ADRESL;
Result = (ADC_Result_L |(ADC_Result_H<<8));
unsigned int Result = (unsigned int)((Result*( 5/1023.0))*1000.0);
return Result;
}

Das könnte Ihnen auch gefallen