2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  摘 要</p><p>  (關(guān)鍵詞:智能車(chē) AT89S52 單片機(jī) 金屬感應(yīng)器 霍爾元件 1602LCD)</p><p>  智能作為現(xiàn)代的新發(fā)明,是以后的發(fā)展方向,他可以按照預(yù)先設(shè)定的模式在一個(gè)環(huán)境里自動(dòng)的運(yùn)作,不需要人為的管理,可應(yīng)用于科學(xué)勘探等等的用途。智能電動(dòng)車(chē)就是其中的一個(gè)體現(xiàn)。本次設(shè)計(jì)的簡(jiǎn)易智能電動(dòng)車(chē),采用A

2、T89S52單片機(jī)作為小車(chē)的檢測(cè)和控制核心;采用金屬感應(yīng)器TL-Q5MC來(lái)檢測(cè)路上感應(yīng)到的鐵片,從而把反饋到的信號(hào)送單片機(jī),使單片機(jī)按照預(yù)定的工作模式控制小車(chē)在各區(qū)域按預(yù)定的速度行駛,并且單片機(jī)選擇的工作模式不同也可控制小車(chē)順著S形鐵片行駛;采用霍爾元件A44E檢測(cè)小車(chē)行駛速度;采用1602LCD實(shí)時(shí)顯示小車(chē)行駛的時(shí)間,小車(chē)停止行駛后,輪流顯示小車(chē)行駛時(shí)間、行駛距離、平均速度以及各速度區(qū)行駛的時(shí)間。本設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單,較容易實(shí)現(xiàn),但具有高度

3、的智能化、人性化,一定程度體現(xiàn)了智能。</p><p>  目 錄</p><p>  1 設(shè)計(jì)任務(wù)………………………………………………………………………………3</p><p>  1.1 要求………………………………………………………………………………3</p><p>  2 方案比較與選擇…………………………………………

4、……………………………4</p><p>  2.1路面檢測(cè)模塊………………………………………………………………………4</p><p>  2.2 LCD顯示模塊………………………………………………………………………5</p><p>  2.3測(cè)速模塊……………………………………………………………………………5</p><p>  2.4

5、控速模塊……………………………………………………………………………6</p><p>  2.5模式選擇模塊………………………………………………………………………7</p><p>  3 程序框圖………………………………………………………………………………7</p><p>  4 系統(tǒng)的具體設(shè)計(jì)與實(shí)現(xiàn)………………………………………………………………9</p

6、><p>  4.1路面檢測(cè)模塊………………………………………………………………………9</p><p>  4.2 LCD顯示模塊………………………………………………………………………9</p><p>  4.3測(cè)速模塊……………………………………………………………………………9</p><p>  4.4控速模塊……………………………………

7、………………………………………9</p><p>  4.5復(fù)位電路模塊………………………………………………………………………9</p><p>  4.6模式選擇模塊………………………………………………………………………9</p><p>  5 最小系統(tǒng)圖……………………………………………………………………………10</p><p>  

8、6 最終PCB板圖…………………………………………………………………………12</p><p>  7 系統(tǒng)程序………………………………………………………………………………13</p><p>  8 致謝……………………………………………………………………………………46</p><p>  9 參考文獻(xiàn)……………………………………………………………………………4

9、7</p><p>  10 附錄…………………………………………………………………………………48</p><p><b>  1. 設(shè)計(jì)任務(wù):</b></p><p>  設(shè)計(jì)并制作了一個(gè)智能電動(dòng)車(chē),其行駛路線滿足所需的要求。</p><p><b>  1.1 要求:</b></p>

10、;<p>  1.1.1 基本要求:</p><p><b> ?。?)分區(qū)控制:</b></p><p><b>  如(圖1)所示:</b></p><p><b> ?。▓D1)</b></p><p>  車(chē)輛從起跑線出發(fā)(出發(fā)前,車(chē)體不得超出起跑線)。在第

11、一個(gè)路程C~D區(qū)(3~6米)以低速行駛,通過(guò)時(shí)間不低于10s;第二個(gè)路程D~E區(qū)(2米)以高速行駛,通過(guò)時(shí)間不得多于4秒;第三個(gè)路程E~F區(qū)(3~6米)以低速行駛,通過(guò)時(shí)間不低于10s。</p><p> ?。?)小車(chē)能自動(dòng)記錄、顯示行駛時(shí)間、行駛距離以及行駛速度,還能記錄每段所走的時(shí)間,從而判斷是否符合課程設(shè)計(jì)要求。(記錄顯示裝置要求安裝在車(chē)上)。</p><p>  1.1.2 發(fā)揮部

12、分:</p><p>  S型控制:如(圖2)所示:</p><p><b> ?。▓D2)</b></p><p>  車(chē)輛沿著S形鐵片行駛,自動(dòng)轉(zhuǎn)彎,自動(dòng)尋找正確方向和鐵片。當(dāng)離開(kāi)S型鐵片跑道或者感應(yīng)不到鐵片一段時(shí)間的時(shí)候,小車(chē)自動(dòng)停止,并記錄行駛時(shí)間,路程,平均速度并通過(guò)LCD顯示出來(lái)。</p><p>  2. 方

13、案比較與選擇:</p><p>  根據(jù)設(shè)計(jì)任務(wù)要求,并且根據(jù)我們自己的需要而附加的功能,該電路的總體框圖可分為幾個(gè)基本的模塊,框圖如(圖3)所示:</p><p><b> ?。▓D3)</b></p><p>  2.1 路面檢測(cè)模塊:</p><p>  采用鐵片感應(yīng)器TL-Q5MC來(lái)檢測(cè)路面上的鐵片從而給單片機(jī)中斷

14、脈沖。原理圖接線如(圖4)所示:</p><p><b> ?。▓D4)</b></p><p>  2.2 LCD顯示模塊:</p><p>  采用1602LCD,由單片機(jī)的總線模式連接。為節(jié)約電源電量并且不影響LCD的功能,LCD的背光用單片機(jī)進(jìn)行控制,使LCD的背光在小車(chē)行駛的過(guò)程中不亮,因?yàn)槲覀儾槐乜雌滹@示;在其它我們需要看顯示的內(nèi)容的

15、時(shí)候LCD背光亮。</p><p><b>  2.3 測(cè)速模塊:</b></p><p>  2.3.1 方案1:</p><p>  采用采用霍爾開(kāi)關(guān)元器件A44E檢測(cè)輪子上的小磁鐵從而給單片機(jī)中斷脈沖,達(dá)到測(cè)量速度的作用?;魻栐哂畜w積小,頻率響應(yīng)寬度大,動(dòng)態(tài)特性好,對(duì)外圍電路要求簡(jiǎn)單,使用壽命長(zhǎng),價(jià)格低廉等特點(diǎn),電源要求不高,安裝也較

16、為方便?;魻栭_(kāi)關(guān)只對(duì)一定強(qiáng)度的磁場(chǎng)起作用,抗干擾能力強(qiáng),因此可以在車(chē)輪上安裝小磁鐵,而將霍爾器件安裝在固定軸上,通過(guò)對(duì)脈沖的計(jì)數(shù)進(jìn)行車(chē)速測(cè)量。</p><p>  2.3.2 方案2:</p><p>  采用紅外傳感器進(jìn)行測(cè)速。但無(wú)論是反射式紅外傳感器還是對(duì)射式紅外傳感器,他們對(duì)都對(duì)外圍環(huán)境要求較高,易受外部環(huán)境的影響,穩(wěn)定性不高,且價(jià)格較為昂貴。</p><p>

17、;  通過(guò)對(duì)方案1、方案2的比較其優(yōu)缺點(diǎn),綜合多方面因素決定選用方案1,其原理圖接線如(圖5)所示:</p><p><b> ?。▓D5)</b></p><p><b>  2.4 控速模塊:</b></p><p>  2.4.1 方案1:</p><p>  使用功率三極管作為功率放大器的輸出

18、控制直流電機(jī)。線性型驅(qū)動(dòng)的電路結(jié)構(gòu)和原理簡(jiǎn)單,成本低,加速能力強(qiáng),但功率損耗大,特別是低速大轉(zhuǎn)距運(yùn)行時(shí),通過(guò)電阻R的電流大,發(fā)熱厲害,損耗大,對(duì)于小車(chē)的長(zhǎng)時(shí)間運(yùn)行不利。</p><p>  2.4.2 方案2:</p><p>  采用繼電器對(duì)電動(dòng)機(jī)的開(kāi)或關(guān)進(jìn)行控制,通過(guò)開(kāi)關(guān)的切換對(duì)小車(chē)的速度進(jìn)行調(diào)整.此方案的優(yōu)點(diǎn)是電路較為簡(jiǎn)單,缺點(diǎn)是繼電器的響應(yīng)時(shí)間慢,易損壞,壽命較短,可靠性不高。&l

19、t;/p><p>  2.4.3 方案3:</p><p>  采用由雙極性管組成的H橋電路。用單片機(jī)控制晶體管使之工作在占空比可調(diào)的開(kāi)關(guān)狀態(tài),精確調(diào)整電機(jī)轉(zhuǎn)速。這種電路由于工作在管子的飽和截止模式下,效率非常高;H橋電路保證了可以簡(jiǎn)單地實(shí)現(xiàn)轉(zhuǎn)速和方向的控制;電子開(kāi)關(guān)的速度很快,穩(wěn)定性也很高,是一種廣泛采用的調(diào)速技術(shù)。</p><p>  綜合3種方案的優(yōu)缺點(diǎn),決定選擇

20、方案3,其電路原理圖如(圖6)所示:</p><p><b> ?。▓D6)</b></p><p>  2.5 模式選擇模塊:</p><p>  模式選擇模塊通過(guò)一個(gè)74LS00與非門(mén)和兩個(gè)不帶鎖按鈕來(lái)控制單片機(jī)單片機(jī)的兩個(gè)中斷口,從而按動(dòng)按鈕來(lái)選擇小車(chē)走動(dòng)的路型、來(lái)選擇小車(chē)的速度是快速、中速、慢速;走完路程小車(chē)停止后還可以通過(guò)按鈕選擇想要在

21、LCD上想看的信息,比如總時(shí)間、走過(guò)各段路程的時(shí)間、平均速度、總路程等。</p><p>  小車(chē)走動(dòng)的模式選擇有:</p><p> ?。?) 直線型:滿足設(shè)計(jì)任務(wù)的基本要求,能穩(wěn)定的走完全程。之后按順序循環(huán)不斷的顯示走完全程所用的時(shí)間、走完高速區(qū)所用的時(shí)間和走完低速區(qū)所用的時(shí)間這三個(gè)時(shí)間;或者可以通過(guò)兩個(gè)按鈕以及LCD顯示的菜單選擇所要看的內(nèi)容如平均速度、全程距離以及那三個(gè)時(shí)間。<

22、;/p><p> ?。?) S型:滿足設(shè)計(jì)任務(wù)的發(fā)揮部分的要求,小車(chē)能自動(dòng)的感應(yīng)到在前面或在后面鐵片,即第一次轉(zhuǎn)彎后若感應(yīng)到的是錯(cuò)誤的方向,則小車(chē)會(huì)后退自動(dòng)調(diào)整方向,沿著S型的鐵片走。當(dāng)走完S型鐵片后的一定時(shí)間里,小車(chē)自動(dòng)停止。之后自動(dòng)進(jìn)入菜單由我們自己選擇要看的內(nèi)容時(shí)間、平均速度和所走的距離。</p><p> ?。?)自動(dòng)型:小車(chē)先以一定的速度走完全程,之后再以一定的速度倒退回起點(diǎn),再調(diào)整

23、速度在一定的時(shí)間內(nèi)走完全程。走完后LCD顯示的內(nèi)容與直線型顯示的內(nèi)容一樣。</p><p><b>  3. 程序框圖:</b></p><p>  單片機(jī)主程序框圖、速度感應(yīng)程序框圖和鐵片感應(yīng)程序框圖分別如(圖7)所示。</p><p><b>  (圖7)</b></p><p>  4.系統(tǒng)的

24、具體設(shè)計(jì)與實(shí)現(xiàn):</p><p>  4.1 路面檢測(cè)模塊:</p><p>  應(yīng)用一個(gè)金屬感應(yīng)器,安裝在車(chē)盤(pán)下,離地略小于或約四毫米。當(dāng)金屬傳感器檢測(cè)到鐵片時(shí)將對(duì)單片機(jī)發(fā)送中斷信號(hào),單片機(jī)運(yùn)行中斷,改變輸給電機(jī)驅(qū)動(dòng)信號(hào)的電壓占空比來(lái)控制小車(chē)的速度。</p><p>  4.2 LCD顯示模塊:</p><p>  采用1602LCD,由單

25、片機(jī)的總線模式連接。為節(jié)約電源,LCD的背光用單片機(jī)進(jìn)行控制。</p><p><b>  4.3 測(cè)速模塊:</b></p><p>  通過(guò)霍爾元件感應(yīng)磁鐵來(lái)產(chǎn)生脈沖(當(dāng)霍爾元件在離磁場(chǎng)較近時(shí)輸出會(huì)是高電平,其它時(shí)候是低電平),一個(gè)車(chē)輪均勻放四個(gè)小磁鐵,計(jì)算一秒所得的脈沖數(shù),從而計(jì)算出一秒小車(chē)輪子轉(zhuǎn)動(dòng)圈數(shù),再測(cè)量出小車(chē)車(chē)輪周長(zhǎng)即可計(jì)算出小車(chē)當(dāng)前速度,累加可得到當(dāng)前

26、路程。</p><p><b>  4.4 控速模塊:</b></p><p>  考慮到元器件的缺少以及我們所用的電路的驅(qū)動(dòng)電機(jī)的電路原理圖和和小車(chē)自帶的電路的電機(jī)驅(qū)動(dòng)原理圖一樣,所以暫時(shí)使用小車(chē)自帶的電機(jī)驅(qū)動(dòng)電路圖。</p><p>  4.5 復(fù)位電路模塊:</p><p>  單片機(jī)的復(fù)位電路通過(guò)手動(dòng)來(lái)實(shí)現(xiàn),復(fù)位

27、電路圖如(圖8)所示。</p><p><b> ?。▓D8)</b></p><p>  4.6 模式選擇模塊:</p><p>  兩個(gè)中斷口使用和感應(yīng)鐵片、感應(yīng)速度所使用的中斷口一樣,通過(guò)一個(gè)與非門(mén)和按鈕控制。原理圖如(圖9)所示:</p><p><b> ?。▓D9)</b></p>

28、;<p><b>  5.最小系統(tǒng)圖:</b></p><p>  該系統(tǒng)主要用到的是單片機(jī),所以主要的部分是最小系統(tǒng)圖,該最小系統(tǒng)圖如(圖10)所示:</p><p><b> ?。▓D12)</b></p><p>  6. 最終PCB板圖:</p><p>  該最小系統(tǒng)的最終PC

29、B板圖(包括LCD接口以及其他的外部擴(kuò)展電路部分,考慮到最小系統(tǒng)的簡(jiǎn)潔以及容易看懂,外部擴(kuò)展電路不在最小系統(tǒng)圖上顯示。)分別如(圖11)、(圖12)所示:</p><p><b>  (圖11)</b></p><p><b> ?。▓D12)</b></p><p><b>  7.系統(tǒng)程序:</b>

30、</p><p>  按照預(yù)定的功能,系統(tǒng)實(shí)現(xiàn)預(yù)定的功能的程序如下所示:</p><p>  #include <intrins.h> </p><p>  #include <AT89X52.h></p><p>  /*******************************************

31、*************************************\</p><p>  ** 宏定義區(qū)**</p><p>  \********************************************************************************/</p>

32、;<p>  /*------------------------------- LCD模塊 ------------------------------------*/</p><p>  #define LCD_RW P2_6 //讀寫(xiě)控制端</p><p>  #define LCD_RS P2_7//數(shù)據(jù)命令選擇端</p>

33、;<p>  #define LCD_E P2_5//執(zhí)行使能端</p><p>  #define LCD_DataP1 //P1口</p><p>  #define Write0x00//低電平寫(xiě)入</p><p>  #define Read0x01//高電平讀出<

34、/p><p>  #define Data0x01//高電平選擇數(shù)據(jù)</p><p>  #define Cmd0x00//低電平選擇命令</p><p>  #define Enable0x00//躍變到低電平時(shí)執(zhí)行命令</p><p>  #define Disable0x01

35、</p><p>  #define True0x01</p><p>  #define False0x00</p><p>  #define LCD_Init0x38//初始化模式</p><p>  #define LCD_DispCtr 0x0C//開(kāi)顯示及光標(biāo)設(shè)置&

36、lt;/p><p>  #define LCD_CloseCtr0x08//關(guān)顯示</p><p>  #define LCD_CLS 0x01//清屏幕</p><p>  #define LCD_EnterSet 0x06//顯示光標(biāo) </p><p>  #define Busy

37、P1_7//忙信號(hào)</p><p>  /*-------------------------- 測(cè)速/測(cè)距/測(cè)時(shí)模塊 -------------------------------*/</p><p>  #define CircleLength0.132//小車(chē)轉(zhuǎn)一輪的長(zhǎng)度為.132m</p><p>  /*-----------

38、--------------------- 控速模塊 -----------------------------------*/</p><p>  #define P03P0_3 //后電機(jī)</p><p>  #define P04P0_4 //后電機(jī)</p><p>  #define P01 P0_1

39、 //前電機(jī)</p><p>  #define P02P0_2 //前電機(jī)</p><p>  #define P31P0_5 //控制液晶背光</p><p>  #define P33P3_3</p><p>  /*---------------------------

40、--- 菜單選擇模塊---------------------------------*/</p><p>  #define Line0x00//0代表直線模式</p><p>  #define Curve0x01//1代表S型模式</p><p>  #define Normal0x00//0 代表正常速

41、度</p><p>  #define Low0x01//1 代表低速</p><p>  #define High0x02//2 代表高速</p><p>  /*********************************************************************************\&l

42、t;/p><p>  ** 全局函數(shù)聲明區(qū) **</p><p>  \*********************************************************************************/</p><p>  /*------------------------------- L

43、CD模塊 -------------------------------------*/</p><p>  void LCDInit(void);//LCD初始化</p><p>  void SetWriteCmd(void);//設(shè)置寫(xiě)命令模式</p><p>  void SetReadCmd(void);//

44、設(shè)置讀命令模式</p><p>  void SetWriteData(void);//設(shè)置寫(xiě)數(shù)據(jù)模式</p><p>  void WriteCmd(char cmd);//寫(xiě)命令</p><p>  void WriteData(char ddata);//寫(xiě)數(shù)據(jù)</p><p>  void E

45、xecuteCmd(void);//執(zhí)行命令</p><p>  void SetXY(char x,char y);//定位顯示地址</p><p>  void DisplaySingleChar(char x,char y,char cchar);//顯示單個(gè)字符</p><p>  void DisplayString(ch

46、ar x,char y,char *str); //顯示一段字符串</p><p>  void Delay(unsigned int time);//延時(shí)主程序</p><p>  void DelayUs(unsigned int time);//延時(shí)子程序</p><p>  bit IsBusy(void);

47、//判斷忙標(biāo)志函數(shù)</p><p>  void DisplayTime(void);//顯示時(shí)間</p><p>  void DisplayAVGSpeed(void);//顯示平均速度</p><p>  void DisplayDistance(void);//顯示路程</p><p>  

48、/*-------------------------- 測(cè)速/測(cè)距/測(cè)時(shí)模塊 -------------------------------*/ </p><p>  void INTInit(void); //所有中斷初始化</p><p>  void SpeedINT(void); //測(cè)速中斷</p>

49、<p>  void ComputeTime(void);</p><p>  void ComputeSpeedANDDistance(void);//計(jì)算速度和距離</p><p>  /*-------------------------------- 控速模塊 -----------------------------------*/</p>&

50、lt;p>  void CtrSpeedINT(void); //控速中斷</p><p>  void Time0INT(void); </p><p>  void Time1INT(void); //控速單位時(shí)間中斷</p><p>  void Clock0_Init(void);

51、//時(shí)鐘中斷初始化</p><p>  void Clock1_Init(void); //時(shí)鐘中斷初始化</p><p>  void CtrSpeed(void);</p><p>  /****************************************************************

52、****************\</p><p>  ** 全局變量區(qū)**</p><p>  \********************************************************************************/</p><p>  float Spe

53、edCount = 0; //測(cè)速計(jì)數(shù)脈沖</p><p>  float Speed = 0.0;</p><p>  float Distance = 0.0; </p><p>  char Time1INTCount=0;//T1中斷時(shí)間計(jì)時(shí)</p>

54、;<p>  float PassTime=0.00;//小車(chē)行走的時(shí)間</p><p>  short IsT0INT=1;</p><p>  bit IsT1INT;//判斷T1是否已經(jīng)響應(yīng)中斷</p><p>  short IsT0INT2=1;</p><p

55、>  char Thx[5]={0xf4,0xf4,0xc5,0xf4,0xff}; //3ms,3ms,15ms,3ms</p><p>  char Tlx[5]={0x48,0x48,0x68,0x48,0xff};</p><p>  char Thx0=0xd8;</p><p>  char Tlx0=0xf0;

56、</p><p>  char Thx1=0xb1; //20ms</p><p>  char Tlx1=0xe0;</p><p>  short Round=0;</p><p>  short Back=0;</p><p>  short Back0=0;</p>

57、<p>  bit Backid;</p><p>  bit Stop=0;</p><p>  char Area0=0;</p><p>  char Area1=0;//區(qū)域變量</p><p>  char LowSpeedArea1StartTime;</p>&

58、lt;p>  char LowSpeedArea1EndTime;</p><p>  char HighSpeedAreaEndTime;</p><p>  char LowSpeedArea2EndTime;</p><p>  char LowSpeedArea1PassTime=0; //第一個(gè)低速區(qū)通過(guò)時(shí)間</p&

59、gt;<p>  char HighSpeedAreaPassTime=0;//高速區(qū)通過(guò)時(shí)間</p><p>  char LowSpeedArea2PassTime=0;//第二個(gè)低速區(qū)通過(guò)時(shí)間</p><p>  char ReadyToGo=4;//倒計(jì)時(shí)</p><p>  char f

60、lag;</p><p>  bit Roundid=0;</p><p>  char Nocurve=0; </p><p>  char ChangeFlag;</p><p>  char Mode; </p><p>  bit Running;</p><p>

61、;  bit SelectedAll;//模式和速度是否選擇完畢標(biāo)志</p><p>  bit IsSelectingMode;//模式選擇標(biāo)志</p><p>  bit IsSelectingSpeed;//速度選擇標(biāo)志</p><p>  bit ModeSelected;//

62、已經(jīng)被選擇的模式標(biāo)志</p><p>  char SelectedMode=10;//模式選擇是否完畢標(biāo)志</p><p>  bit Next;//Next鍵標(biāo)志</p><p>  bit SpeedSelected;//已經(jīng)被選中的速度方案標(biāo)志</p><p>  c

63、har SelectedSpeed;//速度選擇是否完畢標(biāo)志</p><p>  bit ChoosingDisplay;//人工選擇菜單開(kāi)始標(biāo)志</p><p>  bit SelectedShow;//顯示選擇標(biāo)志</p><p>  bit SelectedReturn;//返

64、回選擇標(biāo)志</p><p>  bit Selected;//確定/返回鍵選擇標(biāo)志</p><p>  bit ReturnSelection;//返回鍵啟用標(biāo)志</p><p>  bit AVGSpeedShow;//平均速度顯示標(biāo)志</p><p>  bit T

65、otalDistanceShow;//總路程顯示標(biāo)志</p><p>  bit ReturnMain;//返回主菜單標(biāo)志</p><p>  bit AutoDisplay;//自動(dòng)顯示標(biāo)志</p><p>  bit GoToChoosingDisplay;//人工選擇標(biāo)志</

66、p><p>  bit AutoMode=0;</p><p>  char PassLineID=0;</p><p>  char PassLine=0;</p><p>  float PrepareDistance;</p><p>  float FirstDistance;</p>

67、<p>  float SecondDistance;</p><p>  float ThirdDistance;</p><p>  int FirstHigh;</p><p>  int SecondHigh;</p><p>  int ThirdHigh;</p><p>

68、;  float Rate=1.25; //5ms時(shí)的速度</p><p>  float Count=4;//時(shí)間的倍數(shù)</p><p>  /********************************************************************************\</p><p>

69、  ** 全局函數(shù)實(shí)現(xiàn)區(qū)**</p><p>  \********************************************************************************/</p><p>  /*--------------------------------主函數(shù) ---------

70、---------------------------*/</p><p>  void main()</p><p><b>  {</b></p><p><b>  P01=0;</b></p><p><b>  P02=0;</b></p><p

71、><b>  P03=0;</b></p><p><b>  P04=0;</b></p><p>  P31=1;//單片機(jī)復(fù)位,背光開(kāi)</p><p>  Delay(40);//延時(shí)等待LCD啟動(dòng)</p><p>  LCDInit();

72、//初始化LCD</p><p>  DisplayString(0x0,0," Starting... ");</p><p>  DisplayString(0x0,1,"Designed By 202");</p><p>  Delay(300);</p><p>  Writ

73、eCmd(LCD_CLS);</p><p>  EA=1; //開(kāi)總中斷</p><p>  EX0=1;//開(kāi)INT0中斷</p><p>  IT0=1;//INTO邊沿觸發(fā)</p><p>  EX1=1; //開(kāi)INT1中斷</p&

74、gt;<p>  IT1=1; //INT1邊沿觸發(fā)</p><p>  SelectedAll=False; //開(kāi)始模式和速度選擇</p><p>  /*------------------------------ 模式選擇 ---------------------------------*/</p>

75、<p>  DisplayString(0x0,0,"Choose The Mode ");</p><p>  DisplayString(0x0,1,"you want. ");</p><p>  Delay(50);</p><p>  WriteCmd(LCD_CLS);</p>

76、<p>  IsSelectingMode=True;</p><p><b>  while(1)</b></p><p>  { </p><p>  WriteCmd(LCD_CLS);</p><p>  DisplayString(0x0,0," Line M

77、ode ");</p><p>  DisplayString(0x0,1,"Next Yes");</p><p>  Delay(300);//延時(shí)消除抖動(dòng)</p><p>  while (1) //不斷檢測(cè)中斷,直到按確定鍵或是NEXT鍵</p><p&

78、gt;<b>  {</b></p><p>  if (Next==True)//如果按Next鍵則直接跳出</p><p><b>  break;</b></p><p>  if (ModeSelected==True)//如果按確定鍵則設(shè)置模式為L(zhǎng)ine并跳出</p><

79、p><b>  {</b></p><p>  SelectedMode=Line;</p><p><b>  break;</b></p><p>  }//如果什么鍵都沒(méi)有按下,那么一直顯示等待</p><p><b>  }</b></p

80、><p>  if (ModeSelected==True)//按下了確定鍵,退出模式選擇</p><p><b>  {</b></p><p>  IsSelectingMode=False;</p><p><b>  break;</b></p><p>

81、<b>  }</b></p><p>  if (Next==True)//按下了Next鍵,顯示下一個(gè)菜單項(xiàng)</p><p><b>  {</b></p><p>  Next=False;</p><p>  WriteCmd(LCD_CLS);</p><

82、p>  DisplayString(0x0,0," Curve Mode ");</p><p>  DisplayString(0x0,1,"Next Yes");</p><p>  Delay(300);//延時(shí)消除抖動(dòng)</p><p>  while(1)/

83、/不斷檢測(cè)中斷,直到按確定鍵或是Next鍵</p><p><b>  {</b></p><p>  if (Next==True)//如果再一次按下Next鍵,則跳出</p><p><b>  break;</b></p><p>  if (ModeSelected==True)

84、//如果按下確定鍵,則設(shè)置模式為Curve,并跳出</p><p><b>  {</b></p><p>  SelectedMode=Curve;</p><p><b>  break;</b></p><p><b>  }</b></p><p

85、><b>  }</b></p><p><b>  }</b></p><p>  if (ModeSelected==True) //按下了確定鍵,退出模式選擇</p><p><b>  {</b></p><p>  IsSelectingMode

86、=False;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  if (Next==True)//再一次按下了Next鍵,則循環(huán)模式選擇</p><p><b>  {</b></p>&

87、lt;p>  Next=False;</p><p>  WriteCmd(LCD_CLS);</p><p>  DisplayString(0x0,0," AutoMode ");</p><p>  DisplayString(0x0,1,"Next Yes");</p>

88、<p>  Delay(300); //延時(shí)消除抖動(dòng)</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if (Next==True)</p><p><b>  break;</b>&

89、lt;/p><p>  if (ModeSelected==True)</p><p><b>  {</b></p><p>  AutoMode=1;</p><p><b>  break;</b></p><p><b>  }</b></p

90、><p><b>  }</b></p><p><b>  }</b></p><p>  if (ModeSelected==True)</p><p><b>  {</b></p><p>  IsSelectingMode=False;</p

91、><p><b>  break;</b></p><p><b>  }</b></p><p>  if (Next==True)</p><p><b>  {</b></p><p>  Next=False;</p><p>

92、;<b>  continue;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  Delay(50);</p><p>  WriteCmd(LCD_CLS); </p><p>  /*

93、------------------------------ 速度選擇 ---------------------------------*/</p><p>  if (SelectedMode==Line && AutoMode==0)</p><p><b>  {</b></p><p>  DisplayString

94、(0x0,0," Now Choose a ");</p><p>  DisplayString(0x0,1," kind of Speed ");</p><p>  Delay(50);</p><p>  WriteCmd(LCD_CLS);</p><p>  IsSelectingSp

95、eed=True;</p><p>  while(1)</p><p><b>  {</b></p><p>  WriteCmd(LCD_CLS);</p><p>  DisplayString(0x0,0," Normal Speed ");</p>

96、<p>  DisplayString(0x0,1,"Next Yes");</p><p>  Delay(300); //延時(shí)消除抖動(dòng)</p><p><b>  while(1)</b></p><p><b>  {</b></p><

97、p>  if (Next==True) //如果按Next鍵則直接跳出</p><p><b>  break;</b></p><p>  if (SpeedSelected==True) //如果按確定鍵則設(shè)置速度為Normal并跳出</p><p><b>  {</b></p&

98、gt;<p>  Thx[0]=0xec;Tlx[0]=0x78; //5ms</p><p>  Thx[1]=0xf0;Tlx[1]=0x60; //4ms</p><p>  Thx[2]=0x8a;Tlx[2]=0xd0; //30ms</p><p>  Thx[3]=0xf4;Tlx[3]=0x48; //3

99、ms</p><p>  SelectedSpeed=Normal;</p><p><b>  break;</b></p><p>  } //如果什么鍵都沒(méi)有按下,那么一直顯示等待</p><p><b>  }</b></p><p>  if

100、(SpeedSelected==True) //按下了確定鍵,退出速度選擇</p><p><b>  {</b></p><p>  IsSelectingSpeed=False;</p><p><b>  break;</b></p><p><b>  }</b

101、></p><p>  if (Next==True)</p><p><b>  {</b></p><p>  Next=False;</p><p>  WriteCmd(LCD_CLS);</p><p>  DisplayString(0x0,0," Low Spe

102、ed ");</p><p>  DisplayString(0x0,1,"Next Yes");</p><p>  Delay(300); //延時(shí)消除抖動(dòng)</p><p><b>  while(1)</b></p><p><b>  

103、{</b></p><p>  if (Next==True)//如果再一次按下Next鍵,則跳出</p><p><b>  break;</b></p><p>  if (SpeedSelected==True)//如果按下確定鍵,則設(shè)置速度為L(zhǎng)ow,并跳出</p><p><b>

104、;  {</b></p><p>  SelectedSpeed=Low;//這里沒(méi)有速度設(shè)置,因?yàn)槟J(rèn)速度就是Low</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b&g

105、t;</p><p><b>  }</b></p><p>  if (SpeedSelected==True)//按下了確定鍵,退出速度選擇</p><p><b>  {</b></p><p>  IsSelectingSpeed=False;</p><p>

106、;<b>  break;</b></p><p><b>  }</b></p><p>  if (Next==True)</p><p><b>  {</b></p><p>  Next=False;</p><p>  WriteCmd(LC

107、D_CLS);</p><p>  DisplayString(0x0,0," High Speed ");</p><p>  DisplayString(0x0,1,"Next Yes");</p><p>  Delay(300); //延時(shí)消除抖動(dòng)</p><p&g

108、t;<b>  while(1)</b></p><p><b>  {</b></p><p>  if (Next==True) //如果再一次按下Next鍵,則跳出</p><p><b>  break;</b></p><p>  if (SpeedSelect

109、ed==True) //如果按下確定鍵,則設(shè)置速度為High,并跳出</p><p><b>  {</b></p><p>  Thx[0]=0xe0;Tlx[0]=0xc0; //8ms</p><p>  Thx[1]=0xe0;Tlx[1]=0xc0; //8ms</p><p>  Thx[2]=0x63;

110、Tlx[2]=0xc0; //40ms</p><p>  Thx[3]=0xec;Tlx[3]=0x78; //5ms</p><p>  SelectedSpeed=High;</p><p><b>  break;</b></p><p><b>  }</b></p>

111、;<p><b>  }</b></p><p><b>  }</b></p><p>  if (SpeedSelected==True) //按下了確定鍵,退出速度選擇</p><p><b>  {</b></p><p>  IsSele

112、ctingSpeed=False;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  if (Next==True) //再一次按下了Next鍵,則循環(huán)速度選擇</p><p><b>  {</b>&l

113、t;/p><p>  Next=False;</p><p><b>  continue;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p&g

114、t;<p>  SelectedAll=True; //標(biāo)志模式選擇和速度選擇完畢</p><p>  Running=True;</p><p>  Delay(50);</p><p>  WriteCmd(LCD_CLS);</p><p>  /*-----

115、-------------------- 顯示所選擇的模式和速度方案 -------------------------*/</p><p>  if (SelectedMode==Line)</p><p><b>  {</b></p><p>  DisplayString(0x0,0,"Choosen Mode is &q

116、uot;);</p><p>  DisplayString(0x0,1," Line ");</p><p>  Delay(50);</p><p>  WriteCmd(LCD_CLS);</p><p><b>  }</b></p><p>  i

117、f (SelectedMode==Curve)</p><p><b>  {</b></p><p>  DisplayString(0x0,0,"Choosen Mode is ");</p><p>  DisplayString(0x0,1," Curve ");</p&g

118、t;<p>  Delay(50);</p><p>  WriteCmd(LCD_CLS);</p><p><b>  }</b></p><p>  if (AutoMode==1)</p><p><b>  {</b></p><p>  Displa

119、yString(0x0,0,"Choosen Mode is ");</p><p>  DisplayString(0x0,1," AutoMode ");</p><p>  Delay(50);</p><p>  WriteCmd(LCD_CLS);</p><p><b>

120、;  } </b></p><p>  if (SelectedMode==Line)</p><p><b>  {</b></p><p>  if (SelectedSpeed==Normal)</p><p><b>  {</b></p><p&g

121、t;  DisplayString(0x0,0,"Choosen Speed is");</p><p>  DisplayString(0x0,1," Normal ");</p><p>  Delay(50);</p><p>  WriteCmd(LCD_CLS);</p><p&g

122、t;<b>  }</b></p><p>  if (SelectedSpeed==Low)</p><p><b>  {</b></p><p>  DisplayString(0x0,0,"Choosen Speed is");</p><p>  DisplayStri

123、ng(0x0,1," Low ");</p><p>  Delay(50);</p><p>  WriteCmd(LCD_CLS);</p><p><b>  }</b></p><p>  if (SelectedSpeed==High)</p><p

124、><b>  {</b></p><p>  DisplayString(0x0,0,"Choosen Speed is");</p><p>  DisplayString(0x0,1," High ");</p><p>  Delay(50);</p><

125、;p>  WriteCmd(LCD_CLS);</p><p><b>  }</b></p><p><b>  }</b></p><p>  INTInit(); //初始化所有中斷</p><p>  DisplayString(0x0,0,"Lef

126、t Times To Go");</p><p>  while (ReadyToGo--)</p><p><b>  {</b></p><p>  DisplaySingleChar(0x7,1,ReadyToGo+0x30);</p><p>  DisplaySingleChar(0x09,1,

127、9;s');</p><p>  Delay(300);</p><p><b>  }</b></p><p>  WriteCmd(LCD_CLS);</p><p>  DisplayString(0x05,0,"Go!!!");</p><p>  Dela

128、y(100);</p><p>  WriteCmd(LCD_CLS);</p><p>  DisplayString(0x0,0," Living... ");</p><p>  DisplayString(0x0,1,"Designed by 202");</p><p>  if (S

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論