Professional Documents
Culture Documents
#include <p18f452.h>
void ISRHigh(void);
void ISRLow(void);
void delay(unsigned int data);
void delay_int(unsigned int data);
void initial(void);
void Delay_ms(unsigned int);
void Sequence_left(unsigned long step);
void Sequence_right(unsigned long step);
void Sequence_up(unsigned long step);
void Sequence_down(unsigned long step);
void Sequence_22degR_down(unsigned long step);
void Sequence_22degR_up(unsigned long step);
void Steer_horizon(void);
void Steer_vertical(void);
void Steer_22degR(void);
void Steer_22degL(void);
void pen_up_down(int x);
void Letter_A(void);
void Letter_E(void);
void Letter_F(void);
void Letter_H(void);
void Letter_I(void);
void Letter_L(void);
//========================= Declare variable ==========================//
unsigned int servo=0;
unsigned int servo1_pulse =60; //home position
unsigned int servo2_pulse =45; //home position
unsigned int servo3_pulse =230; //home position
//----------------------------------------------------------------------------
Letter_A();
Letter_E();
Letter_F();
1
D:\education\MY PSM\program files\test servo1.c
Letter_H();
Letter_I();
Letter_L();
while(1);
}
void initial(void)
{
TRISA = 0b00000000; // PORTB is output
TRISB = 0b00000000; // Initialize PORT direction
TRISD = 0b00000000;
TRISC = 0b00000000; // PORT A,D,C is output
TMR3H = 0xCF;
TMR3L = 0x2B; //initial value in TMR3
for(;data>0;data--)
{
for(y = 255;y>0;y--) //asal Y=255
{}
}
}
2
D:\education\MY PSM\program files\test servo1.c
//----------------------------------------------------------------------------
// Interupt Service Routine
servo1=1;
servo2=1;
servo3=1;
delay_int(145); // 0.642m 220 // 0 degree 168
}
servo=0;
}
}
3
D:\education\MY PSM\program files\test servo1.c
4
D:\education\MY PSM\program files\test servo1.c
{int i;
for(i=0;i < step;i++)
{
stepper1_1 = 0; stepper1_2 = 0; stepper1_3 = 0; stepper1_4 = 1;
stepper2_1 = 0; stepper2_2 = 0; stepper2_3 = 0; stepper2_4 = 1;
stepper3_1 = 1; stepper3_2 = 0; stepper3_3 = 0; stepper3_4 = 0;
Delay_ms(30);
stepper1_1 = 0; stepper1_2 = 0; stepper1_3 = 1; stepper1_4 = 0;
stepper2_1 = 0; stepper2_2 = 0; stepper2_3 = 1; stepper2_4 = 0;
stepper3_1 = 0; stepper3_2 = 1; stepper3_3 = 0; stepper3_4 = 0;
Delay_ms(30);
stepper1_1 = 0; stepper1_2 = 1; stepper1_3 = 0; stepper1_4 = 0;
stepper2_1 = 0; stepper2_2 = 1; stepper2_3 = 0; stepper2_4 = 0;
stepper3_1 = 0; stepper3_2 = 0; stepper3_3 = 1; stepper3_4 = 0;
Delay_ms(30);
stepper1_1 = 1; stepper1_2 = 0; stepper1_3 = 0; stepper1_4 = 0;
stepper2_1 = 1; stepper2_2 = 0; stepper2_3 = 0; stepper2_4 = 0;
stepper3_1 = 0; stepper3_2 = 0; stepper3_3 = 0; stepper3_4 = 1;
Delay_ms(30);
}
}
void pen_up_down(int x)
{
if(x==0)
{ DC_motor_a=0;
DC_motor_b=1; }
if(x==1)
{ DC_motor_a=1;
DC_motor_b=0; }
}
void Steer_horizon(void)
{
if(servo1_pulse < 157)
{ while(servo1_pulse < 157)
{ servo1_pulse++;
Delay_ms(15); }}
5
D:\education\MY PSM\program files\test servo1.c
void Steer_vertical(void)
{
if(servo1_pulse < 14)
{ while(servo1_pulse < 14)
{ servo1_pulse++;
Delay_ms(15); }}
void Steer_22degR(void)
{
if(servo1_pulse < 50)
{ while(servo1_pulse < 50)
{ servo1_pulse++;
Delay_ms(15); }}
6
D:\education\MY PSM\program files\test servo1.c
Delay_ms(15);}}
void Steer_22degL(void)
{
if(servo1_pulse < 263)
{ while(servo1_pulse < 263)
{ servo1_pulse++;
Delay_ms(15); }}
void Letter_A(void)
{
Steer_vertical();
Sequence_down(22);
Delay_ms(300);
Steer_22degR();
pen_up_down(1); // 1 = pen down , 0 = pen up
Delay_ms(300);
Sequence_22degR_up(24);
Steer_22degL();
Delay_ms(300);
Sequence_right(25);
pen_up_down(0);
Delay_ms(300);
Sequence_left(11);
pen_up_down(1);
Delay_ms(100);
Steer_horizon();
Delay_ms(100);
Sequence_left(9);
Delay_ms(100);
pen_up_down(0);
Steer_vertical();
Sequence_up(11);
Steer_horizon();
Sequence_right(18);
}
void Letter_E(void)
{
Steer_horizon();
Sequence_right(13);
pen_up_down(1);
7
D:\education\MY PSM\program files\test servo1.c
Delay_ms(300);
Sequence_left(13);
Steer_vertical();
Sequence_down(22);
Steer_horizon();
Sequence_right(13);
pen_up_down(0);
Steer_vertical();
Sequence_up(11);
Steer_horizon();
pen_up_down(1);
Delay_ms(300);
Sequence_left(13);
pen_up_down(0);
Steer_vertical();
Sequence_up(11);
Steer_horizon();
Sequence_right(19);
}
void Letter_F(void)
{
Steer_horizon();
Sequence_right(13);
pen_up_down(1);
Delay_ms(300);
Sequence_left(13);
Steer_vertical();
Sequence_down(22);
pen_up_down(0);
Steer_vertical();
Sequence_up(11);
Steer_horizon();
pen_up_down(1);
Delay_ms(300);
Sequence_right(10);
Delay_ms(300);
pen_up_down(0);
Steer_vertical();
Sequence_up(11);
Steer_horizon();
Sequence_right(8);
}
void Letter_H(void)
{
Steer_vertical();
pen_up_down(1);
Delay_ms(300);
Sequence_down(22);
Delay_ms(300);
pen_up_down(0);
Sequence_up(11);
Steer_horizon();
pen_up_down(1);
Delay_ms(300);
Sequence_right(10);
Steer_vertical();
pen_up_down(0);
Delay_ms(300);
Sequence_down(11);
Delay_ms(100);
pen_up_down(1);
Delay_ms(300);
Sequence_up(22);
Delay_ms(300);
pen_up_down(0);
Steer_horizon();
Sequence_right(5);
}
void Letter_I(void)
{
Steer_horizon();
pen_up_down(1);
Delay_ms(300);
8
D:\education\MY PSM\program files\test servo1.c
Sequence_right(12);
Delay_ms(300);
pen_up_down(0);
Delay_ms(100);
Sequence_left(6);
pen_up_down(1);
Steer_vertical();
Sequence_down(22);
pen_up_down(0);
Steer_horizon();
Sequence_left(6);
pen_up_down(1);
Delay_ms(100);
Sequence_right(12);
pen_up_down(0);
Steer_vertical();
Sequence_up(22);
Steer_horizon();
Sequence_right(5);
}
void Letter_L(void)
{
Steer_vertical();
pen_up_down(1);
Delay_ms(300);
Sequence_down(22);
Steer_horizon();
Sequence_right(12);
pen_up_down(0);
Steer_vertical();
Sequence_up(22);
Steer_horizon();
Sequence_right(5);
}