劉鼎 李剛 康晟祥
廊坊某預備役保障旅 河北廊坊 065000
在世界進入數字化時代生活的今天,車用儀表數顯技術將是新世紀汽車發展的必然趨勢。新概念的車速里程表最直觀的變化就是用大屏幕的液晶取代指針式表盤,直接用數字顯示時速、里程。
汽車儀表不僅要向高精度、高可靠性方向發展, 而且更需向多功能方向發展。在以單片機為核心的汽車儀表中,出現了各種附加功能的里程表。在時速部分,采用顯示屏代替了表盤;里程部分,不僅可以顯示累計里程、本次里程,還可以顯示某一時間段內的歷程;另外,還可以加入計價器部分,顯示計費金額、單價、時間等。
經過謹慎考慮,本系統解決方案如下:處理器選用80C51單片機,硬件電路包括電源部分、霍爾傳感器速度測量和里程測量部分、數據顯示部分、時鐘部分、超速報警部分、票據打印部分和數據存儲部分等組成,根據目前的硬件資源和對每個設計環節的考慮,主要涉及以下幾項技術:以霍爾傳感器為核心的信號采集電路、電源電路、時鐘電路、數據存儲電路、顯示電路的制作與實現。
本系統以80C51單片機為核心,霍爾傳感器采集信號并傳輸給單片機,MAX7219驅動LED進行顯示。本系統所能實現的功能有七個,分別是:時速的測量和顯示、累計里程的測量和顯示、本次里程的測量和顯示、計費金額的計算和顯示、實時鐘顯示、打印發票和超速報警功能。
2.1 系統硬件組成框圖

圖1 系統總體結構圖
系統總體結構圖如圖1所示,80C51單片機為本系統的核心部分,霍爾傳感器實現信號的采集并傳輸給單片機,然后進行顯示;另外又設置了實時鐘電路和存儲電路。電源部分采用+5V電源供電,有專門的電源電路。但在實際調試過程中,由于設備條件和環境的限制,我們用兩節5號電池代替了電源電路。
2.2 程序設計流程圖
圖2為系統流程結構圖,汽車啟動后,也就是系統上電復位后,單片機對各芯片進行初始化,同時傳感器采集信號傳輸給單片機,單片機經過計算驅動顯示芯片進行顯示。本設計用C語言編程,各部分子程序在以后的章節中都有介紹。
軟件設計可以分為以下幾個模塊:主程序模塊,主要包括對個接口芯片的初始化、汽車起步價和單價的初始化、各中斷的初始化等。另外,還需要設置啟動清除標志寄存器、里程寄存器、速度寄存器、價格寄存器,并對它們進行初始化。然后,主程序將根據各標志寄存器的內容,分別完成啟動、清除、計程、計速、計價等不同操作。主程序流程圖如下所示。

圖2 系統流程結構圖
3.霍爾速度傳感器技術
隨著電子技術和數字化技術的發展,轉速傳感器的形式也多種多樣,目前常用的轉速傳感器主要有以下幾種:磁電式轉速傳感器、光電式轉速傳感器、光斷繼器式轉速傳感器、離心式轉速傳感器、霍爾轉速傳感器等。霍爾速度傳感器為軸速度測量提供了堅固的、低成本解決方案,它以檢測磁場的原理工作,具有防塵、防油和防其它會造成光學傳感器嚴重故障的污染。此外,由于強磁場(超過100高斯)通常很少在自然界中存在,磁場速率傳感器不受偶然觸發和其它形式的干擾,所以一直被廣泛應用于車輛的自動控制系統中。
4.單片機選擇原則
單片機的選擇要應遵循下列原則:優先選擇熟悉的機型(CPU),同時兼顧跟上單片機發展的新技術;優先選擇能滿足所要開發的系統在功能和性能上對單片機的要求;優先選用編程方便且有較好開發環境的單片機;優先選用參考資料豐富、貨源充足、購置方便、供應商售后服務好、價格廉的單片機。由于ATMEL公司的80C51單片機基本具備以上所述性能,且根據應用系統本身控制功能和性能要求以及自身的一些實際情況,本系統選則80C51單片機。
5.軟件編程設計
單片機軟件編程主要涉及到計價器部分、中斷、定時等子程序。
計價器部分主要實現的功能有顯示本次里程、金額、時鐘,超過時速60公里時具有報警功能,乘客下車時具有打印發票的功能。基本要求是在三公里內起步價為5元,超過三公里后每公里按1.6元計算。當出租車停下等待時,時間超過10秒后開始計費,為0.5元,以后累加,當等待結束后,就正常計費。以下為各部分的編程思想。
5.1 本次里程的編程思想
當乘客下車時,司機抬起空車燈,系統用P2.1腳外接點觸式開關來清零本次里程。當又有乘客上車時,司機按下空車燈,系統開始記錄脈沖個數,并從零開始記錄里程,以后的編程與累計里程相同。在本設計中,用一個按鍵來控制是顯示本次里程還是累計里程。P2.2引腳接入了一個按鍵開關,當P2.2引腳為高電平時,說明顯示本次里程;當為低電平時,說明顯示累計里程。本次里程流程圖如下所示。

圖3 本次里程流程圖
5.2 計費金額的編程思想
當沒有乘客時,系統顯示時間;當乘客上車后,空車燈按下,系統自動顯示起步價的計費金額,以后將根據里程寄存器中的內容計算和判斷出行駛里程是否已超過起價公里數。若已超過,則根據里程值、每公里的單價數和起價數來計算出當前的累計價格,并將結果存于價格寄存器中,然后將當前累計價格送顯示電路顯示出來。在等待時,計數器處于計數狀態,若超過等待時間,則按等待時間的計費標準累加。當到達目的地的時候,由于霍爾開關沒有送來脈沖信號,就停止計價,顯示當前所應該付的金額到下次啟動計價時,系統自動對顯示清零,并重新進行初始化過程。乘客下車時,打印機將打印發票給乘客;另外,當司機超速時,系統程序中通過軟件檢測行駛速度,就以紅色LED顯示,乘客觀察后可以提醒司機不要超速行駛,以避免交通事故發生。流程圖如下所示。

圖4 計費金額流程圖
5.3 幾個關鍵子程序的設計思想
a) 里程計數中斷服務程序
每當霍爾傳感器輸出一個低電平信號就使單片機中斷一次,當計數器T1對脈沖計滿4992次時,就有程序使微機進入里程計數中斷服務程序中,將當前總額、累計里程、本次里程累加計算并存入RAM單元中,并調用顯示子程序,刷新LED數碼管進行顯示。
b)定時中斷服務程序
在定時中斷服務程序中,定時器T0每50ms產生一次中斷,再循環20次即可得到1s的定時,就有程序使微機進入時速中斷服務程序,計算當前時速并存入RAM單元中,調用顯示子程序,刷新LED數碼管進行顯示。
當出租車在等待時,T1處于計數狀態,這時定時器T0開始計時,當計滿10s時,就對當前金額加上中途等待的價錢,然后調用顯示子程序,刷新LED數碼管進行顯示。以后每10s鐘都自動加上中途等待的價錢,當等待結束后,也就自動切換到正常的計價。
c)鍵盤服務程序
本設計在P2.1腳接入一個點觸式開關,用于本次里程的清零;在P2.2腳接入一個按鍵開關,用于選擇是本次里程還是累計里程。鍵盤采用查詢的方式,當沒有按鍵按下的時候,單片機循環主程序,一旦按鍵按下,便轉向相應的子程序處理,處理結束再返回。
在整個系統的硬件和軟件結構中,除了對80C51的應用外還涉及到了霍爾傳感器的應用,也就是霍爾傳感器的組成原理;對于顯示模塊的控制,主要是MAX7219的應用。系統除了一般的顯示時速、累計里程、計費外,還具有超速報警和打印功能。經過系統調試、電路實驗驗證以及整機脫機測試,證明其是可行的。另外稍加擴展,該智能里程表系統還可與其它汽車儀表系統相連接,具有一定的推廣價值。