#include<reg51.h> // LCD Pin Definitions // Sbit rs = P3^6; Sbit rw = P3^5; Sbit en = P3^4; #define dataport P2 ////////////////////// // PIR SENSOR INPUT // Sbit pir = P1^0; ///////////////////// #define output P3 //output port 8051 -> ULN2003A Input
unsigned char fdataval [8] = {0x01,0x02,0x04,0x08}; //unipolar stepper motor unsigned char rdataval[8] = {0x08,0x04,0x02,0x01}; //unipolar stepper motor ints,k,z,i;
void delay_ms(unsigned intmsec) // Time delay function { inti,j ; for(i=0;i<msec;i++) for(j=0;j<700;j++); }
voidf_angle_delay(int angle, int time) { //set this settings as per stepper motor step angles (in this program 7 degree step angle is taken) s=angle/7; s=s%100; /////////////////settings over for(k=0; k<s; k++) { for(z=0;z<time;z++) { delay_ms(1); } if(i==4) { i=0; } output=fdataval[i]; i++; } } // function for user defined degree angle with step delays voidr_angle_delay(int angle, int time) { int s; //set this settings as per stepper motor step angles (in this program 7 degree step angle is taken) s=angle/7; s=s%100; /////////////////settings over for(k=0; k<s; k++) { for(z=0;z<time;z++) { delay_ms(1); } if(i==4) { i=0; } output=rdataval[i]; i++; } } /////////////////////////////////////////////////////////////////////////////// voidlcd_cmd(unsigned char item) //Function to send command to LCD { dataport = item; rs= 0; rw=0; en=1; delay_ms(5); en=0; return; } voidlcd_data(unsigned char item) // Function to send data to LCD { dataport = item; rs= 1; rw=0; en=1; delay_ms(5); en=0; return; } voidlcd_string(unsigned char *str) // Function to send string to LCD { int i=0; while(str[i]!='\0') { lcd_data(str[i]); i++; delay_ms(5); } return; } voidlcd_int() { lcd_cmd(0x38); delay_ms(5); lcd_cmd(0x0c); delay_ms(5); lcd_cmd(0x01); delay_ms(5); lcd_cmd(0x80); delay_ms(5); } void main() { pir=0; lcd_init(); lcd_cmd(0x82); lcd_string("Automatic Furnace"); lcd_cmd(0xc4); lcd_string("Door Control"); delay_ms(1000); lcd_cmd(0x01); lcd_string("WAIT..."); loop: while(pir==1); lcd_cmd(0x01); lcd_string("Door Closed!"); while(pir==0); delay_ms(200); lcd_cmd(0x01); lcd_string("Steel Rod Entered!"); lcd_cmd(0xc0); lcd_string("Door Open..."); f_angle_delay(90,15); while(pir==1); delay_ms(200); r_angle_delay(90,15); go to loop; while(1);