欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
我的單片機(jī)pwm尋跡小車源程序
[打印本頁]
作者:
俁戈
時(shí)間:
2017-10-23 20:40
標(biāo)題:
我的單片機(jī)pwm尋跡小車源程序
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit Z1=P2^0; //左電機(jī)前進(jìn)
sbit Z2=P2^1; //左電機(jī)后退
sbit Y1=P2^2; //右電機(jī)前進(jìn)
sbit Y2=P2^3; //右電機(jī)后退
sbit ENA=P0^0;
sbit ENB=P0^1;
sbit L1=P1^0; //左1
sbit L2=P1^1; //左2
sbit R1=P1^2; //右1
sbit R2=P1^3; //右2
double a=0;
int aa=0,d=0,c=0;
uchar b,bb;
uchar pwm_val_left =0;
double push_val_left =0; //左電機(jī)占空比N/10
uchar pwm_val_right =0;
double push_val_right=0; //右電機(jī)占空比N/10
bit Right_moto_stp=1;
bit Left_moto_stp =1;
void run1(void) //前進(jìn)函數(shù)
{
push_val_left =5.5; //PWM 調(diào)節(jié)參數(shù)1-20 1為最慢20是最快 改這個(gè)值可以改變其速度
push_val_right =5.5; //PWM 調(diào)節(jié)參數(shù)1-20 1為最慢20是最快 改這個(gè)值可以改變其速度
Z1=0;Z2=1;
Y1=0;Y2=1;
}
void run(void) //前進(jìn)函數(shù)
{
push_val_left =20; //PWM 調(diào)節(jié)參數(shù)1-20 1為最慢20是最快 改這個(gè)值可以改變其速度
push_val_right =20; //PWM 調(diào)節(jié)參數(shù)1-20 1為最慢20是最快 改這個(gè)值可以改變其速度
Z1=0;Z2=1;
Y1=0;Y2=1;
}
void run2(void) //前進(jìn)函數(shù)
{
push_val_left =9; //PWM 調(diào)節(jié)參數(shù)1-20 1為最慢20是最快 改這個(gè)值可以改變其速度
push_val_right =9; //PWM 調(diào)節(jié)參數(shù)1-20 1為最慢20是最快 改這個(gè)值可以改變其速度
Z1=0;Z2=1;
Y1=0;Y2=1;
}
void left(void) //直角左轉(zhuǎn)函數(shù)
{
push_val_left =18;
push_val_right =18;
Z1=1;Z2=0;
Y1=0;Y2=1;
}
void left1(void) //左轉(zhuǎn)函數(shù)
{
push_val_left =16;
push_val_right =16;
Z1=1;Z2=0;
Y1=0;Y2=1;
}
void left2(void) //小左轉(zhuǎn)函數(shù)
{
push_val_left =19;
push_val_right =19;
Z1=1;Z2=1;
Y1=0;Y2=1;
}
void right(void) //直角右轉(zhuǎn)函數(shù)
{
push_val_left =18;
push_val_right =18;
Z1=0;Z2=1;
Y1=1;Y2=0;
}
void right1(void) //右轉(zhuǎn)函數(shù)
{
push_val_left =16;
push_val_right =16;
Z1=0;Z2=1;
Y1=1;Y2=0;
}
void right2(void) //小右轉(zhuǎn)函數(shù)
{
push_val_left =19;
push_val_right =19;
Z1=0;Z2=1;
Y1=1;Y2=1;
}
void stop(void)
{
Z1=1;Z2=1;
Y1=1;Y2=1;
}
void pwm_out_left_moto(void) //左電機(jī)調(diào)速,調(diào)節(jié)push_val_left的值改變電機(jī)轉(zhuǎn)速,占空比
{
if(Left_moto_stp)
{
{if(pwm_val_left<=push_val_left)
{ ENB=1;}
else
{ENB=0;}
}
{if(pwm_val_left>=20)
{pwm_val_left=0;}
}
}
else
{ENB=0;}
}
void pwm_out_right_moto(void) //右電機(jī)調(diào)速,調(diào)節(jié)push_val_left的值改變電機(jī)轉(zhuǎn)速,占空比
{
if(Right_moto_stp)
{
if(pwm_val_right<=push_val_right)
{ENA=1;}
else
{ENA=0;}
if(pwm_val_right>=20)
{pwm_val_right=0;}
}
else
{ENA=0;}
}
void xunji()
{
if(L1==1&&L2==1&&R1==1&&R2==1)
a++;
if(L1==0&&L2==0&&R1==0&&R2==0)
{run();aa++;}
if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
left1();
if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
right1();
if(L1==0&&L2==1&&R1==0&&R2==0) left2();
if(L1==0&&L2==0&&R1==1&&R2==0) right2();
if((L1==1&&L2==1&&R1==1&&R2==1)&&a>=100)
{
stop(); a=0;
}
if(aa>=13000) { bb=1; aa=0; }
while(bb==1)
{
if(L1==0&&L2==0&&R1==0&&R2==0) run2();
if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
left1();
if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
right1();
if(L1==0&&L2==1&&R1==0&&R2==0) {left2();aa++;}
if(L1==0&&L2==0&&R1==1&&R2==0) {right2();aa++;}
while(aa>=700)
{
if(L1==0&&L2==0&&R1==0&&R2==0)
run();
if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
left1();
if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
right1();
if(L1==0&&L2==1&&R1==0&&R2==0) {left2();}
if(L1==0&&L2==0&&R1==1&&R2==0) right2();
if(L1==1&&L2==1&&R1==1&&R2==1) a++;
if((a>=60))
{
b=1;
}
while(b==1)
{
if(L1==0&&L2==0&&R1==0&&R2==0)
run1();
if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
left();
if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
right();
if(L1==0&&L2==1&&R1==0&&R2==0) {left2(); c++;}
if(L1==0&&L2==0&&R1==1&&R2==0) {right2();d++;}
while(c+d>=15000)
{
if(L1==0&&L2==0&&R1==0&&R2==0) run();
if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
left1();
if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
right1();
if(L1==0&&L2==1&&R1==0&&R2==0) left2();
if(L1==0&&L2==0&&R1==1&&R2==0) right2();
if(L1==1&&L2==1&&R1==1&&R2==1) stop();
}
if((L1==1&&L2==1&&R1==1&&R2==1))
{
stop(); a=0;
}
}
}
}
// if((a>=60))
// {
// b=1;
// }
// while(b==1)
// {
// if(L1==0&&L2==0&&R1==0&&R2==0)
// run1();
// if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
// left();
// if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
// right();
// if(L1==0&&L2==1&&R1==0&&R2==0) {left2(); c++;}
// if(L1==0&&L2==0&&R1==1&&R2==0) {right2();d++;}
//
// while(c+d>=15000)
// {
// if(L1==0&&L2==0&&R1==0&&R2==0) run();
// if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
// left1();
// if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
// right1();
// if(L1==0&&L2==1&&R1==0&&R2==0) left2();
// if(L1==0&&L2==0&&R1==1&&R2==0) right2();
// if(L1==1&&L2==1&&R1==1&&R2==1) stop();
// }
//
// if((L1==1&&L2==1&&R1==1&&R2==1))
// {
// stop(); a=0;
// }
//
// }
}
/***********TIMER0中斷服務(wù)子函數(shù)產(chǎn)生PWM信號**********/
void timer0()interrupt 1 using 2
{
TH0=0XFC; //2Ms定時(shí)
TL0=0X30;
pwm_val_left++;
pwm_val_right++;
pwm_out_left_moto();
pwm_out_right_moto();
}
/***************************************************/
void main(void)
{
TMOD=0X01;
TH0= 0XFC; //2ms定時(shí)
TL0= 0X30;
TR0= 1;
ET0= 1;
EA = 1;
while(1) /*無限循環(huán)*/
{
xunji();
}
}
復(fù)制代碼
作者:
平淡是真963
時(shí)間:
2017-10-24 22:52
樓主能分享一下電路圖嗎?
作者:
TYM
時(shí)間:
2017-11-16 15:42
樓主有電路圖嗎
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1