版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)---智能超聲波壁障小車(chē)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--智能超聲波避障小車(chē)
- 智能超聲波避障小車(chē)-畢業(yè)設(shè)計(jì)論文
- 超聲波避障小車(chē)設(shè)計(jì)
- 智能超聲波避障小車(chē)的設(shè)計(jì)與制作-畢業(yè)論文
- 超聲波避障小車(chē)的設(shè)計(jì)書(shū)
- 基于at89s51超聲波避障智能小車(chē)課程設(shè)計(jì)
- 基于超聲波測(cè)距的智能小車(chē)設(shè)計(jì)
- 基于51單片機(jī)的超聲波智能避障小車(chē)論文
- 單片機(jī)課程設(shè)計(jì)——超聲波避障小車(chē)
- 基于超聲波技術(shù)的避障系統(tǒng)設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 單片機(jī)課程設(shè)計(jì)--超聲波避障小車(chē)
- 基于51單片機(jī)的超聲波避障小車(chē)設(shè)計(jì)
- 基于at89s52單片機(jī)的超聲波避障智能小車(chē)設(shè)計(jì)
- 具有超聲波測(cè)距功能的智能小車(chē)設(shè)計(jì)
- 基于51單片機(jī)的超聲波避障小車(chē)設(shè)計(jì)
- 超聲波測(cè)距畢業(yè)設(shè)計(jì)
- 超聲波測(cè)距畢業(yè)設(shè)計(jì)
- 超聲波測(cè)距畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)的超聲波避障小車(chē)設(shè)計(jì)-畢業(yè)論文
評(píng)論
0/150
提交評(píng)論