基于單片機的多功能智能小車設(shè)計論文
基于單片機的多功能智能小車設(shè)計論文,基于,單片機,多功能,智能,小車,設(shè)計,論文
畢業(yè)設(shè)計(論文)課 題 名 稱 基于單片機智能小車設(shè)計 學(xué) 生 姓 名 學(xué) 號 系、年級專業(yè) 信息工程系08電子科學(xué)與技術(shù) 指 導(dǎo) 教 師 職 稱 講師 2012年5月13日53摘要智能作為現(xiàn)代的新發(fā)明,是以后的發(fā)展方向,他可以按照預(yù)先設(shè)定的模式在一個環(huán)境里自動的運作,不需要人為的管理,可應(yīng)用于科學(xué)勘探等等的用途。智能電動車就是其中的一個體現(xiàn)。本次設(shè)計的簡易智能電動車,采用AT89S52單片機作為小車的檢測和控制核心;采用金屬感應(yīng)器TL-Q5MC來檢測路上感應(yīng)到的鐵片,從而把反饋到的信號送單片機,使單片機按照預(yù)定的工作模式控制小車在各區(qū)域按預(yù)定的速度行駛,并且單片機選擇的工作模式不同也可控制小車順著S形鐵片行駛;采用霍爾元件A44E檢測小車行駛速度;采用1602LCD實時顯示小車行駛的時間,小車停止行駛后,輪流顯示小車行駛時間、行駛距離、平均速度以及各速度區(qū)行駛的時間。本設(shè)計結(jié)構(gòu)簡單,較容易實現(xiàn),但具有高度的智能化、人性化,一定程度體現(xiàn)了智能。關(guān)鍵詞:智能車;AT89S52;單片機 ;金屬感應(yīng)器;霍爾元件;1602LCDABSTRACTSmart as a modern invention, the direction of development in the future, he can in an environment where automatic operation in accordance with the pre-set pattern, no human management can be applied to the use of scientific exploration. Smart electric car is one of expression. The simplicity of the design of intelligent electric car, using AT89S52 MCU core as the detection and control of the car; metal sensor TL-Q5MC to detect the way the sensor to the iron plates, so that the feedback signal to send to the microcontroller, so that microcontroller in accordance with predetermined operating mode to control the car traveling in the regions according to a predetermined speed, and the operating mode selected by the microcontroller to control the car traveling along the S-shaped iron plates; Hall element A44E detect car speed; using 1602LCD real-time display car traveling car to stop driving, take turns to car travel time, travel distance, average speed and velocity zone traveling time. This design is simple, more easy to implement, but are highly intelligent, humane, to some extent reflects the intelligent.Keywords: smart car; AT89S52 is; microcontroller; metal sensors; Hall element; 1602LCD目錄摘要ABSTRACT第1章 設(shè)計任務(wù)11.1 要求1第二章 方案比較與選擇22.1路面檢測模塊22.2 LCD顯示模塊32.3測速模塊32.4控速模塊32.5模式選擇模塊4第3章 程序框圖5第4章 系統(tǒng)的具體設(shè)計與實現(xiàn)74.1路面檢測模塊74.2 LCD顯示模塊74.3測速模塊74.4控速模塊74.5復(fù)位電路模塊74.6模式選擇模塊8第5章 最小系統(tǒng)圖8第6章 最終PCB板圖10總結(jié)12參考文獻13致謝14附錄151 設(shè)計任務(wù)設(shè)計并制作了一個智能電動車,其行駛路線滿足所需的要求。1.1 要求1.1.1 基本要求(1)分區(qū)控制:如(圖1)所示:1.1 車輛從起跑線出發(fā)(出發(fā)前,車體不得超出起跑線)。在第一個路程CD區(qū)(36米)以低速行駛,通過時間不低于10s;第二個路程DE區(qū)(2米)以高速行駛,通過時間不得多于4秒;第三個路程EF區(qū)(36米)以低速行駛,通過時間不低于10s。 (2)小車能自動記錄、顯示行駛時間、行駛距離以及行駛速度,還能記錄每段所走的時間,從而判斷是否符合課程設(shè)計要求。(記錄顯示裝置要求安裝在車上)。1.1.2 發(fā)揮部分S型控制:如(圖2)所示:(圖2)車輛沿著S形鐵片行駛,自動轉(zhuǎn)彎,自動尋找正確方向和鐵片。當(dāng)離開S型鐵片跑道或者感應(yīng)不到鐵片一段時間的時候,小車自動停止,并記錄行駛時間,路程,平均速度并通過LCD顯示出來。第2章 方案比較與選擇根據(jù)設(shè)計任務(wù)要求,并且根據(jù)我們自己的需要而附加的功能,該電路的總體框圖可分為幾個基本的模塊,框圖如(圖3)所示:(圖3)2.1 路面檢測模塊采用鐵片感應(yīng)器TL-Q5MC來檢測路面上的鐵片從而給單片機中斷脈沖。原理圖接線如(圖4)所示:(圖4)2.2 LCD顯示模塊采用1602LCD,由單片機的總線模式連接。為節(jié)約電源電量并且不影響LCD的功能,LCD的背光用單片機進行控制,使LCD的背光在小車行駛的過程中不亮,因為我們不必看其顯示;在其它我們需要看顯示的內(nèi)容的時候LCD背光亮。2.3 測速模塊2.3.1 方案1采用采用霍爾開關(guān)元器件A44E檢測輪子上的小磁鐵從而給單片機中斷脈沖,達到測量速度的作用?;魻栐哂畜w積小,頻率響應(yīng)寬度大,動態(tài)特性好,對外圍電路要求簡單,使用壽命長,價格低廉等特點,電源要求不高,安裝也較為方便?;魻栭_關(guān)只對一定強度的磁場起作用,抗干擾能力強,因此可以在車輪上安裝小磁鐵,而將霍爾器件安裝在固定軸上,通過對脈沖的計數(shù)進行車速測量。2.3.2 方案2采用紅外傳感器進行測速。但無論是反射式紅外傳感器還是對射式紅外傳感器,他們對都對外圍環(huán)境要求較高,易受外部環(huán)境的影響,穩(wěn)定性不高,且價格較為昂貴。通過對方案1、方案2的比較其優(yōu)缺點,綜合多方面因素決定選用方案1,其原理圖接線如(圖5)所示:(圖5)2.4 控速模塊:2.4.1 方案1使用功率三極管作為功率放大器的輸出控制直流電機。線性型驅(qū)動的電路結(jié)構(gòu)和原理簡單,成本低,加速能力強,但功率損耗大,特別是低速大轉(zhuǎn)距運行時,通過電阻R的電流大,發(fā)熱厲害,損耗大,對于小車的長時間運行不利。2.4.2 方案2采用繼電器對電動機的開或關(guān)進行控制,通過開關(guān)的切換對小車的速度進行調(diào)整.此方案的優(yōu)點是電路較為簡單,缺點是繼電器的響應(yīng)時間慢,易損壞,壽命較短,可靠性不高。2.4.3 方案3采用由雙極性管組成的H橋電路。用單片機控制晶體管使之工作在占空比可調(diào)的開關(guān)狀態(tài),精確調(diào)整電機轉(zhuǎn)速。這種電路由于工作在管子的飽和截止模式下,效率非常高;H橋電路保證了可以簡單地實現(xiàn)轉(zhuǎn)速和方向的控制;電子開關(guān)的速度很快,穩(wěn)定性也很高,是一種廣泛采用的調(diào)速技術(shù)。綜合3種方案的優(yōu)缺點,決定選擇方案3,其電路原理圖如(圖6)所示:(圖6)2.5 模式選擇模塊模式選擇模塊通過一個74LS00與非門和兩個不帶鎖按鈕來控制單片機單片機的兩個中斷口,從而按動按鈕來選擇小車走動的路型、來選擇小車的速度是快速、中速、慢速;走完路程小車停止后還可以通過按鈕選擇想要在LCD上想看的信息,比如總時間、走過各段路程的時間、平均速度、總路程等。小車走動的模式選擇有:(1) 直線型:滿足設(shè)計任務(wù)的基本要求,能穩(wěn)定的走完全程。之后按順序循環(huán)不斷的顯示走完全程所用的時間、走完高速區(qū)所用的時間和走完低速區(qū)所用的時間這三個時間;或者可以通過兩個按鈕以及LCD顯示的菜單選擇所要看的內(nèi)容如平均速度、全程距離以及那三個時間。(2) S型:滿足設(shè)計任務(wù)的發(fā)揮部分的要求,小車能自動的感應(yīng)到在前面或在后面鐵片,即第一次轉(zhuǎn)彎后若感應(yīng)到的是錯誤的方向,則小車會后退自動調(diào)整方向,沿著S型的鐵片走。當(dāng)走完S型鐵片后的一定時間里,小車自動停止。之后自動進入菜單由我們自己選擇要看的內(nèi)容時間、平均速度和所走的距離。(3)自動型:小車先以一定的速度走完全程,之后再以一定的速度倒退回起點,再調(diào)整速度在一定的時間內(nèi)走完全程。走完后LCD顯示的內(nèi)容與直線型顯示的內(nèi)容一樣。第3章 程序框圖:單片機主程序框圖、速度感應(yīng)程序框圖和鐵片感應(yīng)程序框圖分別如(圖7)所示。(圖7)第4章 系統(tǒng)的硬件設(shè)計與實現(xiàn)4.1 路面檢測模塊 應(yīng)用一個金屬感應(yīng)器,安裝在車盤下,離地略小于或約四毫米。當(dāng)金屬傳感器檢測到鐵片時將對單片機發(fā)送中斷信號,單片機運行中斷,改變輸給電機驅(qū)動信號的電壓占空比來控制小車的速度。4.2 LCD顯示模塊采用1602LCD,由單片機的總線模式連接。為節(jié)約電源,LCD的背光用單片機進行控制。4.3 測速模塊通過霍爾元件感應(yīng)磁鐵來產(chǎn)生脈沖(當(dāng)霍爾元件在離磁場較近時輸出會是高電平,其它時候是低電平),一個車輪均勻放四個小磁鐵,計算一秒所得的脈沖數(shù),從而計算出一秒小車輪子轉(zhuǎn)動圈數(shù),再測量出小車車輪周長即可計算出小車當(dāng)前速度,累加可得到當(dāng)前路程。4.4 控速模塊考慮到元器件的缺少以及我們所用的電路的驅(qū)動電機的電路原理圖和和小車自帶的電路的電機驅(qū)動原理圖一樣,所以暫時使用小車自帶的電機驅(qū)動電路圖。4.5 復(fù)位電路模塊單片機的復(fù)位電路通過手動來實現(xiàn),復(fù)位電路圖如(圖8)所示。(圖8)4.6 模式選擇模塊:兩個中斷口使用和感應(yīng)鐵片、感應(yīng)速度所使用的中斷口一樣,通過一個與非門和按鈕控制。原理圖如(圖9)所示:(圖9)第5章 最小系統(tǒng)圖 該系統(tǒng)主要用到的是單片機,所以主要的部分是最小系統(tǒng)圖,該最小系統(tǒng)圖如(圖10)所示: 第6章 系統(tǒng)調(diào)試與仿真該最小系統(tǒng)的最終PCB板圖(包括LCD接口以及其他的外部擴展電路部分,考慮到最小系統(tǒng)的簡潔以及容易看懂,外部擴展電路不在最小系統(tǒng)圖上顯示。)分別如(圖11)、(圖12)所示:(圖11)(圖12)總結(jié)在本次設(shè)計中,我學(xué)到了很多沒有接觸到的電子知識,使我的知識有了進一步提升,這次的畢業(yè)設(shè)計,對我今后參加工作是受益匪淺的,特別是老師們的精心指導(dǎo),以及同學(xué)們的耐心幫助,讓我覺得做畢業(yè)設(shè)計是一件可遇而不可求的事情,我也希望,在我今后的工作中能發(fā)揚我們在學(xué)校做畢業(yè)設(shè)計的這種精神,能互相幫助,做事能細心細致,在此,我也感謝李劍老師以及實驗室的老師在設(shè)計中對我們的指導(dǎo)和幫助,十分感謝!參考文獻1胡乾斌等單片微型計算機原理與應(yīng)用華中科技大學(xué)出版社2閻石.數(shù)字電子技術(shù)基礎(chǔ)(第五版).北京.高等教育出版社.20063 皮大熊等.單片機課程設(shè)計實例指導(dǎo),北京,北京理工大學(xué)出版社,2010.4沈紅衛(wèi).單片機應(yīng)用系統(tǒng)設(shè)計實例與分析,北京:北京航空航天大學(xué)出版社.20035 姜志海,黃玉清,劉連鑫單片機原理及應(yīng)用電子工業(yè)出版社6樓然苗,李光飛51系列單片機設(shè)計實例M北京航空航天大學(xué)出版社,20037余家春Protel 99 SE電路設(shè)計實用教程M中國鐵道出版社,20048王為青.單片機Keil Cx51應(yīng)用開發(fā)技術(shù).人民郵電出版社,2007.9 Li gang.51 series microcomputer application skills and system design. Beijing aerospace 11Zhou Jian.microcontroller easy primer. Beijing aerospace university press, 2004.12 胡漢才 單片機原理及其接口技術(shù)M清華大學(xué)出版社,2000年13 曹琳琳 單片機原理及其接口技術(shù)M北京 國防科技大學(xué)出版社,2000年14 許惠民 單片微型計算機原理、接口及應(yīng)用M北京 北京郵電出版社,2000年15 康華光 電子技術(shù)基礎(chǔ)M北京 高等教育出版社,2001年16 孫傳友 測控電路及裝置 北京航空航天出版社,2002年17 華成英 童詩白 模擬電子技術(shù)基礎(chǔ) 第四版 高等教育出版社 2006年18 MaximDS1629 data release bookZ2002致謝經(jīng)過三個月的學(xué)習(xí)和試驗,終于完成了我的畢業(yè)設(shè)計??粗约盒燎诘某晒?,心里非常高興。在這期間遇到了很多從來都沒有遇到過的問題,但是通過自己的努力和老師、同學(xué)的幫助最后把它們一一解決了。其中在李劍老師的精心安排和指導(dǎo)下,對題目有了較深入的理解,也嘗到了電路系統(tǒng)設(shè)計的艱辛。在本次設(shè)計中我在各個環(huán)節(jié)中都做到了深入實際,動手實踐,不僅對我們學(xué)過的理論知識進行了一次全面的復(fù)習(xí)和鞏固,而且還在電子電路、單片機等方面拓展了我們的知識面,為將來的實際工作打下良好的基礎(chǔ),特別是在分析問題,解決問題的方面得到了良好的鍛煉機會,受益匪淺。由于本人水平和經(jīng)驗有限,在設(shè)計的過程中難免存在一些不足甚至一些錯誤,敬請各位老師和同學(xué)批評指正。最后,向我的指導(dǎo)教師李劍老師表示誠摯的感謝,同時,也向幫助過我的同學(xué)們表示感謝!附錄附錄A元件清單:元件數(shù)量AT89S52 單片機1片霍爾元件A44E1個鐵片感應(yīng)器TL-Q5MC1個1602LCD1片小車1部小磁鐵片4片發(fā)光二極管2個帶鎖按鈕2個不帶鎖按鈕3個12MHz晶振1個排阻5101個74ls002個16位排線1條排針若干電阻若干電容若干導(dǎo)線若干附錄B按照預(yù)定的功能,系統(tǒng)實現(xiàn)預(yù)定的功能的程序如下所示:#include #include /* 宏定義區(qū)*/*- LCD模塊 -*/#define LCD_RW P2_6 /讀寫控制端#define LCD_RS P2_7/數(shù)據(jù)命令選擇端#define LCD_E P2_5/執(zhí)行使能端#define LCD_DataP1 /P1口#define Write0x00/低電平寫入#define Read0x01/高電平讀出#define Data0x01/高電平選擇數(shù)據(jù)#define Cmd0x00/低電平選擇命令#define Enable0x00/躍變到低電平時執(zhí)行命令#define Disable0x01 #define True0x01#define False0x00#define LCD_Init0x38/初始化模式#define LCD_DispCtr 0x0C/開顯示及光標(biāo)設(shè)置#define LCD_CloseCtr0x08/關(guān)顯示#define LCD_CLS 0x01/清屏幕#define LCD_EnterSet 0x06/顯示光標(biāo) #define BusyP1_7/忙信號/*- 測速/測距/測時模塊 -*/#define CircleLength0.132/小車轉(zhuǎn)一輪的長度為.132m/*- 控速模塊 -*/#define P03P0_3 /后電機#define P04P0_4 /后電機#define P01 P0_1 /前電機#define P02P0_2 /前電機#define P31P0_5 /控制液晶背光#define P33P3_3/*- 菜單選擇模塊-*/#define Line0x00/0代表直線模式#define Curve0x01/1代表S型模式#define Normal0x00/0 代表正常速度#define Low0x01/1 代表低速#define High0x02/2 代表高速/* 全局函數(shù)聲明區(qū) */*- LCD模塊 -*/void LCDInit(void);/LCD初始化void SetWriteCmd(void);/設(shè)置寫命令模式void SetReadCmd(void);/設(shè)置讀命令模式void SetWriteData(void);/設(shè)置寫數(shù)據(jù)模式void WriteCmd(char cmd);/寫命令void WriteData(char ddata);/寫數(shù)據(jù)void ExecuteCmd(void);/執(zhí)行命令void SetXY(char x,char y);/定位顯示地址void DisplaySingleChar(char x,char y,char cchar);/顯示單個字符void DisplayString(char x,char y,char *str); /顯示一段字符串void Delay(unsigned int time);/延時主程序void DelayUs(unsigned int time);/延時子程序bit IsBusy(void);/判斷忙標(biāo)志函數(shù)void DisplayTime(void);/顯示時間void DisplayAVGSpeed(void);/顯示平均速度void DisplayDistance(void);/顯示路程/*- 測速/測距/測時模塊 -*/ void INTInit(void); /所有中斷初始化void SpeedINT(void); /測速中斷void ComputeTime(void);void ComputeSpeedANDDistance(void);/計算速度和距離/*- 控速模塊 -*/void CtrSpeedINT(void); /控速中斷void Time0INT(void); void Time1INT(void); /控速單位時間中斷void Clock0_Init(void);/時鐘中斷初始化void Clock1_Init(void); /時鐘中斷初始化void CtrSpeed(void);/* 全局變量區(qū)*/float SpeedCount = 0; /測速計數(shù)脈沖float Speed = 0.0;float Distance = 0.0; char Time1INTCount=0;/T1中斷時間計時float PassTime=0.00;/小車行走的時間short IsT0INT=1;bit IsT1INT;/判斷T1是否已經(jīng)響應(yīng)中斷short IsT0INT2=1;char Thx5=0xf4,0xf4,0xc5,0xf4,0xff; /3ms,3ms,15ms,3mschar Tlx5=0x48,0x48,0x68,0x48,0xff;char Thx0=0xd8;char Tlx0=0xf0;char Thx1=0xb1; /20mschar Tlx1=0xe0;short Round=0;short Back=0;short Back0=0;bit Backid;bit Stop=0;char Area0=0;char Area1=0;/區(qū)域變量char LowSpeedArea1StartTime;char LowSpeedArea1EndTime;char HighSpeedAreaEndTime;char LowSpeedArea2EndTime;char LowSpeedArea1PassTime=0; /第一個低速區(qū)通過時間char HighSpeedAreaPassTime=0;/高速區(qū)通過時間char LowSpeedArea2PassTime=0;/第二個低速區(qū)通過時間char ReadyToGo=4;/倒計時char flag;bit Roundid=0;char Nocurve=0; char ChangeFlag;char Mode; bit Running;bit SelectedAll;/模式和速度是否選擇完畢標(biāo)志bit IsSelectingMode;/模式選擇標(biāo)志bit IsSelectingSpeed;/速度選擇標(biāo)志bit ModeSelected;/已經(jīng)被選擇的模式標(biāo)志char SelectedMode=10;/模式選擇是否完畢標(biāo)志bit Next;/Next鍵標(biāo)志bit SpeedSelected;/已經(jīng)被選中的速度方案標(biāo)志char SelectedSpeed;/速度選擇是否完畢標(biāo)志bit ChoosingDisplay;/人工選擇菜單開始標(biāo)志bit SelectedShow;/顯示選擇標(biāo)志bit SelectedReturn;/返回選擇標(biāo)志bit Selected;/確定/返回鍵選擇標(biāo)志bit ReturnSelection;/返回鍵啟用標(biāo)志bit AVGSpeedShow;/平均速度顯示標(biāo)志bit TotalDistanceShow;/總路程顯示標(biāo)志bit ReturnMain;/返回主菜單標(biāo)志bit AutoDisplay;/自動顯示標(biāo)志bit GoToChoosingDisplay;/人工選擇標(biāo)志bit AutoMode=0;char PassLineID=0;char PassLine=0;float PrepareDistance;float FirstDistance;float SecondDistance;float ThirdDistance;int FirstHigh;int SecondHigh;int ThirdHigh;float Rate=1.25; /5ms時的速度float Count=4;/時間的倍數(shù)/* 全局函數(shù)實現(xiàn)區(qū)*/*-主函數(shù) -*/void main() P01=0;P02=0;P03=0;P04=0;P31=1;/單片機復(fù)位,背光開Delay(40);/延時等待LCD啟動LCDInit();/初始化LCDDisplayString(0x0,0, Starting. );DisplayString(0x0,1,Designed By 202);Delay(300);WriteCmd(LCD_CLS);EA=1; /開總中斷EX0=1;/開INT0中斷IT0=1;/INTO邊沿觸發(fā)EX1=1; /開INT1中斷IT1=1; /INT1邊沿觸發(fā)SelectedAll=False; /開始模式和速度選擇/*- 模式選擇 -*/DisplayString(0x0,0,Choose The Mode );DisplayString(0x0,1,you want. );Delay(50);WriteCmd(LCD_CLS);IsSelectingMode=True;while(1) WriteCmd(LCD_CLS);DisplayString(0x0,0, Line Mode );DisplayString(0x0,1,Next Yes);Delay(300);/延時消除抖動while (1) /不斷檢測中斷,直到按確定鍵或是NEXT鍵if (Next=True)/如果按Next鍵則直接跳出break;if (ModeSelected=True)/如果按確定鍵則設(shè)置模式為Line并跳出SelectedMode=Line;break;/如果什么鍵都沒有按下,那么一直顯示等待if (ModeSelected=True)/按下了確定鍵,退出模式選擇IsSelectingMode=False;break;if (Next=True)/按下了Next鍵,顯示下一個菜單項Next=False;WriteCmd(LCD_CLS);DisplayString(0x0,0, Curve Mode );DisplayString(0x0,1,Next Yes);Delay(300);/延時消除抖動while(1)/不斷檢測中斷,直到按確定鍵或是Next鍵 if (Next=True)/如果再一次按下Next鍵,則跳出break;if (ModeSelected=True)/如果按下確定鍵,則設(shè)置模式為Curve,并跳出SelectedMode=Curve;break; if (ModeSelected=True) /按下了確定鍵,退出模式選擇IsSelectingMode=False;break;if (Next=True)/再一次按下了Next鍵,則循環(huán)模式選擇Next=False;WriteCmd(LCD_CLS);DisplayString(0x0,0, AutoMode );DisplayString(0x0,1,Next Yes);Delay(300); /延時消除抖動while(1)if (Next=True)break;if (ModeSelected=True)AutoMode=1;break;if (ModeSelected=True)IsSelectingMode=False;break;if (Next=True)Next=False;continue;Delay(50);WriteCmd(LCD_CLS); /*- 速度選擇 -*/if (SelectedMode=Line & AutoMode=0)DisplayString(0x0,0, Now Choose a );DisplayString(0x0,1, kind of Speed );Delay(50);WriteCmd(LCD_CLS);IsSelectingSpeed=True;while(1)WriteCmd(LCD_CLS);DisplayString(0x0,0, Normal Speed );DisplayString(0x0,1,Next Yes);Delay(300); /延時消除抖動while(1)if (Next=True) /如果按Next鍵則直接跳出break;if (SpeedSelected=True) /如果按確定鍵則設(shè)置速度為Normal并跳出Thx0=0xec;Tlx0=0x78; /5msThx1=0xf0;Tlx1=0x60; /4msThx2=0x8a;Tlx2=0xd0; /30msThx3=0xf4;Tlx3=0x48; /3msSelectedSpeed=Normal;break; /如果什么鍵都沒有按下,那么一直顯示等待if (SpeedSelected=True) /按下了確定鍵,退出速度選擇IsSelectingSpeed=False;break;if (Next=True)Next=False;WriteCmd(LCD_CLS); DisplayString(0x0,0, Low Speed );DisplayString(0x0,1,Next Yes);Delay(300); /延時消除抖動while(1)if (Next=True)/如果再一次按下Next鍵,則跳出break;if (SpeedSelected=True)/如果按下確定鍵,則設(shè)置速度為Low,并跳出SelectedSpeed=Low;/這里沒有速度設(shè)置,因為默認速度就是Lowbreak;if (SpeedSelected=True)/按下了確定鍵,退出速度選擇IsSelectingSpeed=False;break;if (Next=True)Next=False;WriteCmd(LCD_CLS);DisplayString(0x0,0, High Speed );DisplayString(0x0,1,Next Yes);Delay(300); /延時消除抖動while(1)if (Next=True) /如果再一次按下Next鍵,則跳出break;if (SpeedSelected=True) /如果按下確定鍵,則設(shè)置速度為High,并跳出Thx0=0xe0;Tlx0=0xc0; /8ms Thx1=0xe0;Tlx1=0xc0; /8ms Thx2=0x63;Tlx2=0xc0; /40ms Thx3=0xec;Tlx3=0x78; /5msSelectedSpeed=High;break;if (SpeedSelected=True) /按下了確定鍵,退出速度選擇IsSelectingSpeed=False;break;if (Next=True) /再一次按下了Next鍵,則循環(huán)速度選擇Next=False;continue;SelectedAll=True; /標(biāo)志模式選擇和速度選擇完畢Running=True;Delay(50);WriteCmd(LCD_CLS);/*- 顯示所選擇的模式和速度方案 -*/if (SelectedMode=Line)DisplayString(0x0,0,Choosen Mode is );DisplayString(0x0,1, Line );Delay(50);WriteCmd(LCD_CLS);if (SelectedMode=Curve)DisplayString(0x0,0,Choosen Mode is );DisplayString(0x0,1, Curve );Delay(50);WriteCmd(LCD_CLS);if (AutoMode=1)DisplayString(0x0,0,Choosen Mode is );DisplayString(0x0,1, AutoMode );Delay(50);WriteCmd(LCD_CLS); if (SelectedMode=Line)if (SelectedSpeed=Normal)DisplayString(0x0,0,Choosen Speed is);DisplayString(0x0,1, Normal );Delay(50);WriteCmd(LCD_CLS);if (SelectedSpeed=Low)DisplayString(0x0,0,Choosen Speed is);DisplayString(0x0,1, Low );Delay(50);WriteCmd(LCD_CLS);if (SelectedSpeed=High)DisplayString(0x0,0,Choosen Speed is);DisplayString(0x0,1, High );Delay(50);WriteCmd(LCD_CLS);INTInit(); /初始化所有中斷DisplayString(0x0,0,Left Times To Go);while (ReadyToGo-) DisplaySingleChar(0x7,1,ReadyToGo+0x30);DisplaySingleChar(0x09,1,s);Delay(300);WriteCmd(LCD_CLS);DisplayString(0x05,0,Go!);Delay(100);WriteCmd(LCD_CLS);DisplayString(0x0,0, Living. );DisplayString(0x0,1,Designed by 202);if (SelectedMode=Line&AutoMode=0)flag=Area0;else flag=1;while(flag5) if(AutoMode=1) /自動模式 switch(PassLineID) case 0 : if(IsT0INT=1) P01=P02=P04=0;P03=1; else P01=P02=P03=P04=0; break; case 1 : P01=P02=P03=0;P04=1; break; case 2 : P01=P02=P04=0;P03=1; break; default :break; else if(SelectedMode=Line) /直線模式 flag=Area0; if(IsT0INT=1) P03=1;P04=0;P01=P02=0; else P03=0;P04=0;P01=P02=0; else /S型模式 if(Nocurve0)&Back!=0) if(Backid=1) P01=1;P02=0;P03=0;P04=1; else P01=0;P02=1;P03=0;P04=1; Back=1; else if(Round=0) if(IsT0INT2=1) P01=0;P02=0;P03=1
收藏