基于單片機(jī)的超聲波測距儀LED顯示電路的設(shè)計(jì)
摘要:本設(shè)計(jì)主要是基于AT89S51芯片為核心的超聲波測距儀,并有超聲波處理模塊CX20106A、CD4069組成的超聲波發(fā)射電路、數(shù)碼管顯示等器件組成,包括單片機(jī)系統(tǒng)、超聲波發(fā)射電路、超聲波接收電路、單片機(jī)復(fù)位電路、LED顯示電路。主要實(shí)現(xiàn)超聲波測距并指示功能。依據(jù)實(shí)際的測量精度要求還可以添加溫度補(bǔ)償電路。本系統(tǒng)成本低廉,功能實(shí)用。
關(guān)鍵詞:AT89S51 CX20106A 超聲波發(fā)射模塊 超聲波接收模塊 LED顯示電路
1 引言
隨著科學(xué)技術(shù)的快速發(fā)展,超聲波將在測距儀中的應(yīng)用越來越廣。但就目前技術(shù)水平來說,人們可以具體利用的測距技術(shù)還十分有限,因此,這是一個正在蓬勃發(fā)展而又有無限前景的技術(shù)及產(chǎn)業(yè)領(lǐng)域。展望未來,超聲波測距儀作為一種新型的非常重要有用的工具在各方面都將有很大的發(fā)展空間,它將朝著更加高定位高精度的方向發(fā)展,以滿足日益發(fā)展的社會需求,如聲納的發(fā)展趨勢基本為:研制具有更高定位精度的被動測距聲納,以滿足水中武器實(shí)施全隱蔽攻擊的需要;繼續(xù)發(fā)展采用低頻線譜檢測的潛艇拖曳線列陣聲納,實(shí)現(xiàn)超遠(yuǎn)程的被動探測和識別;研制更適合于淺海工作的潛艇聲納,特別是解決淺海水中目標(biāo)識別問題;大力降低潛艇自噪聲,改善潛艇聲納的工作環(huán)境。無庸置疑,未來的超聲波測距儀將與自動化智能化接軌,與其他的測距儀集成和融合,形成多測距儀。隨著測距儀的技術(shù)進(jìn)步,測距儀將從具有單純判斷功能發(fā)展到具有學(xué)習(xí)功能,最終發(fā)展到具有創(chuàng)造力。在新的世紀(jì)里,面貌一新的測距儀將發(fā)揮更大的作用。
隨著科技的發(fā)展,人們生活水平的提高,城市發(fā)展建設(shè)加快,城市給排水系統(tǒng)也有較大發(fā)展,其狀況不斷改善。但是,由于歷史原因合成時間住的許多不可預(yù)見因素,城市給排水系統(tǒng),特別是排水系統(tǒng)往往落后于城市建設(shè)。因此,經(jīng)常出現(xiàn)開挖已經(jīng)建設(shè)好的建筑設(shè)施來改造排水系統(tǒng)的現(xiàn)象。城市污水給人們帶來了困擾,因此箱涵的排污疏通對大城市給排水系統(tǒng)污水處理,人們生活舒適顯得非常重要。而設(shè)計(jì)研制箱涵排水疏通移動機(jī)器人的自動控制系統(tǒng),保證機(jī)器人在箱涵中自由排污疏通,是箱涵排污疏通機(jī)器人的設(shè)計(jì)研制的核心部分??刂葡到y(tǒng)核心部分就是超聲波測距儀的研制。因此,設(shè)計(jì)好的超聲波測距儀就顯得非常重要了。這就是我設(shè)計(jì)超聲波測距儀的意義。
2 總體設(shè)計(jì)方案
2.1 設(shè)計(jì)思路
2.1.1超聲波測距儀的設(shè)計(jì)思路
超聲波是指頻率高于20KHz的機(jī)械波。為了以超聲波作為檢測手段,必須產(chǎn)生超生波和接收超聲波。完成這種功能的裝置就是超聲波傳感器,習(xí)慣上稱為超聲波換能器或超聲波探頭。超聲波傳感器有發(fā)送器和接收器,但一個超聲波傳感器也可具有發(fā)送和接收聲波的雙重作用。超聲波傳感器是利用壓電效應(yīng)的原理將電能和超聲波相互轉(zhuǎn)化,即在發(fā)射超聲波的時候,將電能轉(zhuǎn)換,發(fā)射超聲波;而在收到回波的時候,則將超聲振動轉(zhuǎn)換成電信號。
超聲波測距的原理一般采用渡越時間法TOF(time of flight)。首先測出超聲波從發(fā)射到遇到障礙物返回所經(jīng)歷的時間,再乘以超聲波的速度就得到二倍的聲源與障礙物之間的距離
測量距離的方法有很多種,短距離的可以用尺,遠(yuǎn)距離的有激光測距等,超聲波測距適用于高精度的中長距離測量。因?yàn)槌暡ㄔ跇?biāo)準(zhǔn)空氣中的傳播速度為331.45米/秒,由單片機(jī)負(fù)責(zé)計(jì)時,單片機(jī)使用12.0MHZ晶振,所以此系統(tǒng)的測量精度理論上可以達(dá)到毫米級。
由于超聲波指向性強(qiáng),能量消耗緩慢,在介質(zhì)中傳播距離遠(yuǎn),因而超聲波可以用于距離的測量。利用超聲波檢測距離,設(shè)計(jì)比較方便,計(jì)算處理也較簡單,并且在測量精度方面也能達(dá)到要求。
超聲波發(fā)生器可以分為兩類:一類是用電氣方式產(chǎn)生超聲波,一類是用機(jī)械方式產(chǎn)生超聲波。本課題屬于近距離測量,可以采用常用的壓電式超聲波換能器來實(shí)現(xiàn)。
2.12超聲波測距原理
發(fā)射器發(fā)出的超聲波以速度υ在空氣中傳播,在到達(dá)被測物體時被反射返回,由接收器接收,其往返時間為t,由s=vt/2即可算出被測物體的距離。由于超聲波也是一種聲波,其聲速v與溫度有關(guān),下表列出了幾種不同溫度下的聲速。在使用時,如果溫度變化不大,則可認(rèn)為聲速是基本不變的。如果測距精度要求很高,則應(yīng)通過溫度補(bǔ)償?shù)姆椒右孕U?/p>
表1 超聲波波速與溫度的關(guān)系表
溫度(℃)
-30
-20
-10
0
10
20
30
100
聲速
(m/s)
313
319
325
323
338
344
349
386
2.2 超聲波測距儀原理框圖
根據(jù)設(shè)計(jì)要求并綜合各方面因素,可以采用AT89S51單片機(jī)作為主控制器,用動態(tài)掃描法實(shí)現(xiàn)LED數(shù)字顯示,超聲波驅(qū)動信號用單片機(jī)的定時器完成,超聲波測距器的系統(tǒng)框圖如圖1.
3.設(shè)計(jì)原理分析
3.1 系統(tǒng)組成
3.1.1硬件部分
主要由單片機(jī)系統(tǒng)及顯示電路、超聲波發(fā)射電路和超聲波檢測接收電路三部分組成。采用AT89S51來實(shí)現(xiàn)對超聲波發(fā)射和接受處理模塊的控制。單片機(jī)通過P1.0引腳經(jīng)反相器來控制超聲波的發(fā)送,然后單片機(jī)不停的檢測INT0引腳,當(dāng)INT0引腳的電平由高電平變?yōu)榈碗娖綍r就認(rèn)為超聲波已經(jīng)返回。計(jì)數(shù)器所計(jì)的數(shù)據(jù)就是超聲波所經(jīng)歷的時間,通過換算就可以得到傳感器與障礙物之間的距離。
3.1.2軟件部分
主要由主程序、超聲波發(fā)生子程序、超聲波接收中斷程序及顯示子程序等部分。
3.2 系統(tǒng)硬件電路設(shè)計(jì)
3.2.1 單片機(jī)最小系統(tǒng)
其作用主要是為了保證單片機(jī)系統(tǒng)能正常工作。如圖2所示,單片機(jī)最小系統(tǒng)主要由AT89S51單片機(jī)、外部振蕩電路、復(fù)位電路和+5V電源組成。在外部振蕩電路中,單片機(jī)的XTAL1和XTAL2管腳分別接至由12MHZ晶振和兩個30PF電容構(gòu)成的振蕩電路兩側(cè),為電路提供正常的時鐘脈沖。在復(fù)位電路中,單片機(jī)RESET管腳一方面經(jīng)20 F的電容接至電源正極,實(shí)現(xiàn)上電自動復(fù)位,另一方面經(jīng)開關(guān)s接電源。其主要功能是把PC初始化為0000H,是單片機(jī)從0000H單元開始執(zhí)行程序,除了進(jìn)入系統(tǒng)的初始化之外,當(dāng)由于程序出錯或者操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為了擺脫困境,也需要按復(fù)位鍵重新啟動,因此,復(fù)位電路是單片機(jī)系統(tǒng)中不可缺少的一部分。
3.2.2 單片機(jī)測距原理
單片機(jī)發(fā)出超聲波測距是通過不斷檢測超聲波發(fā)射后遇到障礙物所反射的回波,從而測出發(fā)射和接收回波的時間差tr,然后求出距離S=Ct/2,式中的C為超聲波波速。限制該系統(tǒng)的最大可測距離存在4個因素:超聲波的幅度、反射的質(zhì)地、反射和入射聲波之間的夾角以及接收換能器的靈敏度。接收換能器對聲波脈沖的直接接收能力將決定最小的可測距離。為了增加所測量的覆蓋范圍、減小測量誤差,可采用多個超聲波換能器分別作為多路超聲波發(fā)射/接收的設(shè)計(jì)方法,限于實(shí)際需要,本電路只采用單路超聲波發(fā)射接收。由于超聲波屬于聲波范圍,其波速C與溫度有關(guān)。
3.2.3 超聲波發(fā)射電路
壓電超聲波轉(zhuǎn)換器的功能:利用壓電晶體諧振工作。內(nèi)部結(jié)構(gòu)上圖所示,它有兩個壓電晶片和一個共振板。當(dāng)它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片將會發(fā)生共振,并帶動共振板振動產(chǎn)生超聲波,這時它就是一超聲波發(fā)生器;如沒加電壓,當(dāng)共振板接受到超聲波時,將壓迫壓電振蕩器作振動,將機(jī)械能轉(zhuǎn)換為電信號,這時它就成為超聲波接受轉(zhuǎn)換器。超聲波發(fā)射轉(zhuǎn)換器與接受轉(zhuǎn)換器其結(jié)構(gòu)稍有不同。
壓電式超聲波換能器是利用壓電晶體的諧振來工作的。超聲波換能器內(nèi)部有兩個壓電晶片和一個換能板。當(dāng)它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片會發(fā)生共振,并帶動共振板振動產(chǎn)生超聲波,這時它就是一個超聲波發(fā)生器;反之,如果兩電極問未外加電壓,當(dāng)共振板接收到超聲波時,將壓迫壓電晶片作振動,將機(jī)械能轉(zhuǎn)換為電信號,這時它就成為超聲波接收換能器。超聲波發(fā)射換能器與接收換能器在結(jié)構(gòu)上稍有不同,使用時應(yīng)分清器件上的標(biāo)志。本設(shè)計(jì)中發(fā)射器電路采用集成電路模塊不需考慮這些問題,主要是采用4069反相器在換能器兩端提供脈沖信號。其原理圖如圖3所示。
3.2.4 超聲波檢測接收電路
集成電路CX20106A是一款紅外線檢波接收的專用芯片,常用于電視機(jī)紅外遙控接收器。考慮到紅外遙控常用的載波頻率38 kHz與測距的超聲波頻率40 kHz較為接近,可以利用它制作超聲波檢測接收電路(如圖2-3)。實(shí)驗(yàn)證明用CX20106A接收超聲波(無信號時輸出高電平),具有很好的靈敏度和較強(qiáng)的抗干擾能力。適當(dāng)更改電容CS的大小,可以改變接收電路的靈敏度和抗干擾能力。此部分電路在集成芯片上。
3.2.5 LED顯示電路
根據(jù)設(shè)計(jì)要求并綜合各方面因素,可以采用AT89S51單片機(jī)作為主控制器,用動態(tài)掃描法實(shí)現(xiàn)LED數(shù)字顯示,超聲波驅(qū)動信號用單片機(jī)的定時器完成,顯示電路如下圖5
3.3 系統(tǒng)軟件的設(shè)計(jì)
本設(shè)計(jì)基于匯編語言編程,其軟件設(shè)計(jì)思路如下:
3.3.1超聲波測距儀的算法設(shè)計(jì)
超聲波測距的原理為超聲波發(fā)生器T在某一時刻發(fā)出一個超聲波信號,當(dāng)這個超聲波遇到被測物體后反射回來,就被超聲波接收器R所接收到。這樣只要計(jì)算出從發(fā)出超聲波信號到接收到返回信號所用的時間,就可算出超聲波發(fā)生器與反射物體的距離。距離的計(jì)算公式為:
d=s/2=(c×t)/2 (1)
其中,d為被測物與測距儀的距離,s為聲波的來回的路程,c為聲速,t為聲波來回所用的時間。 在啟動發(fā)射電路的同時啟動單片機(jī)內(nèi)部的定時器T0,利用定時器的計(jì)數(shù)功能記錄超聲波發(fā)射的時間和收到反射波的時間。當(dāng)收到超聲波反射波時,接收電路輸出端產(chǎn)生一個負(fù)跳變,在INT0或INT1端產(chǎn)生一個中斷請求信號,單片機(jī)響應(yīng)外部中斷請求,執(zhí)行外部中斷服務(wù)子程序,讀取時間差,計(jì)算距離。其部分源程序如下:
WORK: PUSH ACC
PUSH PSW
PUSH B
MOV PSW,#18H
MOV R3,45H
MOV R2,44H
MOV R1,00D
MOV R0,17D
LCALL MUL2BY2
MOV R3,#03H
MOV R2,0E8H
LCALL DIV4BY2
LCALL DIV4BY2
MOV 40H,R4
MOV A,40H
JNZ JJ0
MOV 40H,#0AH
JJ0: MOV A, R0
MOV R4, A
MOV A, R1
MOV R5, A
MOV R3, 00D
MOV R2, #100D
LCALL DIV4BY2
MOV 41H,R4
MOV A,41H
JNZ JJ1
MOV A,40H
SUBB A,#0AH
JNZ JJ1
MOV 41H,#0AH
JJ1: MOV A,R0
MOV R4,A
MOV A,R1
MOV R5,A
MOV R3,#00D
MOV R2,10D
LCALL DIV4BY2
MOV 42H,R4
JNZ JJ2
MOV A,41H
SUBB A,#0AH
JNZ JJ2
MOV 42H,#0AH
JJ2: MOV 43H,R0
POP B
POP PSW
POP ACC
RET
3.3.2 主程序流程圖
軟件分為兩部分,主程序和中斷服務(wù)程序,如圖3-1(a)(b) (c) 所示。主程序完成初始化工作、各路超聲波發(fā)射和接收順序的控制。
定時中斷服務(wù)子程序完成三方向超聲波的輪流發(fā)射,外部中斷服務(wù)子程序主要完成時間值的讀取、距離計(jì)算、結(jié)果的輸出等工作。
主程序首先是對系統(tǒng)環(huán)境初始化,設(shè)置定時器T0工作模式為16位定時計(jì)數(shù)器模式。置位總中斷允許位EA并給顯示端口P0和P1清0。然后調(diào)用超聲波發(fā)生子程序送出一個超聲波脈沖,為了避免超聲波從發(fā)射器直接傳送到接收器引起的直射波觸發(fā),需要延時約0.1 ms(這也就是超聲波測距儀會有一個最小可測距離的原因)后,才打開外中斷0接收返回的超聲波信號。由于采用的是12 MHz的晶 振,計(jì)數(shù)器每計(jì)一個數(shù)就是1μs,當(dāng)主程序檢測到接收成功的標(biāo)志位后,將計(jì)數(shù)器T0中的數(shù)(即超聲波來回所用的時間)按式(2)計(jì)算,即可得被測物體與測距儀之間的距離,設(shè)計(jì)時取20℃時的聲速為344 m/s則有:
d=(c×t)/2=172T0/10000cm (2)
其中,T0為計(jì)數(shù)器T0的計(jì)算值。
測出距離后結(jié)果將以十進(jìn)制BCD碼方式送往LED顯示約0.5s,然后再發(fā)超聲波脈沖重復(fù)測量過程。為了有利于程序結(jié)構(gòu)化和容易計(jì)算出距離。
3.3.3超聲波發(fā)生子程序和超聲波接收中斷程序
超聲波發(fā)生子程序的作用是通過P1.0端口發(fā)送2個左右超聲波脈沖信號(頻率約40kHz的方波),脈沖寬度為12μs左右,同時把計(jì)數(shù)器T0打開進(jìn)行計(jì)時。超聲波發(fā)生子程序較簡單,但要求程序運(yùn)行準(zhǔn)確,所以采用匯編語言編程。
超聲波測距儀主程序利用外中斷0檢測返回超聲波信號,一旦接收到返回超聲波信號(即INT0引腳出現(xiàn)低電平),立即進(jìn)入中斷程序。進(jìn)入中斷后就立即關(guān)閉計(jì)時器T0停止計(jì)時,并將測距成功標(biāo)志字賦值1。如果當(dāng)計(jì)時器溢出時還未檢測到超聲波返回信號,則定時器T0溢出中斷將外中斷0關(guān)閉,并將測距成功標(biāo)志字賦值2以表示此次測距不成功。 前方測距電路的輸出端接單片機(jī)INT0端口,中斷優(yōu)先級最高,左、右測距電路的輸出通過與門IC3A的輸出接單片機(jī)INT1端口,同時單片機(jī)P1.3和P1.4接到IC3A的輸入端,中斷源的識別由程序查詢來處理,中斷優(yōu)先級為先右后左。部分源程序如下:
INTT0: CLR EA
CLR TR0
MOV TH0,#00H
MOV TL0,#00H
SETB ET1
SETB EA
SETB TR0
SETB TR1
OUT : RET;T1中斷,發(fā)超聲波用:
INTT1 : CPL VOUT
DJNZ R4,RETIOUT
CLR TR1
CLR ET1
MOV R4,#04H
SETB EX0
RETIOUT:RETI;外中斷0,收到回波時進(jìn)入
PINT0: CLR TR0
CLR TR1
CLR ET1
CLR EA
CLR EX0
MOV 44H,TL0
MOV 45H,TH0
SETB 00H
RETI
3.3.4 系統(tǒng)的軟硬件的調(diào)試
超聲波測距儀的制作和調(diào)試都比較簡單,其中超聲波發(fā)射和接收采用模塊直接實(shí)現(xiàn)。
硬件電路制作完成并調(diào)試好后,便可將程序編譯好下載到單片機(jī)試運(yùn)行。根據(jù)實(shí)際情況可以修改超聲波發(fā)生子程序每次發(fā)送的脈沖寬度和兩次測量的間隔時間,以適應(yīng)不同距離的測量需要。根據(jù)所設(shè)計(jì)的電路參數(shù)和程序,測距儀能測的范圍為0.07~5.5m,測距儀最大誤差不超過1cm。系統(tǒng)調(diào)試完后應(yīng)對測量誤差和重復(fù)一致性進(jìn)行多次實(shí)驗(yàn)分析,不斷優(yōu)化系統(tǒng)使其達(dá)到實(shí)際使用的測量要求。
軟件的調(diào)試程序見附錄三.
4 總結(jié)和體會
由于時間和其它客觀上的原因,此次設(shè)計(jì)沒有成功做出實(shí)物。但是對設(shè)計(jì)有一個很好的理論基礎(chǔ)。設(shè)計(jì)的最終結(jié)果是使超聲波測距儀能夠產(chǎn)生超聲波,實(shí)現(xiàn)超聲波的發(fā)送與接收,從而實(shí)現(xiàn)利用超聲波方法測量物體間的距離。以數(shù)字的形式顯示測量距離。
超聲波測距的原理是利用超聲波的發(fā)射和接受,根據(jù)超聲波傳播的時間來計(jì)算出傳播距離。實(shí)用的測距方法有兩種,一種是在被測距離的兩端,一端發(fā)射,另一端接收的直接波方式,適用于身高計(jì);一種是發(fā)射波被物體反射回來后接收的反射波方式,適用于測距儀。此次設(shè)計(jì)采用反射波方式。
超聲波測距儀硬件電路的設(shè)計(jì)主要包括單片機(jī)系統(tǒng)及顯示電路、超聲波發(fā)射電路和超聲波檢測接收電路三部分。單片機(jī)采用AT89S51或其兼容系列。采用12MHz高精度的晶振,以獲得較穩(wěn)定時鐘頻率,減小測量誤差。單片機(jī)用P1.0端口輸出超聲波換能器所需的40kHz的方波信號,利用外中斷0口監(jiān)測超聲波接收電路輸出的返回信號。顯示電路采用簡單實(shí)用的4個七段共陽數(shù)碼管組成動態(tài)掃描電路 。
超聲波發(fā)射電路主要由反相器4069和超聲波發(fā)射換能器FSQ構(gòu)成,單片機(jī)P1.0端口輸出的40kHz的方波信號一路經(jīng)一級反向器后送到超聲波換能器的一個電極,另一路經(jīng)兩級反向器后送到超聲波換能器的另一個電極,用這種推換形式將方波信號加到超聲波換能器的兩端,可以提高超聲波的發(fā)射強(qiáng)度。輸出端采兩個反向器并聯(lián),用以提高驅(qū)動能力。超聲波換能器內(nèi)部有兩個壓電晶片和一個換能板。當(dāng)它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片會發(fā)生共振,并帶動共振板振動產(chǎn)生超聲波,這時它就是一個超聲波發(fā)生器;反之,如果兩電極問未外加電壓,當(dāng)共振板接收到超聲波時,將壓迫壓電晶片作振動,將機(jī)械能轉(zhuǎn)換為電信號,這時它就成為超聲波接收換能器。超聲波發(fā)射換能器與接收換能器在結(jié)構(gòu)上稍有不同,使用時應(yīng)分清器件上的標(biāo)志。
超聲波檢測接收電路主要是由集成電路CX20106A組成,它是一款紅外線檢波接收的專用芯片,常用于電視機(jī)紅外遙控接收器??紤]到紅外遙控常用的載波頻率38 kHz與測距的超聲波頻率40 kHz較為接近,可以利用它制作超聲波檢測接收電路。實(shí)驗(yàn)證明用CX20106A接收超聲波(無信號時輸出高電平),具有很好的靈敏度和較強(qiáng)的抗干擾能力。適當(dāng)更改電容Cs的大小,可以改變接收電路的靈敏度和抗干擾能力。
在元件及調(diào)制方面,由于采用的電路使用了很多集成電路。外圍元件不是很多,所以調(diào)試不會太難。一般只要電路焊接無誤,稍加調(diào)試應(yīng)該會正常工作。電路中除集成電路外,對各電子元件也無特別要求。若能將超聲波接收電路用金屬殼屏蔽起來,則可提高抗干擾能力。
我要感謝孔老師,邵老師和陳老師在設(shè)計(jì)中對我給予的悉心指導(dǎo)和嚴(yán)格要求,同時也感謝本班同學(xué)在設(shè)計(jì)期間所給予我的幫助。在我論文寫作期間,各位同學(xué)給我提供了種種專業(yè)知識上的指導(dǎo),使我能夠這么順利的完成設(shè)計(jì)與制作,借此機(jī)會,向您們表示由衷的感激。同時還要感謝系實(shí)驗(yàn)室在設(shè)計(jì)期間提供給我們優(yōu)越的實(shí)驗(yàn)條件。
附錄一:電氣原理圖
附錄二:程序調(diào)試
VOUT EQU P1.0
ORG 0000H
LJMP START
ORG 0003H
LJMP PINT0
ORG 000BH
LJMP INTT0
ORG 0013H
RETI
ORG 001BH
LJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
;***********主程序**************
START: MOV SP,#4FH
MOV R0,#40H
MOV R7,#0BH
CLEARDISP:MOV @R0, #00H
INC R0
DJNZ R7,CLEARDISP
MOV 20H, #00H
MOV TMOD,21H
MOV TH0, #00H
MOV TL0,00H
MOV TH1,0F2H
MOV TL1,0F2H
MOV P0, 0FFH
MOV P1, 0FFH
MOV P2, 0FFH
MOV P3, 0FFH
MOV R4, 04H
SETB PX0
SETB ET0
SETB EA
SETB TR0
START1: LCALL DISPLAY
JNB 00H,START1
CLR EA
LCALL WORK
SETB EA
CLR 00H
SETB TR0
MOV R2,#64H
LOOP: LCALL DISPLAY
DJNZ R2,LOOP
SJMP START1
INTT0: CLR EA
CLR TR0
MOV TH0,#00H
MOV TL0,#00H
SETB ET1
SETB EA
SETB TR0
SETB TR1
OUT : RET
;T1中斷,發(fā)超聲波用:
INTT1 : CPL VOUT
DJNZ R4,RETIOUT
CLR TR1
CLR ET1
MOV R4,#04H
SETB EX0
RETIOUT:RETI
;外中斷0,收到回波時進(jìn)入
PINT0: CLR TR0
CLR TR1
CLR ET1
CLR EA
CLR EX0
MOV 44H,TL0
MOV 45H,TH0
SETB 00H
RETI
;*****顯示程序:**********
DISPLAY:MOV R1, #40H;G
MOV R5,#0F7H;G
PLAY: MOV A,R5
MOV P0,#0FFH
MOV P2,A
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
LCALL DL1MS
INC R1
MOV A,R5
JNB ACC.0,ENDOUT;G
RR A
MOV R5,A
AJMP PLAY
ENDOUT: MOV R2,#0FFH
MOV P0,#0FFH
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH
; 共陽段碼管 "0","1","2","3","4","5","6","7","8","9","不亮","A","-"
;延時程序:
DL1MS: MOV R6,#14H
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
;*** ****距離計(jì)算程序**********
WORK: PUSH ACC
PUSH PSW
PUSH B
MOV PSW,#18H
MOV R3,45H
MOV R2,44H
MOV R1,00D
MOV R0,17D
LCALL MUL2BY2
MOV R3,#03H
MOV R2,0E8H
LCALL DIV4BY2
LCALL DIV4BY2
MOV 40H,R4
MOV A,40H
JNZ JJ0
MOV 40H,#0AH
JJ0: MOV A, R0
MOV R4, A
MOV A, R1
MOV R5, A
MOV R3, 00D
MOV R2, #100D
LCALL DIV4BY2
MOV 41H,R4
MOV A,41H
JNZ JJ1
MOV A,40H
SUBB A,#0AH
JNZ JJ1
MOV 41H,#0AH
JJ1: MOV A,R0
MOV R4,A
MOV A,R1
MOV R5,A
MOV R3,#00D
MOV R2,10D
LCALL DIV4BY2
MOV 42H,R4
JNZ JJ2
MOV A,41H
SUBB A,#0AH
JNZ JJ2
MOV 42H,#0AH
JJ2: MOV 43H,R0
POP B
POP PSW
POP ACC
RET
MUL2BY2:CLR A
MOV R7,A
MOV R6,A
MOV R5,A
MOV R4,A
MOV 46H,#10H
MULLOOP1:CLR C
MOV A,R4
RLC A
MOV R4,A
MOV A,R5
RLC A
MOV R5,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R7
RLC A
MOV R7,A
MOV A,R0
RLC A
MOV R0,A
MOV A,R1
RLC A
MOV R1,A
JNC MULLOOP2
MOV A,R4
ADD A,R2
MOV R4,A
MOV A,R5
ADDC A,R3
MOV R5,A
MOV A,R6
ADDC A,#00H
MOV R6,A
MOV A,R7
ADDC A,#00H
MOV R7,A
MULLOOP2:DJNZ 46H,MULLOOP1
RET
DIV4BY2:MOV 46H,#20H
MOV R0,#00H
MOV R1,#00H
DIVLOOP1:MOV A,R4
RLC A
MOV R4,A
MOV A,R5
RLC A
MOV R5,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R7
RLC A
MOV R7,A
MOV A,R0
RLC A
MOV R0,A
MOV A,R1
RLC A
MOV R1,A
CLR C
MOV A,R0
SUBB A,R3
JC DIVLOOP2
MOV R0,B
MOV R1,A
DIVLOOP2:CPL C
DJNZ 46H,DIVLOOP1
MOV A,R4
RLC A
MOV R4,A
MOV A,R5
RLC A
MOV R5,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R7
RLC A
MOV R7,A
RET
END <PIXTEL_MMI_EBOOK_2005>9 </PIXTEL_MMI_EBOOK_2005>