版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> AT89S51單片機(jī)超聲波測距說明書</p><p> 系 別: 電子工程系 </p><p> 年 級(jí): 092班 專 業(yè): 電氣自動(dòng)化技術(shù) </p><p> 姓 名: 學(xué) 號(hào): </p><p> 導(dǎo)師姓名:
2、職 稱: </p><p> 2012年06月10日</p><p><b> 目錄</b></p><p><b> 1.前言1</b></p><p> 1.1 課題背景及研究的目的和意義1</p><p> 1.2基于單片機(jī)
3、的超聲波測距系統(tǒng)1</p><p> 1.3課題主要內(nèi)容1</p><p> 2.系統(tǒng)設(shè)計(jì)技術(shù)參數(shù)要求3</p><p> 2.1系統(tǒng)任務(wù)要求:3</p><p> 2.2系統(tǒng)設(shè)計(jì)的主要技術(shù)參數(shù):3</p><p><b> 3.系統(tǒng)設(shè)計(jì)4</b></p>&l
4、t;p> 3.1系統(tǒng)設(shè)計(jì)總體框圖4</p><p> 3.2系統(tǒng)模塊設(shè)計(jì)4</p><p> 3.2.1 單片機(jī)系統(tǒng)與按鍵設(shè)計(jì)5</p><p> 3.2.2 超聲波發(fā)射和接收電路5</p><p> 3.2.3顯示電路6</p><p> 3.2.4 供電電路7</p>&
5、lt;p> 3.2.5報(bào)警輸出電路7</p><p> 4.系統(tǒng)軟件設(shè)計(jì)9</p><p> 4.1 主程序設(shè)計(jì)9</p><p> 4.2 超聲波測距子程序9</p><p> 4.3產(chǎn)生超聲波的子程序10</p><p> 4.4 超聲波測距程序流程圖12</p><
6、;p> 4.5 超聲波測距程子序流程圖13</p><p> 5.系統(tǒng)操作說明14</p><p><b> 參考文獻(xiàn)15</b></p><p><b> 致謝語16</b></p><p><b> 附錄17</b></p><
7、p><b> 1.前言</b></p><p> 1.1 課題背景及研究的目的和意義</p><p> 傳感器技術(shù)是現(xiàn)代信息技術(shù)的主要內(nèi)容之一。信息技術(shù)包括計(jì)算機(jī)技術(shù)、通信技術(shù)和傳感器技術(shù),計(jì)算機(jī)技術(shù)相當(dāng)于人的大腦,通信相當(dāng)于人的神經(jīng),而傳感器就相當(dāng)于人的感官。比如溫度傳感器、光電傳感器、濕度傳感器、超聲波傳感器、紅外傳感器、壓力傳感器等等,其中,超聲波傳
8、感器在測量方面有著廣泛、普遍的應(yīng)用。利用單片機(jī)控制超聲波檢測往往比較迅速、方便、計(jì)算簡單、易于做到實(shí)時(shí)控制,并且測量精度較高。</p><p> 超聲波測距系統(tǒng)主要應(yīng)用于汽車的倒車?yán)走_(dá)、機(jī)器人自動(dòng)避障行走、建筑施工工地以及一些工業(yè)現(xiàn)場例如:液位、井深、管道長度等場合。因此研究超聲波測距系統(tǒng)的原理有著很大的現(xiàn)實(shí)意義。對本課題的研究與設(shè)計(jì),還能進(jìn)一步提高自己的電路設(shè)計(jì)水平,深入對單片機(jī)的理解和應(yīng)用。</p&g
9、t;<p> 1.2基于單片機(jī)的超聲波測距系統(tǒng)</p><p> 基于單片機(jī)的超聲波測距系統(tǒng),是利用單片機(jī)編程產(chǎn)生頻率為40kHz的方波,經(jīng)過發(fā)射驅(qū)動(dòng)電路放大,使超聲波傳感器發(fā)射端震蕩,發(fā)射超聲波。超聲波波經(jīng)反射物反射回來后,由傳感器接收端接收,再經(jīng)接收電路放大、整形,控制單片機(jī)中斷口。其系統(tǒng)框圖如圖1-1所示。</p><p> 圖1-1 基于單片機(jī)的超聲波測距系統(tǒng)框
10、圖</p><p> 這種以單片機(jī)為核心的超聲波測距系統(tǒng)通過單片機(jī)記錄超聲波發(fā)射的時(shí)間和收到反射波的時(shí)間。當(dāng)收到超聲波的反射波時(shí),接收電路輸出端產(chǎn)生一個(gè)負(fù)跳變,在單片機(jī)的外部中斷源輸入口產(chǎn)生一個(gè)中斷請求信號(hào),單片機(jī)響應(yīng)外部中斷請求,執(zhí)行外部中斷服務(wù)子程序,讀取時(shí)間差,計(jì)算距離,結(jié)果輸出給LED顯示。</p><p> 利用單片機(jī)準(zhǔn)確計(jì)時(shí),測距精度高,而且單片機(jī)控制方便,計(jì)算簡單。許多超
11、聲波測距系統(tǒng)都采用這種設(shè)計(jì)方法。</p><p><b> 1.3課題主要內(nèi)容</b></p><p> 通過上節(jié)介紹我們知道,以單片機(jī)為核心的超聲波測距系統(tǒng)設(shè)計(jì)簡單、方便,而且測精度能達(dá)到工業(yè)要求。本課題研究的測距系統(tǒng)就是用單片機(jī)控制的。</p><p> 通過超聲波發(fā)射器向某一方向發(fā)射超聲波,單片機(jī)在發(fā)射時(shí)刻同時(shí)開始計(jì)時(shí),超聲波在空氣
12、中傳播,途中碰到障礙物就立即反射回來,超聲波接收器收到反射波就立即停止計(jì)時(shí)。超聲波在空氣中的傳播速度為V,根據(jù)計(jì)時(shí)器記錄的時(shí)間t,就可以計(jì)算出發(fā)射點(diǎn)距障礙物的距離。</p><p> 本系統(tǒng)利用單片機(jī)控制超聲波的發(fā)射和對超聲波自發(fā)射至接收往返時(shí)間的計(jì)時(shí)。系統(tǒng)定時(shí)發(fā)射超聲波,在啟動(dòng)發(fā)射電路的同時(shí)啟動(dòng)單片機(jī)內(nèi)部的定時(shí)器,利用定時(shí)器的計(jì)數(shù)功能記錄超聲波發(fā)射的時(shí)間和收到反射波的時(shí)間。當(dāng)收到超聲波的反射波時(shí),接收電路輸出
13、端產(chǎn)生一個(gè)負(fù)跳變,單片機(jī)檢測到這個(gè)負(fù)跳變信號(hào)后,停止內(nèi)部計(jì)時(shí)器記時(shí),讀取時(shí)間,計(jì)算距離,測量結(jié)果輸出給LED顯示。</p><p> 利用本測距系統(tǒng)測量范圍應(yīng)在40cm~699cm,其誤差1cm。</p><p> 2.系統(tǒng)設(shè)計(jì)技術(shù)參數(shù)要求</p><p> 2.1系統(tǒng)任務(wù)要求:</p><p> 1.開機(jī)時(shí)數(shù)碼管顯示---;<
14、/p><p> 2.無接受信號(hào)數(shù)碼管顯示CCC;</p><p> 3.若環(huán)境溫度變化15℃,測距精度變化1%。</p><p> 2.2系統(tǒng)設(shè)計(jì)的主要技術(shù)參數(shù):</p><p> 1.穩(wěn)壓直流電源4.5~5.5V,交流電源6V;</p><p> 2.驅(qū)動(dòng)電流:30-50mA;</p><p
15、> 3.盲區(qū)值為40厘米,最遠(yuǎn)可測699厘米。</p><p><b> 3.系統(tǒng)設(shè)計(jì)</b></p><p> 3.1系統(tǒng)設(shè)計(jì)總體框圖</p><p> 按照系統(tǒng)設(shè)計(jì)的功能的要求,初步確定設(shè)計(jì)系統(tǒng)由單片機(jī)主控模塊、顯示模塊、超聲波發(fā)射模塊、接收模塊共四個(gè)模塊組成。</p><p> 單片機(jī)主控芯片使用5
16、1系列AT89S51單片機(jī),該單片機(jī)工作性能穩(wěn)定,同時(shí)也是在單片機(jī)課程設(shè)計(jì)中經(jīng)常使用到的控制芯片。</p><p> 發(fā)射電路由單片機(jī)輸出端直接驅(qū)動(dòng)超聲波發(fā)送。接收電路使用三極管組成的放大電路,該電路簡單,調(diào)試工作小較小。</p><p> 圖3-1 系統(tǒng)設(shè)計(jì)框圖</p><p> 硬件電路的設(shè)計(jì)主要包括單片機(jī)系統(tǒng)及顯示電路、超聲波發(fā)射電路和超聲波接收電路、報(bào)
17、警輸出電路、供電電路等幾部分。單片機(jī)采用AT89S51,系統(tǒng)晶振采用12MHz高精度的晶振,以獲得較穩(wěn)定時(shí)鐘頻率,減小測量誤差。單片機(jī)用P2.7端口輸出超聲波換能器所需的40kHz的方波信號(hào),P3.5端口監(jiān)測超聲波接收電路輸出的返回信號(hào)。顯示電路采用簡單實(shí)用的3位共陽LED數(shù)碼管,段碼輸出端口為單片機(jī)的P2口,位碼輸出端口分別為單片機(jī)的P3.4、P3.2、P3.3口,數(shù)碼管位驅(qū)運(yùn)用PNP三極管S9012三極管驅(qū)動(dòng)。</p>
18、<p><b> 3.2系統(tǒng)模塊設(shè)計(jì)</b></p><p> 本系統(tǒng)由單片機(jī)AT89S51控制,包括單片機(jī)系統(tǒng)、發(fā)射電路與接收放大電路和顯示電路幾部分組成,如圖3-1 所示。硬件電路的設(shè)計(jì)主要包括單片機(jī)系統(tǒng)及顯示電路、超聲波發(fā)射電路和超聲波接收電路三部分。單片機(jī)采用AT89S51。采用12MHz高精度的晶振,以獲得較穩(wěn)定時(shí)鐘頻率,減小測量誤差。單片機(jī)用P2.7端口輸出超聲波
19、換能器所需的40kHz的方波信號(hào),P3.5端口監(jiān)測超聲波接收電路輸出的返回信號(hào)。顯示電路采用簡單實(shí)用的3位共陽LED數(shù)碼管,段碼輸出端口為單片機(jī)的P2口,位碼輸出端口分別為單片機(jī)的P3.4、P3.2、P3.3口,數(shù)碼管位驅(qū)運(yùn)用PNP三極管S9012三極管驅(qū)動(dòng)。</p><p> 超聲波接收頭接收到反射的回波后,經(jīng)過接收電路處理后,向單片機(jī)P3.5輸入一個(gè)低電平脈沖。單片機(jī)控制著超聲波的發(fā)送,超聲波發(fā)送完畢后,立
20、即啟動(dòng)內(nèi)部計(jì)時(shí)器T0計(jì)時(shí),當(dāng)檢測到P3.5由高電平變?yōu)榈碗娖胶螅⒓赐V箖?nèi)部計(jì)時(shí)器計(jì)時(shí)。單片機(jī)將測得的時(shí)間與聲速相乘再除以2即可得到測量值,最后經(jīng)3位數(shù)碼管將測得的結(jié)果顯示出來。</p><p> 3.2.1 單片機(jī)系統(tǒng)與按鍵設(shè)計(jì)</p><p> 超聲波測距單片機(jī)系統(tǒng)主要由:AT89S51單片機(jī)、晶振、復(fù)位電路、電源濾波部份構(gòu)成。由K1,K2組成測距系統(tǒng)的按鍵電路。用于設(shè)定超聲波測距
21、報(bào)警值。如圖3-2。</p><p> 圖3-2 超聲波測距單片機(jī)系統(tǒng)</p><p> 3.2.2 超聲波發(fā)射和接收電路</p><p> 超聲波發(fā)射如圖3-3,接收電路如圖3-4。超聲波發(fā)射電路由電阻R1、三極管BG1、超聲波脈沖變壓器B及超聲波發(fā)送頭T40構(gòu)成,超聲波脈沖變壓器,在這里的作用是提高加載到超聲波發(fā)送頭兩產(chǎn)端的電壓,以提高超聲波的發(fā)射功率,從
22、而提高測量距離。接收電路由BG1、BG2組成的兩組三級(jí)管放大電路構(gòu)成;超聲波的檢波電路、比較整形電路由C7、D1、D2及BG3組成。</p><p> 40kHz的方波由AT89S51單片機(jī)的P2.7輸出,經(jīng)BG1推動(dòng)超聲波脈沖變壓器,在脈沖變壓器次級(jí)形成60VPP的電壓,加載到超聲波發(fā)送頭上,驅(qū)動(dòng)超聲波發(fā)射頭發(fā)射超聲波。發(fā)送出的超聲波,遇到障礙物后,產(chǎn)生回波,反射回來的回波由超聲波接收頭接收到。由于聲波在空氣
23、中傳播時(shí)衰減,所以接收到的波形幅值較低,經(jīng)接收電路放大,整形,最后輸出一負(fù)跳變,輸入單片機(jī)的P3腳。</p><p> 圖3-3 超聲波測距發(fā)送單元</p><p> 該測距電路的40kHz方波信號(hào)由單片機(jī)AT89S51的P2.7發(fā)出。方波的周期為1/40ms,即25µs,半周期為12.5µs。每隔半周期時(shí)間,讓方波輸出腳的電平取反,便可產(chǎn)生40kHz方波。由于單
24、片機(jī)系統(tǒng)的晶振為12M晶振,因而單片機(jī)的時(shí)間分辨率是1µs,所以只能產(chǎn)生半周期為12µs或13µs的方波信號(hào),頻率分別為41.67kHz和38.46kHz。本系統(tǒng)在編程時(shí)選用了后者,讓單片機(jī)產(chǎn)生約38.46kHz的方波。</p><p> 圖3-4 超聲波測距接收單元</p><p> 由于反射回來的超聲波信號(hào)非常微弱,所以接收電路需要將其進(jìn)行放大。接收
25、電路如圖3-4所示。接收到的信號(hào)加到BG1、BG2組成的兩級(jí)放大器上進(jìn)行放大。每級(jí)放大器的放大倍數(shù)為70倍。放大的信號(hào)通過檢波電路得到解調(diào)后的信號(hào),即把多個(gè)脈沖波解調(diào)成多個(gè)大脈沖波。這里使用的是I N 4148檢波二極管,輸出的直流信號(hào)即兩二極管之間電容電壓。該接收電路結(jié)構(gòu)簡單,性能較好,制作難度小。</p><p><b> 3.2.3顯示電路</b></p><p&
26、gt; 本系統(tǒng)采用三位一體L E D 數(shù)碼管顯示所測距離值,如圖3-5。數(shù)碼管采用動(dòng)態(tài)掃描顯示,段碼輸出端口為單片機(jī)的P2口,位碼輸出端口分別為單片機(jī)的P3.4、P3.2、P3.3口,數(shù)碼管位驅(qū)運(yùn)用PNP三極管S9012三極管驅(qū)動(dòng)。</p><p> 圖3-5 顯示單元圖</p><p> 3.2.4 供電電路</p><p> 本測距系統(tǒng)由于采用的是LE
27、D數(shù)碼管用為顯示方式,正常工作時(shí),系統(tǒng)工作電流約為30-45mA,為保證系統(tǒng)統(tǒng)計(jì)的可靠正常工作,系統(tǒng)的供電方式主要交流AC6-9伏,同時(shí)為調(diào)試系統(tǒng)方便,供電方式考慮了第二種方式,即由USB口供電,調(diào)試時(shí)直接由電腦USB口供電。6伏交流是經(jīng)過整流二極管D1-D4整流成脈動(dòng)直流后,經(jīng)慮波電容C1慮波后形成直流電,為保證單片機(jī)系統(tǒng)的可電,供電路中由5伏的三端稱壓集成電路進(jìn)行穩(wěn)壓后輸出5伏的真流電供整個(gè)系統(tǒng)用電,為進(jìn)一步提高電源質(zhì)量,5伏的直流
28、電再次經(jīng)過C3、C4濾波。</p><p> 圖3-6 供電單元電路圖</p><p> 3.2.5報(bào)警輸出電路</p><p> 為了提高測測距系統(tǒng)的實(shí)用性,本測距系統(tǒng)的報(bào)警輸出提供開關(guān)量信號(hào)及聲響信號(hào)兩種方式。</p><p> 方式一:報(bào)警信號(hào)由單片機(jī)P3.1端口輸出,繼電器輸出,可驅(qū)動(dòng)較大的負(fù)載,電路由電阻R6、三極管BG9
29、、繼電器JDQ組成,當(dāng)測量值低于事先設(shè)定的報(bào)警值時(shí),繼電器吸合,測量值高于設(shè)定的報(bào)警值時(shí),繼電器斷開。</p><p> 方式二:報(bào)警信號(hào)由單片機(jī)P0.2口輸出,提供聲響報(bào)警信號(hào),電路由電阻R7、三極管BG8、蜂鳴器BY組成,當(dāng)測量值低于事先設(shè)定的報(bào)警值時(shí),蜂鳴器發(fā)出“滴、滴、滴……”報(bào)警聲響信號(hào),測量值高于設(shè)定的報(bào)警值時(shí),停止發(fā)出報(bào)警聲響。報(bào)警輸出電路如圖3-7。</p><p>
30、圖3-7 報(bào)警輸出電路</p><p><b> 4.系統(tǒng)軟件設(shè)計(jì)</b></p><p><b> 4.1 主程序設(shè)計(jì)</b></p><p> 超聲波測距的軟件設(shè)計(jì)主要由主程序、超聲波發(fā)生子程序、超聲波接收程序及顯示子程序組成。超聲波測距的程序既有較復(fù)雜的計(jì)算(計(jì)算距離時(shí)),又要求精細(xì)計(jì)算程序運(yùn)行時(shí)間(超聲波測
31、距時(shí)),所以控制程序可采用C語言編程。</p><p> 主程序首先是對系統(tǒng)環(huán)境初始化,設(shè)定時(shí)器0為計(jì)數(shù),設(shè)定時(shí)器1定時(shí)。置位總中斷允許位EA。進(jìn)行程序主程序后,進(jìn)行定時(shí)測距判斷,當(dāng)測距標(biāo)志位ec=1時(shí),測量一次,程序設(shè)計(jì)中,超聲波測距頻度是4-5次/秒。測距間隔中,整個(gè)程序主要進(jìn)行循環(huán)顯示測量結(jié)果。當(dāng)調(diào)用超聲波測距子程序后,首先由單片機(jī)產(chǎn)生4個(gè)頻率為38.46kHz超聲波脈沖,加載的超聲波發(fā)送頭上。超聲波頭發(fā)
32、送完送超聲波后,立即啟動(dòng)內(nèi)部計(jì)時(shí)器T0進(jìn)行計(jì)時(shí),為了避免超聲波從發(fā)射頭直接傳送到接收頭引起的直射波觸發(fā),這時(shí),單片機(jī)需要延時(shí)約1.5 -2ms時(shí)間(這也就是超聲波測距儀會(huì)有一個(gè)最小可測距離的原因,稱之為盲區(qū)值)后,才啟動(dòng)對單片機(jī)P3.5腳的電平判斷程序。當(dāng)檢測到P3.5腳的電平由高轉(zhuǎn)為低電平時(shí),立即停止T0計(jì)時(shí)。由于采用單片機(jī)采用的是12 MHz的晶振,計(jì)時(shí)器每計(jì)一個(gè)數(shù)就是1μs,當(dāng)超聲波測距子程序檢測到接收成功的標(biāo)志位后,將計(jì)數(shù)器T0
33、中的數(shù)(即超聲波來回所用的時(shí)間)按式(2)計(jì)算,即可得被測物體與測距儀之間的距離。</p><p> 設(shè)計(jì)時(shí)取15℃時(shí)的聲速為340 m/s則有:d=(c×t)/2=172×T0/10000cm其中,T0為計(jì)數(shù)器T0的計(jì)算值。測出距離后結(jié)果將以十進(jìn)制BCD碼方式送往LED顯示約0.5s,然后再發(fā)超聲波脈沖重復(fù)測量過程。</p><p> 4.2 超聲波測距子程序&l
34、t;/p><p> Void wdzh()</p><p><b> {</b></p><p><b> TR0=0;</b></p><p><b> TH1=0x00;</b></p><p><b> TL1=0x00;</
35、b></p><p><b> csbint=1;</b></p><p><b> sx=0;</b></p><p> delay(1700);</p><p><b> csbfs();</b></p><p><b>
36、csbout=1;</b></p><p><b> TR1=1;</b></p><p><b> i=yzsj;</b></p><p> while(i--)</p><p><b> {</b></p><p><b&g
37、t; }</b></p><p><b> i=0;</b></p><p> while(csbint)//判斷接收回路是否收到超聲波的回波</p><p><b> {</b></p><p><b> i++;</b></p><
38、p> if(i>=3300)</p><p><b> csbint=0;</b></p><p><b> }</b></p><p><b> TR1=0;</b></p><p><b> s=TH1;</b></p>
39、;<p> s=s*256+TL1;</p><p><b> TR0=1;</b></p><p><b> csbint=1;</b></p><p> jsz=s*csbc;//計(jì)算測量結(jié)果</p><p> jsz=jsz/2;</p><p>
40、;<b> }</b></p><p> 4.3產(chǎn)生超聲波的子程序</p><p> 為了方便程序移置及準(zhǔn)確產(chǎn)生超聲波信號(hào),本測距的超聲波產(chǎn)生程序是用匯編語言編寫的進(jìn)退聲波產(chǎn)生程序。產(chǎn)生的超聲波個(gè)數(shù)為</p><p> UCSBFS SEGMENT CODE</p><p> RSEG UCSBFS</p
41、><p> PUBLIC CSBFS</p><p> CSBFS: mov R6,#8h ;超聲波發(fā)射的完整波形個(gè)數(shù):共計(jì)四個(gè)</p><p> here: cpl p2.7 ;輸出40kHz方波 </p><p><b> nop </b></p><p>
42、; nop </p><p><b> nop</b></p><p><b> nop </b></p><p> nop </p><p><b> nop</b></p><p>&l
43、t;b> nop </b></p><p> nop </p><p> nop </p><p> djnz R6,here </p><p><
44、b> RET</b></p><p><b> END</b></p><p> 4.4 超聲波測距程序流程圖</p><p> 4.5 超聲波測距程子序流程圖</p><p><b> 5.系統(tǒng)操作說明</b></p><p> 將寫好程序的
45、AT89S51機(jī)裝到測距板上,通電后將測距板的超聲波頭對著墻面往復(fù)移動(dòng),看數(shù)碼管的顯示結(jié)果會(huì)不會(huì)變化,在測量范圍內(nèi)能否正常顯示。如果一直顯示“- - -”,則需將下限值增大(調(diào)節(jié)高頻變壓器旋鈕)。本測距板1s測量4-5次,超聲波發(fā)送功率較大時(shí),測量距離遠(yuǎn),則相應(yīng)的下限值(盲區(qū)為40厘米)應(yīng)設(shè)置為高值,本測距測出距離上限值為699厘米,超出測值或超聲波接收頭無信號(hào)數(shù)碼管將顯示“CCC”。試驗(yàn)板中的聲速?zèng)]有進(jìn)行溫度補(bǔ)償,聲速值為340m/s
46、,該值為15℃時(shí)的超聲波值。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]薛園園.51單片機(jī)開發(fā)與應(yīng)用技術(shù)詳解.北京:電子工業(yè)出版社,2009.</p><p> [2] 沈紅衛(wèi).基于單片機(jī)智能系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).北京:電子工業(yè)出版社,2005.</p><p> [3] 楊國田.白焰.董玲.
47、51單片機(jī)實(shí)用C語言程序設(shè)計(jì).中國電力出版社,2009.</p><p> [4] 李群芳,黃建.單片機(jī)微型計(jì)算機(jī)與接口技術(shù).北京:電子工業(yè)出版社,2001.</p><p> [5] 樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例.北京:北京航空航天大學(xué)出版社,2003.</p><p> [6] 王守中.51單片機(jī)開發(fā)入門與典型實(shí)例.北京:人民郵電出版社,2009
48、.</p><p><b> 致謝語</b></p><p> 離別在即,站在人生的又一個(gè)轉(zhuǎn)折點(diǎn)上,心中難免思緒萬千,一種感恩之情油然而生。生我者父母。感謝生我養(yǎng)我,含辛茹苦的父母。是你們,為我的學(xué)習(xí)創(chuàng)造了條件;是你們,一如既往的站在我的身后默默的支持著我。沒有你們就不會(huì)有我的今天。謝謝你們,我的父親母親!在這三年中,老師的諄諄教導(dǎo)、同學(xué)的互幫互助使我在專業(yè)技術(shù)
49、和為人處事方面都得到了很大的提高。感謝湄職院在我三年的大學(xué)生活當(dāng)中對我的教育與培養(yǎng),感謝湄職院電子系所有專業(yè)老師,沒有你們的辛勤勞動(dòng),就沒有我們今日的滿載而歸,感謝大學(xué)三年曾經(jīng)幫助過我的所有同學(xué)。在制作畢業(yè)設(shè)計(jì)過程中鄭老師的耐心指導(dǎo)、幫助下,我才能順利完成畢業(yè)設(shè)計(jì),鄭老師指導(dǎo)了我的設(shè)計(jì)的結(jié)構(gòu)、思路、同時(shí)提供了一些專業(yè)知識(shí)的幫助。老師們的熱情解答和同學(xué)們的熱心幫助才使我的畢業(yè)設(shè)計(jì)能較為順利的完成。在此我向你們表示最衷心的感謝。 </
50、p><p> 感謝在畢設(shè)中幫助過我的所有同學(xué)和師兄師姐們。</p><p> 最后感謝我的家人、朋友對我的支持。</p><p><b> 附錄</b></p><p> 附錄一 系統(tǒng)總原理圖</p><p> 附錄二 系統(tǒng)印刷電路的制作圖</p><p><b
51、> 附錄三 C語言程序</b></p><p> // 晶振:12M //</p><p> // 盲區(qū)值(最小可測距離):40厘米 //</p><p> //
52、 測量上限:699厘米 //</p><p> #include <REGX51.H></p><p> #include <intrins.h> </p><p> #define uchar unsigned char</p><p> #define
53、 uint unsigned int</p><p> #define k1 P3_7 //k1功能鍵</p><p> #define k2 P3_6 //k2數(shù)值調(diào)整鍵</p><p> #define bjh P3_1 //定值輸出</p><p> #de
54、fine sx P0_2 //報(bào)警值輸出(聲音)</p><p> #define csbout P2_7 //超聲波發(fā)送</p><p> #define csbint P3_5 //超聲波接收</p><p> uchar ec,cls;cs;xl,mq,xm0,xm1,xm2,sec20,sec,sec1,b
55、uffer[3],BitCounter,temp,Number[8]={1,2,3,4,5,6,7,8}; </p><p> uchar temp1,convert[10]={0x81,0xED,0xA2,0xA8,0xCC,0x98,0x90,0xAD,0x80,0x88};//0~9段碼</p><p> uint zzz,dz,zzbl,i,jsz,yzsj,kk,s,
56、ss;</p><p> static uchar bdata ke,kw; //可位尋址的狀態(tài)寄存器</p><p> float csbc,wdz;</p><p> sbit LED1 = P3^4; //數(shù)碼管位驅(qū)動(dòng)</p><p> sbit LED2 = P3^2; //數(shù)碼管位驅(qū)動(dòng)</p><p&g
57、t; sbit LED3 = P3^3; //數(shù)碼管位驅(qū)動(dòng)</p><p> sbit k11=ke^0;</p><p> sbit k12=ke^1;</p><p> sbit k22=ke^2;</p><p> sbit k21=ke^3;</p><p> sbit b=ke^4;</p&
58、gt;<p> sbit c=ke^5;</p><p> sbit d=ke^6;</p><p> sbit e=ke^7;</p><p> sbit w=kw^0;</p><p> sbit zj1=kw^1;</p><p> sbit zj2=kw^2;</p>&
59、lt;p> void delay(i); //延時(shí)函數(shù)</p><p> void scanLED(); //顯示函數(shù)</p><p> void timeToBuffer(); //顯示轉(zhuǎn)換函數(shù)</p><p> void time();</p><p> void jpcl();</p>
60、;<p> void jy();</p><p> void wdzh();</p><p> void bgcl();</p><p> void jpzcx();</p><p> void mqjs();</p><p> void csbfs();</p><p&g
61、t; void csbsc();</p><p> void clcs();</p><p> void offmsd();</p><p> void main()</p><p><b> {</b></p><p> EA=1; //開中斷</p>
62、;<p> TMOD=0x11; //設(shè)定時(shí)器0為計(jì)數(shù),設(shè)定時(shí)器1定時(shí)</p><p> ET0=1; //定時(shí)器0中斷允許 </p><p><b> TH0=0xD8;</b></p><p> TL0=0xF0; //設(shè)定時(shí)值為20000us(20ms)</p>
63、<p><b> TR0=1;</b></p><p><b> csbout=1;</b></p><p><b> d=0;</b></p><p><b> TR1=0;</b></p><p><b> temp1
64、=15;</b></p><p><b> zzz=699;</b></p><p><b> mq=40;</b></p><p><b> dz=100;</b></p><p><b> cls=5;</b></p>
65、<p><b> xl=temp1;</b></p><p><b> csbsc();</b></p><p> mqjs(); //盲區(qū)設(shè)定</p><p><b> k12=1;</b></p><p><b&g
66、t; k1=1;</b></p><p><b> k2=1;</b></p><p><b> k22=1;</b></p><p><b> bjh=1;</b></p><p><b> d=1;</b></p>
67、<p><b> sx=0;</b></p><p> clcs(); //測量次數(shù)</p><p><b> while(1)</b></p><p><b> {</b></p><p> if (ec==1)<
68、/p><p><b> {</b></p><p><b> ec=0;</b></p><p> wdzh(); //調(diào)用超聲波測量</p><p><b> }</b></p><p> bgcl();
69、 //調(diào)用報(bào)警處理程序</p><p> timeToBuffer(); //調(diào)用轉(zhuǎn)換段碼功能模塊</p><p> offmsd(); //調(diào)用顯示轉(zhuǎn)換程序</p><p> scanLED(); //調(diào)用顯示函數(shù)</p><p> if(jsz<dz) //判斷是否達(dá)
70、到報(bào)警值</p><p><b> {</b></p><p><b> if(e==1)</b></p><p><b> {</b></p><p> sx=1; //發(fā)出聲響</p><p><b> }
71、</b></p><p> else sx=0;</p><p><b> }</b></p><p> else {sx=0;}</p><p> jpcl(); //調(diào)用按鍵處理程序</p><p><b> }</b&g
72、t;</p><p><b> }</b></p><p> void delay(i) //延時(shí)子程序</p><p> while(--i);</p><p><b> }</b></p><p> void scanLED()
73、 //顯示功能模塊</p><p><b> {</b></p><p> P2=buffer[2];</p><p><b> LED1=0;</b></p><p><b> delay(1);</b></p><p><b>
74、; LED1=1;</b></p><p> delay(50);</p><p> P2=buffer[1];</p><p><b> LED2=0;</b></p><p><b> delay(1);</b></p><p><b>
75、 LED2=1;</b></p><p> delay(50);</p><p> P2=buffer[0];</p><p><b> LED3=0;</b></p><p><b> delay(1);</b></p><p><b> L
76、ED3=1;</b></p><p> delay(50);</p><p><b> }</b></p><p> void timeToBuffer() //轉(zhuǎn)換段碼功能模塊</p><p><b> {</b></p><p> if
77、 (jsz>zzz)</p><p><b> {</b></p><p> buffer[0]=0x93;</p><p> buffer[1]=0x93;</p><p> buffer[2]=0x93;</p><p><b> }</b></p
78、><p> else if (jsz<mq)</p><p><b> {</b></p><p> buffer[0]=0xFE;</p><p> buffer[1]=0xFE;</p><p> buffer[2]=0xFE;</p><p><b
79、> }</b></p><p><b> else</b></p><p><b> {</b></p><p> xm0=jsz/100;</p><p> xm1=(jsz-xm0*100)/10;</p><p> xm2=jsz-xm0
80、*100-xm1*10;</p><p> buffer[0]=convert[xm2];</p><p> buffer[1]=convert[xm1];</p><p> buffer[2]=convert[xm0];</p><p> if (buffer[2]==0x81)</p><p><b
81、> {</b></p><p> buffer[2]=0xFF;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void KeyAndDi
82、s_Time0(void) interrupt 1 using1 //定時(shí)器0中斷外理,鍵掃描和顯示</p><p><b> {</b></p><p><b> TR0=0;</b></p><p><b> TH0=0xD8;</b></p><p><b&g
83、t; TL0=0xF0;</b></p><p><b> TR0=1;</b></p><p><b> time();</b></p><p><b> }</b></p><p> void time () //計(jì)時(shí)處理模塊</p&g
84、t;<p><b> {</b></p><p><b> sec20++;</b></p><p> if (sec20>=cs) // 50 * 10 ms = 0.5 s </p><p><b> {</b></p><p>&l
85、t;b> sec20=0;</b></p><p><b> ec++;</b></p><p><b> e=~e;</b></p><p><b> if (ec>3)</b></p><p><b> {</b>&l
86、t;/p><p><b> ec=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> sec1++;</b></p><p> if (sec1>100)&
87、lt;/p><p><b> {</b></p><p><b> sec1=0;</b></p><p> sec++; //秒計(jì)時(shí)</p><p> if (sec>=3)</p><p><b> {</b></p>
88、<p><b> sec=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void jpcl()
89、 //按鍵處理程序</p><p><b> {</b></p><p><b> k11=k1;</b></p><p> if (!k12&&k11)</p><p><b> {</b></p><p><b>
90、 b=1;</b></p><p><b> }</b></p><p><b> k12=k11;</b></p><p><b> k11=k1;</b></p><p><b> k21=k2;</b></p>&l
91、t;p><b> if (b==1)</b></p><p><b> {</b></p><p><b> sx=0;</b></p><p><b> while(b)</b></p><p><b> {</b>
92、</p><p> buffer[0]=0x84;</p><p> buffer[1]=0x84;</p><p> buffer[2]=0x84;</p><p><b> sec=0;</b></p><p><b> c=0;</b></p>
93、<p><b> while(!c)</b></p><p><b> {</b></p><p> if (sec>=2)</p><p><b> c=1;</b></p><p> scanLED();</p><p>
94、<b> }</b></p><p><b> c=0;</b></p><p><b> zzbl=jsz;</b></p><p><b> jsz=dz;</b></p><p> timeToBuffer();</p>&l
95、t;p><b> jpzcx();</b></p><p><b> dz=kk;</b></p><p> if (dz>699)</p><p><b> dz=200;</b></p><p> if (dz<35)</p>&l
96、t;p><b> dz=35;</b></p><p><b> mq=ss; </b></p><p><b> jsz=zzbl;</b></p><p> buffer[1]=convert[xm2];</p><p><b> }</b
97、></p><p><b> }</b></p><p><b> }</b></p><p> void jpzcx() //按鍵子程序</p><p><b> {</b></p><p>
98、<b> while(!c)</b></p><p><b> {</b></p><p><b> k11=k1;</b></p><p> scanLED();</p><p> if (!k12&&k11) </p><p&g
99、t;<b> c=1;</b></p><p><b> k12=k11;</b></p><p><b> }</b></p><p><b> c=0;</b></p><p><b> while(!c)</b><
100、;/p><p><b> {</b></p><p><b> k11=k1;</b></p><p><b> k21=k2;</b></p><p> if (!k22&k21) </p><p><b> {</b
101、></p><p><b> xm0++;</b></p><p> if (xm0>6)</p><p><b> xm0=0;</b></p><p><b> }</b></p><p><b> if (e==1)
102、</b></p><p> buffer[2]=0xFF;</p><p> else buffer[2]=convert[xm0];</p><p> scanLED();</p><p> if (!k12&&k11) </p><p><b> c=1;</b
103、></p><p><b> k22=k21;</b></p><p><b> k12=k11;</b></p><p><b> }</b></p><p> buffer[2]=convert[xm0];</p><p><b&
104、gt; c=0;</b></p><p><b> while(!c)</b></p><p><b> {</b></p><p><b> k11=k1;</b></p><p><b> k21=k2;</b></p&g
105、t;<p> if (!k22&k21) </p><p><b> {</b></p><p><b> xm1++;</b></p><p> if (xm1>9)</p><p><b> xm1=0;</b></p>
106、<p><b> }</b></p><p><b> if (e==1)</b></p><p> buffer[1]=0xFF;</p><p> else buffer[1]=convert[xm1];</p><p> scanLED();</p><
107、;p> if (!k12&&k11) </p><p><b> c=1;</b></p><p><b> k22=k21;</b></p><p><b> k12=k11;</b></p><p><b> }</b>
108、</p><p> buffer[1]=convert[xm1];</p><p><b> c=0;</b></p><p><b> while(!c)</b></p><p><b> {</b></p><p><b> k1
109、1=k1;</b></p><p><b> k21=k2;</b></p><p> if (!k22&k21) </p><p><b> {</b></p><p><b> xm2++;</b></p><p>
110、if (xm2>9)</p><p><b> xm2=0;</b></p><p><b> }</b></p><p><b> if (e==1)</b></p><p> buffer[0]=0xFF;</p><p> else
111、 buffer[0]=convert[xm2];</p><p> scanLED();</p><p> if (!k12&&k11)</p><p><b> {</b></p><p><b> c=1;</b></p><p><b>
112、; b=0;</b></p><p> kk=xm0*100+xm1*10+xm2;</p><p><b> }</b></p><p><b> k22=k21;</b></p><p><b> k12=k11;</b></p><
113、;p><b> }</b></p><p><b> }</b></p><p> void wdzh()</p><p><b> {</b></p><p><b> TR0=0;</b></p><p><
114、;b> TH1=0x00;</b></p><p><b> TL1=0x00;</b></p><p><b> csbint=1;</b></p><p><b> sx=0;</b></p><p> delay(1700);</p>
115、;<p><b> csbfs();</b></p><p><b> csbout=1;</b></p><p><b> TR1=1;</b></p><p><b> i=yzsj;</b></p><p> while(i-
116、-)</p><p><b> {</b></p><p><b> }</b></p><p><b> i=0;</b></p><p> while(csbint) //判斷接收回路是否收到超聲波的回波</p><p><b
117、> {</b></p><p><b> i++;</b></p><p> if(i>=3300)</p><p><b> csbint=0;</b></p><p><b> }</b></p><p><b
118、> TR1=0;</b></p><p><b> s=TH1;</b></p><p> s=s*256+TL1;</p><p><b> TR0=1;</b></p><p><b> csbint=1;</b></p><
119、p> jsz=s*csbc; //計(jì)算測量結(jié)果</p><p> jsz=jsz/2;</p><p><b> }</b></p><p> void bgcl()</p><p><b> {</b></p><p> if (jsz<d
120、z)</p><p><b> {</b></p><p><b> bjh=0;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</
121、b></p><p><b> bjh=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> void mqjs()</p><p><b> {</b><
122、/p><p><b> yzsj=260;</b></p><p><b> }</b></p><p> void csbsc()</p><p><b> {</b></p><p> csbc=0.034;</p><p&
123、gt;<b> }</b></p><p> void clcs()</p><p><b> {</b></p><p> cs=100/4; //測量2次/秒</p><p><b> }</b>&
124、lt;/p><p> void offmsd() //百位為數(shù)0判斷模塊</p><p><b> {</b></p><p> if (buffer[2]==0x81) //如果值為零時(shí)百位不顯示</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2017畢業(yè)論文-基于at89s51單片機(jī)的超聲波測距系統(tǒng)設(shè)計(jì)
- 基于51單片機(jī)超聲波測距畢業(yè)論文
- 基于at89s52單片機(jī)超聲波測距系統(tǒng)畢業(yè)論文
- 51單片機(jī)超聲波測距畢業(yè)論文
- 基于51單片機(jī)超聲波測距畢業(yè)論文
- 51單片機(jī)超聲波測距設(shè)計(jì)--畢業(yè)論文
- 基于51單片機(jī)的超聲波測距系統(tǒng)設(shè)計(jì)-畢業(yè)論文
- 畢業(yè)論文——基于51單片機(jī)的超聲波測距系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的超聲波測距系統(tǒng)畢業(yè)論文
- 基于單片機(jī)的超聲波測距系統(tǒng)-畢業(yè)論文
- 基于51單片機(jī)超聲波測距儀設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文范文——基于51單片機(jī)的超聲波測距系統(tǒng)設(shè)計(jì)
- 基于51單片機(jī)超聲波測距儀設(shè)計(jì)【畢業(yè)論文】
- 基于51單片機(jī)的超聲波測距系統(tǒng)的
- 畢業(yè)論文范文——基于51單片機(jī)的超聲波測距系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的超聲波測距系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于51單片機(jī)的超聲波測距系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的超聲波測距系統(tǒng)實(shí)現(xiàn)畢業(yè)論文
- 基于89c51單片機(jī)小車超聲波測距畢業(yè)設(shè)計(jì)
- 基于at89s51單片機(jī)單片機(jī)控制空調(diào)溫度系統(tǒng)-畢業(yè)論文
評(píng)論
0/150
提交評(píng)論