You are on page 1of 10

CODE Example

#include<reg51.h> #define lcd_data P1 #define led P2 sbit rs = P1^2; sbit en = P1^3; //LCD DATA PORT

// lcd register select // enable

sbit ir =P3^2; //tsop output /**switches connections********/ sbit sw1=P3^4; sbit sw2=P3^5; sbit sw3=P3^6; sbit sw4=P3^7; void lcdcmd(unsigned char ); //function to send command to lcd void delay(unsigned int ); //delay function void lcddata(unsigned char );//send single character to lcd void msgdisplay(unsigned char b[]); //send string to lcd void tx_data(unsigned char *value); //send string to PC void tx_dat(unsigned char value); //send single data to pc void ir_delay(void); //ir bit delay void lcddelay(unsigned int ); //lcddelay void s1(); //led pattern1 void s2(); //leds pattern2 void s3(); //function to transimition void s4(); //reception unsigned char key=0xff,key1,c=0,ch,mode; bit a; void lcdcmd(unsigned char value) { lcd_data=value&(0xf0); //send msb 4 bits rs=0; //select command register en=1; //enable the lcd to execute command lcddelay(3); en=0; lcd_data=((value<<4)&(0xf0)); //send lsb 4 bits rs=0; //select command register en=1; //enable the lcd to execute command

lcddelay(3); en=0; } void lcddata(unsigned char value) { lcd_data=value&(0xf0); //send msb 4 bits rs=1; //select data register en=1; //enable the lcd to execute data lcddelay(3); en=0; lcd_data=((value<<4)&(0xf0)); //send lsb 4 bits rs=1; //select data register en=1; //enable the lcd to execute data lcddelay(3); en=0; }

void lcddelay(unsigned int time1) { unsigned int i1,j1; for(i1=0;i1<time1;i1++) for(j1=0;j1<256;j1++); }

void delay(unsigned int itime) //delay function in this we will montor for any key is pressed from remote or not { unsigned int i,j; for(i=0;i<itime;i++) for(j=0;j<256;j++) { if(mode==1) { if(key==1) s1(); if(key==2) s2(); if(key==3) s3(); if(key==4) s4();

} if(mode==2) { if(sw1==0) s1(); if(sw2==0) s2(); if(sw3==0) s3(); if(sw4==0) s4(); } if(key==21) { key=0XFF; lcdcmd(0x01); //clear the lcd lcddelay(50); msgdisplay("AUTO MODE SELCTD"); mode=1; } if(key==22) { key=0XFF; lcdcmd(0x01); /clear the lcd lcddelay(50); msgdisplay("MANUAL SELCTD"); mode=2; } if(key==12) //if power button is pressed then stop the process { key=0XFF; P2=0xff; //leds off lcdcmd(0x01); lcddelay(50); while(key!=12); //wait till any other button is pressed } } } void msgdisplay(unsigned char b[]) //send string to lcd { unsigned char i;

for(i=0;b[i]!='\0';i++) { lcddata(b[i]); } }

//access string

void tx_data(unsigned char *value) {

TMOD=0x20; // select timer 1 in mode1 TH1=0xFD; // load the timer for generating 9600 baud rate SCON=0x50; // select the serial communication 8bit data 1 start and 1 stop bit mode TR1=1; // start the timer while(*value) //access string and send to pc { SBUF=*value++; while(TI==0); TI=0; } } void tx_dat(unsigned char value) { SBUF=value; while(TI==0); delay(20); TI=1; } void ir_delay(void) { unsigned int p,q; for(p=0;p<55;p++) for(q=0;q<2;q++); } void delay1(unsigned int n) { unsigned int j,k; for(j=0;j<n;j++) for(k=0;k<50;k++); }

void recieve(void) interrupt 0 { unsigned char x; key1=0;

//remote decoding logic RC5 protocol

for(x=0;x<8;x++) //leave the first 8 bits ir_delay(); for(x=0;x<6;x++) //store next 6 bits,these are command buttons { a=ir; key1=key1<<1; key1=key1|a; ir_delay(); } if((key1>=0)&&(key1<23)) { key=key1; } delay1(500); }

void s1() { if(sw1==0) while(sw1==0); key=0xff; led=0xff; lcdcmd(0x01); lcddelay(60); msgdisplay("LEDS PATTERN 1"); while(1) { char i,j=0,k=7,m; for(i=0;i<=8;i++) { led=((1<<8)-1)-(1<<j); delay(10); j++; }

led=0xff; for(m=0;m<=8;m++) { led=((1<<8)-1)-(1<<k); delay(10);

k--; } led=0xff; } }

void s2() { if(sw2==0) while(sw2==0); key=0xff;

lcdcmd(0x01); lcddelay(60); msgdisplay("LEDS PATTERN 2"); while(1) { led=231; delay(10); led=219; delay(10); led=189; delay(10); led=126; delay(10); led=0xff;

delay(10); led=126; delay(10); led=189; delay(10); led=219;

delay(10); led=231; delay(10); led=0xff; delay(10); } } void s3() { if(sw3==0) while(sw3==0);

key=0xff; while(1) { led=0xff; lcdcmd(0x01); delay(60); msgdisplay("DATA TRANSMITOIN"); /*ascii values for enter key****/ tx_dat(10); tx_dat(13); tx_data(" WELCOME TO GUNTUR COLLEGE OF ENGINEERING....ECE DEPEARTMENT ") ; tx_dat(10); tx_dat(13); tx_data(" ALL THE BEST!! ") ; tx_dat(10); tx_dat(13); } } void s4() { if(sw4==0) while(sw4==0); key=0xff; led=0xff; lcdcmd(0x01); delay(60); msgdisplay("DATA RECEIVING.."); lcdcmd(0xc0); TMOD=0x20;

TH1=0XFD; SCON=0X50; TR1=1; while(1) { while(RI==0) delay(1); ch=SBUF; lcddata(ch); c++; if(c==16) { c=0; lcdcmd(0x01); } RI=0; } } void main() { unsigned char lcdcom[]={0x28,0x28,0x0E,0x06,0x80,0x01,0}; unsigned char l; for(l=0; lcdcom[l]!=0;l++) //send command to lcd { lcdcmd(lcdcom[l]); delay(10); }

IE=0X81; //enable inrerrupt while(key!=12); //wait till power buttorn is pressed P2=0; key=0xff; msgdisplay("WELCOME "); delay(150); lcdcmd(0x01);

delay(50); msgdisplay("SELECT THE MODE"); lcdcmd(0xc0); msgdisplay("<-AUTO ->MANUAL"); while((key!=21)&&(key!=22)); //wait till mode is selected

if(key==21) { key=0XFF; lcdcmd(0x01); delay(50); msgdisplay("AUTO MODE "); lcdcmd(0xc0); msgdisplay("SELECTED"); mode=1; } if(key==22) { key=0XFF; lcdcmd(0x01); delay(50); msgdisplay("MANUAL MODE"); lcdcmd(0xc0); msgdisplay("SELECTED"); mode=2; } delay(500); lcdcmd(0x01); delay(50); msgdisplay("SW1&SW2 for LED"); lcdcmd(0xc0); msgdisplay(" SW3&SW4 4 Tx&Rx"); while(1) { if(mode==1) { if(key==1) s1(); if(key==2)

s2(); if(key==3) s3(); if(key==4) s4(); } if(mode==2) { if(sw1==0) s1(); if(sw2==0) s2(); if(sw3==0) s3(); if(sw4==0) s4(); } } }

You might also like