![智能小車程序_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/11/82a44d45-8517-40bc-bd6a-de08d9e79347/82a44d45-8517-40bc-bd6a-de08d9e793471.gif)
![智能小車程序_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/11/82a44d45-8517-40bc-bd6a-de08d9e79347/82a44d45-8517-40bc-bd6a-de08d9e793472.gif)
![智能小車程序_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/11/82a44d45-8517-40bc-bd6a-de08d9e79347/82a44d45-8517-40bc-bd6a-de08d9e793473.gif)
![智能小車程序_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/11/82a44d45-8517-40bc-bd6a-de08d9e79347/82a44d45-8517-40bc-bd6a-de08d9e793474.gif)
![智能小車程序_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/11/82a44d45-8517-40bc-bd6a-de08d9e79347/82a44d45-8517-40bc-bd6a-de08d9e793475.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、智能小車程序默認(rèn)分類 2009-08-24 09:32 閱讀367 評(píng)論5 字號(hào): 大大 中中 小小 #include "reg52.h"#define det_Dist 2.55 /單個(gè)脈沖對(duì)應(yīng)的小車行走距離,其值為車輪周長(zhǎng)/4#define RD 9 /小車對(duì)角軸長(zhǎng)度#define PI 3.1415926#define ANG_90 90#define ANG_90_T 102#define
2、 ANG_180 189/*=全局變量定義區(qū)=*/sbit P10=P10; /控制繼電器的開閉sbit P11=P11; /控制金屬接近開關(guān)sbit P12=P12; /控制顏色傳感器的開閉sbit P07=P07; /控制聲光信號(hào)的開啟sbit P26=P26; /接收顏色傳感器的信號(hào),白為0,黑為1sbit P24=P24; /左 sbit P25=P25; /右 接收左右光傳感器的信號(hào),有光為0unsigned char mType=0; /設(shè)置運(yùn)動(dòng)的方式,0 向前 1 向左 2 向后 3 向右unsigned char Direction=0; /小車的即時(shí)朝向 0 朝上 1 朝左
3、2 朝下 3 朝右unsigned sX=50; unsigned char sY=0; /小車的相對(duì)右下角的坐標(biāo) CM(sX,sY)unsigned char StartTask=0; /獲得鐵片后開始執(zhí)行返回卸貨任務(wù),StartTask置一unsigned char Inter_EX0=0; / 完成一個(gè)完整的任務(wù)期間只能有一次外部中斷 / Inter_EX0記錄外部中斷0的中斷狀態(tài)
4、60; / 0 動(dòng)作最近的前一次未中斷過, / 1 動(dòng)作最近的前一次中斷過unsigned char cntIorn=0; /鐵片數(shù)unsigned char bkAim=2; /回程目的地,0為A倉庫,1為B倉庫,2為停車場(chǎng), /(在MAIN中接受鐵片顏色判斷傳感器的信號(hào)來賦值)unsigned
5、 char Light_Flag=0;/進(jìn)入光引導(dǎo)區(qū)的標(biāo)志(1)unsigned int cntTime_5Min=0;/時(shí)間周期數(shù),用于 T0 精確定時(shí)unsigned int cntTime_Plues=0; /霍爾開關(guān)產(chǎn)生的脈沖數(shù)/*=全局變量定義區(qū)=*/*-*/*-通用延遲程序-*/*-*/void delay(unsigned int time) / time*0.5ms延時(shí)unsigned int i,j;for(j=0;j<time;j+) &
6、#160; for(i=0;i<60;i+);/*-*/*-顯示控制模塊-*/*-*/*數(shù)碼管顯示,顯示鐵片的數(shù)目(設(shè)接在P0,共陰)*/void Display(unsigned char n) char Numb12=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x37,0x77;P0=Numbn;/*-*/*-傳感器模塊-*/*-*/*光源檢測(cè)程序: */*用于糾正小車運(yùn)行路線的正確性*/unsigned c
7、har LightSeek() void Display(unsigned char);bit l,r;l=P24;r=P25;if(l=0&&r=1) /Display(1); return (3); /偏左,向右開 if(r=0&&l=1)
8、0; /Display(3); return(1); /偏右,向左開 if(l=1&&r=1)|(l=0&&r=0) /Display(9); return(0); /沒有偏離,前進(jìn) /*鐵片檢測(cè)程序:
9、60; */*判斷鐵片的顏色,設(shè)定bkAim,0為A倉庫,1為B倉庫,2為停車場(chǎng)*/void IornColor() delay(4000); bkAim=(int)(P26); Display(int)(P26)+2);/*-*/*-運(yùn)動(dòng)控制模塊-*/*-*/*=基本動(dòng)作層:完成基本運(yùn)動(dòng)動(dòng)作的程序集=*/*運(yùn)動(dòng)調(diào)整程序:
10、; */*對(duì)小車的運(yùn)動(dòng)進(jìn)行微調(diào)*/void ctrMotor_Adjust(unsigned char t)if(t=0) P2=P2&240|11; /用來解決兩電機(jī)不對(duì)稱的問題 delay(6); if(t=3) P2=P2&2
11、50; /向左走 delay(1); if(t=1) P2=(P2&245); delay(1); /向右走 P2=(P2&240)|15);delay(10);/*直走程序:
12、; */*控制小車運(yùn)動(dòng)距離,dist為運(yùn)動(dòng)距離(cm),type為運(yùn)動(dòng)方式(0 2)*/*只改變小車sX 和 sY的值而不改變Direction的值. */void ctrMotor_Dist(float dist,unsigned char type) unsigned char t=0;mType=type;P2=(P2&240)|15);cntTime_Plues=(
13、int)(dist/det_Dist);while(cntTime_Plues) if(Inter_EX0=1&&StartTask=0) cntTime_Plues=0;
14、 break; if(Light_Flag=1) t=LightSeek(); if(type=0) /向前走 P2=P2&249;
15、; delay(40); ctrMotor_Adjust(t); if(type=2) /向后退 P2=P2&246; delay(50);
16、160; ctrMotor_Adjust(t); P2=(P2&240)|15); if(mType=2) delay(60);/剎車制動(dòng) 0.5ms else delay(75); /*拐彎程序:
17、0; */*控制小車運(yùn)動(dòng)角度,type為運(yùn)動(dòng)方式(1 3) */*只改變小車Direction的值而不改變sX 和 sY的值*/void ctrMotor_Ang(unsigned char ang,unsigned char type,unsigned char dir) unsigned char i=0;mType=type;P2=(P2&240)|15);cntTime_Plues=(int)(PI*RD*90/(180*det_Dist)*1.2)*ang/90);wh
18、ile(cntTime_Plues) if(Inter_EX0=1&&StartTask=0) cntTime_Plues=0;
19、60; break; if(type=1) /向左走 P2=P2&250; delay(100); ctrMotor_Adjust(0);
20、60; if(type=3) /向右走 P2=P2&245; delay(100); ctrMotor_Adjust(0); P2=(P2&240)
21、|15); delay(50);/剎車制動(dòng) 0.5ms if(!(Inter_EX0=1&&StartTask=0) Direction=dir; &
22、#160; /*=基本路線層:描述小車基本運(yùn)動(dòng)路線的程序集=*/*當(dāng)小車到達(dá)倉庫或停車場(chǎng)時(shí),放下鐵片或停車(0,1為倉庫,2為停車場(chǎng))*/void rchPlace() unsigned int time,b,s,g;time=(int)(cntTime_5Min*0.065535);/只有一個(gè)數(shù)碼管時(shí),輪流顯示全過程秒數(shù) 個(gè) 十 百b=time%100;s=(time-b*100)%100;g=(time-b*100-s*10)%10;if(bkAim=2) /到達(dá)停車場(chǎng)了,停車 &
23、#160; EA=0; P2=(P2&240)|15); while(1) Display(10); /N delay(2000); &
24、#160; Display(cntIorn); delay(2000); Display(11);/A delay(2000); Display(b);
25、160; delay(2000); Display(s); delay(2000); Display(g); delay(2000); else
26、60; if(Inter_EX0=1&&StartTask=1)P10=0; /到達(dá)倉庫,卸下鐵片 /*無任務(wù)模式: */*設(shè)置小車的固定運(yùn)動(dòng)路線,未發(fā)現(xiàn)鐵片時(shí)的運(yùn)動(dòng)路線*/void BasicRoute()
27、 /Light_Flag=1; ctrMotor_Dist(153,0); /Light_Flag=0; ctrMotor_Ang(ANG_90,1,1); ctrMotor_Dist(100-sX,0);ctrMotor_Dist(125,2);
28、160; ctrMotor_Dist(73,0); ctrMotor_Ang(ANG_90,1,2); /Light_Flag=1; ctrMotor_Dist(153,0); /Light_Flag=0;
29、; ctrMotor_Ang(ANG_180,1,0); rchPlace(); /*任務(wù)模式: */*設(shè)置小車的發(fā)現(xiàn)鐵片后的運(yùn)動(dòng)路線*/void TaskRoute()/基本運(yùn)行路線表,記載拐彎 0 向前 1 左拐 2 向后 3 右拐,正讀去A區(qū);反讀去B區(qū)StartTask=1;ctrMotor_Ang(ANG_90_T,1,2);if(bkAim=1)
30、 /倉庫A ctrMotor_Dist(10,0); P2=(P2&240)|15); delay(60); ctrMotor_Ang(ANG_90_T,1,3);
31、60; ctrMotor_Dist(100-sX,2); ctrMotor_Ang(ANG_90_T,1,2); Light_Flag=1; ctrMotor_Dist(153,2); Light_Flag=0;
32、160; / ctrMotor_Ang(208,1,0); else if(bkAim=0) /倉庫B ctrMotor_Dist(10,0
33、); P2=(P2&240)|15); delay(60); ctrMotor_Ang(ANG_90_T,1,3); ctrMotor_Dist(100-sX,0);
34、60; ctrMotor_Ang(ANG_90_T,1,0); Light_Flag=1; ctrMotor_Dist(153,2);
35、; Light_Flag=0; /ctrMotor_Ang(208,1,0); delay(5000); rchPlace();/*-*/*
36、-主程序段-*/*-*/void main()delay(4000);P2=0xff; /初始化端口P07=0; P1=0;TMOD=0x01; /初始化定時(shí)器0/1 及其中斷TL0=0; TH0=0;TR0=1;ET0=1;ET1=1;IT0=1; /初始化外部中斷EX0=1;IT1=1;EX1=1;EA=1;P11=1;while(1) Display(cntIorn); &
37、#160; bkAim=2; BasicRoute(); if(Inter_EX0=1) TaskRoute();/按獲得鐵片后的路線運(yùn)動(dòng) IE0=0; EX0=1;
38、0; Inter_EX0=0; /*-*/*-中斷程序段-*/*-*/*定時(shí)器0中斷程序: */*當(dāng)時(shí)間過了5分鐘,則就地停車并進(jìn)入休眠狀態(tài)*/void tmOver(void) interrupt 1cntTime_5Min+;TL0=0;TH0=0;if(cntTime_5Min>=4520) &
39、#160; Display(5); P2=(P2&240)|15); EA=0; /停車程序 P07=1;delay(4000);PCON=0X00;while(1); /*外部中斷0中斷程序:
40、 */*發(fā)現(xiàn)鐵片,發(fā)出聲光信號(hào)并將鐵片吸起,發(fā)光二極管和蜂鳴器*/*并聯(lián)在一起(設(shè)接在P07). 0為A倉庫,1為B倉庫,2為停車場(chǎng)*/void fndIorn(void) interrupt 0 unsigned char i;P10=1; P2=(P2&240)|15); /停車P07=1;delay(1000);/剎車制動(dòng) 0.5msP07=0;Inter_EX0=1;cntIorn+;Display(cntIorn);for(i=0;i<40
41、;i+) P2=P2&249; delay(2); P2=(P2&240)|15); delay(2); P2=P2&249;delay(100);P2=(P2&240)|15); /停車IornColor();
42、60; /判斷鐵片黑白,設(shè)置bkAimfor(i=0;i<95;i+) P2=P2&249; delay(3); P2=(P2&240)|15); delay(2); P2=(P2&240)|15); /停車
43、delay(4000); /把鐵片吸起來 EX0=0;/*外部中斷1中斷程序: */*對(duì)霍爾開關(guān)的脈沖記數(shù),對(duì)小車的位置進(jìn)行記錄,以便對(duì)小車進(jìn)行定位*/void stpMove(void) interrupt 2 cntTime_Plues-;if(Direction=0) /向上
44、160; if(mType=0) sY+=det_Dist; else if(mType=2) sY-=det_Dist; else if(Direction=1) &
45、#160; /向左 if(mType=0) sX+=det_Dist; else if(mType=2) sX-=det_Dist;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 運(yùn)輸合同范本匯編
- 簡(jiǎn)單外腳手架承包合同
- 建設(shè)工程施工合同范本模板
- 社區(qū)治理數(shù)字化升級(jí)戰(zhàn)略協(xié)議
- 會(huì)議活動(dòng)策劃執(zhí)行合同
- 出樣合作協(xié)議書
- 買苗木采購簡(jiǎn)單合同范本
- 圓鋼購銷合同
- 洗車服務(wù)合同
- 無共同財(cái)產(chǎn)分割離婚協(xié)議書
- 特殊感染手術(shù)管理考試試題及答案
- 旅館治安管理制度及突發(fā)事件應(yīng)急方案三篇
- 土地增值稅清算底稿中稅協(xié)版
- 監(jiān)理項(xiàng)目部基本設(shè)備配置清單
- 小區(qū)綠化養(yǎng)護(hù)方案及報(bào)價(jià)(三篇)
- 中小學(xué)德育工作指南考核試題及答案
- GB/T 13024-2003箱紙板
- 2023年上海各區(qū)初三數(shù)學(xué)一模卷
- GB 1886.232-2016食品安全國家標(biāo)準(zhǔn)食品添加劑羧甲基纖維素鈉
- 《港口管理》課件綜述
- 湖北工業(yè)大學(xué)學(xué)報(bào)投稿模板
評(píng)論
0/150
提交評(píng)論