![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/7/15/2c524e2d-eb3c-4ae6-9800-470356931aff/2c524e2d-eb3c-4ae6-9800-470356931affpic.jpg)
![智能超聲波壁障小車畢業(yè)設(shè)計_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/7/15/2c524e2d-eb3c-4ae6-9800-470356931aff/2c524e2d-eb3c-4ae6-9800-470356931aff1.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 智能超聲波壁障小車設(shè)計</p><p> 【摘要】本文介紹一壁障;測距;遙控</p><p> 1 設(shè)計要求 ………………………………………………………………………………………3</p><p> 2 總體設(shè)計方案 …………………………………………………………………………………3</p><p> 2.1系統(tǒng)控制
2、模塊設(shè)計方案論證…………………2.2 超聲波壁障設(shè)計方案論證 ………………………………………………………………3</p><p> 2.3 顯示模塊設(shè)計方案論證………………………………………………………………… 4</p><p> 3 元器件介紹…………………………………………………………………………………… 4</p><p> 3.1 L298N電機(jī)專
3、用驅(qū)動芯片……………………………………………………………… 4</p><p> 3.2 CX20106A超聲波接收芯片………………………………………………………………5</p><p> 3.3 3144霍爾傳感器…………………………………………………………………………7</p><p> 3.4 ULN2003達(dá)林頓驅(qū)動器……………………………………
4、…………………………… 7</p><p> 4 系統(tǒng)硬件電路………………………………………………………………………………… 9</p><p> 4.1 超聲波發(fā)送接收電路…………………………………………………………………… 9</p><p> 4.2 步進(jìn)電機(jī)驅(qū)動電路……………………………………………………………………… 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è)計……………………………
6、……………………………………………………11</p><p> 5.1 設(shè)計思路…………………………………………………………………………………11</p><p> 5.2步進(jìn)電機(jī)帶動探頭測距壁障流程圖……………………………………………………12</p><p> 5.3主程序流程圖……………………………………………………………………………13</p&g
7、t;<p> 5.4系統(tǒng)總程序…………………………………………………………………………… 14 </p><p> 6 總結(jié)與體會…………………………………………………………………………………14</p><p> 7設(shè)計實物圖…………………………………………………………………………… 14 </p><p> 參考文獻(xiàn)………
8、…………………………………………………………………………………15</p><p> 附錄………………………………………………………………………………………………15</p><p><b> 一、設(shè)計要求</b></p><p> 1、自動壁障,且壁障距離可調(diào);</p><p> 2、測距精度為1cm;<
9、/p><p> 3、可遙控小車行駛;</p><p> 4、可測小車行駛路程</p><p> 5、可以定時、定路程控制小車停止或啟動</p><p><b> 二、設(shè)計方案</b></p><p> 2.1系統(tǒng)控制模塊設(shè)計方案論證</p><p> 方案一:采用S
10、TC12C5410單片機(jī)控制系統(tǒng)。STC12C5410單片機(jī)帶有PWM脈寬調(diào)制輸出端口,可直接用來控制電機(jī)轉(zhuǎn)速,且其運(yùn)行速度是8051單片機(jī)的8~12倍;但其I/O口少,即使是32管腳的芯片也只有27個,不夠用時需要擴(kuò)展I/O口,比較麻煩。</p><p> 方案二:采用STC89C52單片機(jī)控制系統(tǒng)。主要是通用I/O口多,一般不需要擴(kuò)展,而且控制指令簡單。</p><p> 由于對8
11、051系列單片機(jī)應(yīng)用比較熟悉,且系統(tǒng)需要用到的I/O口較多,而控制電機(jī)轉(zhuǎn)速的PWM信號用1個定時器即可模擬。所以此次設(shè)計選擇采用STC89C52單片機(jī)來控制。</p><p> 2.2超聲波壁障設(shè)計方案論證</p><p> 方案一:采用多方向超聲波測距分析來實現(xiàn)壁障。分別在小車的左、中、右三方向放置超聲波探頭,通過對三個方向超聲波的測距數(shù)據(jù)分析對比確定障礙物位置,再通過調(diào)節(jié)小車左右電
12、機(jī)轉(zhuǎn)速差控制小車行駛方向?qū)崿F(xiàn)壁障。</p><p> 方案二:通過步進(jìn)電機(jī)帶動一對超聲波探頭旋轉(zhuǎn)進(jìn)行各方向測距,將各方向測得數(shù)據(jù)通過單片機(jī)對比分析可得到障礙物方向,然后也是通過調(diào)節(jié)小車左右電機(jī)轉(zhuǎn)速差控制小車行駛方向?qū)崿F(xiàn)壁障。</p><p> 方案一需要3對的超聲波探頭,為了防止信號相互干擾各個超聲波發(fā)送信號要相互間隔,顯得繁雜,而且當(dāng)障礙物與左右側(cè)的超聲波探頭大于一定角度時將不能接收
13、到超聲波信號,方案二通過180度掃描可以很好地檢測到各個方向的障礙物,障礙物判斷更可靠,壁障效果更好。因此選用方案二設(shè)計。</p><p> 2.3 顯示模塊設(shè)計方案論證</p><p> 方案一:采用七段LED數(shù)碼管顯示相關(guān)數(shù)據(jù)。數(shù)碼管顯示具有高亮、可視距離遠(yuǎn)、壽命長的優(yōu)點(diǎn),但是一位數(shù)碼管只能顯示一位數(shù)據(jù),要想同時顯示多個數(shù)據(jù),只能增加數(shù)碼管數(shù)目來實現(xiàn),而且數(shù)碼管的PCB布線繁雜,數(shù)
14、目越多布線越困難。</p><p> 方案二:采用LCD1602液晶顯示。液晶顯示具有耗能少、可同時顯示數(shù)據(jù)多、控制指令簡單、PCB布線簡單等優(yōu)點(diǎn)。</p><p> 通過對比兩種顯示方案的優(yōu)缺點(diǎn),本次設(shè)計決定采用方案二。</p><p><b> 元器件介紹</b></p><p> 3.1 L298N電機(jī)專
15、用驅(qū)動芯片:</p><p> L298是SGS(通標(biāo)標(biāo)準(zhǔn)技術(shù)服務(wù)有限公司)公司的產(chǎn)品,比較常見的是15腳Multiwatt封裝的L298N,內(nèi)部包含4通道邏輯驅(qū)動電路。是一種二相和四相電機(jī)的專用驅(qū)動器,即內(nèi)含二個H橋的高電壓大電流雙全橋式驅(qū)動器,接收標(biāo)準(zhǔn)TTL邏輯電平信號,可驅(qū)動46V、2A以下的電機(jī)。其引腳排列如上圖中所示。 L298N的引腳9為LOGIC SUPPLY VOLTAGE Vss,即
16、邏輯供應(yīng)電壓。引腳4為SUPPLY VOLTAGE Vs,即驅(qū)動部分輸入電壓。Vss電壓要求輸入最小電壓為4.5V,最大可達(dá)36V;Vs電壓最大值也是36V,但經(jīng)過我的實驗,Vs電壓應(yīng)該比Vss電壓高,否則有時會出現(xiàn)失控現(xiàn)象。它的引腳2,3,13,14為L298N芯片輸入到電動機(jī)的輸出端,其中引腳2和3能控制兩相電機(jī),對于直流電動機(jī),即可控制一個電動機(jī)。同理,引腳13和14也可控制一個直流電動機(jī)。引腳6和11腳為電動機(jī)的使能接線腳。引腳
17、5,7,10,12為單片機(jī)輸入到L298N芯片的輸入引腳。下表是其使能、輸入引腳和輸出引腳的邏輯關(guān)系:</p><p> 控制使能引腳ENA或者ENB就可以實現(xiàn)PWM脈寬速度調(diào)整。1腳和15腳可單獨(dú)引出連接電流采樣電阻器,形成電流傳感信號,也可以直接接地。在可設(shè)計中就將它們直接接地。引腳8為芯片的接地引腳,它與L298N芯片的散熱片連接在一起。由于本芯片的工作電流比較大,發(fā)熱量也比較大,所以在本芯片的散熱片上又
18、連接了一塊鋁合金,以增大它的散熱面積。</p><p> 該芯片的一些參數(shù)如下:</p><p> (1) 邏輯部分輸入電壓:6~7V</p><p> (2) 驅(qū)動部分輸入電壓Vs:4.8~46V</p><p> (3) 邏輯部分工作電流Iss:≤36mA</p><p> (4) 驅(qū)動部分工作電流Io:
19、≤2A</p><p> (5) 最大耗散功率:25W(T=75℃)</p><p> (6) 控制信號輸入電平:高電平:2.3V≤Vin≤Vss,低電平:-0.3V≤Vin≤1.5V</p><p> (7) 工作溫度:-25℃~+130℃</p><p> (8) 驅(qū)動形式:雙路大功率H橋驅(qū)動</p><p&g
20、t; 3.2 CX20106A超聲波接收芯片</p><p> (1)CX20106A內(nèi)部結(jié)構(gòu)圖:</p><p><b> ?。?)管腳說明:</b></p><p> 3.3 3144霍爾傳感器</p><p> 3端輸出需要接上拉電阻。當(dāng)有磁鐵靠近時,霍爾傳感器輸出低電平。</p><
21、;p> 3.4 ULN2003達(dá)林頓驅(qū)動器</p><p> ULN2003是大電流驅(qū)動陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中。可直接驅(qū)動繼電器等負(fù)載。 輸入5VTTL電平,輸出可達(dá)500mA/50V。ULN2003是高耐壓、大電流達(dá)林頓陳列,由七個硅NPN達(dá)林頓管組成。 ULN2003的每一對達(dá)林頓都串聯(lián)一個2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路直接
22、相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器。ULN2003具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類要求高速大功率驅(qū)動的系統(tǒng)。 </p><p> ULN2003芯片引腳圖</p><p> ULN2003芯片引腳介紹</p><p> 引腳1:CPU脈沖輸入端,端口對應(yīng)一個信號輸出端。 </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個續(xù)流二極管負(fù)極的公共端,各二極管的正極分別接各達(dá)林頓管的集電極。用于感性負(fù)載時,該腳接負(fù)載電源正極,實現(xiàn)續(xù)流作用。如果該腳接地,實際上就是達(dá)林頓管的集電極對地接通。 </p><p> 引腳10:脈沖信號輸出端,對應(yīng)7腳信號輸入端。 </p><p><b&
25、gt; 參考電路接法</b></p><p> 引腳11:脈沖信號輸出端,對應(yīng)6腳信號輸入端。 </p><p> 引腳12:脈沖信號輸出端,對應(yīng)5腳信號輸入端。 </p><p> 引腳13:脈沖信號輸出端,對應(yīng)4腳信號輸入端。 </p><p> 引腳14:脈沖信號輸出端,對應(yīng)3腳信號輸入端。 </p>
26、<p> 引腳15:脈沖信號輸出端,對應(yīng)2腳信號輸入端。 </p><p> 引腳16:脈沖信號輸出端,對應(yīng)1腳信號輸入端。</p><p><b> 四、硬件設(shè)計</b></p><p> 4.1 超聲波發(fā)送接收電路</p><p> 4.2 步進(jìn)電機(jī)驅(qū)動電路</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è)計</b></p><p><b> 5.1設(shè)計思路</b></p><p>
28、 本次設(shè)計軟件部分主要包括測距壁障程序、遙控參數(shù)設(shè)置程序、顯示程序、定時器及相關(guān)中斷程序。</p><p> 本次設(shè)計采用外部中斷0接收超聲波信號,外部中斷1接收霍爾傳感器信號測行駛路程,定時器0結(jié)合外部中斷0為超聲波發(fā)送接收計時進(jìn)行測距,定時器1用來產(chǎn)生PWM信號控制小車轉(zhuǎn)速,定時器2為小車行駛計時。為了避免中斷沖突造成錯誤處理,應(yīng)該對某些中斷設(shè)為高優(yōu)先級,且中斷執(zhí)行程序不應(yīng)過長。</p>&l
29、t;p> 為了提高壁障靈敏度,步進(jìn)電機(jī)帶動超聲波探頭進(jìn)行180度來回旋轉(zhuǎn),且對于占用時間的顯示程序能少的應(yīng)盡量少。</p><p> 遙控要能實現(xiàn)對小車左右輪控制、定路程停止點(diǎn)調(diào)節(jié)、定時停止及啟動點(diǎn)調(diào)節(jié),以及對壁障距離調(diào)節(jié)。</p><p> 5.2步進(jìn)電機(jī)帶動探頭旋轉(zhuǎn)測距壁障流程圖</p><p> 5.3 主程序流程圖</p><
30、;p> 5.4 系統(tǒng)總程序:見附錄</p><p><b> 六、總結(jié)體會</b></p><p> 本次電子系統(tǒng)設(shè)計前期實現(xiàn)定時器控制PWM輸出編程,步進(jìn)電機(jī)驅(qū)動控制,超聲波發(fā)送接收模塊;設(shè)計后期畫原理圖和PCB圖,然后腐蝕、焊接電路板;最后程序整合及改善以及調(diào)試,同時發(fā)現(xiàn)調(diào)試出現(xiàn)的問題并尋找解決辦法。經(jīng)過不斷的努力,提前完成了設(shè)計任務(wù),并且各個預(yù)期功能
31、基本實現(xiàn)。</p><p> 前期通過觀看網(wǎng)上壁障小車相關(guān)視頻,有了用步進(jìn)電機(jī)帶動超聲波探頭轉(zhuǎn)動的構(gòu)思。但是網(wǎng)上視頻基本上都是超聲波探頭橫著放的,我通過調(diào)試發(fā)現(xiàn)探頭豎著放效果更好,準(zhǔn)確度更高。</p><p> 遙控模塊直接采用TDL-9915*RF和TDL-9915*TF,遙控發(fā)射模塊TDL-9915*RF按鍵后,接收模塊TDL-9915*TF對應(yīng)輸出高電平,沒按鍵時輸出低電平。這樣
32、可方便控制小車各種模式。</p><p> 整個系統(tǒng)設(shè)計進(jìn)行了半個多月,主要在編程和調(diào)試上花了很長時間,從中積累了許多編程經(jīng)驗,同時提高了自己的編程能力。</p><p> 由于對51單片機(jī)及l(fā)cd1602液晶都比較熟悉,所以調(diào)試在這兩模塊問題不大。而對于L298N電機(jī)驅(qū)動芯片和超聲波模塊以前都沒接觸過,因此調(diào)試時出現(xiàn)的問題較多,特別是超聲波模塊,網(wǎng)上相關(guān)資料對cx20106a的2腳電
33、阻取值都在10歐姆以下,而自己設(shè)計的超聲波模塊最少也要120歐姆才能有效接收信號,否則小了會有自激信號。這個問題最后是在ourdev.com網(wǎng)站解決的,許多網(wǎng)友也遇到了同樣的問題。</p><p> 這次的成功,極大地提高了自己電子設(shè)計的興趣。同時,要感謝賴?yán)蠋煹亩喾笇?dǎo)和提供意見,以及08電本班其他同學(xué)的幫助。</p><p><b> 七、設(shè)計實物圖</b>&
34、lt;/p><p><b> 八、參考文獻(xiàn)</b></p><p> 1、郭天祥.《新概念51單片機(jī)C語言教程》.電子工業(yè)出版社.</p><p> 2、嚴(yán)桂蘭.《C語言程序設(shè)計與應(yīng)用教程》.廈門大學(xué)出版社.</p><p> 3、陸應(yīng)華.《電子系統(tǒng)設(shè)計教程》.國防工業(yè)出版社.</p><p>
35、; 4、李剛、林凌、姜葦《單片機(jī)系統(tǒng)設(shè)計與應(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定時器方式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)先級 </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;//開總中斷</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++) //一個周期轉(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計---智能超聲波壁障小車設(shè)計
- 畢業(yè)設(shè)計--智能超聲波避障小車
- 智能超聲波避障小車-畢業(yè)設(shè)計論文
- 超聲波避障小車設(shè)計
- 智能超聲波避障小車的設(shè)計與制作-畢業(yè)論文
- 超聲波避障小車的設(shè)計書
- 基于at89s51超聲波避障智能小車課程設(shè)計
- 基于超聲波測距的智能小車設(shè)計
- 基于51單片機(jī)的超聲波智能避障小車論文
- 單片機(jī)課程設(shè)計——超聲波避障小車
- 基于超聲波技術(shù)的避障系統(tǒng)設(shè)計【畢業(yè)設(shè)計】
- 單片機(jī)課程設(shè)計--超聲波避障小車
- 基于51單片機(jī)的超聲波避障小車設(shè)計
- 基于at89s52單片機(jī)的超聲波避障智能小車設(shè)計
- 具有超聲波測距功能的智能小車設(shè)計
- 基于51單片機(jī)的超聲波避障小車設(shè)計
- 超聲波測距畢業(yè)設(shè)計
- 超聲波測距畢業(yè)設(shè)計
- 超聲波測距畢業(yè)設(shè)計
- 基于51單片機(jī)的超聲波避障小車設(shè)計-畢業(yè)論文
評論
0/150
提交評論