#include <pic.h>
//===================================================================================
__CONFIG (0x3F32);
// define
//===================================================================================
//#define inc_button RA1
//#define dec_button RA2
#define send_button RA3
#define lcd PORTB
#define RS RA2
#define E RA5
#define CHANNEL0 0b10000001 // AN0
#define ledA RB2
#define fanA RB4
#define buzzer RB5
// function prototype
//===================================================================================
void uart_send(unsigned char data);
void read_adc(void);
void lcd_goto(unsigned char data);
void dis_num(unsigned long data);
void send_char(unsigned char data);
void send_config(unsigned char data);
unsigned short read_temp(void);
void lcd_clr(void);
void increment(unsigned long data);
// main function
//===================================================================================
//assign variable
unsigned short result;
unsigned short temp,no;
unsigned short read_temp(void);
void main(void)
{
ADRESH=0; //clear A/D result
PORTA=0;
{
//sensor A
ADCON0=CHANNEL0; //CHANNEL1=0b10001001
// lcd_goto(8);
read_adc();
temp=read_temp();
// dis_num(temp/10);
// send_char('.');
// dis_num(temp%10);
// send_char(0b10001001);
// send_char('C');
// send_char(' ');
// send_char(' ');
temp=temp;
}
// display
ADCON0= 0b10001001; //configure PortA as digital I/O
TRISA = 0b111111; //configure PORTA input
TRISB = 0b00000000; //configure PORTB as output
//setup USART
BRGH = 0; //baud rate low speed option
SPBRG = 255; //set boud rate to 1200bps for 20Mhz crystal
TX9 = 0; //8-bit transmission
TXEN = 1; //enable transmission
SYNC = 0; //asynchronous
SPEN = 1; //enable serial port
temp=temp;
while(1) //infinity loop
{
if((temp>400)) // *****************************************
{ // * LED A and Fan A activated only for *
ledA=1; // * temperature A greater than 40'C *
// * and temperature B less than 35'C *
fanA=1; // *****************************************
buzzer=1;
}
else if((temp<400)) // *****************************************
{ // * LED B and Fan B activated only for *
ledA=0; // * temperature A less than 40'C and *
// * temperature B greater than 35'C *
fanA=0; // *****************************************
buzzer=0;
}
else if(send_button==0) //send the desired number
no=temp;
uart_send(no); //continuous send data
// delay(2000);
}
}
//==================subroutine ADC=========================
void read_adc(void)
{
unsigned short i;
unsigned long result_temp=0;
for(i=2000;i>0;i-=1) //looping 2000 times for getting average value
{
ADGO = 1; //ADGO is the bit 2 of the ADCON0 register
while(ADGO==1); //ADC start, ADGO=0 after finish ADC progress
result=ADRESH;
result=result<<8; //shift to left for 8 bit
result=result|ADRESL; //10 bit result from ADC
result_temp+=result;
}
result = result_temp/2000; //getting average value
}
unsigned short read_temp(void)
{
unsigned short temp;
temp=result;
return temp;
}
// functions
//===================================================================================
void uart_send(unsigned char data)
{
while(TXIF==0); //only send the new data after
TXREG=temp; //the previous data finish sent
}
this is tx program
#include <pic.h>
//===================================================================================
__CONFIG (0x3F32);
// define
//===================================================================================
//#define inc_button RA1
//#define dec_button RA2
#define send_button RA3
#define lcd PORTB
#define RS RA2
#define E RA5
#define CHANNEL0 0b10000001 // AN0
#define ledA RB2
#define fanA RB4
#define buzzer RB5
// function prototype
//===================================================================================
void uart_send(unsigned char data);
void read_adc(void);
void lcd_goto(unsigned char data);
void dis_num(unsigned long data);
void send_char(unsigned char data);
void send_config(unsigned char data);
unsigned short read_temp(void);
void lcd_clr(void);
void increment(unsigned long data);
// main function
//===================================================================================
//assign variable
unsigned short result;
unsigned short temp,no;
unsigned short read_temp(void);
void main(void)
{
ADRESH=0; //clear A/D result
PORTA=0;
{
//sensor A
ADCON0=CHANNEL0; //CHANNEL1=0b10001001
// lcd_goto(8);
read_adc();
temp=read_temp();
// dis_num(temp/10);
// send_char('.');
// dis_num(temp%10);
// send_char(0b10001001);
// send_char('C');
// send_char(' ');
// send_char(' ');
temp=temp;
}
// display
ADCON0= 0b10001001; //configure PortA as digital I/O
TRISA = 0b111111; //configure PORTA input
TRISB = 0b00000000; //configure PORTB as output
//setup USART
BRGH = 0; //baud rate low speed option
SPBRG = 255; //set boud rate to 1200bps for 20Mhz crystal
TX9 = 0; //8-bit transmission
TXEN = 1; //enable transmission
SYNC = 0; //asynchronous
SPEN = 1; //enable serial port
temp=temp;
while(1) //infinity loop
{
if((temp>400)) // *****************************************
{ // * LED A and Fan A activated only for *
ledA=1; // * temperature A greater than 40'C *
// * and temperature B less than 35'C *
fanA=1; // *****************************************
buzzer=1;
}
else if((temp<400)) // *****************************************
{ // * LED B and Fan B activated only for *
ledA=0; // * temperature A less than 40'C and *
// * temperature B greater than 35'C *
fanA=0; // *****************************************
buzzer=0;
}
else if(send_button==0) //send the desired number
no=temp;
uart_send(no); //continuous send data
// delay(2000);
}
}
//==================subroutine ADC=========================
void read_adc(void)
{
unsigned short i;
unsigned long result_temp=0;
for(i=2000;i>0;i-=1) //looping 2000 times for getting average value
{
ADGO = 1; //ADGO is the bit 2 of the ADCON0 register
while(ADGO==1); //ADC start, ADGO=0 after finish ADC progress
result=ADRESH;
result=result<<8; //shift to left for 8 bit
result=result|ADRESL; //10 bit result from ADC
result_temp+=result;
}
result = result_temp/2000; //getting average value
}
unsigned short read_temp(void)
{
unsigned short temp;
temp=result;
return temp;
}
// functions
//===================================================================================
void uart_send(unsigned char data)
{
while(TXIF==0); //only send the new data after
TXREG=temp; //the previous data finish sent
}
Users browsing this forum: No registered users and 41 guests