日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

寻迹小车

發(fā)布時間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 寻迹小车 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
#include <reg52.h>/*電機(jī)驅(qū)動信號引腳定義*/ sbit IN1=P2^7; sbit IN2=P2^6; //sbit ENA=P2^5; sbit IN3=P2^4; sbit IN4=P2^3; //sbit ENB=P2^2;/*光電對管輸入信號引腳定義*/ sbit left1=P0^0; sbit left2=P0^1; sbit right1=P0^2; sbit right2=P0^3;/*電機(jī)PWM信號輸出引腳定義*/ sbit left_moto_pwm=P2^5; sbit right_moto_pwm=P2^2;/*附加引腳定義*/ sbit z=P1^1;//聲控非接觸式啟動 sbit f=P1^2;//蜂鳴器 sbit b=P0^4;//紅外避障識別/*電機(jī)運(yùn)動簡便定義*/ #define left_moto_go {IN1=1,IN2=0;} #define left_moto_back {IN1=0,IN2=1;} #define right_moto_go {IN3=0,IN4=1;} #define right_moto_back {IN3=1,IN4=0;}/*相關(guān)變量定義*/ unsigned char pwm_val_left=0;//valid unsigned char push_val_left=0; unsigned char pwm_val_right=0; unsigned char push_val_right=0;/*延時函數(shù)*/ void delay(unsigned int k) { unsigned int x,y; for(x=0;x<k;x++); for(y=0;y<110;y++); }/*電機(jī)控制函數(shù)*/ void run(void) {push_val_left=20; push_val_right=20; left_moto_go; right_moto_go;}//直行void stop(void) {push_val_left=0; push_val_right=0; left_moto_go; right_moto_go;}//停止void leftturn1(void) { push_val_left=10; push_val_right=15; left_moto_back; right_moto_go;}//小左轉(zhuǎn)void rightturn1(void) { push_val_left=15; push_val_right=10; left_moto_go; right_moto_back;}//小右轉(zhuǎn)void leftturn2(void) { push_val_left=10;push_val_right=20; left_moto_back; right_moto_go;}//大左轉(zhuǎn)void rightturn2(void) { push_val_left=20; push_val_right=10; left_moto_go;right_moto_back;}//大右轉(zhuǎn)/*電機(jī)PWM生成函數(shù)*/ void pwm_out_left_moto(void) {if(pwm_val_left<=push_val_left)left_moto_pwm=1; else left_moto_pwm=0; if(pwm_val_left>=20) pwm_val_left=0; }void pwm_out_right_moto(void) { if(pwm_val_right<=push_val_right) right_moto_pwm=1; else right_moto_pwm=0; if(pwm_val_right>=20) pwm_val_right=0;}/*定時器中斷服務(wù)函數(shù)*/ void timer0()interrupt 1 using 2 { TH0=(65536-92)/256; TL0=(65536-92)%256; pwm_val_left++; pwm_val_right++; pwm_out_left_moto(); pwm_out_right_moto();}/*蜂鳴器函數(shù)*/void fmq(void) { f=1; delay(20); f=0;}/*運(yùn)動控制函數(shù)*/ void xunji() { if(left2==1&&left1==1&&right1==1&&right2==1){ run();delay(1);}//直行if(left2==0&&left1==1&&right1==1&&right2==1){ leftturn1();delay(1);}//小左轉(zhuǎn)if(left2==1&&left1==0&&right1==1&&right2==1){ leftturn2(); delay(1); }//大左轉(zhuǎn)if(left2==0&&left1==0&&right1==1&&right2==1) { leftturn2(); delay(185); run();delay(100); }//左轉(zhuǎn)直行if(left2==1&&left1==1&&right1==0&&right2==1){rightturn1();delay(1); }//小右轉(zhuǎn)if(left2==1&&left1==1&&right1==1&&right2==0){ rightturn2(); delay(1);}//大右轉(zhuǎn)if(left2==1&&left1==1&&right1==0&&right2==0){ rightturn2();delay(185); run();delay(100); }//右轉(zhuǎn)直行if(left2==0&&left1==0&&right1==0&&right2==0) { stop();fmq();} //停止if(b==1) { fmq(); }//避障 }void main() {/*定時器初始化*/TMOD=0x01; TH0=(65536-92)/256; TL0=(65536-92)%256; EA=1; ET0=1; TR0=1; if(z==0){ /*循環(huán)檢測狀態(tài)*/ while(1){xunji();}}}

總結(jié)

以上是生活随笔為你收集整理的寻迹小车的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。