

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