單片機源程序如下:
- #include<reg52.h>
- #define unit unsigned int
- #define uchar unsigned char
- sbit a5=P2^5; //黑白傳感器
- sbit a6=P2^6; //黑白傳感器
- sbit a1=P2^1; //電機
- sbit a2=P2^2; //電機
- sbit a3=P2^3; //電機
- sbit a4=P2^4; //電機
- sbit a7=P2^7; //黑白傳感器 沒用
- sbit a8=P2^0; //黑白傳感器 沒用
- int i;
- sbit PWM3=P0^3;
- sbit PWM2=P0^2;
- sbit PWM1=P0^1;
- sbit cgq=P0^0;
- void delay(int t) //延時
- {
- int a,b;
- for(a=0;a<t;a++)
- for(b=0;b<120;b++);
- }
- void delayx1ms(int x)
- {
- unsigned char a,b;
- for(x;x>0;x--)
- for(b=102;b>0;b--)
- for(a=3;a>0;a--);
- }
- void delay1ms()
- {
- unsigned char a,b;
- for(b=102;b>0;b--)
- for(a=3;a>0;a--);
- }
- void delay500us()
- {
- unsigned char a,b;
- for(b=1;b>0;b--)
- for(a=227;a>0;a--);
- }
- void qianjin()
- {
- a1=0;
- a2=1;
- a3=0;
- a4=1;
- delay(200);
- }
- void zuozhuan()
- {
- a1=0;
- a2=1;
- a3=1;
- a4=0;
- delay(100);
- }
- void youzhuan()
- {
- a1=1;
- a2=0;
- a3=0;
- a4=1;
- delay(100);
- }
- void stop()
- {
- a1=0;
- a2=0;
- a3=0;
- a4=0;
- }
- void L2_0() //2_0
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM2=1;
- delay500us();
- // delay1ms();
- PWM2=0;
- for(i=0;i<19;i++)
- delay1ms();
- delay500us();
- PWM2=0;
- for(i=0;i<20;i++)
- delay1ms();
- }
- }
- void L2_45() //2_45
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM2=1;
- // delay500us();
- delay1ms();
- PWM2=0;
- for(i=0;i<19;i++)
- delay1ms();
- // delay500us();
- PWM2=0;
- for(i=0;i<20;i++)
- delay1ms();
- }
- }
- void L2_90() //2_90
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM2=1;
- delay1ms();
- delay500us();
- PWM2=0;
- for(i=0;i<18;i++)
- delay1ms();
- delay500us();
- PWM2=0;
- for(i=0;i<20;i++)
- delay1ms();
- }
- }
- void L2_135() //2_135
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM2=1;
- delay1ms();
- delay1ms();
- // delay500us();
- PWM2=0;
- for(i=0;i<18;i++)
- delay1ms();
- // delay500us();
- PWM2=0;
- for(i=0;i<20;i++)
- delay1ms();
- }
- }
- void L2_180() //2_180
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM2=1;
- delay1ms();
- delay1ms();
- delay500us();
- PWM2=0;
- for(i=0;i<17;i++)
- delay1ms();
- delay500us();
- PWM2=0;
- for(i=0;i<20;i++)
- delay1ms();
- }
- }
- void L1_0() //1_0
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM1=1;
- delay500us();
- // delay1ms();
- PWM1=0;
- for(i=0;i<19;i++)
- delay1ms();
- delay500us();
- PWM1=0;
- for(i=0;i<20;i++)
- delay1ms();
- }
- }
- void L1_45() //1_45
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM1=1;
- // delay500us();
- delay1ms();
- PWM1=0;
- for(i=0;i<19;i++)
- delay1ms();
- // delay500us();
- PWM1=0;
- for(i=0;i<20;i++)
- delay1ms();
- }
- }
- void L1_90() //1_90
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM1=1;
- delay500us();
- delay1ms();
- PWM1=0;
- for(i=0;i<18;i++)
- delay1ms();
- delay500us();
- PWM1=0;
- for(i=0;i<20;i++)
- delay1ms();
- }
- }
- void L1_135() //1_135
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM1=1;
- delay1ms();
- delay1ms();
- PWM1=0;
- for(i=0;i<18;i++)
- delay1ms();
- // delay1ms();
- PWM1=0;
- for(i=0;i<20;i++)
- delay1ms();
- }
- }
- void L1_180() //1_180
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM1=1;
- delay1ms();
- delay1ms();
- delay500us();
- PWM1=0;
- for(i=0;i<17;i++)
- delay1ms();
- delay500us();
- // delay1ms();
- PWM1=0;
- for(i=0;i<20;i++)
- delay1ms();
- }
- }
- void L3_0() //3_0
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM3=1;
- delay500us();
- // delay1ms();
- PWM3=0;
- for(i=0;i<19;i++)
- delay1ms();
- delay500us();
- }
- }
- void L3_45() //3_45
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM3=1;
- // delay500us();
- delay1ms();
- PWM3=0;
- for(i=0;i<19;i++)
- delay1ms();
- // delay500us();
- }
- }
- void L3_90() //3_90
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM1=1;
- delay500us();
- delay1ms();
- PWM1=0;
- for(i=0;i<18;i++)
- delay1ms();
- delay500us();
- }
- }
- void L3_135() //3_135
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM3=1;
- delay1ms();
- delay1ms();
- PWM3=0;
- for(i=0;i<18;i++)
- delay1ms();
- // delay1ms();
- }
- }
- void L3_180() //3_180
- {
- int i,j;
- for(j=0;j<43;j++)
- {
- PWM3=1;
- delay1ms();
- delay1ms();
- delay500us();
- PWM3=0;
- for(i=0;i<17;i++)
- delay1ms();
- delay500us();
- // delay1ms();
- }
- }
- void main()
- {
- while(1)
- {
- if(cgq==0)
- {
- stop();
- L2_0();
- delayx1ms(200); //4
- L1_0();
- delayx1ms(200); //1
- L2_90();
- delayx1ms(200); //2
- L1_45();
- delayx1ms(200); //3
-
- }
- if(a5==1&&a6==1)
- {
- qianjin();
- for(i=300;i>0;i--);
- }
- if(a5==1&&a6==0)
- {
- youzhuan();
- if(a5==0&&a6==0)
- youzhuan();
- }
- if(a5==0&&a6==1)
- {
- zuozhuan();
- if(a5==0&&a6==0)
- zuozhuan();
- }
- if(a5==0&&a6==0)
- {
- stop();
- }
- if(a7==0&&a8==0)
- {
- stop();
- }
- }
- }
復制代碼
所有資料51hei提供下載:
舵機(0 45 90 135 180).docx
(13.52 KB, 下載次數: 53)
2018-5-3 22:41 上傳
點擊文件名下載附件
舵機 下載積分: 黑幣 -5
|