We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
#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);