孫曉峰
(上海海軍702廠 上海市 200434)
隨著科學研究的深入,電子測量技術(shù)取得了巨大的進步。目前眾多的工業(yè)領(lǐng)域,對于測量精度的要求越來越高,同時也催生了一系列的測距方式。其中超聲波測距是目前非常流行的測距方式。超聲波是一種利用頻率高于20KHz的聲波去測量的方式。相比于傳統(tǒng)的方式,該方式具有測量精度高,成本低,容易操作,可維護性強等一系列的特點,正受到越來越多人的青睞。超聲波測距的原理比較簡單,主要是利用機械波在傳播過程中遇到障礙物會發(fā)生反射和折射的現(xiàn)象,發(fā)射端可以記錄和計算往返的時間進而得到距離值。本課題通過接收超聲波的反射信號,通過計算往返時間就可以確定汽車行車安全距離。
隨著電子技術(shù)的快速發(fā)展,目前越來越多的電子設(shè)備搭載了智能化的芯片,這些核心控制器能夠起到綜合管理系統(tǒng)的作用。其中單片機是微控制器領(lǐng)域中非常重要的應用。單片機是電子通信類相關(guān)專業(yè)最重要的技能之一,因此通過學習和設(shè)計單片機相關(guān)的系統(tǒng),可以綜合的鍛煉學生的動手能力,實現(xiàn)理論與實踐的結(jié)合,而且還可以更好地拓展學生的創(chuàng)造性思維,進而完成更加個性化的設(shè)計。這種過程是非常重要的嘗試,對于后續(xù)的工作也有重要的指導意義。
2.1.1 主控制器方案選擇
方案一:使用FPGA控制。FPGA是近幾年新興起的一種核心控制器。FPGA采用與或門組成因此具有高速,保密性好等特點,但是目前FPGA技術(shù)使用比較復雜,使用Verilog語言或者VHDL語言開發(fā)。開發(fā)流程長,工序復雜,同時價格非常的昂貴,因此一般用于軍工領(lǐng)域和火箭航天等領(lǐng)域。如果使用FPGA將會有大量的資源被閑置。因此不是很適合本課題的需要,所以考慮使用其他的方式。
方案二:使用單片機控制,隨著集成電路技術(shù)和半導體工藝的設(shè)計,目前單片機的功能越來越強大,單片機的產(chǎn)品目標很明確,關(guān)于民用和軍工都有明確的區(qū)分。同時單片機技術(shù)比較成熟,各大半導體廠家生產(chǎn)的單片機都具有兼容性好,結(jié)構(gòu)穩(wěn)定,價格低廉等一系列的特點,所以很適合嵌入式領(lǐng)域使用。在本設(shè)計中主要需要超聲波測距信號,顯示設(shè)置的距離閾值以及驅(qū)動報警。使用STC12C5A60S2單片機已經(jīng)可以滿足要求。所以綜合成本和性能單片機是一個非常好的選擇。
2.1.2 顯示模塊方案選擇
為了實現(xiàn)更好的人機交互界面,需要設(shè)計顯示模塊,顯示當前的狀態(tài)。

圖1:系統(tǒng)整體框圖
方案一:采用數(shù)碼管顯示。數(shù)碼管雖然價格較低,使用起來也比較簡單,但是進行多方位數(shù)據(jù)顯示的時候,連線和驅(qū)動就變得非常復雜,電路的功耗也增加了很多。同時由于數(shù)碼管只能顯示數(shù)字不能顯示文字,所以可以承載的信息量有限,人機交互方面也比較差,所以無法顯示各種預設(shè)閾值這些提示信息,而且數(shù)碼管的顯示效果也比較差。所以使用數(shù)碼管顯示的方案不是特別好,本課題考慮其他的方案。
方案二:采用LCD1602液晶顯示。LCD1602液晶具有功耗低,可以顯示多行內(nèi)容,所以在很多場合都有非常廣泛的應用。LCD1602液晶顯示內(nèi)容豐富,成本很低,驅(qū)動簡單,因此本系統(tǒng)選擇LCD1602進行顯示。
整個系統(tǒng)的主要可以分為單片機最小系統(tǒng),按鍵模塊,超聲波模塊,顯示模塊和報警模塊幾個部分組成。系統(tǒng)的整體框圖如圖1所示。
單片機的本質(zhì)是一個微型的計算機系統(tǒng),內(nèi)部具有CPU,RAM,ROM和定時/計數(shù)器等資源。本系統(tǒng)選用的是宏晶公司推出的STC89C52。該單片機具有40個引腳,晶振頻率為11.0592MHz或者12MHz.支持通過串口直接燒錄程序。同時該單片機具有5個中斷源,支持外部中斷,串口中斷和定時計數(shù)器中斷等。
單獨的單片機是無法工作的,必須要給單片機配備時鐘電路才能實現(xiàn)穩(wěn)定的時鐘。單片機的時鐘頻率直接決定了芯片的機器周期和指令周期。晶振電路一般是使用石英晶體和電容組成振蕩電路。本設(shè)計中使用30pf的電容配合11.0592MHz的石英晶體共同構(gòu)成單片機的晶振電路。晶振電路與單片機的第18,19兩個引腳相連。這2個引腳分別為XTAL1和和XTAL2。
低端的單片機一般采用裸機控制的方式,沒有操作系統(tǒng)對硬件設(shè)備的管理,這時候需要有一種方式使得單片機從錯誤狀態(tài)中恢復到初始化狀態(tài)。所以單片機的芯片提供了一個RST復位管腳,該管腳高電平有效。本系統(tǒng)設(shè)計了兩種復位電路,分別是上電復位和按鍵復位。其中按鍵復位可以讓設(shè)計中隨時使系統(tǒng)進入到復位狀態(tài)。上電復位是每次整個系統(tǒng)上電的時候都會首先復位然后再進行程序執(zhí)行的操作。本系統(tǒng)通過外接上拉電阻到5V電平上,然后上電之后可以直接復位,用戶也可以通過按鍵進行手動復位。在本系統(tǒng)設(shè)計的復位電路中,當按鍵被按下,系統(tǒng)通過10K的上拉電阻將單片機的RST引腳電平拉高,實現(xiàn)按鍵復位。當單片機一上電的時候,系統(tǒng)可以實現(xiàn)自動復位。
超聲波測距模塊是本課題選用目前非常常用的HC-SR04,該模塊的工作原理很簡單,不需要外圍電路就可以實現(xiàn)自動的檢測。在使用過程中,本課題利用單片機的管腳給超聲波模塊10us以上的高電平信號,模塊就可以自動的發(fā)送8組40KHz的方波信號,自動檢測是否有信號返回,當有信號返回時,會輸出高電平到單片機管腳上,這樣單片機在發(fā)出驅(qū)動超聲波模塊工作的高電平信號后迅速的開始計數(shù),等接收到超聲波模塊返回的高電平后,測試距離=(高電平時間*聲速(340M/S))/2。超聲波模塊與單片機管腳的P2.1和P2.2兩個引腳進行連接。
本系統(tǒng)為了方便使用,設(shè)計按鍵控制電路,用戶可以較為方便的實現(xiàn)安全距離的設(shè)置。本系統(tǒng)使用三組按鍵開關(guān),分別代表進入設(shè)置模式,安全距離增加和安全距離減少的操作。按鍵設(shè)計是共地設(shè)計,由于單片機引腳默認電平為高電平,所以當有某個按鍵被按下,單片機管腳就會被拉低,這時候單片機就可以獲知有按鍵被按下。本設(shè)計中按鍵模塊分別于單片機P1.0,P1.1和P1.2三個管腳相連。
本系統(tǒng)使用LCD1602液晶模塊顯示預設(shè)閾值和實測安全距離。LCD1602是一種常用的液晶顯示模塊,本系統(tǒng)使用的10K的電位器來實現(xiàn)液晶背光調(diào)節(jié)。LCD1602液晶與單片機的P0口相連。
為了完成實測距離超出預設(shè)閾值系統(tǒng)可以驅(qū)動報警的功能,本系統(tǒng)加入了蜂鳴器,由于單片機的管腳電平較弱,因此需要接入一個三極管進行放大,這樣報警聲更大,可以更好地提醒用戶進行注意。蜂鳴器的管腳與單片機的P2.0連接。
4.1.1 開發(fā)語言
C語言是目前非常流行的語言之一,在與硬件相關(guān)的驅(qū)動程序編寫中,C語言具有舉足輕重的地位。匯編語言往往與C語言混用的,共同滿足我們想要的功能。匯編語言的突出缺點是無法進行移植,這就大大限制了匯編語言的使用。C語言支持指針操作,可以在硬件設(shè)計中直接物理尋址。這使得C語言的操作效率很高,同時C語言作為一種高級語言,程序的可讀性也比匯編高出很多,同時C語言支持模塊化開發(fā),模塊化縮短了開發(fā)周期,使得程序編寫過程可以同步直寫。同時C語言的執(zhí)行效率也比較高,C語言的指針可以直接訪問硬件這種設(shè)計大大的增強了C語言的靈活性。同時C語言具有豐富的庫函數(shù),在開發(fā)的時候大量的函數(shù)已經(jīng)被寫好了,只需要加載對應的庫就可以直接使用。綜上所述,C語言是硬件開發(fā)相關(guān)工作中主要開發(fā)語言。
4.1.2 Keil軟件
關(guān)于嵌入式的開發(fā)設(shè)備有很多,比如TI公司的IAR可以進行430單片機的開發(fā),CCS可以作為DSP芯片的開發(fā)。Keil編譯器是最廣泛的單片機開發(fā)工具之一,該編譯器支持多種單片機的開發(fā)。同時具備完善的調(diào)試功能。用戶可以在開發(fā)過程中自由設(shè)置斷點和單步調(diào)試等操作。因此keil是一種常用的單片機開發(fā)工具。
系統(tǒng)的執(zhí)行過程較為清晰。首先系統(tǒng)上電,進入到初始化狀態(tài)。這時候用戶開始設(shè)置系統(tǒng)閾值,系統(tǒng)開始測距,并將測量到的距離實時顯示,一旦實測距離小于預設(shè)閾值,那么就會驅(qū)動蜂鳴器進行報警。系統(tǒng)的軟件設(shè)計流程圖如圖2所示。

圖2:軟件流程圖
調(diào)試總結(jié):整個系統(tǒng)在硬件電路完成之后,編寫驅(qū)動程序,由于系統(tǒng)的穩(wěn)定性未知,因此需要進行進一步的調(diào)試才能滿足實際需要,我們先根據(jù)設(shè)計的電路圖來設(shè)計和焊接實際的硬件電路,我們在硬件電路設(shè)計好之后,開始著手軟件部分的程序編寫。將編譯通過的程序燒錄到單片機中,然后對系統(tǒng)上電,觀察系統(tǒng)的實際運行效果。
在系統(tǒng)的硬件調(diào)試過程中出現(xiàn)了以下幾個主要的問題:
(1)在給單片機進行燒寫程序的時候,一開始根本無法實現(xiàn)正常的通信,而且單片機的溫度瞬間提高了很多,立刻停止了相關(guān)的操作。經(jīng)過檢查,這是由于在安裝單片機的時候把芯片接反了,造成了單片機的短路。所幸停止的很及時,單片機,沒有被燒毀,在排除該故障之后,程序可以正常的燒錄。
(2)在蜂鳴器設(shè)計過程中,出現(xiàn)了蜂鳴器不工作的情況,系統(tǒng)的軟件部分沒有錯誤。經(jīng)過檢測發(fā)現(xiàn)是由于在蜂鳴器模塊的焊接過程中出現(xiàn)了漏焊的情況,導致電路不通,在糾正了漏焊情況之后,系統(tǒng)可以正常的工作。
通過本次的設(shè)計提高了自己對資料的查閱、信息的獲取和處理的能力,同時熟練使用了本專業(yè)的各種工具軟件,尤其是對proteus和keil這兩款在電子類開發(fā)人員最常用的開發(fā)軟件的學習。
本系統(tǒng)同樣也存在一些不足,存在超聲波測距的誤差問題,存在控制模式較為單一的問題,后續(xù)的研究方向應該朝著更加精確和控制模式的多樣化進行發(fā)展。實現(xiàn)超聲波測距的誤差縮小和上位機的智能控制等工作。