基于51單片機智能小車循跡程序_第1頁
基于51單片機智能小車循跡程序_第2頁
基于51單片機智能小車循跡程序_第3頁
基于51單片機智能小車循跡程序_第4頁
基于51單片機智能小車循跡程序_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、#include <reg51.h>#include <stdio.h>#define uint unsigned int#define uchar unsigned char/*/ uchar led_data9=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80; uchar circle=0,cir_comp=0,cir_count=0;/設(shè)定圈數(shù),實際圈數(shù) uchar turn_count=0; bit end=0; /圈數(shù)跑完標志/*/sbit xg0=P10;/左尋軌對管sbit xg1=P11;/中間尋軌對管sbit

2、 xg2=P12;/右尋軌對管sbit xz=P13;/感應(yīng)擋板對管/*/sbit Q_IN1=P20; /車前左輪控制 sbit Q_IN2=P21;sbit Q_IN3=P22; /車前右輪控制sbit Q_IN4=P23; sbit H_IN1=P24; /車尾左輪控制sbit H_IN2=P25;sbit H_IN3=P26; /車尾右輪控制sbit H_IN4=P27;sbit Q_ENA=P30; /車前左輪使能,PWMsbit Q_ENB=P31; /車前右輪使能,sbit H_ENA=P36; /車尾左輪使能,sbit H_ENB=P37; /車尾右輪使能,/*/#define

3、 stra_q_l 100 /直線行走時,四個輪子占空比調(diào)試#define stra_q_r 100#define stra_h_l 100#define stra_h_r 100#define turn_q_l 100 /轉(zhuǎn)彎時四個輪子的占空比調(diào)試#define turn_q_r 100#define turn_h_l 100#define turn_h_r 100 #define turnr_time 2900/右轉(zhuǎn)彎時的延時常數(shù)#define turnl_time 3000 /左轉(zhuǎn)彎時的延時常數(shù)#define dt_time 5800 /原地掉頭時延時常數(shù)#define over_tim

4、e 1000 /停止延時#define back_time 2500 /走完環(huán)形,回到直道延時轉(zhuǎn)彎#define black_time 1500 /過黑線的時間#define correct_l_time 700 /左矯正時間#define correct_r_time 700 /右矯正時間#define hou_time 200/*/ uchar q_duty_l,q_duty_r,h_duty_l,h_duty_r,/車前后左右輪占空比 i=0,j=0,k=0,m=0;/*/ void delay_cir(uint n) uchar x; while(n-) for(x=0; x<2

5、50;x+); ; /*/void delay(uint ct)/ 延時函數(shù) uint t; t=ct; while(t-);/*/void straight() /直走 q_duty_l=stra_q_l; q_duty_r=stra_q_r; h_duty_l=stra_h_l; h_duty_r=stra_h_r; Q_IN1=1; Q_IN2=0; Q_IN3=1; Q_IN4=0; H_IN1=1; H_IN2=0; H_IN3=1; H_IN4=0; /*/void houtui()/后退 q_duty_l=stra_q_l; q_duty_r=stra_q_r; h_duty_l

6、=stra_h_l; h_duty_r=stra_h_r; Q_IN1=0; Q_IN2=1; Q_IN3=0; Q_IN4=1; H_IN1=0; H_IN2=1; H_IN3=0; H_IN4=1; /*/void turn_left()/左轉(zhuǎn) q_duty_l=turn_q_l; q_duty_r=turn_q_r; h_duty_l=turn_h_l; h_duty_r=turn_h_r; Q_IN1=0; /左輪反轉(zhuǎn) Q_IN2=1; H_IN1=0; H_IN2=1; Q_IN3=1; /右輪正轉(zhuǎn) Q_IN4=0; H_IN3=1; H_IN4=0; delay(turnl_tim

7、e);/*/void turn_right() /右轉(zhuǎn) q_duty_l=turn_q_l; q_duty_r=turn_q_r; h_duty_l=turn_q_l; h_duty_r=turn_q_r; Q_IN1=1; /左輪正轉(zhuǎn) Q_IN2=0; H_IN1=1; H_IN2=0; Q_IN3=0;/右輪反轉(zhuǎn) Q_IN4=1; H_IN3=0; H_IN4=1; delay(turnr_time);/*/void turn_round() /原地掉頭 q_duty_l=turn_q_l; q_duty_r=turn_q_r; h_duty_l=turn_h_l; h_duty_r=tu

8、rn_h_r; Q_IN1=0; /左輪反轉(zhuǎn) Q_IN2=1; H_IN1=0; H_IN2=1; Q_IN3=1; /右輪正轉(zhuǎn) Q_IN4=0; H_IN3=1; H_IN4=0; delay(dt_time);/*/void over() /小車停止 Q_IN1=0; Q_IN2=0; Q_IN3=0; Q_IN4=0; H_IN1=0; H_IN2=0; H_IN3=0; H_IN4=0; /*/void correct_right() /左偏,向右矯正 q_duty_l=turn_q_l; q_duty_r=turn_q_r; h_duty_l=turn_q_l; h_duty_r=t

9、urn_q_r; Q_IN1=1; /左輪正轉(zhuǎn) Q_IN2=0; H_IN1=1; H_IN2=0; Q_IN3=0;/右輪反轉(zhuǎn) Q_IN4=1; H_IN3=0; H_IN4=1; delay(correct_r_time);void correct_left() /右偏,向左矯正 q_duty_l=turn_q_l; q_duty_r=turn_q_r; h_duty_l=turn_h_l; h_duty_r=turn_h_r; Q_IN1=0; /左輪反轉(zhuǎn) Q_IN2=1; H_IN1=0; H_IN2=1; Q_IN3=1; /右輪正轉(zhuǎn) Q_IN4=0; H_IN3=1; H_IN4=

10、0; delay(correct_l_time);/*/void xunji() if(xg1=1) turn_count+;over();delay(over_time);if(turn_count=1)straight(); delay(black_time);elseif(turn_count=2)houtui(); delay(hou_time); turn_left();elseif(turn_count=3)houtui(); delay(hou_time); turn_right();elseif(turn_count=4)houtui(); delay(hou_time); t

11、urn_right();elseif(turn_count=5)straight(); delay(black_time);elseif(turn_count=6)houtui(); delay(hou_time); turn_right();elseif(turn_count=7)houtui(); delay(hou_time); turn_right(); straight(); delay(back_time); turn_left();elseif(turn_count=8)straight(); delay(black_time);elseif(turn_count=9)houtu

12、i(); delay(100); turn_round(); if(turn_count>=9)turn_count=0; cir_count+; circle-;if(cir_count=cir_comp) end=1; over(); delay(500); else if(xg0=0)&&(xg1=0)&&(xg2=0) straight(); else if(xg0=1)&&(xg1=0)&&(xg2=0) over(); delay(over_time); houtui(); delay(hou_time); co

13、rrect_right(); /左偏,向右矯正 else if(xg0=0)&&(xg1=0)&&(xg2=1) over(); delay(over_time); houtui(); delay(hou_time); correct_left(); /右偏,向左矯正 /*/void int0(void) interrupt 0/中斷圈數(shù)設(shè)定 EX0=0; delay_cir(250); circle+; cir_comp+; if(circle>8) circle=0; cir_comp=0; P0=led_datacircle; EX0=1;/*/vo

14、id time1(void) interrupt 3 /T1溢出中斷,電機調(diào)速 i+; j+; k+; m+; if(i<q_duty_l) Q_ENA=1; else Q_ENA=0; if(i>100) Q_ENA=1;i=0; if(j<q_duty_r) Q_ENB=1; else Q_ENB=0; if(j>100 ) Q_ENB=1;j=0; if(k<h_duty_l) H_ENA=1; else H_ENA=0; if(k>100) H_ENA=1;k=0; if(m<h_duty_r) H_ENB=1; else H_ENB=0; if(m>100) H_ENB=1;m=0; P0=led_datacircle; TH1=0XFF; TL1=0XF6; /*/void mai

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論