欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機紅外避障小車程序
[打印本頁]
作者:
wzd
時間:
2020-5-25 11:51
標題:
單片機紅外避障小車程序
紅外避障小車
單片機源程序如下:
/******************************************************************
***名稱:小車紅外避障參考程序(PWM)*******************************
***晶振:11.0592MHZ*************************************************
******************************************************************/
/******************************************************************
************************* 頭文件 **********************************
******************************************************************/
#include<AT89X52.H>
/******************************************************************
************************電機驅動定義*******************************
******************************************************************/
#define LS {P1_1=0,P1_2=0;} //左電機停轉
#define Lg {P1_1=1,P1_2=0;} //左電機正轉
#define Lb {P1_1=0,P1_2=1;} //左電機反轉
#define RS {P1_4=0,P1_5=0;} //右電機停轉
#define Rg {P1_4=1,P1_5=0;} //右電機正轉
#define Rb {P1_4=0,P1_5=1;} //右電機反轉
#define Lp P1_0 //PWM信號端
#define Rp P1_3 //PWM信號端
#define Ll P3_4 //左傳感器
#define Rl P3_5 //右傳感器
sbit BUZZ = P2^3; //蜂鳴器引腳
/******************************************************************
**********************PWM調速相關變量******************************
******************************************************************/
unsigned char pwm_val_left =0; //變量定義
unsigned char push_val_left =0; //左電機占空比N/20
unsigned char pwm_val_right =0;
unsigned char push_val_right=0; //右電機占空比N/20
bit Rs=1;
bit Ls =1;
unsigned int time=0;
/******************************************************************
**********************延時函數*************************************
******************************************************************/
void delay(unsigned int k)
{
unsigned int x,y;
for(x=0;x<k;x++)
for(y=0;y<2000;y++);
}
/******************************************************************
******************************小車前進*****************************
******************************************************************/
void front_run(void)
{
push_val_left=10;
push_val_right=10.1;
Lg;
Rg;
}
/******************************************************************
******************************小車后退*****************************
******************************************************************/
void back_run(void)
{
push_val_left=10;
push_val_right=10.1;
Lb;
Rb;
}
/******************************************************************
******************************小車左轉*****************************
******************************************************************/
void left_run(void)
{
push_val_left=12;
push_val_right=12;
Rg;
Lb;
}
/******************************************************************
******************************小車右轉******************************
******************************************************************/
void right_run(void)
{
push_val_left=12;
push_val_right=12;
Lg;
Rb;
}
/******************************************************************
******************************小車停*******************************
******************************************************************/
void stop(void)
{
push_val_left=15;
push_val_right=15;
LS;
RS;
}
/******************************************************************
****************************左電機調速*****************************
******************************************************************/
void pwm_out_left_moto(void)
{
if(Ls)
{
if(pwm_val_left<=push_val_left)
{
Lp=1;
}
else
{
Lp=0;
}
if(pwm_val_left>=20)
pwm_val_left=0;
}
else
{
Lp=0;
}
}
/******************************************************************
***************************右電機調速******************************
******************************************************************/
void pwm_out_right_moto(void)
{
if(Rs)
{
if(pwm_val_right<=push_val_right)
{
Rp=1;
}
else
{
Rp=0;
}
if(pwm_val_right>=20)
pwm_val_right=0;
}
else
{
Rp=0;
}
}
/******************************************************************
************************定時器0初始化******************************
******************************************************************/
void timer0_Init(void)
{
TMOD=0X01;
TH0= 0XFc; //1ms定時
TL0= 0X18;
TR0= 1;
ET0= 1;
EA = 1; //開總中斷
}
/******************************************************************
*******************定時器0中斷服務子程序***************************
******************************************************************/
void timer0()interrupt 1 using 2
{
TH0=0XFc;
TL0=0X18;
time++;
pwm_val_left++;
pwm_val_right++;
pwm_out_left_moto();
pwm_out_right_moto();
}
/******************************************************************
**************************主函數***********************************
******************************************************************/
void main(void)
{
unsigned char i;
stop(); //小車停轉
timer0_Init();
while(1)
{
if(Ll==1&&Rl==1) //前方無障礙
front_run(); //前進
else
{
if(Ll==1&&Rl==0) //右前方右障礙
{
left_run(); //左轉
delay(40);
}
if(Rl==1&&Ll==0) //左前方右障礙
{
right_run(); //右轉
delay(40);
}
if(Rl==0&&Ll==0) //前方有障礙
{
back_run(); //后退
delay(40);
right_run(); //右轉
delay(90);
}
}
}
}
/******************************************************************
******************************結束*********************************
*******************************************************************/
復制代碼
所有資料51hei提供下載:
XC.zip
(32.23 KB, 下載次數: 24)
2020-5-25 11:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2020-5-29 01:02
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1