微機原理報告超聲波測距_第1頁
微機原理報告超聲波測距_第2頁
微機原理報告超聲波測距_第3頁
微機原理報告超聲波測距_第4頁
微機原理報告超聲波測距_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機原理課程設(shè)計報告微機原理課程設(shè)計報告2超聲波測距系統(tǒng)摘 要隨著科學(xué)技術(shù)的發(fā)展,超聲波測距應(yīng)用越來越廣泛。本文介紹了一種采用基于8086 CPU 的超聲波測距系統(tǒng)。該設(shè)計充分利用實驗平臺的硬件資源,匯編語言編程自動實現(xiàn)超聲波的發(fā)射與接收控制,通過8253定時器所計超聲波往返所經(jīng)歷的的時間,經(jīng)過換算得到超聲波傳感器與反射物體之間的距離。利用8279鍵盤顯示電路驅(qū)動數(shù)碼管、可編程并口接口芯片8255驅(qū)動液晶顯示屏實現(xiàn)距離值得顯示。超聲波測距有效距離2-30厘米左右,超過一定閾值(300mm)會有燈光和語言報警。關(guān)鍵詞:超聲波;定時器;時間差測距法;數(shù)碼管;LCD;報警Ultrasonic Ran

2、ging SystemAbstractWith the development of technology, the ultrasound distance measurement is more and more widely used. This article introduces one ultrasonic ranging system based on 8086. Made the most of hardware and software, it implements the ultrasound-transmitted and ultrasound-received autom

3、atically. It uses the 8253 timer to count the time and then convert it to get the distance between ultrasound sensor and reflector. The digital tube and LCD will display the distance dynamicly. When the distance is larger than 300mm, it will give a light alarm and a voice alarm.Key Words:ultrasound;

4、 timer; digital tube; LCD; alarm目 錄摘 要1Abstract1引 言11設(shè)計內(nèi)容22實驗設(shè)備23設(shè)計原理23.1超聲波模塊23.28253定時器模塊43.3數(shù)碼管顯示模塊43.4LCD顯示模塊53.5語音錄放模塊63.6簡單I/O 口擴展電路64設(shè)計過程74.1設(shè)計思路74.2程序流程84.3程序清單95現(xiàn)象結(jié)論105.1現(xiàn)象105.2結(jié)論116任務(wù)分配127心得體會12參 考 文 獻(xiàn)13附 錄14引 言隨著電子技術(shù)的發(fā)展,激光、超聲波及紅外線等非接觸式測距方法相繼出現(xiàn)。激光測距雖然測距精度高、操作簡單,但是受環(huán)境的影響比較大,且系統(tǒng)檢測維護(hù)不便、價格相對昂貴

5、,一般多在軍事領(lǐng)域應(yīng)用。紅外測距屬于電磁波的一種,而超聲波是聲波測距,實現(xiàn)起來更容易且不受電磁干擾影響。紅外傳播速度為3x108 m/s,超聲波的傳播速度為340m/s,其速度相對電磁波是非常慢的,因此在同等距離的情況下,超聲波的傳播時間遠(yuǎn)大于紅外,往返時間更易測量。由于超聲波有以上優(yōu)點,所以被廣泛應(yīng)用在工業(yè)定位監(jiān)測、無損傷探測、醫(yī)療診斷、移動機器人、海洋捕撈、煤炭檢測等領(lǐng)域。特別是在易揮發(fā)、易燃、易爆、強腐蝕性等工作環(huán)境的惡劣的情況下,超聲波測距有巨大的用武之地。超聲波測距是利用超聲波的波長短、指向性強、能量集中、在介質(zhì)中傳播距離較遠(yuǎn)的特點來實現(xiàn)對距離的測量。特別是頻率在40KHz的超聲波在

6、空氣中傳播效果最佳,因此常用此頻率的超聲波來檢驗介質(zhì)的檢測距離。本文介紹了一種以8086 CPU 為控制終端超聲波測距系統(tǒng),利用8253定時器、8255并口接口芯片等外圍資源,測量物體與超聲波傳感器間距離,并用數(shù)碼管或LCD顯示,距離值超過定值(300mm)后會有燈光和語言報警。11 設(shè)計內(nèi)容(1) CPU 通過外擴的 I/O 向超聲波發(fā)送器發(fā)送短時間的40KHz的波束,在通過8253定時器測量接收到該波束的時間,根據(jù)聲波在空氣中的傳播速度,計算出距該物的距離。(2) 利用8279鍵盤/顯示接口電路,實現(xiàn)距離值在數(shù)碼管上顯示。(3) 利用編程并口接口芯片8255,實現(xiàn)距離值在 LCD 液晶顯示

7、電路顯示。(4) 超聲波測距有效距離為2-30厘米左右,超過閾值(300 mm)會有燈光和語音報警。2 實驗設(shè)備EL-MUT-III 型微機教學(xué)實驗系統(tǒng)(本設(shè)計用到8279鍵盤/顯示接口、CPU、8255并行接口、LCD 顯示電路、8253計數(shù)器、244/273 I/O 電路、外擴模塊接口、脈沖發(fā)生器等)、超聲波模塊、語音模塊等。3 設(shè)計原理3.1 超聲波模塊壓電式超聲波發(fā)生器是利用壓電晶體的諧振來工作的。超聲波發(fā)生器內(nèi)部結(jié)構(gòu)如圖1 所示,它有兩個壓電晶片和一個共振板。當(dāng)它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片將會發(fā)生共振,并帶動共振板振動,便產(chǎn)生超聲波。反之,如果兩

8、電極間未外加電壓,當(dāng)共振板接收到超聲波時,將壓迫壓電晶片作振動,將機械能轉(zhuǎn)換為電信號,這時它就成為超聲波接收器了。本模塊中所用的為諧振頻率40KHz的超聲波傳感器。圖1 超聲波傳感器結(jié)構(gòu)1、 超聲波傳感器的測距原理超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。超聲波在空氣中的傳播速度為340m/s,根據(jù)計時器記錄的時間t,就可以計算出發(fā)射點距障礙物的距離S,即:S=340t/2,這就是所謂的時間差測距法。2、 超聲波傳感器電路原理圖圖2 發(fā)射部分原理圖圖3 接收部分原理圖發(fā)射部分從Din 插孔輸

9、入40KHz 的信號,經(jīng)2倍幅度放大后加至發(fā)射器的兩端,同時開始計時。接收部分首先通過一個諧振放大電路取出接收到的40KHz信號,再經(jīng)LM318進(jìn)行第二級放大。然后與預(yù)設(shè)電壓V3進(jìn)行比較,如信號幅度大于V3,則DOUT 端輸出一個低脈沖。用此脈沖作為中斷請求信號,停止計時。由于障礙物離傳感器越遠(yuǎn),返回的也越弱,因此可以調(diào)節(jié)電位器R11改變V3的電壓值,從而改變測量范圍。在以后的實驗中,將V3調(diào)至1V左右,此時的測量范圍是2cm30cm。3.2 8253定時器模塊8253定時器的工作原理為:8253進(jìn)行定時或計數(shù)時,每輸入一個時鐘信號,便使計數(shù)值減1該電路由片8253 組成,8253 的片選輸入

10、端插孔CS8253數(shù)據(jù)口、地址、讀寫線均已接好,T0、T1、T2時鐘輸入分別為8252CLK0、8253CLK1、8253CLK2。定時器輸出,GATE 控制孔對應(yīng)如下:OUT0、GATE0、OUT1、GATE1、OUT2、GATE2、CLK2。原理圖如下: 圖4 8253定時器模塊原理圖3.3 數(shù)碼管顯示模塊8279顯示電路由6位共陰極數(shù)碼管顯示,74LS244為段驅(qū)動器,75451為位驅(qū)動器,可編程鍵盤電路由片74LS138組成,8279的數(shù)據(jù)口、地址、讀寫線、復(fù)位、時鐘、片選都已經(jīng)接好,鍵盤行列掃描線均有插孔輸出。鍵盤行掃描線插孔號為KA0KA3;列掃描線插孔號為RL0RL7;8279

11、還引出CTRL、SHIFT插孔。六位數(shù)碼管的位選、段選信號可以從8279引入,也可以有外部的其它電路引入,數(shù)碼管采用動態(tài)掃描的方式顯示。原理圖如下:圖5 數(shù)碼管顯示模塊原理圖3.4 LCD顯示模塊點陣式LCD 顯示電路是在系統(tǒng)板上外掛電正式液晶顯示模塊,模塊的數(shù)據(jù)線、狀態(tài)、控制線都通過插孔引出。可直接與系統(tǒng)相連。OCMJ2×8 液晶模塊的接口協(xié)議為請求/應(yīng)答(REQ/BUSY) 握手方式。應(yīng)答B(yǎng)USY 高電平(BUSY =1) 表示 OCMJ 忙于內(nèi)部處理,不能接收用戶命令;BUSY 低電平(BUSY =0)表示 OCMJ 空閑,等待接收用戶命令。發(fā)送命令到 OCMJ 可在BUSY

12、=0 后的任意時刻開始,先把用戶命令的當(dāng)前字節(jié)放到數(shù)據(jù)線上,接著發(fā)高電平REQ信號(REQ =1)通知OCMJ 請求處理當(dāng)前數(shù)據(jù)線上的命令或數(shù)據(jù)。OCMJ 模塊在收到外部的REQ 高電平信號后立即讀取數(shù)據(jù)線上的命令或數(shù)據(jù),同時將應(yīng)答線BUSY 變?yōu)楦唠娖?,表明模塊已收到數(shù)據(jù)并正在忙于對此數(shù)據(jù)的內(nèi)部處理,此時,用戶對模塊的寫操作已經(jīng)完成,用戶可以撤消數(shù)據(jù)線上的信號并可作模塊顯示以外的其它工作,也可不斷地查詢應(yīng)答線BUSY 是否為低(BUSY ?=0),如果BUSY=0,表明模塊對用戶的寫操作已經(jīng)執(zhí)行完畢??梢栽偎拖乱粋€數(shù)據(jù)。如向模塊發(fā)出一個完整的顯示漢字的命令,包括坐標(biāo)及漢字代碼在內(nèi)共需5 個字

13、節(jié),模塊在接收到最后一個字節(jié)后才開始執(zhí)行整個命令的內(nèi)部操作,因此,最后一個字節(jié)的應(yīng)答B(yǎng)USY 高電平(BUSY =1)持續(xù)時間較長,具體的時序圖和時間參數(shù)說明查閱相關(guān)手冊。表1 OCMJ2X8(128X32)引腳說明圖OCMJ 中文模塊引腳說明如下:引腳名稱方向說明引腳名稱方向說明1VLED+I背光源正極(LED+5V)8DB1I數(shù)據(jù)12VLED-I背光源負(fù)極(LED-OV)9DB2I數(shù)據(jù)23VSSI地10DB3I數(shù)據(jù)34VDDI+5V11DB4I數(shù)據(jù)45REQI請求信號,高電平有效12DB5I數(shù)據(jù)56BUSYO應(yīng)答信號=1:已收到數(shù)據(jù)并正在處理中;應(yīng)答信號=0:模塊空閑,可接收數(shù)據(jù)13DB6

14、I數(shù)據(jù)67DB0I數(shù)據(jù)014DB7I數(shù)據(jù)7模塊上DB0DB7 插孔對應(yīng)于位數(shù)據(jù)線;BUSY、REQ 插孔分別對應(yīng)于圖中相應(yīng)的引腳。3.5 語音錄放模塊語音錄放模塊由單片語音錄放芯片ISD2560及其外圍電路組成。本電路中ISD2560采用按鈕控制操作方式,A9、A8、A6接VCC,A1A5、A7均接GND,A0由CA0插孔引出,用于控制是否進(jìn)入檢索模式。ISD2560的音頻輸出端SP+、SP-經(jīng)過音頻功放LM386驅(qū)動喇叭。電位器R8(對應(yīng)于模塊上VOLUME電位器)用于調(diào)節(jié)喇叭的增益。原理圖如下:圖6 語音錄放模塊原理圖3.6 簡單I/O 口擴展電路輸入緩沖電路由74LS244 組成,輸出鎖

15、存電路由上升沿鎖存器74LS273 組成。74LS244 是一個擴展輸入口,74LS273 是一個擴展輸出口,同時它們都是一個單向驅(qū)動器,以減輕總線的負(fù)擔(dān)。74LS244 的輸入信號由插孔IN0IN7 輸入,插孔CS244 是其選通信號,其它信號線已接好;74LS273 的輸出信號由插孔O0O7輸出,插孔CS273 是其選通信號,其它信號線已接好。其原理圖如下:圖7 I/O 口擴展電路原理圖4 設(shè)計過程4.1 設(shè)計思路測距部分:8086芯片通過I/O口擴展電路,與超聲波模塊相連接。給超聲波模塊發(fā)送一個40KHz的信號,超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時刻的同時8253定時器開始計時;超

16、聲波在空氣中傳播,途中碰到障礙物就立即返回來;超聲波接收器收到反射波就立即停止計時。時間差測距法處理數(shù)據(jù):超聲波在空氣中的傳播速度為340m/s,根據(jù)計時器記錄的時間t,就可以計算出發(fā)射點距障礙物的距離S,即:S=340t/2。 顯示部分:利用8279鍵盤/顯示接口電路,數(shù)碼管動態(tài)掃描實現(xiàn)距離值實時顯示。利用編程并口接口芯片8255,根據(jù)液晶屏的握手接口協(xié)議,實現(xiàn)距離值在 LCD 液晶顯示電路顯示。報警部分:超聲波測距有效距離為2-30厘米左右,超過閾值(300 mm)會有燈光和語音報警,即用8255的B端口驅(qū)動LED燈和語音錄放模塊的報警。8086控制終端8253定時器障礙物超聲波模塊發(fā)射電

17、路8255可編程并口接口芯片圖8 設(shè)計思路示意圖語音報警LCD顯示超聲波模塊接收電路74LS273擴展輸出口74LS244擴展輸入口LED報警8279鍵盤顯示電路數(shù)碼管顯示4.2 程序流程(1) 超聲波測距,距離值用數(shù)碼管顯示,程序流程圖如下:8253定時器初始化數(shù)碼管顯示距離值距離值處理計數(shù)差值轉(zhuǎn)換為距離值讀取定時器計數(shù)值超聲波模塊收到返回信號?圖9 Sonic_LED.asm流程圖是否8279鍵盤顯示電路初始化超聲波模塊發(fā)送信號,定時器開始計數(shù)開始(2) 超聲波測距,距離值用液晶屏顯示,并添加了LED燈報警和語音模塊報警功能。程序流程圖如下:是距離值是否大于300mm8253定時器初始化L

18、CD顯示距離值距離值處理計數(shù)差值轉(zhuǎn)換為距離值讀取定時器計數(shù)值超聲波模塊收到返回信號?圖10 Sonic_LCD.asm流程圖是否LCD初始化超聲波模塊發(fā)送信號,定時器開始計數(shù)開始報警否4.3 程序清單SonicLED.asm為超聲波測距,距離值用數(shù)碼管顯示程序,程序清單見附件。Sonic_LCD.asm為超聲波測距,距離值用液晶屏顯示,并添加報警功能程序,程序清單見附件。5 現(xiàn)象結(jié)論5.1 現(xiàn)象(1) 數(shù)碼管顯示CS0接CS8253,8253CLK0接CLK1,CS1接CS273,273的輸出O0接超聲波模塊上的Din,CS2接CS244,244的輸入I0接超聲波模塊上的DOUT。線連好后,啟

19、動試驗箱并連接。編譯并鏈接SonicLED.asm,全速運行。在超聲波發(fā)送器與接收器的前面放置面積較大的障礙物,數(shù)碼管上會相應(yīng)的顯示動態(tài)距離值(mm)“*-”,誤差1-2cm左右?,F(xiàn)象如圖:圖11 超聲波測距數(shù)碼管顯示結(jié)果(2) LCD顯示CS0接CS8253,8253CLK0接CLK1;CS1接CS273,273的輸出O0接超聲波模塊上的Din;CS2接CS244,244的輸入I0接超聲波模塊上的DOUT;CS3接8255CS,8255的PA0PA7接A/D PORT單元的DB0DB7;8255的PC7接A/D PORT的BUSY,8255的PC0接A/D PORT的REQ;8255的PB0

20、接LED0;8255的PB1接語音模塊上的PLAY,撥碼開關(guān)的輸出k1接語音模塊上的REC。(通過調(diào)節(jié)撥碼開關(guān)可以錄音)線連好后,啟動試驗箱并連接。編譯并鏈接SonicLCD.asm,全速運行。在超聲波發(fā)送器與接收器的前面放置面積較大的障礙物,LCD液晶顯示屏上會相應(yīng)的顯示動態(tài)距離值(mm)“USTB 超聲波測距 *mm”,數(shù)據(jù)穩(wěn)定時誤差1cm左右。燈光和語音報警功能成功實現(xiàn):當(dāng)距離值小于300mm時,LED1偶爾閃爍,語音模塊幾乎沒有聲音;距離大于300mm時,LED1長亮,語音模塊有聲音報警?,F(xiàn)象如圖:圖12 超聲波測距LCD顯示結(jié)果及報警5.2 結(jié)論(1) 超聲波可以實現(xiàn)有效測距,數(shù)據(jù)穩(wěn)

21、定時實驗誤差1cm左右。誤差產(chǎn)生可能與障礙物面積、傾角,周圍其它物體,以及超聲波模塊本身性能等有關(guān)系。(2) 考慮到測距時操作等原因,在數(shù)據(jù)不穩(wěn)定時,可能會出現(xiàn)與實際距離相差較大的情況。因此實際距離小于300mm時,超聲波測距會偶爾會出現(xiàn)大于300mm的結(jié)果,從而導(dǎo)致報警失效,即LED1偶爾閃爍,語音模塊偶爾有聲音。但由于超聲波模塊采集數(shù)據(jù)刷新很快, LED1點亮和語音模塊有聲音的時間不會很長。6 任務(wù)分配7 心得體會經(jīng)過這兩周的微機原理課程設(shè)計的學(xué)習(xí),我感觸很多。其一,用實踐來檢驗真理。上學(xué)期微機原理課程的學(xué)習(xí)側(cè)重于理論知識的學(xué)習(xí),實驗課課時少、任務(wù)重,老師給我們例程,我們也只是下載驗證,很

22、少花時間去深究匯編程序每句話的作用。經(jīng)過超聲波測距的設(shè)計與程序調(diào)試,我對8086有了更深一步的認(rèn)識,對微型計算機原理和匯編語言有了進(jìn)一步的理解,并且學(xué)到了很多課堂上不能學(xué)到的東西。有些知識雖然看似很簡單,但是操作起來還是有很多要注意的。比如時序問題等等。畢竟理論學(xué)習(xí)是一種能力,動手實踐又是另一種能力。只有兩者結(jié)合起來,用理論去指導(dǎo)實踐,實踐的結(jié)果反過來修正理論,才是一種真正的學(xué)習(xí)過程。其二,實踐過程要有耐心、認(rèn)真思考。我們的超聲波例程很長,第一眼看到這么長的程序,大家都很反感。但只要靜下心來,結(jié)合其工作原理認(rèn)真讀程序,最后會發(fā)現(xiàn)這個程序并沒有那么難于理解。讀懂程序后,修改加入LCD顯示也就容易

23、多了。并且要做好一件事情絕不可能會一氣呵成,遇到問題要沉住氣,認(rèn)真想哪里出了問題。其三,學(xué)無止境。相比那些做的快而好的同學(xué),我發(fā)現(xiàn)自己的相關(guān)知識和動手實踐能力還很欠缺,自己還有很大的不足。在以后的學(xué)習(xí)中,還需要要加注重專業(yè)知識和動手能力的培養(yǎng)。其四,團(tuán)隊合作很重要。每個人都有自己的長處,也都有自己的缺點。一個人不能在很短的時間內(nèi)做很多事情。團(tuán)隊就是一個發(fā)揮個人所長,充分利用人力資源的地方。學(xué)會合作,才會事半功倍,讓事情做的更漂亮。參 考 文 獻(xiàn)1 董潔.微機原理課程設(shè)計指導(dǎo)書.北京:北京科技大學(xué),2013.2 王忠民著. 微型計算機原理. 西安:西安電子科技大學(xué)出版社,2007.3 閆東磊.

24、基于ATmega8L高精度超聲波測距儀的設(shè)計.武漢:武漢理工大學(xué),2010.附 錄SonicLED.asm; = 超聲波測距&數(shù)碼管顯示 =;CS0接CS8253,8253CLK0接CLK1;CS1接CS273,273的輸出O0接超聲波模塊上的Din;CS2接CS244,244的輸入I0接超聲波模塊上的DOUT;= CON8279 EQU 0492H DAT8279 EQU 0490H ASSUME CS:CODE CODE SEGMENT PUBLIC ORG 100H= 8279鍵盤顯示電路初始化 = START: MOV DX,CON8279 MOV AX,0D1H OUT DX

25、,AX ;將全部顯示RAM清零 CALL DELAY MOV AX,30H OUT DX,AX ;時鐘編程,16分頻 MOV AX,08H OUT DX,AX ;鍵盤顯示命令,16個字符顯示,左端入口方式 MOV AX,90H OUT DX,AX ;寫顯示命令,地址自動加一= 8253定時器初始化 = START1: MOV DX,04A6H MOV AX,30H OUT DX,AX ;選擇計數(shù)器0 MOV DX,04A0H MOV AX,0FFH OUT DX,AX ;計數(shù)器0低8位為0ffh MOV AX,0FFH OUT DX,AX ;計數(shù)器0高8位為0ffh MOV DX,04B0H

26、MOV CX,10= 超聲波模塊發(fā)送信號 = SEND: MOV AL,0FFH OUT DX,AL ;Din給高電平 MOV AX,0 OUT DX,AL ;Din給低電平 LOOP SEND ;Din高低循環(huán)10次形成10個脈沖 MOV CX,10 MOV DX,04C0H MOV BX,0H;= = 超聲波模塊接收返回信號 = REV: INC BX CMP BX,0FFFFH JE START1 ;若沒有收到返回信號,重新發(fā)送信號 IN AL,DX ;采集Dout TEST AL,01 JNE REV ;Dout不為0時會跳轉(zhuǎn)到REV REV1: INC BX CMP BX,0FFFF

27、H JE START1 ;若沒有收到返回信號,重新發(fā)送信號 IN AL,DX ;采集Dout TEST AL,01 JE REV ;Dout不為1時會跳轉(zhuǎn)到REV,即Dout出現(xiàn)低脈沖時程序往下運行 MOV DX,04A0H IN AL,DX MOV BL,AL ;讀計數(shù)器的低八位放入BL IN AL,DX MOV BH,AL ;讀計數(shù)器的高八位放入BH MOV AX,0FFFFH SUB AX,BX ;從發(fā)出信號到接收信號之間計數(shù)器的計數(shù)值N;= = 定時器計數(shù)值轉(zhuǎn)換為距離值 = SHR AX,1 ;除2 MOV BX,71H MUL BX ;乘113 MOV BX,1000 DIV BX

28、;除1000 MOV DX,00H ;距離d=(1/(3*106) *(N/2)* (340*1000) mm;= 距離值各位分別用一位16進(jìn)制數(shù)表示 = DIV BX MOV CL,12 SHL AX,CL PUSH AX ;得到距離值的千位放到AH的高四位,并壓入堆棧 MOV AX,DX MOV DX,00H MOV BX,100 DIV BX AND AX,0FH MOV CL,8 SHL AX,CL ;得到距離值的百位放到AH的低四位 POP CX OR AX,CX PUSH AX ;將距離值的千位和百位組合壓棧 MOV AX,DX MOV DX,00H MOV BX,10 DIV B

29、X AND AX,0FH MOV CL,4 SHL AX,CL ;得到距離值的十位放到AL的高四位 POP CX OR AX,CX ;將距離值的千位、百位和十位組合 AND DX,0FH ;得到距離值的個位放到DX的低四位 OR AX,DX ;將距離值的千位、百位、十位和個位組合 MOV BX,AX ;組合的距離值放入BX;= 功能實現(xiàn) = CALL DISP ;距離值顯示在數(shù)碼管上 CALL DELAY ;延時 JMP START1 ;重新開始計數(shù)運行 ;= 延 時 = DELAY: PUSH CX MOV CX,1000 DELAY1: NOP LOOP DELAY1 ;循環(huán)1000次 P

30、OP CX RET= 數(shù)碼管顯示 = DISP: MOV DI,OFFSET SEGCOD MOV DX,DAT8279 MOV AX,00H MOV AL,BH AND AL,0F0H MOV CL,4 SHR AL,CL ;距離值千位放入AL ADD DI,AX ;得到千位對應(yīng)ASCII碼的偏移地址 MOV AL,CS:DI OUT DX,AL ;顯示千位 NOP NOP MOV DI,OFFSET SEGCOD MOV AL,BH AND AL,0FH ;距離值百位放入AL ADD DI,AX ;得到百位對應(yīng)ASCII碼的偏移地址 MOV AL,CS:DI OUT DX,AL ;顯示百位

31、 NOP NOP MOV DI,OFFSET SEGCOD MOV AL,BL AND AL,0F0H MOV CL,4 SHR AL,CL ;距離值十位放入AL ADD DI,AX ;得到十位對應(yīng)ASCII碼的偏移地址 MOV AL,CS:DI OUT DX,AL ;顯示十位 NOP NOP MOV DI,OFFSET SEGCOD MOV AL,BL AND AL,0FHH ;距離值個位放入AL ADD DI,AX ;得到個位對應(yīng)ASCII碼的偏移地址 MOV AL,CS:DI OUT DX,AL ;顯示個位 MOV AL,40H OUT DX,AL ;顯示- OUT DX,AL ;顯示-

32、 OUT DX,AL ;顯示- OUT DX,AL ;顯示- RET= 數(shù)碼管顯示碼制 = SEGCOD DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H; 共陰數(shù)碼管碼制 CODE ENDS END STARTSonicLCD.asm;= 超聲波測距&LCD顯示 =;CS0接CS8253,8253CLK0接CLK1;CS1接CS273,273的輸出O0接超聲波模塊上的Din;CS2接CS244,244的輸入I0接超聲波模塊上的DOUT;CS3接8255CS, 8255的PA0PA7接A/D PORT單

33、元的DB0DB7;8255的PC7接A/D PORT的BUSY,8255的PC0接A/D PORT的REQ;8255的PB0接LED1;8255的PB5接語音模塊上的PLAY,撥碼開關(guān)的輸出k1接語音模塊上的REC;= ASSUME CS:CODE CODE SEGMENT PUBLIC ORG 100H ;調(diào)整偏移量為100H;= LCD初始化 = START: MOV DX, 04D6H MOV AX, 88H OUT DX, AX ;8255控制字(A口方式為輸出,PC7輸入,PC0輸出) MOV AX, 70H OUT DX, AX MOV AL, 0F4H ;PC0輸出0 ,REQ給

34、低信號 CALL COMD ;調(diào)用 CALL DELAY;= 8253定時器初始化 = START1: MOV DX,04A6H MOV AX,30H OUT DX,AX ;選擇計數(shù)器0 MOV DX,04A0H MOV AX,0FFH OUT DX,AX ;計數(shù)器0低8位為0ffh MOV AX,0FFH OUT DX,AX ;計數(shù)器0高8位為0ffh MOV DX,04B0H MOV CX,10;= 超聲波模塊發(fā)送信號 = SEND: MOV AL,0FFH OUT DX,AL ;Din給高電平 MOV AX,0 OUT DX,AL ;Din給低電平 LOOP SEND ;Din高低循環(huán)1

35、0次形成10個脈沖 MOV CX,10 MOV DX,04C0H MOV BX,0H;= 超聲波模塊接收返回信號 = REV: INC BX CMP BX,0FFFFH JE START1 ;若沒有收到返回信號,重新發(fā)送信號 IN AL,DX ;采集Dout TEST AL,01 JNE REV ;Dout不為0時會跳轉(zhuǎn)到REV REV1: INC BX CMP BX,0FFFFH JE START1 ;若沒有收到返回信號,重新發(fā)送信號 IN AL,DX ;采集Dout TEST AL,01 JE REV ;Dout不為1時會跳轉(zhuǎn)到REV,即Dout出現(xiàn)低脈沖往下運行 MOV DX,04A0H IN AL,DX MOV BL,AL ;讀計數(shù)器的低八位放入BL IN AL,DX MOV BH,AL ;讀計數(shù)器的高八位放入BH MOV AX,0FFFFH SUB AX,BX ;從發(fā)出信號到接收信號之間計數(shù)器的計數(shù)值N;= 定時器計數(shù)值轉(zhuǎn)換為距離值 = SHR AX,1 ;除2 MOV BX,71H MUL BX ;乘1

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論