Temperature Controller
 Liquid Level Controller
 Load Positioning System
 Laser Cutting Machine
 Motion Control System
 DC Motor controller
 AC Motor speed control
 conveyor belt control

~: C program for laser cutting machine :~

#include <reg51.h>
#include <string.h>

sbit rs = P2^5;     // rs pin of LCD
sbit en = P2^7;     // en pin of LCD
sbit rw = P2^6;     // rw pin of LCD
sbit led1 = P2^4;
sbit led2 = P2^3;
sbit led3 = P2^2;
sbit led4 = P2^1;
int digit[2];

void writecmd(unsigned char a); // function initializations
void writedata(unsigned char b);
void busy(void);
void writestr(unsigned char *s);

void delay()     // delay for stepper mtor pulses
  {
    int c1;
 for(c1=0;c1<8500;c1++);
  }
void display(unsigned int z) // to display digits 0-9 on LCD
  {
   int z1,ASCII[2];    
 z1=z%10;
 ASCII[1]=z1+0x30;
 z=z/10;
 ASCII[0]=z+0x30; 
 writedata(ASCII[0]);
 writedata(ASCII[1]); 
  }
void writecmd(unsigned char a)
{
 busy();
 rs = 0;
 rw = 0;
 P0 = a; 
 en = 1;
 en = 0;
}
void writedata(unsigned char b)
{
 busy();
 rs = 1;
 rw = 0;
 P0 = b; 
 en = 1;
 en = 0; 
}
void busy()
{
 int c;
 for(c=0;c<1500;c++);
}
void writestr(unsigned char *s)
{
 unsigned int l,m;
 l = strlen(s);
 for(m=0;m<l;m++)
 {
  writedata(*s);
  s++;  
 }
}
keydly()
  {
    int x,y;
 for(x=0;x<100;x++)
   for(y=0;y<1000;y++);
   }
void main()
  {
 int t=0,i=0,j,f,p=0,q=0;
 unsigned int p2,p1;
 P3=0x00;        //initilize ports
 P2=0x00; 
 writecmd(0x3C);       // initilize LCD
 writecmd(0x0E);
back:f=0;
 writecmd(0x01);       // first display message
 if(p==0) writestr("enter x(horizontal)");  // enter X
 else
   {
    writestr("enter y (vertical)");  // then enter Y
      p=0;
   }
 writecmd(0xC0);
 writestr("in 2 digits(inch):");  
loop:P1=0xF0;        // all rows as input and
 while(P1==0xF0);      // columns as output 
 while(P1!=0xF0)       // wait until no key is pressed
   {
     P1=0xFE;       // when pressed start scanning
     if(P1==0xEE)      // for enter key
    {
   if(q==0)      // make 2 digit number by
     {
    p1=digit[0]*10+digit[1]; // multiplying second digit with 10 and adding first digit    
    q=1;
    p=1;
    f=1;
     }
   else
     {
    p2=digit[0]*10+digit[1]; // second time also make 2 digit number   
    writecmd(0x01);
    writestr("press start");
     }  
   t=1;
   i=0;
    }
  else if(P1==0xDE){writedata(0x30);digit[i]=0;t=1;i++;} // for '0' key display 0 and store digit 0
  else if(P1==0xBE)          // for start key 's' 
    {
     writecmd(0x80);   
   writestr("horizontal x= ");       // first display X & Y
   display(p1);
   writestr("inch");
   writecmd(0xC0);   
   writestr("vertical y= ");
   display(p2);
   writestr("inch ");
   p1*=25;            // get the final number of rotations
   p2*=25;
   for(j=0;j<p1;j++)         // start rotating motors
     {
      led1=1;           // motor 1 CW  
       P3=0x01;
    delay();
    P3=0x02;
    delay();
    led1=0;
    P3=0x04;
    delay();
    P3=0x08;
    delay();
     }
   for(j=0;j<p2;j++)         // motor 2 CW
     {
      led3=1;
       P3=0x10;
    delay();
    P3=0x20;
    delay();
    led3=0;
    P3=0x40;
    delay();
    P3=0x80;
    delay();
     }
   for(j=0;j<p1;j++)         // motor 1 CCW
     {
      led2=1;
       P3=0x01;
    delay();
    P3=0x08;
    delay();
    led2=0;
    P3=0x04;
    delay();
    P3=0x02;
    delay();
     }
   for(j=0;j<p2;j++)         // motor 2 CCw
     {
      led4=1;
       P3=0x10;
    delay();
    P3=0x80;
    delay();
    led4=0;
    P3=0x40;
    delay();
    P3=0x20;
    delay();
     }
   P3=0x00;
   f=1;
   t=1;   
   q=0;
   }
  if(t==1) break;            // get out of loop if key is pressed
  P1=0xFD;
  if(P1==0xED) {writedata(0x37);t=1;digit[i]=7;i++;}   //for '7' key display 7 and store digit 7
  else if(P1==0xDD) {writedata(0x38);t=1;digit[i]=8;i++;}  // same for all digits
  else if(P1==0xBD) {writedata(0x39);t=1;digit[i]=9;i++;}  

  if(t==1) break;
  P1=0xFB;
  if(P1==0xEB){writedata(0x34);t=1;digit[i]=4;i++;}
  else if(P1==0xDB) {writedata(0x35);t=1;digit[i]=5;i++;}
  else if(P1==0xBB) {writedata(0x36);t=1;digit[i]=6;i++;}  

  if(t==1) break;
  P1=0xF7;
  if(P1==0xE7){writedata(0x31);digit[i]=1;t=1;i++;}    
  else if(P1==0xD7) {writedata(0x32);t=1;digit[i]=2;i++;}
  else if(P1==0xB7) {writedata(0x33);t=1;digit[i]=3;i++;}
  
  if(t==1) break;
  }
   keydly();               // key debounce delay  
   t=0;                // reset keypress flag
   if(f==0) goto loop;            // jump back to enter new digits
   else goto back;  
  }

All the projects are designed and developed by sight owner and they are thoroughly tested by him. ©Copyrights Ashutosh Bhatt 2010. All rights reserved.