單片機課程設計---基于單片機的超聲波測距儀_第1頁
已閱讀1頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  單片機課程設計報告</b></p><p>  基于單片機的超聲波測距儀 </p><p> 學生姓名</p><p> 學 號</p><p> 專 業(yè)電子信息工程專業(yè)</p><p> 班 級</p><p> 指導教師&

2、lt;/p><p> 學 部計算機科學與電氣工程</p><p> 課程設計時間2012年6月18日</p><p>  基于單片機的超聲波測距儀 </p><p><b>  摘  要</b></p><p>  超聲波是指頻率高于20KHz的機械波。為了以超聲波作為檢測手段,必須產(chǎn)生超生波

3、和接收超聲波。完成這種功能的裝置就是超聲波傳感器,習慣上稱為超聲波換能器或超聲波探頭。超聲波傳感器有發(fā)送器和接收器,但一個超聲波傳感器也可具有發(fā)送和接收聲波的雙重作用。超聲波傳感器是利用壓電效應的原理將電能和超聲波相互轉(zhuǎn)化,即在發(fā)射超聲波的時候,將電能轉(zhuǎn)換成超聲波;而在收到回波的時候,則將超聲振動轉(zhuǎn)換成電信號。</p><p>  關鍵詞:超聲波測距儀;超聲波傳感器;壓電效應</p><p&g

4、t;<b>  目  錄</b></p><p><b>  摘  要I</b></p><p>  第1章 緒  論3</p><p>  1.1 超聲波測距儀的設計思路3</p><p>  1.1.1整體設計3</p><p>  1.1.2實現(xiàn)過程3<

5、/p><p>  1.1.3 應用前景3</p><p>  1.2 超聲波測距儀的原理4</p><p>  1.2.1 算法設計4</p><p>  第2章 超聲波測距儀系統(tǒng)結(jié)構(gòu)介紹5</p><p>  2.1 系統(tǒng)結(jié)構(gòu)框圖5</p><p>  2.2 超聲波發(fā)射電路簡介5&l

6、t;/p><p>  2.3超聲波接收電路簡介5</p><p>  2.4 液晶顯示6</p><p>  2.5 本章小結(jié)6</p><p>  第3章 系統(tǒng)硬件電路設計7</p><p>  3.1 單片機介紹7</p><p>  3.2 單片機最小系統(tǒng)設計7</p>

7、<p>  3.2.1 單片機時鐘電路介紹8</p><p>  3.2.2 單片機復位電路介紹9</p><p>  3.3超聲波發(fā)射電路9</p><p>  3.3.1 MAX232芯片9</p><p>  3.3.2 MAX232芯片引腳介紹10</p><p>  3.3.3 發(fā)射電

8、路圖介紹10</p><p>  3.4超聲波接收電路10</p><p>  3.4.1 TL074芯片10</p><p>  3.4.2 芯片內(nèi)部結(jié)構(gòu)11</p><p>  3.4.3 芯片引腳功能11</p><p>  3.4.4 超聲波接收電路圖11</p><p> 

9、 3.5 液晶顯示電路12</p><p>  3.6本章小結(jié)12</p><p>  第4章 系統(tǒng)軟件調(diào)試環(huán)境介紹13</p><p>  4.1 Keil編程軟件介紹13</p><p>  4.1.1 軟件功能13</p><p>  4.1.2 軟件應用流程13</p><p&g

10、t;  4.2 STC程序下載軟件功能介紹19</p><p>  4.3 軟件應用流程20</p><p>  4.4 本章小結(jié)22</p><p>  第5章 系統(tǒng)程序設計23</p><p>  5.1 系統(tǒng)程序設計流程圖23</p><p>  5.2 XX程序模塊詳細流程圖23</p>

11、<p>  5.2.1 程序流程圖對應程序代碼23</p><p>  5.3 XX程序模塊詳細流程圖23</p><p>  5.3.1 程序流程圖對應程序代碼23</p><p>  5.4 本章小結(jié)23</p><p><b>  結(jié)  論24</b></p><p>

12、;<b>  參考文獻25</b></p><p><b>  附  錄26</b></p><p><b>  附錄A26</b></p><p><b>  附錄B27</b></p><p>  基于單片機的超聲波測距儀</p>

13、<p><b>  緒  論</b></p><p>  超聲波測距儀的設計思路</p><p><b>  1.1.1整體設計</b></p><p>  本設計采用以8051單片機為核心的低成本,高精度,微型化數(shù)字顯示超聲波測距儀的硬件電路和軟件設計方法。整個電路采用模塊化設計,由主程序,預置子程序,發(fā)射子

14、程序,接收子程序和顯示子程序組成,各探頭的信號經(jīng)單片機綜合分析處理,實現(xiàn)超聲波測距儀的各種功能。在此基礎上設計了系統(tǒng)的總體方案,最后通過硬件和軟件實現(xiàn)了各個功能模塊。相關部分附有硬件電路圖,程序流程圖,經(jīng)實驗證明,這套系統(tǒng)軟硬件設計合理,抗干擾能力強,實時性良好,經(jīng)過系統(tǒng)擴展和升級,可以有效地解決汽車倒車,建筑施工工地以及一些工業(yè)現(xiàn)場的位置監(jiān)控。</p><p><b>  1.1.2實現(xiàn)過程</

15、b></p><p>  超聲波測距儀電路主要由單片機系統(tǒng)及顯示電路、超聲波發(fā)射電路和超聲波檢測接收電路三部分組成。采用8051來實現(xiàn)對超聲波發(fā)射和接受處理模塊的控制。利用單片機控制超聲波的發(fā)送,然后單片機不停的檢測INT1引腳,當INT1引腳的電平由高電平變?yōu)榈碗娖綍r就認為超聲波已經(jīng)返回。計數(shù)器所計的數(shù)據(jù)就是超聲波所經(jīng)歷的時間,通過換算就可以得到傳感器與障礙物之間的距離。</p><p

16、>  1.1.3 應用前景</p><p>  隨著科學技術的快速發(fā)展,超聲波在測距儀中的應用越來越廣。但就目前技術水平來說,人們可以具體利用的測距技術還十分有限。因此這是一個正在蓬勃發(fā)展而又無限前景的技術與產(chǎn)業(yè)領域。展望未來,超聲波測距儀作為一種新型的非常重要有用的工具在各方面都將有很大的發(fā)展空間,它將朝著更高定位高精度的方向發(fā)展,以滿足日益發(fā)展的社會需求。</p><p><

17、;b>  超聲波測距儀的原理</b></p><p>  1.2.1 算法設計</p><p>  超聲波測距的原理為超聲波發(fā)生器T在某一時刻發(fā)出一個超聲波信號,當這個超聲波遇到被測物體后反射回來,就被超聲波接收器R所接收到。這樣只要計算出從發(fā)出超聲波信號到接收到返回信號所用的時間,就可算出超聲波發(fā)生器與反射物體的距離。距離的計算公式為:</p><p

18、>  d=s/2=(c×t)/2                                                                                    其中,d為被測物與測距儀的距離,s為聲波的來回的路程,c為聲速,t為聲波來回所用的時間。在啟動發(fā)射電路的同時啟動單片機內(nèi)部的定時器T0,利用定時器的計數(shù)功能記錄超聲波發(fā)射的時間和收到反射波的時間。當收到超聲波反射波時,接收電

19、路輸出端產(chǎn)生一個負跳變,在INT0或INT1端產(chǎn)生一個中斷請求信號,單片機響應外部中斷請求,執(zhí)行外部中斷服務子程序,讀取時間差,計算距離。</p><p>  超聲波測距儀系統(tǒng)結(jié)構(gòu)介紹</p><p><b>  系統(tǒng)結(jié)構(gòu)框圖</b></p><p>  本設計采用單片機8051為控制核心,實現(xiàn)超聲波測距儀的基本測量功能。超聲波測距儀硬件框圖如

20、圖2-1所示</p><p>  2.2 超聲波發(fā)射電路簡介</p><p>  壓電超聲波轉(zhuǎn)換器的功能:利用壓電晶體諧振工作。內(nèi)部結(jié)構(gòu)上圖所示,它有兩個壓電晶片和一個共振板。當它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片將會發(fā)生共振,并帶動共振板振動產(chǎn)生超聲波,這時它就是一超聲波發(fā)生器;如沒加電壓,當共振板接受到超聲波時,將壓迫壓電振蕩器作振動,將機械能轉(zhuǎn)換為電信號

21、,這時它就成為超聲波接受轉(zhuǎn)換器。超聲波發(fā)射轉(zhuǎn)換器與接受轉(zhuǎn)換器其結(jié)構(gòu)稍有不同。</p><p>  2.3超聲波接收電路簡介</p><p>  集成電路CX20106A是一款紅外線檢波接收的專用芯片,常用于電視機紅外遙控接收器??紤]到紅外遙控常用的載波頻率38kHz與測距的超聲波頻率40kHz較為接近,可以利用它制作超聲波檢測接收電路。實驗證明用CX20106A接收超聲波(無信號時輸出高電

22、平),具有很好的靈敏度和較強的抗干擾能力。適當更改電容CS的大小,可以改變接收電路的靈敏度和抗干擾能力。</p><p><b>  2.4 液晶顯示</b></p><p>  液晶顯示器(LCD)具有工作電壓低、微功耗、顯示信息量大和接口方便等優(yōu)點,現(xiàn)在已被廣泛應用于計算機和數(shù)字式儀表等領域,成為測量結(jié)果顯示和人機對話的重要工具。液晶顯示器按其功能可分為三類:筆段

23、式液晶顯示器、字符點陣式液晶顯示器和圖形點陣式液晶顯示器。前兩種可顯示數(shù)字、字符和符號等,而圖形點陣式液晶顯示器還可以顯示漢字和任意圖形,達到圖文并茂的效果,其應用越來越廣泛。</p><p><b>  2.5 本章小結(jié)</b></p><p>  通過設計題目要求,了解超聲波發(fā)射電路和接收電路,采用AT89C2來實現(xiàn)對超聲波發(fā)射和接受處理模塊的控制。實現(xiàn)利用超聲波

24、對距離的測量。</p><p><b>  系統(tǒng)硬件電路設計</b></p><p><b>  3.1 單片機介紹</b></p><p>  51單片機是對目前所有兼容Intel8031指令系統(tǒng)的單片機的統(tǒng)稱。該系列單片機的始祖是Intel的8031單片機,后來隨著Flashrom技術的發(fā)展,8031單片機取得了長足的

25、進展,成為目前應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用于工業(yè)測控系統(tǒng)之中。目前很多公司都有51系列的兼容機型推出,在目前乃至今后很長的一段時間內(nèi)將占有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。需要注意的是52系列的單片機一般不具備自編程能力。</p><p>  3.2 單片機最小系統(tǒng)設計</p><p>  其作用主要是為了

26、保證單片機系統(tǒng)能正常工作。如圖3-1所示,單片機最小系統(tǒng)主要由8051單片機、外部振蕩電路、復位電路和+5V電源組成。在外部振蕩電路中,單片機的XTAL1和XTAL2管腳分別接至由12MHZ晶振和兩個30PF電容構(gòu)成的振蕩電路兩側(cè),為電路提供正常的時鐘脈沖。在復位電路中,單片機RESET管腳一方面經(jīng)20uF的電容接至電源正極,實現(xiàn)上電自動復位,另一方面經(jīng)開關s接電源。其主要功能是把PC初始化為0000H,是單片機從0000H單元開始執(zhí)行

27、程序,除了進入系統(tǒng)的初始化之外,當由于程序出錯或者操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為了擺脫困境,也需要按復位鍵重新啟動,因此,復位電路是單片機系統(tǒng)中不可缺少的一部分。</p><p>  圖3-1 8051單片機最小系統(tǒng)</p><p>  3.2.1 單片機時鐘電路介紹</p><p>  單片機的時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩方式。在引腳<

28、;/p><p>  XTAL1和XTAL2外接晶體振蕩器,構(gòu)成了內(nèi)部振蕩方式。由于單片機內(nèi)部有一個高增益的反相放大器,當外接晶振后,就構(gòu)成了自激振蕩,并產(chǎn)生振動時鐘脈沖。晶振通常選用6MHZ、12MHZ、24MHZ。本設計中時鐘電路圖如圖3-2所示,我們選擇了12MHZ和晶振分別接引腳XTAL1和XTAL2,電容C1,C2均選擇為30pF,對振蕩器的頻率有穩(wěn)定作用,當頻率較大時,正弦波、方波、三角波及鋸齒波中每一點的

29、延時時間為幾微妙,故延時時間還要加上指令時間才能獲得較大的頻率波形。</p><p>  圖3-2 單片機時鐘電路</p><p>  3.2.2 單片機復位電路介紹</p><p>  復位引腳RST通過一個斯密特觸發(fā)器與復位電路相連,斯密特觸發(fā)器用來抑制噪聲,在每個機器周期的S5P2,斯密特觸發(fā)器的輸出電平由復位電路采樣一次,然后才能得到內(nèi)部復位操作所需要的信號

30、。復位電路通常采用上電自動復位和按鈕復位兩種式。本設計選擇了按鍵復位如圖3-3,在系統(tǒng)運行時,按一下開關,就在RST斷出現(xiàn)一段高電平,使時鐘電路圖器件復位。</p><p>  圖3-3 單片機復位電路</p><p>  3.3超聲波發(fā)射電路</p><p>  3.3.1 MAX232芯片</p><p>  MAX232芯片是美信(MA

31、XIM)公司專為RS-232標準串口設計的單電源電平轉(zhuǎn)換芯片,如圖3-4所示,使用+5v單電源供電。MAX220–MAX249系列線驅(qū)動器/接收器,專為EIA/TIA-232E以及V.28/V.24通信接口設計,尤其是無法提供±12V電源的應用。</p><p>  3.3.2 MAX232芯片引腳介紹</p><p>  第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電

32、容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個電源,提供給RS-232串口電平的需要。</p><p>  第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個數(shù)據(jù)通道。</p><p>  其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。</p><p>  8腳(R2IN)、9腳(R2OUT

33、)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。</p><p>  TTL/CMOS數(shù)據(jù)從T1IN、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。</p><p>  第三部分是供電。15腳GND、16腳VCC(+5v)。</p&g

34、t;<p>  3.3.3 發(fā)射電路圖介紹</p><p>  超聲波發(fā)射電路圖如圖3-5所示:</p><p>  圖3-5 超聲波發(fā)射電路</p><p>  3.4超聲波接收電路</p><p>  3.4.1 TL074芯片</p><p>  TL074芯片是四運算放大器,適合于電源電壓范圍很寬

35、的單電源使用,也適用于雙電源供電工作模式,在推薦的工作條件下,電源電流與電源電壓無關。他的適用范圍包括傳感放大器、直流增益模塊和其他所有可用單電源供電的使用運算放大器的場合。</p><p>  3.4.2 芯片內(nèi)部結(jié)構(gòu)</p><p>  TL074芯片結(jié)構(gòu)如圖3-6所示:</p><p>  圖3-6 TL074內(nèi)部結(jié)構(gòu)</p><p>

36、  3.4.3 芯片引腳功能</p><p>  1引腳為輸出 </p><p><b>  2引腳反相輸入</b></p><p>  3—同相輸入 </p><p><b>  4—電源 </b></p><p>  5—同相輸入

37、 </p><p><b>  6—反相輸入</b></p><p>  7—輸出 </p><p><b>  8—輸出</b></p><p><b>  9—反相輸入</b></p><p><b>  

38、10—同相輸入</b></p><p><b>  11—電源</b></p><p><b>  12—同相輸入</b></p><p><b>  13—反相輸入</b></p><p><b>  14—輸出</b></p>

39、<p>  3.4.4 超聲波接收電路圖</p><p>  超聲波接收電路圖如圖3-7所示</p><p>  圖3-7 超聲波接收電路</p><p>  3.5 液晶顯示電路</p><p>  根據(jù)設計要求并綜合各 方面因素,可以采用AT89S51單片機作為主控制器,實現(xiàn)液晶顯示,超聲波驅(qū)動信號用單片機的定時器完成,顯示電

40、路如下圖3-8所示</p><p>  圖3-8 液晶顯示電路</p><p><b>  3.6本章小結(jié)</b></p><p>  硬件電路制作完成并調(diào)試好后,便可將程序編譯好下載到單片機試運行。根據(jù)實際情況可以修改超聲波發(fā)生子程序每次發(fā)送的脈沖寬度和兩次測量的間隔時間,以適應不同距離的測量需要。系統(tǒng)調(diào)試完后應對測量誤差和重復一致性進行多次

41、實驗分析,不斷優(yōu)化系統(tǒng)使其達到實際使用的測量要求。</p><p>  系統(tǒng)軟件調(diào)試環(huán)境介紹</p><p>  Keil編程軟件介紹</p><p>  Keil軟件是目前最流行開發(fā)MCS-51系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,

42、通過一個集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。運行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對于使用51系列單片機的愛好者來說是十分必要的,如果你使用C語言編程,那么Keil幾乎就是你的不二之選(目前在國內(nèi)你只能買到該軟件、而你買的仿真機也很可能只支持該軟件),即使不使用C語言而僅用匯編語言編程,其

43、方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令你事半功倍。</p><p><b>  軟件功能</b></p><p>  C51系列單片機及以51系列為內(nèi)核的單片機的編譯工具,可以混合編程,仿真等??膳cPROTUES聯(lián)機仿真,不過需要聯(lián)調(diào)補丁,也可以生成HEX文件在PROTUES里仿真。</p><p><b>  軟件應用流程

44、</b></p><p>  Keil51 編譯步驟: </p><p>  1. 打開Keil51軟件,首先彈出一個開機啟動畫面。如圖4-1:</p><p>  圖4-1 開機啟動畫面</p><p>  2. 然后進入Keil51的開發(fā)界面。下面簡要介紹一下Keil51開發(fā)環(huán)境中各個區(qū)域的功能。</p>&l

45、t;p>  Keil51開發(fā)環(huán)境可以分為四個區(qū)域,分別為:菜單條、項目文件管理窗口、代碼編譯窗口和代碼編譯信息窗口四個部分。菜單條分為十項,所有的命令都可以在這里找到。下面的命令是一些常用的菜單命令,如文件的打開、關閉及保存。其中編譯命令最為常用。</p><p>  中間靠左是項目文件管理窗口,這里可以看到當前項目中所包含的所有帶編譯的文件。項目文件管理窗口的右側(cè)是代碼編譯窗口,這事我們最主要的工作區(qū)域。

46、</p><p>  最底層顯示了代碼編譯的信息。當代碼有語法錯誤時,可以在這里輕松的找到問題的所在。</p><p>  3.下面以建立一個簡單的項目為例,來說明Keil51開發(fā)項目的一般方法。單擊Project菜單項,選擇New Project項。如圖4-2:</p><p>  圖4-2 新建項目</p><p>  4.此時彈出Cr

47、eate New Project對話框,選擇合適的路徑口,在文件名一欄中填入新工程的名字。單擊保存。如圖4-3:</p><p>  圖 4-3 新建文件并命名</p><p>  5.根據(jù)所用的器件,選擇CPU的型號,單擊確定。如圖4-4:</p><p>  圖 4-4 選擇CPU型號</p><p>  6.Keil51詢問是否生成

48、默認的配置文件,這個可選可不選,這里選定。單擊Yes,觀察項目文件管理窗口的變化。</p><p>  7.在File菜單下單擊New選項,新建文件。此時在代碼窗口出現(xiàn)一“Text1”空白文檔。如圖4-5:</p><p>  圖 4-5 新建文件</p><p>  8. 在“Text1”中編輯完代碼后,單擊File菜單中的保存項,彈出保存對話框。保存名寫為te

49、xt.c。單擊保存。注意在對文件命名時必須加擴展名。如圖4-6:</p><p>  圖 4-6 命名文件并保存</p><p>  9.在項目導航欄中Source Group 上單擊右鍵,選Add File to Group ‘Source Group 1’。如圖4-7:</p><p>  圖 4-7 增加文件到組</p><p> 

50、 10. 此時彈出Add File 對話框。選中剛才保存的text.c文件。單擊Add。</p><p>  此時在項目文件管理窗口中就會出現(xiàn)剛才所添加的文件text.c。如圖4-8:</p><p>  圖 4-8 添加文件</p><p>  11. 單擊快捷菜單欄中的編譯按鈕,可以編譯程序。</p><p>  12. 單擊Proje

51、ct菜單項,選擇Option for Target ‘Target 1’選項。在彈出的對話框中可以對Project進行總體配置。如圖4-9:</p><p>  圖 4-9 進行總體配置</p><p>  13. 選擇Output 選項卡,單擊Create HEX File ,代碼輸出格式應為HEX-80 。如圖4-10:</p><p>  圖 4-10 建

52、立HEX文件</p><p>  14. 單擊確定后,并重新編譯??梢钥吹骄幾g成功之后,Build 選項卡里又多了一項。這是生成的HEX 文件。</p><p>  15. 單擊Debug 菜單項中的Start/Stop Debug Session 命令或工具欄中的進入調(diào)試界面。如圖4-11:</p><p>  圖 4-11 進行調(diào)試</p><

53、;p>  16. 單擊調(diào)試界面Debug 菜單項中的Go命令或工具欄中的運行程序,單擊Stop Running 命令或來結(jié)束程序。觀察運行結(jié)果,若結(jié)果正確,便可通過下載軟件將它燒寫到目標板上去。</p><p>  這樣,一個簡單的Keil 51下的項目就完成了。</p><p>  注:Keil 51 對匯編語言文件的編譯調(diào)試步驟和對C語言的編譯調(diào)試基本上是一樣的,只是在第八步中用

54、匯編語言進行代碼的編寫,并在保存文件時將擴展名加成 . asm。</p><p>  STC程序下載軟件功能介紹</p><p>  通過Keil軟件編程,編譯后會生成一個hex文件,STC軟件就是把生成的hex文件寫入單片機,從而在單片機上實現(xiàn)一些實驗現(xiàn)象。</p><p><b>  軟件應用流程</b></p><p&

55、gt;  先用編程軟件調(diào)試好程序并編譯生成HEX文檔,如圖4-12:</p><p>  圖 4-12 生成HEX文檔</p><p>  9J[~C!R [)@02.把下載器放到實驗板的零插拔座上(仿真器下面有雙排40腳的插針)并卡緊,注意不要放反,有與PC連接口的那一邊朝下。 (uKoJ1R(w qV03.把下載器所配的下載線上的DB9接頭電腦的9針串口連接好,與DB

56、9接頭一邊的USB接頭插到電腦USB接口上用來取電。另一頭接到下載器USB接口上。中國電子頂級開發(fā)網(wǎng)--電子設計論壇、博客、超人氣的電子工程師資料分享平臺oTkW2P_6i 4.根據(jù)你的下載器上的STC單片機類型選擇程序下載模式,可通過按下電容旁邊的鎖定開關來切換(如是C系列的不用按下開關,如STC89C58 RD+、如是LE系列的請按下開關,如STC89LE54 AD。注意:如是LE系列的在下載完程序后需要把開關彈上來才能

57、進行正常仿真),檢查SB接口旁邊的POWER1開關是否處于彈起狀態(tài)。如圖4-13、4-14:</p><p>  圖 4-13 選擇串行口</p><p>  圖 4-14 下載程序中國電子頂級開發(fā)網(wǎng)--電子設計論壇、博客、超人氣的電子工程師資料分享平臺px!Fm(P</p><p>  5. 運行隨光盤所帶的STC下載軟件,出現(xiàn)下圖4-15:中國電子頂級開

58、發(fā)網(wǎng)--電子設計論壇、博客、超人氣的電子工程師資料分享平臺uO.PG0g6y L</p><p>  K5G*]#O)O8GbX'圖 4-15 下載成功</p><p>  6.中國電子頂級開發(fā)網(wǎng)--電子設計論壇、博客、超人氣的電子工程師資料分享平臺8S2|do_w&X?C-Uf.ZtB7k6^0先按圖中標示按1選擇好你的下載器上所用的單片機類型,選

59、好單片機類型后,就可以按2找到源HEX文件并存入緩沖器里,接下來就可以按3,最后按下下載器上的POWER1開關,就可以看到下載器上的LED燈亮了,同時屏幕上的程序下載進度條在顯示進度,很快,程序就被下載到下載器上的單片機里了,這是自動轉(zhuǎn)到實驗板上演示程序內(nèi)容了,看,實驗板上的流水燈在閃爍了吧。如是在下載程序前按下下載器電容旁邊的那個開關的,此時要把彈起來就可以了。</p><p>  先用編程軟件調(diào)試好程序并編譯

60、生成HEX文檔,如圖</p><p><b>  本章小結(jié)</b></p><p>  Keil提供包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,由以下幾部分組成:μVision IDE集成開發(fā)環(huán)境(包括工程管理器①、源程序編輯器②、程序調(diào)試器③,見圖2)、C51編譯器、A51匯編器、LIB51庫管理器、BL51連接/定位器、OH

61、51目標文件生成器以及 Monitor-51、RTX51實時操作系統(tǒng)。</p><p>  注意:除第一章緒論外,其他每一章都應該有一個本章小結(jié)</p><p><b>  系統(tǒng)程序設計</b></p><p>  系統(tǒng)程序設計流程圖如圖5-1所示:</p><p>  圖5-1系統(tǒng)程序設計流程圖</p>

62、<p>  超聲波發(fā)射接收程序模塊詳細流程圖如圖5-2所示</p><p>  圖5-2發(fā)射接收程序模塊流程圖</p><p>  程序流程圖對應程序代碼</p><p>  void main(void)</p><p><b>  { </b></p><p>  uchar OU

63、T_PUT,i;</p><p><b>  flag=0; </b></p><p>  TMOD=0x21; //設T0為方式1,GATE=1;</p><p>  SCON=0x50;</p><p><b>  TH1=0xFD;</b></p><p><

64、b>  TL1=0xFD;</b></p><p><b>  TH0=0;</b></p><p><b>  TL0=0; </b></p><p><b>  TR0=1; </b></p><p>  ET0=1; //允許T

65、0中斷</p><p>  TR1=1;//開啟定時器</p><p><b>  TI=1;</b></p><p>  EA=1; //開啟總中斷</p><p>  send_command(0x38);</p><p>  send_command(0x0c);<

66、;/p><p>  send_command(0x06);</p><p>  send_command(0x01);</p><p>  for(i=0;i<16;i++)</p><p><b>  { </b></p><p>  send_command(0x80+i);</p&g

67、t;<p>  send_data(name[i]);</p><p><b>  }</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  key();</b>&l

68、t;/p><p>  if(flag1==0)</p><p><b>  {</b></p><p>  StartModule();</p><p>  while(!RX); //當RX為零時等待</p><p>  TR0=1; //開啟計數(shù)</p>

69、<p>  while(RX); //當RX為1計數(shù)并等待</p><p>  TR0=0; //關閉計數(shù)</p><p>  Conut(); //計算</p><p>  delayms(100); //100MS</p><p>  if(flag==0)</p>

70、<p><b>  {</b></p><p>  OUT_PUT=S;</p><p>  send_command(0x82);</p><p>  send_data(OUT_PUT/100+0x30);</p><p>  send_command(0x83);</p><p>

71、;  send_data((OUT_PUT%100)/10+0x30);</p><p>  send_command(0x84);</p><p>  send_data(OUT_PUT%10+0x30);</p><p>  send_command(0x85);</p><p>  send_data(table[0]);</p&

72、gt;<p>  send_command(0x86);</p><p>  send_data(table[1]);</p><p><b>  }</b></p><p>  else if(flag==1)</p><p><b>  {</b></p><p

73、>  send_command(0x82);</p><p>  send_data(table[2]);</p><p>  send_command(0x83);</p><p>  send_data(table[2]);</p><p>  send_command(0x84);</p><p>  se

74、nd_data(table[2]); </p><p><b>  }</b></p><p><b>  flag=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>&

75、lt;b>  } </b></p><p>  液晶顯示程序模塊詳細流程圖如圖5-3所示</p><p><b>  否</b></p><p><b>  否</b></p><p><b>  否</b></p><p> 

76、 圖5-3 液晶顯示模塊流程圖</p><p>  程序流程圖對應程序代碼</p><p>  #include <AT89X51.H></p><p>  #include <intrins.h></p><p>  #include <stdio.h></p><p>

77、;  #include <absacc.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  #define L_W_D XBYTE[0X9Fff]</p><p>  #define L_W_C XBYTE

78、[0X1Fff]</p><p>  #define L_R_C XBYTE[0X5Fff]</p><p>  sbit RX=P1^2 ;</p><p>  sbit TX=P1^3;</p><p>  sbit en=P3^2;</p><p>  void wait();</p><

79、p>  /***********************1602寫命令程序************************************/</p><p>  void send_command(uint command)</p><p><b>  {</b></p><p><b>  wait();</b&

80、gt;</p><p>  L_W_C=command;</p><p><b>  }</b></p><p>  /***************************1602*******************************************/</p><p>  void delay()<

81、;/p><p><b>  {</b></p><p><b>  uint i,j;</b></p><p>  for(i=0;i<50;i++)</p><p>  for(j=0;j<50;j++)</p><p><b>  ;</b>

82、</p><p><b>  }</b></p><p>  /**************************讀忙程序***************************************/</p><p>  void wait()</p><p><b>  {</b></p

83、><p><b>  ucharx;</b></p><p><b>  do</b></p><p>  {x=L_R_C;}</p><p>  while(x&0x80);</p><p><b>  delay();</b></p&g

84、t;<p><b>  }</b></p><p>  /*************************1602寫數(shù)據(jù)程序*********************************/</p><p>  void send_data(uint sdata)</p><p><b>  {</b>&

85、lt;/p><p><b>  wait();</b></p><p>  L_W_D=sdata;</p><p><b>  }</b></p><p><b>  本章小結(jié)</b></p><p>  了解超聲波測距儀的超聲波發(fā)射接收模塊的工作原理與詳

86、細流程、學會1602液晶顯示模塊的使用。</p><p>  注意:除第一章緒論外,其他每一章都應該有一個本章小結(jié)</p><p><b>  結(jié)  論</b></p><p>  單片機其卓越的性能,本設計中得到了很好的體現(xiàn),尤其在檢測,控制領域中,據(jù)有以下特點:</p><p> ?。?)小巧靈活,成本低,易于產(chǎn)品化

87、,它能方便的組裝成各種智能測試,控制設備以及各種智能儀器表。</p><p> ?。?)可靠性好,適用范圍廣,單片機芯片本身是按工業(yè)測控環(huán)境要求設計的,能適應各種惡劣的環(huán)境,這是其他元件無法比擬的。</p><p>  (3) 易擴展,很容易構(gòu)成各種規(guī)模的應用系統(tǒng),控制功能強。單片機的邏輯控制功能很強,指令系統(tǒng)有各種控制功能所用的指令。</p><p>  (4)

88、可以很方便地實現(xiàn)多機制分布式控制。</p><p>  在兩周的設計和學習當中,我逐步了解了整個設計內(nèi)容和過程,并且學到了很多新的東西。通過對實際工程的了解、設計不但使我加深了對理論知識的理解,對專業(yè)知識的全面認識,更重要的是將理論知識應用到了實踐中,應用到了實際工程中,真正做到了學以致用、理論與實踐相結(jié)合。同時,通過對設計中困難的克服,也鍛煉了我的思考問題、解決問題的能力以及自學能力,在這次設計中我也對本專業(yè)前

89、沿的一些知識和發(fā)展方向有了了解,開闊了我的眼界、擴大了我的知識面,這些都將為我以后的工作奠定良好的基礎。同時我要感謝閔昆龍老師在設計中對我給予的悉心指導和嚴格要求,同時也感謝本班同學在設計期間所給予我的幫助。</p><p><b>  參考文獻</b></p><p>  [1] 占操,梁厚琴,曹燕.單片機系統(tǒng)中的軟件抗干擾技術.電子技術,2003,3.</

90、p><p>  [2] 杜華兵.MCS-51單片機原理應用.武漢:武漢華中科技大學出版社,2002,5.</p><p>  [3] 程繼興,劉霞.單片機系統(tǒng)軟件抗干擾措施分析.電子測量技術,2003,4.</p><p>  [4] 蘇偉,鞏壁建.超聲波測距誤差分析.傳感器技術,2004,6.</p><p>  [5] 李全利,單片機

91、原理及應用技術.北京:高等教育出版社,2001. </p><p>  [6] 梅麗鳳.單片機原理及接口技術.北京:清華大學出版社,2004.</p><p>  [7] Tom R,Watt.Cooling our tomorrows economically,ASHRAE Journal. </p><p>  [8] Artori S, ZHAN

92、G G X. Geometric Error Measurement and Compensation of Machines.Annals of the CIRP,1995:599-609. </p><p>  [9] Army Kayla. Improving efficiency in existing chillers with optimization technology,ASHRAE

93、Journal.</p><p>  [10] 邱平.略論我國非金屬超聲波檢測儀器的發(fā)展狀況.工程質(zhì)量,1998 年 01期.</p><p>  [11] 超聲波探傷編寫組編著.超聲波探傷.北京:電力工業(yè)出版社, 1980.</p><p>  [12] 王純正.超聲學.北京:人民衛(wèi)生出版社,1993.</p><p>  [13]

94、 戴樹蓀.數(shù)字技術在雷達中的應用.北京:國防工業(yè)出版社,1981.</p><p>  [14] Brown A.J.Waveshape Distortion in Log Receiver.Circuit Design Engineering. 1986.</p><p>  [15] 中國無損檢測學會編譯.超聲波探傷.北京:機械工業(yè)出版社, 1987.</p><

95、;p>  [16] 馬忠梅,籍順心,張凱,馬巖. 單片機的C語言應用程序設計(第4版)[M]. 北京:北京航空航天大學出版社,2007.</p><p>  [17] 康華光主編. 電子技術基礎 模擬部分(第四版)[M]. 北京: 高等教育出版社,1999.</p><p><b>  附  錄</b></p><p><b>

96、;  附錄A</b></p><p>  超聲波測距儀電路原理圖如圖A</p><p>  圖A 超聲波測距儀原理圖</p><p><b>  附錄B</b></p><p>  超聲波測距儀源程序代碼:</p><p>  #include <AT89X51.H>&

97、lt;/p><p>  #include <intrins.h></p><p>  #include <STDIO.H></p><p>  #include <absacc.h></p><p>  #define uchar unsigned char</p><p>

98、  #define uint unsigned int</p><p>  #define L_W_D XBYTE[0X9Fff]</p><p>  #define L_W_C XBYTE[0X1Fff]</p><p>  #define L_R_C XBYTE[0X5Fff]</p><p>  sbit RX=P1^2 ;</

99、p><p>  sbit TX=P1^3;</p><p>  sbit beep=P1^0;</p><p>  sbit en=P3^2;</p><p>  sbit d=P1^7;</p><p>  char table[]="cmX";</p><p>  char

100、 name[]="ZhangFengJun";</p><p>  unsigned char flag1=1;</p><p>  unsigned int time=0;</p><p>  unsigned int timer=0;</p><p>  float S=0;</p>

101、<p>  bit flag =0;</p><p>  void wait();</p><p>  /***********************1602寫命令程序******************************************************/</p><p>  void send_command(

102、uint command)</p><p><b>  {</b></p><p><b>  wait();</b></p><p>  L_W_C=command;</p><p><b>  }</b></p><p>  /***********

103、****************1602**********************************************/</p><p>  void delay()</p><p><b>  {</b></p><p><b>  uint i,j;</b></p><p>  f

104、or(i=0;i<50;i++)</p><p>  for(j=0;j<50;j++)</p><p><b>  ;</b></p><p><b>  }</b></p><p>  /**************************讀忙程序******************

105、********************************/</p><p>  void wait()</p><p><b>  {</b></p><p><b>  ucharx;</b></p><p><b>  do</b></p><

106、p>  {x=L_R_C;}</p><p>  while(x&0x80);</p><p><b>  delay();</b></p><p><b>  }</b></p><p>  /*************************1602寫數(shù)據(jù)程序***********

107、******************************************/</p><p>  void send_data(uint sdata)</p><p><b>  {</b></p><p><b>  wait();</b></p><p>  L_W_D=sdata;&

108、lt;/p><p><b>  }</b></p><p>  /********************************************************/</p><p>  void Conut(void)</p><p><b>  {</b></p><

109、;p>  time=TH0*256+TL0;</p><p><b>  TH0=0; </b></p><p><b>  TL0=0;</b></p><p>  S=(time*1.87)/100; //算出來是CM</p><p>  if(flag==1) //超

110、出測量</p><p><b>  {</b></p><p>  beep=!beep;</p><p><b>  delay();</b></p><p><b>  delay();</b></p><p><b>  delay();

111、</b></p><p><b>  delay();</b></p><p><b>  delay();</b></p><p>  beep=!beep;</p><p><b>  }</b></p><p><b>  }

112、</b></p><p>  /********************************************************/ </p><p>  void delayms(unsigned int ms)</p><p><b>  {</b></p><p>  unsigned c

113、har i=100,j;</p><p>  for(;ms;ms--)</p><p><b>  {</b></p><p>  while(--i)</p><p><b>  {</b></p><p><b>  j=10;</b></p

114、><p>  while(--j);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /***************************************

115、*****************/</p><p>  void zd0() interrupt 1 //T0中斷用來計數(shù)器溢出,超過測距范圍</p><p><b>  {</b></p><p>  flag=1; //中斷溢出標志</p><p><b>  }</b>&

116、lt;/p><p>  /********************************************************/</p><p>  void StartModule() //T1中斷用來掃描數(shù)碼管和計800MS啟動模塊</p><p><b>  {</b></p><p&g

117、t;  TX=1; //800MS 啟動一次模塊</p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p>&l

118、t;b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_()

119、; </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b><

120、/p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p>

121、;<b>  _nop_();</b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_

122、();</b></p><p><b>  TX=0;</b></p><p><b>  }</b></p><p>  void key()</p><p><b>  {</b></p><p><b>  en=1;<

123、/b></p><p><b>  if(en==0)</b></p><p><b>  {</b></p><p>  flag1=0; </p><p>  send_command(0x01);</p><p>  while(!en);</p>

124、<p><b>  }</b></p><p><b>  }</b></p><p>  /********************************************************/</p><p>  void main(void)</p><p><b

125、>  { </b></p><p>  uchar OUT_PUT,i;</p><p><b>  flag=0; </b></p><p>  TMOD=0x21; //設T0為方式1,GATE=1;</p><p>  SCON=0x50;</p><p><

126、;b>  TH1=0xFD;</b></p><p><b>  TL1=0xFD;</b></p><p><b>  TH0=0;</b></p><p><b>  TL0=0; </b></p><p><b>  TR0=1; </

127、b></p><p>  ET0=1; //允許T0中斷</p><p>  TR1=1; //開啟定時器</p><p><b>  TI=1;</b></p><p>  EA=1; //開啟總中 斷 </p><p>  send

128、_command(0x38);</p><p>  send_command(0x0c);</p><p>  send_command(0x06);</p><p>  send_command(0x01);</p><p>  for(i=0;i<12;i++)</p><p><b>  { &l

129、t;/b></p><p>  send_command(0x80+i);</p><p>  send_data(name[i]);</p><p><b>  }</b></p><p><b>  while(1)</b></p><p><b>  {

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論