|
單片機(jī)避障程序源程序如下:
- /*
- * 作者:趙新
- * 功能:尋跡小車(chē)主函數(shù)
- * 日期:2015/3/10 進(jìn)行PWM的修改
- * 說(shuō)明:編譯器會(huì)有一些警告,主要是定義的一些函數(shù)在這里沒(méi)有用到,可以注釋掉或者寫(xiě)成條件編譯 2015/9/15
- */
- #include "reg51.h"
- #include "intrins.h"
- #include "Motor.h"
- #define LEFT 0 //左側(cè)觸到黑線(xiàn)
- #define RIGHT 1 //右側(cè)觸到黑線(xiàn)
- #define ALL 2 //同時(shí)觸到黑線(xiàn)
- #define NONE 3 //正常運(yùn)行沒(méi)有觸到黑線(xiàn)
- u8 i = 0;
- sbit Left = P0^4;
- sbit Right = P0^5;
- sbit PWM_LEFT = P1^0;
- sbit PWM_RIGHT = P1^1;
- u8 JudgeMode();
- //void Delay100ms();
- void main()
- {
- TMOD = 0x01;//定時(shí)器0,2工作在模式1 50ms時(shí)基
- TH0 = 0xfc;
- TL0 = 0x18;
- ET0 = 1;
- EA = 1;
- TR0 = 1;
- Go();
- while(1)
- {
- switch(JudgeMode())
- {
- case 0: {
- Turn_Left(0);
- //Delay100ms();
- }break;
- case 1: {
- Turn_Right(0);
- //Delay100ms();
- }break;
- case 2: Stop(); break;
- case 3: Go(); break;
- }
- }
- }
- u8 JudgeMode()//用于判斷小車(chē)此時(shí)狀態(tài)
- {
- if(Left==0&&Right==1)//左側(cè)觸到黑線(xiàn),應(yīng)向左轉(zhuǎn)
- return LEFT;
- if(Left==1&&Right==0)//右側(cè)觸到黑線(xiàn),應(yīng)向右轉(zhuǎn)
- return RIGHT;
- if(Left==0&Right==0)//同時(shí)觸到黑線(xiàn),應(yīng)進(jìn)一步判斷是‘T’型還是‘十’型路況
- return ALL;
- if(Left==1&&Right==1)//沒(méi)有觸到黑線(xiàn),可能正常運(yùn)行,可能小車(chē)跑偏了
- return NONE;
- }
- void Time0(void) interrupt 1 //初定周期200ms,空占比50%
- {
-
- TH0 = 0xfc;
- TL0 = 0x18;
- ++i;
- if(i>=2) //>=2 1/4空占比
- {
- PWM_LEFT = 1;
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
循跡避障小車(chē).rar
(58.16 KB, 下載次數(shù): 121)
2018-7-16 08:20 上傳
點(diǎn)擊文件名下載附件
|
|