智能超聲波壁障小車畢業(yè)設(shè)計_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論