南通開放大學 江蘇城市職業學院南通校區 顧添翼
基于STC89C52超聲波測距儀設計
南通開放大學江蘇城市職業學院南通校區顧添翼
在現有的測距方案中,超聲波測距是目前應用最為普遍的一種,它廣泛應用于倒車雷達、水位測量、防盜、建筑施工工地等一些工業現場。本系統以STC89C52最小系統為核心,主要部件有超聲波發射接收器、檢波接收芯片CX20106A以及數碼管顯示部分等,實現了測距以及簡單的方位判斷功能。
超聲波傳感器;測距;CX20106A;STC89C52單片機
1.1系統的工作原理
超聲波測距是利用超聲波波長較短,其繞射能力較差,反射能力較強的特性,使超聲波發射器向某一方向發射超聲波,并且在發射時刻的同時開始計時,超聲波在空氣中傳播時碰到障礙物就立即返回來,當超聲波接收器收到反射波就立即停止計時。由此假設超聲波在空氣中的傳播速度為v,根據記錄的發射超聲波和接收發射波的時間差t,即可以計算出發射點距障礙物的距離s為:s=(v×t)/2。
1.2系統的組成
該系統由單片機控制系統、超聲波發生電路、超聲波接收處理電路和顯示電路等構成。單片機是整個系統的核心部件,它協調和控制各部分電路的工作。工作過程:開機,單片機復位,然后控制程序使單片機產生的多個40KHz的方波信號加到超聲波傳感器上,觸發超聲波發射器發射超聲波。在發射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波立即立即停止計時,并經過超聲波接收電路的處理產生一個低電平觸發單片機的外部中斷0,然后單片機進行中斷處理,通過計算將測出的結果以十進制送數碼管顯示。系統原理框圖如圖1所示。

圖1.1 系統原理框圖
2.1單片機最小系統
2.1.1 主控芯片STC89C52簡介
本系統選用的是STC89C52系列的單片機,它是一種帶8K字節閃爍可編程、高性能、低功耗、采用CMOS工藝的8位微處理器。STC89系列單片機大部分具有在系統可編程(ISP)特性,可以省去購買通用編程器的麻煩。此外由于一般的距離測量中,距離的變化速度并不太快,而且單片機us級的精度完全可以滿足系統測量的要求,并且成本較低。STC89C52引腳圖如圖2.1所示。
VCC(Pin40):電源輸入,接+5V電源VSS(Pin20):接地線
XTAL1(Pin19):片內振蕩電路的輸入端XTAL2(Pin18):片內振蕩電路的輸出端RST(Pin9):復位引腳,引腳上出現2個機器周期的高電平將使單片機復位。
EA(Pin31):訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器讀取指令,EA必須接GND。為了執行內部程序指令,EA應該接VCC。

圖2.1 STC89C52引腳圖
PO口(Pin39~Pin32):P0.0~P0.7。P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位驅動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。
P1口(Pin1~Pin8):P1.0~P1.7。P1口是一個具有內部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅動4個TTL邏輯電平。對P1口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。
P2口(Pin21~Pin28):P2.0~P2.7。P2口是一個具有內部上拉電阻的8位雙向I/O口,P2輸出緩沖器驅動4個TTL邏輯電平。對P2端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。
P3口(Pin10~Pin17):P3.0~P3.7。P3口是一個具有內部上拉電阻的8位雙向I/O口,P3輸出緩沖器驅動4個TTL邏輯電平。對P3端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。
2.1.2時鐘電路
本系統采用的是內部時鐘方式,在XTAL1和XTAL2引腳上外接12MHZ石英晶體和兩個20pF電容組成并聯諧振回路,使單片機內部振蕩器產生自激振蕩。
2.1.3復位電路
本系統中采用上電/按鍵手動復位,除了具有上電自動復位功能外,若工作過程中需要復位,只需按復位鍵,在RESET端就產生一個復位高電平。
2.2超聲波發射電路設計
本系統利用軟件程序產生40KHz方波信號,由單片機P1.0端口輸出,將方波信號經反響器加到超聲波換能器的兩端,提高超聲波發射強度。超聲波發射電路原理圖如圖2.2所示。

圖2.2 超聲波發射電路原理圖
2.3超聲波接收電路設計
超聲波接收電路包括超聲波接收探頭和CX20106A處理兩部分。超聲波接收探頭與發射探頭型號,頻率一致。CX20106是一款紅外線檢波接收的芯片,它由前置放大器、檢波器、帶通濾波器、限幅放大器、積分整型電路等組成,其中濾波器中心頻率為30K-60KHz。CX20106更多的被用于電視機紅外遙控接收器,這里由于紅外遙控常用的載波頻率38kHz與測距超聲波頻率40kHz較為接近,所以本系統中就可以利用它來進行超聲波檢測,并且該芯片內集成前置放大器,可以用來將超聲波接收器是輸出的毫伏級電壓進行放大,以觸發單片機中斷處理。超聲波接收電路原理圖如圖2.3所示。

圖2.3 超聲波接收電路原理圖
2.4顯示電路設計
本系統的測量結果采用十進制數通過LED數碼管顯示。利用P0口的低電平驅動方式。為增強其驅動能力,加入了74LS240反相器。數碼管的位選通過P2口來進行選擇,同樣的,為了增強I/O口引腳驅動能力,在P2口與數碼管公共端之間接入與門集成芯片SN75451(該芯片驅動能力比較強,輸出電流可達幾百mA),如圖2.4所示。

圖2.4 顯示電路原理圖
軟件設計運用模塊化程序設計思想,對不同功能的程序進行分別編程,主要包含主函數程序,超聲波發生子程序,超聲波接收程序(中斷處理)以及顯示子程序。
3.1主程序設計
在主程序中,首先對系統環境初始化,其中包含對定時器,中斷以及所涉及的I/O端口設置。然后進入主程序循環體,調用超聲波發生子程序來發出超聲波,等待聲波遇到障礙物將反射回來,需要特別說明的是主函數中引入了變量flag用來區分以下三種情況,當無中斷產生時,flag=0;當因為接收到超聲波返回信號而產生的中斷時,flag=1;當因為計時器溢出時還未檢測到超聲波返回信號而產生的溢出中斷時,flag=2。因此當接收到返回的超聲波信號時程序將進入相應的中斷處理,并且flag標志將被置1,通過計算得到障礙物的距離。最后調用顯示子程序將結果以十進制送LED顯示。
3.2超聲波發生子程序
在超聲波發生程序中主要完成產生40KHz的方波信號的功能,用幾個空操作語句進行延時,每隔半周期時間,將方波輸出腳的電平取反,便可產生40kHz方波。此外由于測量盲區的存在,發射脈沖個數也需要仔細考慮,脈沖個數少,可以提高測量精度,但減少了發射能量減小了測距量程,脈沖個數過多會增大測量盲區,在設計中經過比較,選擇發射5個40KHz的脈沖方波作為測量信號。實踐證明此時的可測范圍在6cm至4m左右。
3.3超聲波接收子程序
超聲波接收子程序即中斷處理程序,主要是當接收到反射波時(即INT0引腳出現低電平),單片機立即響應外中斷的請求,進入對應的中斷服務程序,其中包含關閉定時器T0,關閉T0的中斷允許位(ET0)和外部中斷0中斷允許位(EX0),并將標志位flag賦值1,表示本次測距成功。如果當計數器溢出時還未檢測到反射波,則進入相應的定時器0中斷的中斷服務程序,其中包含關閉定時器和中斷,并將標志位flag賦值2,表示本次測距失敗。

圖4.1 (1) 實物測試圖左

圖4.1 (2) 實物測試圖右
在檢查完電路焊接,排除短路斷路等情況后,接通電源,按下復位鍵將系統復位,然后將所有程序燒到芯片后,在距離超聲波探頭適當的位置用手遮擋,并且前后移動,觀察數碼管上顯示的數字與實際距離是否相符。在測試完畢之后就可進行實際的測距,若要實現簡單的方位判斷,只需在超聲波發射探頭的另一邊再增加一個超聲波接收探頭,然后比較一下左右兩個接收探頭接收回波信號的所耗時間即可。
測試結果:系統能很好的發射和接收超聲波信號,可實現大約17cm至400cm范圍內的距離測量,并且可以實現障礙物相對于超聲波發生方位的簡單判斷。實物測試圖如圖4.1所示。
[1]馬忠梅.單片機的C語言應用程序設計[M].北京航天航空大學出版社,2001.
[2]劉瑞星.單片機原理及應用教程[M].機械工業出版社,2006.
[3]趙珂.高準確度超聲波測距儀的研制[J].傳感器技術,2003,22(2).
[4]藏日章.基于AT89C51單片機的超聲波測距系統[J].電氣時代,2005(7).
[5]牛余朋.基于單片機的高精度超聲波測距電路[J].電子世界,2005(5).
[6]姜道連.用AT89C2051設計超聲波測距儀[J].維普資訊,編號:00121.
[7]胡萍.超聲波測距儀的研制[J].計算機與現代化,2003(10):10062 2475(2003)1020054203.
[8]吳銀鳳.紅外線接收電路CX20106的應用[J].電氣時代,2003(9).
[9]馬殷元.基于新型單片機P89C51RD2的倒車雷達設計[J].甘肅科技,2004,20(9).
[10]劉鳳然.基于單片機的超聲波測距系統[J].傳感器世界,2001,5.
顧添翼(1989—),女,碩士,研究方向:電路與系統,嵌入式系統設計。