Você está na página 1de 7

#include<reg52.

h>
#include<stdio.h>
#define FS 0x38 //Function Set: 8-bit, 2 Line, 5x7 Dots
#define DONCON 0x0E //Display on Cursor on
#define EM 0x06 //Entry Mode
#define DOFCOF 0x08 //Display Off Cursor Off (clearing displ
ay without clearing DDRAM content)
#define DONCOF 0x0C //Display on Cursor off
#define DONCB 0x0F //Display on Cursor blinking
#define SEDL 0x18 //Shift entire display left
#define SEDR 0x1C //Shift entire display right
#define MCLBOC 0x10 //Move cursor left by one character
#define MCRBOC 0x14 //Move cursor right by one character
#define CD 0x01 //Clear Display (also clear DDRAM conten
t)
sbit option1 = P2^7;
sbit option2 = P2^6;
sbit speed1 = P1^0;
sbit speed2 = P1^1;
sbit speed3 = P1^3;
sbit onoff = P2^5;
sbit lcd_rs = P3^5;
sbit lcd_rw = P3^6;
sbit lcd_en = P3^7;
void delay(unsigned long count);
void transmit_d(unsigned char *P);
void transmit(unsigned char *P);
void transmit1(unsigned char *P);
void introut(void);
unsigned char data serialdata;
unsigned char code att[]={"AT"};
unsigned char code setsms[]={"AT+CSMS=0"};
unsigned char code setmem[]={"AT+CPMS=\"SM\""};
unsigned char code setmod[]={"AT+CMGF=1"};
unsigned char code mes_indicate[]={"CMTI"};//{"AT+CMGR=1"}; CMTI: "SM",2
unsigned char code read[]={"AT+CMGR=1"};
unsigned char code delet1[]={"AT+CMGD=1"};
unsigned char code delet2[]={"AT+CMGD=2"};
unsigned char code delet3[]={"AT+CMGD=3"};
unsigned char code l1on[]={"LT1ON"};
unsigned char code l1of[]={"LT1OF"};
unsigned char code l2on[]={"LT2ON"};
unsigned char code l2of[]={"LT2OF"};
unsigned char code faon[]={"FANON"};
unsigned char code faof[]={"FANOF"};
unsigned char code spds[]={"SPDSL"};
unsigned char code spdm[]={"SPDME"};
unsigned char code spdo[]={"SPDOF"};
unsigned char code spdf[]={"SPDFA"};
unsigned char code low[]={" POWER TRIP DUE TO LOW VOLTAGE "};
unsigned char code high[]={" POWER TRIP DUE TO HIGH VOLTAGE "};
unsigned char code light1on[]={" YOUR LIGHT1 WAS ON "};
unsigned char code light1of[]={" YOUR LIGHT1 WAS OFF "};
unsigned char code light2on[]={" YOUR LIGHT2 WAS ON "};
unsigned char code light2of[]={" YOUR LIGHT2 WAS OFF "};
unsigned char code slow[]={" YOUR MOTOR RUNS IN 25 RPM "};
unsigned char code medium[]={" YOUR MOTOR RUNS IN 60 RPM "};
unsigned char code off[]={" YOUR MOTOR IS OFF "};
unsigned char code fast[]={" YOUR MOTOR RUNS IN 90 RPM "};
unsigned char code sendnum[]={"AT+CMGS=\"9790367571\""};
unsigned char data temp[30];
bit comp_bit=0;
unsigned char bit1=0;
unsigned char bit2=0;
unsigned char bit3=0;
int i,j;
unsigned char data z;
void transmit_d(unsigned char *p) // FUNC
TION TO TRANSMIT DATA
{
unsigned char i;
TR1=1; // TIMER1 RUN
for(i=0;*p!='\0';i++)
{
SBUF=*p; // SEND THE ARRAY 'TEMP'
*p++;
while(TI==0)
{}
TI=0;
}
SBUF=0X0D; // INDICATE END OF COMMAN
D
TR1=0;
delay(4000);
}
void transmit1(unsigned char *p) // FUNCTION TO TRANSMIT D
ATA
{
unsigned char i;
TR1=1; // TIMER1 RUN
for(i=0;*p!='\0';i++)
{
SBUF=*p; // SEND THE ARRAY 'TEMP'
*p++;
while(TI==0)
{}
TI=0;
}
SBUF=0X1A; // INDICATE END OF MESSA
GE 'ctrl+z'
TR1=0;
delay(4000);
}

void sendsms(void)
{
transmit_d(setsms);
transmit_d(setmod);
transmit_d(sendnum);
}
void sendsms1(void)
{
transmit_d(setsms);
transmit_d(setmod);

}
void delay(unsigned long count)
{
unsigned long int i;
for(i=0;i<count;i++);
}
void receive() {
TR1=1;
while(RI==0) {}
serialdata=SBUF; // COPY TO 'serialdata'
RI=0; TR1=0; }
void receive1(unsigned char n) {
unsigned char i;
TR1=1;
for(i=0;i<n;i++) {
while(RI==0) {}
temp[i]=SBUF; // COPY TO 'temp'
RI=0; }
TR1=0;
temp[i]='\0'; }
void str_cpy(unsigned char *p,unsigned char *p1) {
while(*p1!='\0') {
*p=*p1;
*p++;*p1++; }
p='\0'; }
str_comp(unsigned char *p,unsigned char *p1) {
comp_bit=0;
while(*p1!='\0') {
if(*p==*p1)comp_bit=1;
else {
comp_bit=0;
break; }
*p++;*p1++; }
return (comp_bit); }

//char temp[25]= "LCD TEST PROGRAM SUCCESS";

void lcd_cmd (unsigned char value)


{
//lcd command
lcd_rs=0; lcd_rw=0; lcd_en=0;
P0 = value;
lcd_en=1;
delay(200);
lcd_en=0;
} // end of lcd_cmd
void lcd_dat (unsigned char value)
{
// send lcd data
lcd_rs=1; lcd_rw=0; lcd_en=0;
P0 = value;
lcd_en=1;
delay(200);
lcd_en=0;
} // end of lcd_dat
void init_lcd ()
{
/* following sequence is essential for initialization of lcd*/
lcd_cmd(FS);
delay(50);
lcd_cmd(FS);
delay(6);
lcd_cmd(FS);
delay(1500);
lcd_cmd(DOFCOF); //display off
lcd_cmd(DONCOF); //display on
lcd_cmd(EM); //entry mode set
} // end of init_lcd
void disp_lcd (char str[])
{
unsigned char j ;
lcd_cmd(0x80) ; // display off
for(j = 0 ; j < 16 ; j ++) // first line
{
lcd_dat(str[j]) ; // data to lcd
}
lcd_cmd(0xc0) ; // display on
for(j = 16 ; j < 32 ; j ++) // second line
{
lcd_dat(str[j]) ; // data to lcd
}
} // end of disp_lcd
/* You can copy all above functions and use it in your program as
demonstrated here */
/* end of LCD functions */

void ext0_IT() interrupt 0


{
onoff=0;
option1=option2=0;
disp_lcd(" POWER TRIP DUE TO LOW VOLTAGE ") ; // display the s
tring on LCD
delay(3000);
sendsms(); transmit1(low); delay(40000);
}
void ext1_IT() interrupt 2
{
onoff=0;
option1=option2=0;
disp_lcd(" POWER TRIP DUE TO HIGH VOLTAGE ") ; // displ
ay the string on LCD
delay(3000);
sendsms(); transmit1(high); delay(40000);
}
void main()
{
P1=0x00;
P2=0x00;
SP=0x40;
TMOD=0x20;
TH1=0xFD;
SCON=0x50;
TR1=1;
init_lcd() ; // initialize LCD
disp_lcd(" GSM BASED DEVICE CONTROL ") ; // display the string on LCD
delay(3000);
EX0 = 1;
EX1 = 1;
EA = 1;
transmit_d(att);transmit_d(att);
transmit_d(att);delay(5000);
transmit_d(delet1);delay(5000);
transmit_d(delet2);delay(5000);
speed3=0;speed2=0;speed1=0;
while(1)
{
transmit_d(att);
transmit_d(att);
transmit_d(delet1);delay(5000);
transmit_d(delet2);delay(5000);
receive();
while(serialdata!='+') receive();
receive1(5);
str_comp(temp,mes_indicate);delay(4000);
if(comp_bit==1)
{
delay(10000);
transmit_d(read);
receive();
while(serialdata!=0x0A) receive();receive();
while(serialdata!=0x0A) receive();
receive1(5);
delay(5000); transmit_d(temp);
str_comp(temp,l1on);
if(comp_bit==1)
{
option1=1;
disp_lcd(" DEVICE STATUS LIGHT1 WAS ON ") ; // display the s
tring on LCD
delay(3000);
sendsms(); transmit1(light1on); delay(10000);

}
else
{
str_comp(temp,l1of);
if(comp_bit==1)
{
option1=0;
disp_lcd(" DEVICE STATUS LIGHT1 WAS OFF ") ; // displ
ay the string on LCD
delay(3000);
sendsms(); transmit1(light1of); delay(10000);
}

else
{
str_comp(temp,l2on);
if(comp_bit==1)
{
option2=1;
disp_lcd(" DEVICE STATUS LIGHT2 WAS ON ") ; // display the s
tring on LCD
delay(3000);
sendsms(); transmit1(light2on); delay(10000);
}
else
{
str_comp(temp,l2of);
if(comp_bit==1)
{
option2=0;
disp_lcd(" DEVICE STATUS LIGHT2 WAS OFF ") ; // displ
ay the string on LCD
delay(3000);
sendsms(); transmit1(light2of); delay(10000);
}
else
{
str_comp(temp,spds);
if(comp_bit==1)
{onoff=1;delay(500);
speed1=1;speed2=speed3=0;
disp_lcd(" SPEED STATUS 25 RPM ") ;
// display the string on LCD
delay(3000);
sendsms(); transmit1(slow); delay(10000);
}
else
{
str_comp(temp,spdo);
if(comp_bit==1)
{onoff=0;delay(500);
disp_lcd(" MOTOR OFF "
) ; // display the string on LCD
delay(3000);
sendsms(); transmit1(off); delay(10000);
}
else
{
str_comp(temp,spdm);
if(comp_bit==1)
{onoff=1;delay(500);
speed2=1;speed1=speed3=0;
disp_lcd(" SPEED STATUS 60 RPM ") ;
// display the string on LCD
delay(3000);
sendsms(); transmit1(medium); delay(10000);
}

else
{
str_comp(temp,spdf);
if(comp_bit==1)
{onoff=1;delay(500);
speed3=1;speed2=speed1=0;
disp_lcd(" SPEED STATUS 90 RPM ") ;
// display the string on LCD
delay(3000);
sendsms(); transmit1(fast); delay(10000);
//sendsms1(); transmit1(fast); delay(10000);
}
} }}}}
delay(5000);
}
else
{
transmit_d(delet1);delay(5000);
transmit_d(delet2);delay(5000);
transmit_d(delet3);delay(5000);
}
}
}

Você também pode gostar