PWM調(diào)速循跡智能小車程序精編_第1頁
PWM調(diào)速循跡智能小車程序精編_第2頁
PWM調(diào)速循跡智能小車程序精編_第3頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、PWM調(diào)速循跡智能小車程序精編32m/*控速模塊*/#defineP03 P0_3 );DisplayString(0x0, 1, DesignedBy202); Delay (300);WriteCmd(LCD_CLS);EA二 1; );Delay (50);WriteCmd(LCD_CLS);IsSelectingMode二True;wh訂e (1)WriteCmd(LCD_CLS);DisplayString(0x0, 0, LineMode “);DisplayString(0x0, 1, "Next Yes);Delay (300):“);DisplayString(0x

2、0, 1, Designedby202); if(SelectedMode=Line&&AutoMode=0) flag=AreaO;elseflag=l;while (flag<5)if(AutoMode二二1);DisplaySingleChar(0x07, 1, PassTime2);DisplaySingleChar(0x08, 1, PassTime3);elseDisplaySingleChar(0x04, 1, PassTimel);DisplaySingleChar(0x05, 1, PassTime2);DisplaySingleChar (0x06,1

3、,');DisplaySingleChar(0x07, 1, PassTime3);DisplaySingleChar(0x08, 1, PassTime4);/*顯示平均速度*/voidDisplayAVGSpeed(void)intSpeedl二0x30;DisplaySingleChar(0x07, 1, Speed2);DisplaySingleChar(0x08, 1, Speed3);*/ voidDisplayDistance(void)intDistance1=0x30;intDistance2=0x30;intDistance3二0x30;intDistance4=0

4、x30;if (int) (DistancelOO)<100)Distancel+二0;Distance2+=(int) (Distance*100)/10;Distance3+=(int) (Distance*100)%10;elseif (int) (DistancelOO)>100&&(int)(DistancelOO)<1000)Distancel+=(int) (Distance*100)/100;Distance2+=(int) (Distance*100)/10%10;Distance3+=(int) (Distance*100)%10;else

5、 Distancel+=(int)(Distance*100)/1000; Distance2+=(int)(Distance*100)/100%10: Distance3+=(int)(Distance*100)/10%10;Distance4+=(int) (Distance*100)%10;if (int) (DistancelOO)<1000)DisplaySingleChar(0x05, 1, Distancel);DisplaySingleChar (0x06,1,');DisplaySingleChar(0x07, 1, Distance2);DisplaySing

6、leChar(0x08, 1, Distance3);elseDisplaySingleChar(0x04, 1, Distancel);DisplaySingleChar(0x05, 1, Distance2);DisplaySingleChar(0x06, 1,');DisplaySingleChar(0x07, 1, Distance3);DisplaySingleChar(0x08, 1, Distance4);*/ voidINTInit(void)EA=1; 開總中斷ITO=1; /INTO邊沿觸發(fā)PXO=1; /INTO優(yōu)先級為高級EX1=1; 開 INTI 中斷IT1二

7、1; /INT1邊沿觸發(fā)PX1=1; /INTI優(yōu)先級為高級ClockO_Init(); /初始化時(shí)鐘中斷TM0D=0xll; /T0/T1 定時(shí)方式 1ETO二0x01; /開 T0 中斷ETl=0x01; 開 T1 中斷voidClockO_Init(void)TR0=0x01; 啟動(dòng) TOTHO二ThxO; /定時(shí)初值TLO=TlxO;voidClockl_Init(void)TR1 二0x01; 啟動(dòng) T1THl=0x3C; 定時(shí)初值-50ms中斷一次TLl=0x0B0;/<y<y<y彳、彳*.、r、r、r、r、r、叫、r、r、叫、叫、r、"卜 叫叫、&qu

8、ot;卜 叫、"卜 叫、"卜 叫、叫、叫、"卜 叮、叫叫、*中斷處理程序*>£ >r >V# >!# %T >!# >!# %T >!# %T >!# %T >!# %T >!# %T >!xl#T #T%#T> #T #T #T #T #T #T #T #T #T #T #T #T #T #T #77£x %ix £xixki>、*.、x.xx.> XaX xTx x<x"卜 “卜"、"卜卜"卜"

9、;、"卜"、"卜卜"卜.卜卜、"卜/#7x #Tx #Tx <TS#7/*外部中斷0* 外部中斷0有兩個(gè)功能(1) 作為菜單選擇的Next鍵(2) 作為測速的計(jì)數(shù)器*/voidSpeedINT (void) interruptO /中斷 INTOif (SelectedAll=False) /如果模式和速度還沒有選擇完 畢,則此中斷作為Next 鍵Next=True;if(Running=True) /如果模式和速度已經(jīng)選擇完畢,則 此中斷作為測速中斷SpeedCount+;if (ChoosingDisp 1 ay=True) /如果是

10、在選擇要顯示的內(nèi)容Next=True;/*外部中斷外部中斷1有兩個(gè)功能(1) 作為菜單選擇的確定鍵/返回鍵(2) 控速*/voidCtrSpeedINT (void) interrupt2 /中斷 INTI if (SelectedAll=False) /如果模式和速度還沒有選擇完 畢,則此中斷作為確定鍵if(IsSelectingMode=True) /模式選擇標(biāo)志ModeSelected二True;if(IsSelectingSpeed=True) /速度選擇標(biāo)志SpeedSelected二True;if (Running=True) /如果模式和速度選擇已經(jīng)完畢,則 此中斷作為控速中斷i

11、f(AreaO-O) 經(jīng)過第一條鐵線(即起跑線),開始計(jì) 時(shí),開始測速EXO=1;Clockl_Init ();P31二0; 過起跑線,背光滅if (Area0=l)LowSpeedArealStartTime=PassTime; /讀取進(jìn)入第一個(gè)低 速區(qū)的時(shí)刻if(AreaO=2)LowSpeedArealEndT ime=PassT ime: /讀取離開第一個(gè)低速 區(qū)的時(shí)刻,也就是進(jìn)入高速區(qū)的時(shí)刻if(AreaO=3)HighSpeedAreaEndT ime=PassTime: / / 讀取離開高速區(qū)的時(shí) 刻,也就是進(jìn)入第二個(gè)低速區(qū)的時(shí)刻if(AreaO=4)LowSpeedArea2E

12、ndTime=PassTime: /讀取離開第二個(gè)低速去的時(shí)刻if (AutoMode=l) /自動(dòng)模式PassLine+;switch(PassLine)case5 :PassLineID=l:break;caselO:PassLineID=2;break;default:PassLineID=PassLineID;break;else if (SelectedMode二二Line) /直線模式 ThxO=ThxAreaO+;TlxO=TlxAreal+;if (Area0=5)EXI二0;else /S型模式Nocurve+;Round+;if (Roundid=二1&&R

13、ound=2)Round+;Roundid=0;Back=0;Back0=0;EXI二0;IE1=O;if(AutoDisplay=True)GoToChoosingDisplay=True;if (ChoosingDisp1ay=True)SelectedShow二True;SelectedReturn二True;Selected二True;/*TO中斷*TO中斷用來輸出方波以控制速度*/ voidTimeOINT (void) interruptl /TO 中斷 if(AutoMode=l)IsTOINT*二1;switch(PassLine) case2 :PrepareDistance

14、=Distance;break;case3 :FirstDistance二Distance-PrepareDistance;break;case4 :SecondDistance二Distance-PrepareDistance-FirstDistance;break;case5 :ThirdDistance=Distance-PrepareDistance-FirstDistance-SecondDistance;break;defauIt:break;switch(PassLinelD)caseO :if(IsTOINT二二1)TR0=0x01;TH0=0xec;TL0=0x78; /5m

15、selseTR0=0x01;TH0=0xb1;TL0=0xe0; /20msbreak;easel :if (PassLine=5)FirstHigh=(int) (65536-20*FirstDistance/ (15*Count*Rate-FirstDistance)*1000);SecondHigh=(int)(65536-20*SecondDistance/ (15*Rate-SecondDistance)*1000);ThirdHigh=(int)(65536-20*FirstDistance/(15*Count*Rate-FirstDistance)*1000);TRO二0x01;

16、TH0=0xf4;TL0=0x48;break;case2 :AutoMode二0;SelectedMode二Line;Area0=Areal=0;PassTime=0;Distance=0;TR0=0x01;TH0=0xf4;TL0=0x48;Thx0=Thx1 = (FirstHigh &OxfO)>>8);Tlx0=Tlxl=(FirstHigh&0x0f);Thx2 =Thx2 = (SecondHigh&Oxf0)»8) :Tlx2=Tlx2 = (SecondHigh&OxOf);Thx3=Thx3 = (ThirdHigh &

17、amp;0xf0)»8) ; Tlx 3 =Tlx 3 = (ThirdHigh&OxOf);Thx4=Thx4=0xff;Tlx4=Tlx4=0xff;break;defauIt:break;elseif (SelectedMode二二Line)IsTOINT*二-1;if (Area0<5)if(IsTOINT=l)ClockO_Init ();elseTRO二0x01; 啟動(dòng) TOTHO二Thxl; /定時(shí)初值TL0=Tlxl;elseIsT0INT=-l;elseIsT0INT2*=-l;if(IsT0INT2=l)TRO=OxO1;TH0=0xd8;TLO=OxfO; /10ms elseTR0=0x01;TH0=0xb1;TL0=0xe0; /20msBack+;if (Back二90)Back0=70;if(Nocurve<2)&&(Back0>0)&&Back!=0)if(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論