智能超聲波壁障小車(chē)畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩27頁(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>  智能超聲波壁障小車(chē)設(shè)計(jì)</p><p>  【摘要】本文介紹一壁障;測(cè)距;遙控</p><p>  1 設(shè)計(jì)要求 ………………………………………………………………………………………3</p><p>  2 總體設(shè)計(jì)方案 …………………………………………………………………………………3</p><p>  2.1系統(tǒng)控制

2、模塊設(shè)計(jì)方案論證…………………2.2 超聲波壁障設(shè)計(jì)方案論證 ………………………………………………………………3</p><p>  2.3 顯示模塊設(shè)計(jì)方案論證………………………………………………………………… 4</p><p>  3 元器件介紹…………………………………………………………………………………… 4</p><p>  3.1 L298N電機(jī)專(zhuān)

3、用驅(qū)動(dòng)芯片……………………………………………………………… 4</p><p>  3.2 CX20106A超聲波接收芯片………………………………………………………………5</p><p>  3.3 3144霍爾傳感器…………………………………………………………………………7</p><p>  3.4 ULN2003達(dá)林頓驅(qū)動(dòng)器……………………………………

4、…………………………… 7</p><p>  4 系統(tǒng)硬件電路………………………………………………………………………………… 9</p><p>  4.1 超聲波發(fā)送接收電路…………………………………………………………………… 9</p><p>  4.2 步進(jìn)電機(jī)驅(qū)動(dòng)電路……………………………………………………………………… 9</p><

5、;p>  4.3 串口下載電路……………………………………………………………………………10</p><p>  4.4 整體系統(tǒng)硬件電路………………………………………………………………………10</p><p>  4.5系統(tǒng)PCB圖……………………………………………………………………………… 11</p><p>  5 系統(tǒng)軟件設(shè)計(jì)……………………………

6、……………………………………………………11</p><p>  5.1 設(shè)計(jì)思路…………………………………………………………………………………11</p><p>  5.2步進(jìn)電機(jī)帶動(dòng)探頭測(cè)距壁障流程圖……………………………………………………12</p><p>  5.3主程序流程圖……………………………………………………………………………13</p&g

7、t;<p>  5.4系統(tǒng)總程序…………………………………………………………………………… 14 </p><p>  6 總結(jié)與體會(huì)…………………………………………………………………………………14</p><p>  7設(shè)計(jì)實(shí)物圖…………………………………………………………………………… 14 </p><p>  參考文獻(xiàn)………

8、…………………………………………………………………………………15</p><p>  附錄………………………………………………………………………………………………15</p><p><b>  一、設(shè)計(jì)要求</b></p><p>  1、自動(dòng)壁障,且壁障距離可調(diào);</p><p>  2、測(cè)距精度為1cm;<

9、/p><p>  3、可遙控小車(chē)行駛;</p><p>  4、可測(cè)小車(chē)行駛路程</p><p>  5、可以定時(shí)、定路程控制小車(chē)停止或啟動(dòng)</p><p><b>  二、設(shè)計(jì)方案</b></p><p>  2.1系統(tǒng)控制模塊設(shè)計(jì)方案論證</p><p>  方案一:采用S

10、TC12C5410單片機(jī)控制系統(tǒng)。STC12C5410單片機(jī)帶有PWM脈寬調(diào)制輸出端口,可直接用來(lái)控制電機(jī)轉(zhuǎn)速,且其運(yùn)行速度是8051單片機(jī)的8~12倍;但其I/O口少,即使是32管腳的芯片也只有27個(gè),不夠用時(shí)需要擴(kuò)展I/O口,比較麻煩。</p><p>  方案二:采用STC89C52單片機(jī)控制系統(tǒng)。主要是通用I/O口多,一般不需要擴(kuò)展,而且控制指令簡(jiǎn)單。</p><p>  由于對(duì)8

11、051系列單片機(jī)應(yīng)用比較熟悉,且系統(tǒng)需要用到的I/O口較多,而控制電機(jī)轉(zhuǎn)速的PWM信號(hào)用1個(gè)定時(shí)器即可模擬。所以此次設(shè)計(jì)選擇采用STC89C52單片機(jī)來(lái)控制。</p><p>  2.2超聲波壁障設(shè)計(jì)方案論證</p><p>  方案一:采用多方向超聲波測(cè)距分析來(lái)實(shí)現(xiàn)壁障。分別在小車(chē)的左、中、右三方向放置超聲波探頭,通過(guò)對(duì)三個(gè)方向超聲波的測(cè)距數(shù)據(jù)分析對(duì)比確定障礙物位置,再通過(guò)調(diào)節(jié)小車(chē)左右電

12、機(jī)轉(zhuǎn)速差控制小車(chē)行駛方向?qū)崿F(xiàn)壁障。</p><p>  方案二:通過(guò)步進(jìn)電機(jī)帶動(dòng)一對(duì)超聲波探頭旋轉(zhuǎn)進(jìn)行各方向測(cè)距,將各方向測(cè)得數(shù)據(jù)通過(guò)單片機(jī)對(duì)比分析可得到障礙物方向,然后也是通過(guò)調(diào)節(jié)小車(chē)左右電機(jī)轉(zhuǎn)速差控制小車(chē)行駛方向?qū)崿F(xiàn)壁障。</p><p>  方案一需要3對(duì)的超聲波探頭,為了防止信號(hào)相互干擾各個(gè)超聲波發(fā)送信號(hào)要相互間隔,顯得繁雜,而且當(dāng)障礙物與左右側(cè)的超聲波探頭大于一定角度時(shí)將不能接收

13、到超聲波信號(hào),方案二通過(guò)180度掃描可以很好地檢測(cè)到各個(gè)方向的障礙物,障礙物判斷更可靠,壁障效果更好。因此選用方案二設(shè)計(jì)。</p><p>  2.3 顯示模塊設(shè)計(jì)方案論證</p><p>  方案一:采用七段LED數(shù)碼管顯示相關(guān)數(shù)據(jù)。數(shù)碼管顯示具有高亮、可視距離遠(yuǎn)、壽命長(zhǎng)的優(yōu)點(diǎn),但是一位數(shù)碼管只能顯示一位數(shù)據(jù),要想同時(shí)顯示多個(gè)數(shù)據(jù),只能增加數(shù)碼管數(shù)目來(lái)實(shí)現(xiàn),而且數(shù)碼管的PCB布線繁雜,數(shù)

14、目越多布線越困難。</p><p>  方案二:采用LCD1602液晶顯示。液晶顯示具有耗能少、可同時(shí)顯示數(shù)據(jù)多、控制指令簡(jiǎn)單、PCB布線簡(jiǎn)單等優(yōu)點(diǎn)。</p><p>  通過(guò)對(duì)比兩種顯示方案的優(yōu)缺點(diǎn),本次設(shè)計(jì)決定采用方案二。</p><p><b>  元器件介紹</b></p><p>  3.1 L298N電機(jī)專(zhuān)

15、用驅(qū)動(dòng)芯片:</p><p>  L298是SGS(通標(biāo)標(biāo)準(zhǔn)技術(shù)服務(wù)有限公司)公司的產(chǎn)品,比較常見(jiàn)的是15腳Multiwatt封裝的L298N,內(nèi)部包含4通道邏輯驅(qū)動(dòng)電路。是一種二相和四相電機(jī)的專(zhuān)用驅(qū)動(dòng)器,即內(nèi)含二個(gè)H橋的高電壓大電流雙全橋式驅(qū)動(dòng)器,接收標(biāo)準(zhǔn)TTL邏輯電平信號(hào),可驅(qū)動(dòng)46V、2A以下的電機(jī)。其引腳排列如上圖中所示。 L298N的引腳9為L(zhǎng)OGIC SUPPLY VOLTAGE Vss,即

16、邏輯供應(yīng)電壓。引腳4為SUPPLY VOLTAGE Vs,即驅(qū)動(dòng)部分輸入電壓。Vss電壓要求輸入最小電壓為4.5V,最大可達(dá)36V;Vs電壓最大值也是36V,但經(jīng)過(guò)我的實(shí)驗(yàn),Vs電壓應(yīng)該比Vss電壓高,否則有時(shí)會(huì)出現(xiàn)失控現(xiàn)象。它的引腳2,3,13,14為L(zhǎng)298N芯片輸入到電動(dòng)機(jī)的輸出端,其中引腳2和3能控制兩相電機(jī),對(duì)于直流電動(dòng)機(jī),即可控制一個(gè)電動(dòng)機(jī)。同理,引腳13和14也可控制一個(gè)直流電動(dòng)機(jī)。引腳6和11腳為電動(dòng)機(jī)的使能接線腳。引腳

17、5,7,10,12為單片機(jī)輸入到L298N芯片的輸入引腳。下表是其使能、輸入引腳和輸出引腳的邏輯關(guān)系:</p><p>  控制使能引腳ENA或者ENB就可以實(shí)現(xiàn)PWM脈寬速度調(diào)整。1腳和15腳可單獨(dú)引出連接電流采樣電阻器,形成電流傳感信號(hào),也可以直接接地。在可設(shè)計(jì)中就將它們直接接地。引腳8為芯片的接地引腳,它與L298N芯片的散熱片連接在一起。由于本芯片的工作電流比較大,發(fā)熱量也比較大,所以在本芯片的散熱片上又

18、連接了一塊鋁合金,以增大它的散熱面積。</p><p>  該芯片的一些參數(shù)如下:</p><p>  (1) 邏輯部分輸入電壓:6~7V</p><p>  (2) 驅(qū)動(dòng)部分輸入電壓Vs:4.8~46V</p><p>  (3) 邏輯部分工作電流Iss:≤36mA</p><p>  (4) 驅(qū)動(dòng)部分工作電流Io:

19、≤2A</p><p>  (5) 最大耗散功率:25W(T=75℃)</p><p>  (6) 控制信號(hào)輸入電平:高電平:2.3V≤Vin≤Vss,低電平:-0.3V≤Vin≤1.5V</p><p>  (7) 工作溫度:-25℃~+130℃</p><p>  (8) 驅(qū)動(dòng)形式:雙路大功率H橋驅(qū)動(dòng)</p><p&g

20、t;  3.2 CX20106A超聲波接收芯片</p><p>  (1)CX20106A內(nèi)部結(jié)構(gòu)圖:</p><p><b> ?。?)管腳說(shuō)明:</b></p><p>  3.3 3144霍爾傳感器</p><p>  3端輸出需要接上拉電阻。當(dāng)有磁鐵靠近時(shí),霍爾傳感器輸出低電平。</p><

21、;p>  3.4 ULN2003達(dá)林頓驅(qū)動(dòng)器</p><p>  ULN2003是大電流驅(qū)動(dòng)陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中??芍苯域?qū)動(dòng)繼電器等負(fù)載。 輸入5VTTL電平,輸出可達(dá)500mA/50V。ULN2003是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅NPN達(dá)林頓管組成。 ULN2003的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路直接

22、相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器。ULN2003具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類(lèi)要求高速大功率驅(qū)動(dòng)的系統(tǒng)。 </p><p>  ULN2003芯片引腳圖</p><p>  ULN2003芯片引腳介紹</p><p>  引腳1:CPU脈沖輸入端,端口對(duì)應(yīng)一個(gè)信號(hào)輸出端。 </p><p>  

23、引腳2:CPU脈沖輸入端。 </p><p>  引腳3:CPU脈沖輸入端。 </p><p>  引腳4:CPU脈沖輸入端。 </p><p>  引腳5:CPU脈沖輸入端。 </p><p>  引腳6:CPU脈沖輸入端。 </p><p>  引腳7:CPU脈沖輸入端。 </p><p>

24、<b>  引腳8:接地。 </b></p><p>  引腳9:該腳是內(nèi)部7個(gè)續(xù)流二極管負(fù)極的公共端,各二極管的正極分別接各達(dá)林頓管的集電極。用于感性負(fù)載時(shí),該腳接負(fù)載電源正極,實(shí)現(xiàn)續(xù)流作用。如果該腳接地,實(shí)際上就是達(dá)林頓管的集電極對(duì)地接通。 </p><p>  引腳10:脈沖信號(hào)輸出端,對(duì)應(yīng)7腳信號(hào)輸入端。 </p><p><b&

25、gt;  參考電路接法</b></p><p>  引腳11:脈沖信號(hào)輸出端,對(duì)應(yīng)6腳信號(hào)輸入端。 </p><p>  引腳12:脈沖信號(hào)輸出端,對(duì)應(yīng)5腳信號(hào)輸入端。 </p><p>  引腳13:脈沖信號(hào)輸出端,對(duì)應(yīng)4腳信號(hào)輸入端。 </p><p>  引腳14:脈沖信號(hào)輸出端,對(duì)應(yīng)3腳信號(hào)輸入端。 </p>

26、<p>  引腳15:脈沖信號(hào)輸出端,對(duì)應(yīng)2腳信號(hào)輸入端?!?</p><p>  引腳16:脈沖信號(hào)輸出端,對(duì)應(yīng)1腳信號(hào)輸入端。</p><p><b>  四、硬件設(shè)計(jì)</b></p><p>  4.1 超聲波發(fā)送接收電路</p><p>  4.2 步進(jìn)電機(jī)驅(qū)動(dòng)電路</p><p&

27、gt;  4.3 串口下載電路</p><p>  4.4 系統(tǒng)整體硬件電路</p><p><b>  4.5系統(tǒng)PCB圖</b></p><p><b>  五、軟件設(shè)計(jì)</b></p><p><b>  5.1設(shè)計(jì)思路</b></p><p> 

28、 本次設(shè)計(jì)軟件部分主要包括測(cè)距壁障程序、遙控參數(shù)設(shè)置程序、顯示程序、定時(shí)器及相關(guān)中斷程序。</p><p>  本次設(shè)計(jì)采用外部中斷0接收超聲波信號(hào),外部中斷1接收霍爾傳感器信號(hào)測(cè)行駛路程,定時(shí)器0結(jié)合外部中斷0為超聲波發(fā)送接收計(jì)時(shí)進(jìn)行測(cè)距,定時(shí)器1用來(lái)產(chǎn)生PWM信號(hào)控制小車(chē)轉(zhuǎn)速,定時(shí)器2為小車(chē)行駛計(jì)時(shí)。為了避免中斷沖突造成錯(cuò)誤處理,應(yīng)該對(duì)某些中斷設(shè)為高優(yōu)先級(jí),且中斷執(zhí)行程序不應(yīng)過(guò)長(zhǎng)。</p>&l

29、t;p>  為了提高壁障靈敏度,步進(jìn)電機(jī)帶動(dòng)超聲波探頭進(jìn)行180度來(lái)回旋轉(zhuǎn),且對(duì)于占用時(shí)間的顯示程序能少的應(yīng)盡量少。</p><p>  遙控要能實(shí)現(xiàn)對(duì)小車(chē)左右輪控制、定路程停止點(diǎn)調(diào)節(jié)、定時(shí)停止及啟動(dòng)點(diǎn)調(diào)節(jié),以及對(duì)壁障距離調(diào)節(jié)。</p><p>  5.2步進(jìn)電機(jī)帶動(dòng)探頭旋轉(zhuǎn)測(cè)距壁障流程圖</p><p>  5.3 主程序流程圖</p><

30、;p>  5.4 系統(tǒng)總程序:見(jiàn)附錄</p><p><b>  六、總結(jié)體會(huì)</b></p><p>  本次電子系統(tǒng)設(shè)計(jì)前期實(shí)現(xiàn)定時(shí)器控制PWM輸出編程,步進(jìn)電機(jī)驅(qū)動(dòng)控制,超聲波發(fā)送接收模塊;設(shè)計(jì)后期畫(huà)原理圖和PCB圖,然后腐蝕、焊接電路板;最后程序整合及改善以及調(diào)試,同時(shí)發(fā)現(xiàn)調(diào)試出現(xiàn)的問(wèn)題并尋找解決辦法。經(jīng)過(guò)不斷的努力,提前完成了設(shè)計(jì)任務(wù),并且各個(gè)預(yù)期功能

31、基本實(shí)現(xiàn)。</p><p>  前期通過(guò)觀看網(wǎng)上壁障小車(chē)相關(guān)視頻,有了用步進(jìn)電機(jī)帶動(dòng)超聲波探頭轉(zhuǎn)動(dòng)的構(gòu)思。但是網(wǎng)上視頻基本上都是超聲波探頭橫著放的,我通過(guò)調(diào)試發(fā)現(xiàn)探頭豎著放效果更好,準(zhǔn)確度更高。</p><p>  遙控模塊直接采用TDL-9915*RF和TDL-9915*TF,遙控發(fā)射模塊TDL-9915*RF按鍵后,接收模塊TDL-9915*TF對(duì)應(yīng)輸出高電平,沒(méi)按鍵時(shí)輸出低電平。這樣

32、可方便控制小車(chē)各種模式。</p><p>  整個(gè)系統(tǒng)設(shè)計(jì)進(jìn)行了半個(gè)多月,主要在編程和調(diào)試上花了很長(zhǎng)時(shí)間,從中積累了許多編程經(jīng)驗(yàn),同時(shí)提高了自己的編程能力。</p><p>  由于對(duì)51單片機(jī)及l(fā)cd1602液晶都比較熟悉,所以調(diào)試在這兩模塊問(wèn)題不大。而對(duì)于L298N電機(jī)驅(qū)動(dòng)芯片和超聲波模塊以前都沒(méi)接觸過(guò),因此調(diào)試時(shí)出現(xiàn)的問(wèn)題較多,特別是超聲波模塊,網(wǎng)上相關(guān)資料對(duì)cx20106a的2腳電

33、阻取值都在10歐姆以下,而自己設(shè)計(jì)的超聲波模塊最少也要120歐姆才能有效接收信號(hào),否則小了會(huì)有自激信號(hào)。這個(gè)問(wèn)題最后是在ourdev.com網(wǎng)站解決的,許多網(wǎng)友也遇到了同樣的問(wèn)題。</p><p>  這次的成功,極大地提高了自己電子設(shè)計(jì)的興趣。同時(shí),要感謝賴(lài)?yán)蠋煹亩喾笇?dǎo)和提供意見(jiàn),以及08電本班其他同學(xué)的幫助。</p><p><b>  七、設(shè)計(jì)實(shí)物圖</b>&

34、lt;/p><p><b>  八、參考文獻(xiàn)</b></p><p>  1、郭天祥.《新概念51單片機(jī)C語(yǔ)言教程》.電子工業(yè)出版社.</p><p>  2、嚴(yán)桂蘭.《C語(yǔ)言程序設(shè)計(jì)與應(yīng)用教程》.廈門(mén)大學(xué)出版社.</p><p>  3、陸應(yīng)華.《電子系統(tǒng)設(shè)計(jì)教程》.國(guó)防工業(yè)出版社.</p><p>

35、;  4、李剛、林凌、姜葦《單片機(jī)系統(tǒng)設(shè)計(jì)與應(yīng)用技巧》.北京航空航天大學(xué)出版社.</p><p><b>  附錄:</b></p><p>  #include <reg52.h></p><p>  #include "intrins.h"</p><p>  #define ucha

36、r unsigned char</p><p>  #define ulong unsigned long </p><p>  #define uint unsigned int</p><p>  int zkb1=2,zkb2=2;</p><p>  sbit P13=P2^4;</p><p>  sbit

37、P14=P2^1;</p><p>  sbit CSOut=P1^6; </p><p>  sbit RS = P2^6; </p><p>  sbit EN = P2^7;</p><p>  sbit LEDL=P1^4;</p><p>  sbit LEDR=P3^1;</p

38、><p>  sbit BELL=P1^5;</p><p>  sbit TEST=P3^0;</p><p>  sbit keyD=P3^4;</p><p>  sbit keyC=P3^5;</p><p>  sbit keyB=P3^6;</p><p>  sbit keyA=P3^

39、7;</p><p>  sbit kk=P3^0;</p><p>  long int all=0,aa=0,an;</p><p>  ulong DATA,cc,bb; </p><p>  xdata uchar num=0,num1=0,miao1=0,fen1=0,miao2=0,fen2=0,YY1=0,YY2=0,dis=

40、50,i,d,t,jj,h,mod,u,fen=0,miao=0,sj=0,g,j,temp=0,avg=0,j0=0,j1=0,j2=0,j3=0,K,m=0,click=0,a[48],b[4],bcd_dis[4],acd_dis[6],ccd_dis[3];</p><p>  uchar code FFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}; //反

41、轉(zhuǎn)</p><p>  uchar code FFZ[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe}; //正轉(zhuǎn)</p><p>  uchar code table1[]="Mode2--State Set";</p><p>  uchar code table3[]="Mode3--Tim

42、e Set ";</p><p>  uchar code table5[]="Mode4--Distance ";</p><p>  uchar code table2[]="Stop at: cm ";</p><p>  uchar code table4[]="OFF - ON -

43、 ";</p><p>  uchar code table6[]="From: cm ";</p><p>  uchar code table7[]="Mode1--Speed Set";</p><p>  uchar code table8[]="Left: Right: &q

44、uot;;</p><p>  uchar code table9[]="S D W ";</p><p>  uchar code table0[]="A T - M0";</p><p>  void CCOut(void)</p><p><b>  

45、{</b></p><p><b>  TH0=0;</b></p><p><b>  TL0=0;</b></p><p><b>  TR0=1;</b></p><p><b>  //40KHz</b></p><

46、p>  CSOut=0;//1</p><p>  _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();</p><p><b>  CSOut=1;</b></p><p>  _nop_();_nop_();_n

47、op_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();</p><p>  CSOut=0;//2</p><p>  _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();</p>&

48、lt;p><b>  CSOut=1;</b></p><p>  _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();</p><p>  CSOut=0;//3</p><p>  _nop_();_nop_();_nop_()

49、;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();</p><p><b>  CSOut=1;</b></p><p>  _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();&

50、lt;/p><p>  CSOut=0;//4</p><p>  _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();</p><p><b>  CSOut=1;</b></p><p>  _no

51、p_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();</p><p><b>  }</b></p><p>  void delayns(uint xms)</p><p><b>  {</b></p>

52、<p><b>  uint a,b;</b></p><p>  for(a=0;a<xms;a++)</p><p>  for(b=0;b<110;b++);</p><p><b>  }</b></p><p>  void writecom(uchar com)&l

53、t;/p><p><b>  {</b></p><p><b>  RS=0;</b></p><p><b>  P0=com;</b></p><p>  delayns(1);</p><p><b>  EN=1;</b>&l

54、t;/p><p>  delayns(1);</p><p><b>  EN=0;</b></p><p><b>  }</b></p><p>  void writedata(uchar data11)</p><p><b>  {</b><

55、/p><p><b>  RS=1;</b></p><p>  P0=data11;</p><p>  delayns(1);</p><p><b>  EN=1;</b></p><p>  delayns(1);</p><p><b>

56、;  EN=0;</b></p><p><b>  }</b></p><p>  void initlcd()</p><p><b>  {</b></p><p><b>  EN=0;</b></p><p>  writecom(

57、0x38);</p><p>  writecom(0x0c);</p><p>  writecom(0x06);</p><p>  writecom(0x01); </p><p><b>  }</b></p><p>  void ACD(ulong b)</p><

58、p><b>  {</b></p><p>  acd_dis[0]=b/10000+0x30;</p><p>  acd_dis[1]=b/1000%10+0x30;</p><p>  acd_dis[2]=b/100%10+0x30;</p><p>  acd_dis[3]=b/10%10+0x30;&l

59、t;/p><p>  acd_dis[4]=b%10+0x30;</p><p>  acd_dis[5]=0x00;</p><p><b>  }</b></p><p>  void BCD(ulong b)</p><p><b>  {</b></p>

60、<p>  void CCD(ulong b)</p><p><b>  {</b></p><p>  ccd_dis[0]=b/10+0x30;</p><p>  ccd_dis[1]=b%10+0x30;</p><p>  ccd_dis[2]=0x00;</p><p>

61、<b>  } </b></p><p>  void init(void)</p><p><b>  { </b></p><p>  TMOD=0x11;//T0定時(shí)器方式1</p><p>  T2CON=0X00;</p><p><b>  TH1=

62、0Xff;</b></p><p><b>  TL1=0Xf6;</b></p><p>  TH2=(65536-45872)/256;</p><p>  TL2=(65536-45872)%256;</p><p><b>  TH0=0;</b></p><

63、p><b>  TL0=0;</b></p><p><b>  TR1=1;</b></p><p><b>  TR2=1;</b></p><p>  IT0=1;//INT0負(fù)邊沿觸發(fā)</p><p><b>  IT1=1;</b><

64、/p><p>  IP=0x01;//INT0高優(yōu)先級(jí) </p><p><b>  ET1=1;</b></p><p><b>  ET2=1; </b></p><p><b>  EX1=1;</b></p><p><b>  EX0

65、=1;</b></p><p>  EA=1;//開(kāi)總中斷</p><p><b>  }</b></p><p>  void LCD_DISP(unsigned char string[])</p><p><b>  {</b></p><p><b&

66、gt;  int i=0;</b></p><p>  while(string[i])</p><p><b>  {</b></p><p>  writedata(string[i++]);</p><p>  delayns(1);</p><p><b>  }&

67、lt;/b></p><p><b>  }</b></p><p>  void Receive(void) interrupt 0</p><p><b>  {</b></p><p><b>  TR0=0; </b></p><p>

68、<b>  EX0=0;</b></p><p><b>  }</b></p><p>  void t1() interrupt 3</p><p><b>  {</b></p><p><b>  TR1=0;</b></p><

69、;p><b>  ++click;</b></p><p>  if(click>100)click=0;</p><p>  if(click<=zkb1)P13=0;</p><p>  else P13=1;</p><p>  if(click<=zkb2)P14=0;</p>

70、<p>  else P14=1;</p><p><b>  TH1=0Xff;</b></p><p><b>  TL1=0XF6;</b></p><p><b>  TR1=1;</b></p><p><b>  }</b><

71、;/p><p>  void int1() interrupt 2</p><p><b>  {</b></p><p><b>  bb++;</b></p><p><b>  }</b></p><p>  void t2() interrupt 5

72、</p><p><b>  {</b></p><p><b>  TF2=0;</b></p><p><b>  sj++;</b></p><p>  if(sj==20)</p><p><b>  {</b></p

73、><p><b>  sj=0;</b></p><p><b>  miao++;</b></p><p>  if(miao==60)</p><p><b>  {</b></p><p><b>  miao=0;</b><

74、;/p><p><b>  fen++;</b></p><p>  if(fen==60)fen=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p

75、><p>  void beled()</p><p><b>  {</b></p><p>  BELL=LEDL=LEDR=0;</p><p>  delayns(150);</p><p>  BELL=LEDL=LEDR=1;</p><p><b>  

76、}</b></p><p>  void beled1()</p><p><b>  {</b></p><p>  BELL=LEDL=LEDR=0;</p><p>  delayns(1000);</p><p>  BELL=LEDL=LEDR=1; </p>

77、<p><b>  }</b></p><p>  void motor_ffw()</p><p><b>  { </b></p><p>  for (d=0; d<6; d++) //轉(zhuǎn)1*n圈 </p><p><b>  { </b&g

78、t;</p><p>  for (t=0; t<8; t++) //一個(gè)周期轉(zhuǎn)30度</p><p><b>  {</b></p><p>  if(keyA==1)goto d;</p><p>  if(K==1) P1=FFW[t]; //取數(shù)據(jù)</p><p>  

79、if(K==2) P1=FFZ[t];</p><p>  if(keyA==1)goto d; </p><p><b>  CCOut();</b></p><p><b>  EX0=1;</b></p><p>  delayns(30); //地方。</p><p&

80、gt;  if(keyA==1)goto d;</p><p>  DATA=(TH0<<8)|TL0;</p><p>  DATA=DATA*172/10000;</p><p><b>  DATA-=7;</b></p><p>  a[m]=DATA;</p><p><

81、;b>  m++;</b></p><p>  if(m==48)m=0; </p><p>  while((keyA==1)|(num!=0))</p><p><b>  {</b></p><p>  if(keyA==1)</p><p><b&g

82、t;  {</b></p><p>  d: delayns(10);</p><p>  if(keyA==1)</p><p><b>  {</b></p><p><b>  beled();</b></p><p>  writecom(0x01)

83、;</p><p><b>  num++;</b></p><p>  if(num==5)</p><p><b>  {</b></p><p><b>  num=0;</b></p><p>  writecom(0x80);</p>

84、;<p>  for(i=0;i<16;i++)</p><p><b>  {</b></p><p>  writedata(table9[i]);</p><p>  for(j=0;j<50;j++);</p><p><b>  };</b></p>

85、<p>  writecom(0xc0);</p><p>  for(i=0;i<16;i++)</p><p><b>  {</b></p><p>  writedata(table0[i]);</p><p>  for(j=0;j<50;j++);</p><p&g

86、t;<b>  };</b></p><p><b>  }</b></p><p>  if(num>=2){P2=0XD2;TR2=0;}</p><p>  else {P2=0XF3;TR2=1;}</p><p>  while(keyA==1);</p><p

87、><b>  }</b></p><p><b>  }</b></p><p>  if(keyB==1)</p><p><b>  {</b></p><p>  delayns(10);</p><p>  if(keyB==1)</

88、p><p><b>  {</b></p><p><b>  beled();</b></p><p>  switch(num)</p><p><b>  {</b></p><p>  case 1:kk=~kk;break;</p>

89、<p>  case 3:num1++;if(num1==4)num1=0;break;</p><p>  default:break;</p><p><b>  }</b></p><p>  while(keyB==1);</p><p><b>  }</b></p>

90、<p><b>  }</b></p><p>  if(keyC==1)</p><p><b>  {</b></p><p>  delayns(10);</p><p>  if(keyC==1)</p><p><b>  {</b&g

91、t;</p><p><b>  beled();</b></p><p>  switch(num)</p><p><b>  {</b></p><p>  case 1:if(kk==0){LEDL=1;LEDR=0;if(zkb1<=0){zkb1=0;beled1();}else

92、zkb1-=10;} else {LEDL=0;LEDR=1;if(zkb2<=0){zkb2=0;beled1();} else zkb2-=10;}break;</p><p>  case 2:YY2=1;bb=0;if(all>=99999)all=0;else all+=500;break;</p><p>  case 3:YY1=1;miao=fen=0;<

93、/p><p>  if(num1==0){if(fen1==59)fen1=0;else fen1++;}</p><p>  if(num1==1){if(miao1==59)miao1=0;else miao1++;}</p><p>  if(num1==2){if(fen2==59)fen2=0;else fen2++;}</p><p>

94、;  if(num1==3){if(miao2==59)miao2=0;else miao2++;} </p><p><b>  break;</b></p><p>  case 4:if(dis==99)dis=0;dis++;break;</p><p>  default:break;</p><p><

95、b>  }</b></p><p>  while(keyC==1);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(keyD==1)</p><p><b>  {</b>&

96、lt;/p><p>  if(keyD==1)</p><p><b>  {</b></p><p><b>  beled();</b></p><p>  switch(num)</p><p><b>  {</b></p><p

97、>  case 1:if(kk==0){LEDL=0;LEDR=1;if(zkb1>=40){zkb1=40;beled1();} else zkb1+=10;} else {LEDL=1;LEDR=0;if(zkb2>=40){zkb2=40;beled1();} else zkb2+=10;}break;</p><p>  case 2:YY2=1;bb=0;if(all<0)all

98、=99999;else all-=500;break;</p><p>  case 3:YY1=1;miao=fen=0;</p><p>  if(num1==1){if(miao1==0)miao1=59;else miao1--;}</p><p>  if(num1==0){if(fen1==0)fen1=59;else fen1--;}</p>

99、;<p>  if(num1==2){if(fen2==0)fen2=59;else fen2--;}</p><p>  if(num1==3){if(miao2==0)miao2=59;else miao2--;} </p><p><b>  break;</b></p><p>  case 4:if(dis==0)dis

100、=99;dis--;break;</p><p>  default:break;</p><p><b>  }</b></p><p>  while(keyD==1);</p><p><b>  }</b></p><p><b>  }</b>

101、</p><p>  switch(num)</p><p><b>  {</b></p><p><b>  case 1: </b></p><p>  writecom(0x80);</p><p>  for(i=0;i<16;i++)</p>

102、<p><b>  {</b></p><p>  writedata(table7[i]);</p><p>  for(j=0;j<50;j++);</p><p><b>  };</b></p><p>  writecom(0xc0);</p><p&g

103、t;  for(i=0;i<16;i++)</p><p><b>  {</b></p><p>  writedata(table8[i]);</p><p>  for(j=0;j<50;j++);</p><p><b>  };</b></p><p>

104、  writecom(0xc5);</p><p>  CCD(zkb1);</p><p>  LCD_DISP(ccd_dis);</p><p>  writecom(0xce);</p><p>  CCD(zkb2);</p><p>  LCD_DISP(ccd_dis);</p><p

105、><b>  break;</b></p><p><b>  case 2: </b></p><p>  writecom(0x80);</p><p>  for(i=0;i<16;i++)</p><p><b>  {</b></p><

106、;p>  writedata(table1[i]);</p><p>  for(j=0;j<50;j++);</p><p><b>  };</b></p><p>  writecom(0xc0);</p><p>  for(i=0;i<15;i++)</p><p>&

107、lt;b>  {</b></p><p>  writedata(table2[i]);</p><p>  for(j=0;j<50;j++);</p><p><b>  };</b></p><p>  writecom(0xc8);</p><p><b>

108、;  ACD(all);</b></p><p>  LCD_DISP(acd_dis);</p><p><b>  break;</b></p><p><b>  case 3: </b></p><p>  writecom(0x80);</p><p>

109、  for(i=0;i<15;i++)</p><p><b>  {</b></p><p>  writedata(table3[i]);</p><p>  for(j=0;j<50;j++);</p><p><b>  };</b></p><p>  

110、writecom(0xc0);</p><p>  for(i=0;i<15;i++)</p><p><b>  {</b></p><p>  writedata(table4[i]);</p><p>  for(j=0;j<50;j++);</p><p><b> 

111、 };</b></p><p><b>  break;</b></p><p><b>  case 4: </b></p><p>  writecom(0x80);</p><p>  for(i=0;i<15;i++)</p><p><b&g

112、t;  {</b></p><p>  writedata(table5[i]);</p><p>  for(j=0;j<50;j++);</p><p><b>  };</b></p><p>  writecom(0xc0);</p><p>  for(i=0;i<

113、;9;i++)</p><p><b>  {</b></p><p>  writedata(table6[i]);</p><p>  for(j=0;j<50;j++);</p><p><b>  };</b></p><p>  writecom(0xc5);

114、</p><p><b>  CCD(dis);</b></p><p>  LCD_DISP(ccd_dis);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }<

115、/b></p><p>  if(YY1==1)</p><p><b>  {</b></p><p>  if(fen1==fen&&miao1==miao)//秒</p><p><b>  {</b></p><p><b>  P2=

116、0XD2;</b></p><p><b>  YY1=0;</b></p><p><b>  beled1();</b></p><p>  while(keyB==0)</p><p><b>  {</b></p><p>  wri

117、tecom(0xC8);</p><p><b>  CCD(fen);</b></p><p>  LCD_DISP(ccd_dis);</p><p>  writecom(0xcb);</p><p>  CCD(miao);</p><p>  LCD_DISP(ccd_dis);<

118、/p><p>  if(fen2!=0|miao2!=0)</p><p><b>  {</b></p><p>  if(fen2==fen&&miao2==miao)goto c;</p><p><b>  } </b></p><p><b&

119、gt;  }</b></p><p>  if(fen2==fen&&miao2==miao)</p><p><b>  {</b></p><p>  c: miao=fen=0;</p><p><b>  YY1=1;</b></p>&l

120、t;p><b>  } </b></p><p><b>  P2=0XF3;</b></p><p><b>  beled();</b></p><p><b>  }</b></p><p><b>  }</b&g

121、t;</p><p>  if(YY2==1&&all!=0)</p><p><b>  { </b></p><p>  aa=(ulong)bb*15.70795;</p><p>  writecom(0x81);</p><p><b>  ACD(aa);&l

122、t;/b></p><p>  LCD_DISP(acd_dis);</p><p>  if(all>=aa)an=all-aa;</p><p>  else an=0;</p><p>  writecom(0xc1);</p><p><b>  ACD(an);</b><

123、;/p><p>  LCD_DISP(acd_dis);</p><p><b>  if(an==0)</b></p><p><b>  {</b></p><p><b>  P2=0XD2;</b></p><p><b>  beled1

124、();</b></p><p><b>  YY2=0;</b></p><p>  while(keyB==0&&(fen2!=fen|miao2!=miao));</p><p>  delayns(10);</p><p>  if(keyB==1|(fen2==fen&&

125、;miao2==miao))</p><p><b>  {</b></p><p>  if(fen2==fen&&miao2==miao)</p><p><b>  {</b></p><p>  miao=fen=0;</p><p><b>

126、;  bb=0;</b></p><p>  YY2=1; </p><p><b>  }</b></p><p><b>  P2=0XF3;</b></p><p><b>  beled();</b></p><p>

127、;<b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  }</b></p><p>

128、;<b>  if(K==2)</b></p><p><b>  {</b></p><p><b>  j=0;</b></p><p>  for(i=0;i<48;i++)</p><p>  if(a[j]>a[i])j=i;</p><

129、;p><b>  j=48-j;</b></p><p><b>  jj=48-j; </b></p><p>  if(a[jj]>=dis)</p><p><b>  {</b></p><p>  zkb1=zkb2=0;</p><p

130、><b>  LEDL=1;</b></p><p><b>  LEDR=1;</b></p><p>  } </p><p>  else if(a[jj]<dis)</p><p><b>  {</b></p><p&g

131、t;  if(j<4|j>44) </p><p><b>  {</b></p><p>  zkb1=zkb2=0;</p><p><b>  LEDL=1;</b></p><p><b>  LEDR=1;</b></p><p>

132、<b>  }</b></p><p>  if((j>=4)&&(j<=24))</p><p><b>  {</b></p><p>  if(zkb2>0)zkb2=0;</p><p><b>  zkb1=40;</b></p

133、><p><b>  LEDL=0;</b></p><p><b>  LEDR=1;</b></p><p><b>  }</b></p><p>  if((j>24)&&(j<=44))</p><p><b>

134、;  {</b></p><p>  if(zkb1>0)zkb1=0;</p><p><b>  zkb2=40;</b></p><p><b>  LEDR=0;</b></p><p><b>  LEDL=1;</b></p><

135、;p><b>  }</b></p><p><b>  }</b></p><p>  writecom(0x88);</p><p>  BCD(a[jj]);</p><p>  LCD_DISP(bcd_dis);</p><p>  writecom(0x8e

136、);</p><p><b>  CCD(j);</b></p><p>  LCD_DISP(ccd_dis);</p><p>  aa=(ulong)bb*15.70795;</p><p>  writecom(0x81);</p><p><b>  ACD(aa);</

137、b></p><p>  LCD_DISP(acd_dis);</p><p>  if(all>=aa)an=all-aa;</p><p>  else an=0;</p><p>  writecom(0xc1);</p><p><b>  ACD(an);</b></p

138、><p>  LCD_DISP(acd_dis);</p><p>  writecom(0xC8);</p><p><b>  CCD(fen);</b></p><p>  LCD_DISP(ccd_dis);</p><p>  writecom(0xcb);</p><p

139、>  CCD(miao);</p><p>  LCD_DISP(ccd_dis); </p><p><b>  } </b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {

140、</b></p><p>  initlcd();</p><p>  writecom(0x80);</p><p>  for(i=0;i<16;i++)</p><p><b>  {</b></p><p>  writedata(table9[i]);</p>

141、;<p>  for(j=0;j<50;j++);</p><p><b>  };</b></p><p>  writecom(0xc0);</p><p>  for(i=0;i<16;i++)</p><p><b>  {</b></p><p

溫馨提示

  • 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)論