基于AT89S51單片機的出租車計價器系統設計
2 系統軟件設計
2.1 主程序模塊
主程序流程圖如圖4所示,在主程序模塊中,需要完成對各接口芯片的初始化、出租車起價和單價的初始化、中斷向量的設計以及開中斷、循環等待等工作。另外,在主程序模塊中還需要設置啟動/清除標志寄存器、里程寄存器和價格寄存器,并對它們進行初始化。然后,主程序將根據各標志寄存器的內容,分別完成啟動、清除、計程和計價等不同的操作。本文引用地址:http://www.104case.com/article/172991.htm
當按下S1時,就啟動計價,將根據里程寄存器中的內容計算和判斷出行駛里程是否已超過起價公里數。若已超過,則根據里程值、每公里的單價數和起價數來計算出當前的累計價格,并將結果存于價格寄存器中,然后將時間和當前累計價格送顯示電路顯示出來。
當到達目的地的時候,由于霍爾開關沒有送來脈沖信號,就停止計價,顯示當前所應該付的金額和對應的單價。到下次啟動計價器時,系統自動對顯示清零,并重新進行初始化過程。
2.2 定時中斷服務程序
在定時中斷服務程序中,每100 ms產生一次中斷,當產生10次中斷的時候,也就到了1 s,送數據到相應的顯示緩沖單元,并調用顯示子程序實時顯示。
2.3 里程計數中斷服務程序
每當霍爾傳感器輸出一個低電平信號就使單片機中斷一次,當里程計數器對里程脈沖計滿1 000次時,就有程序將當前總額累加,使微機進入里程計數中斷服務程序中。在該程序中,需要完成當前行駛里程數和總額的累加操作,并將結果存入里程和總額寄存器中。
2.4 中途等待中斷服務程序
當在計數狀態下霍爾開關沒有輸出信號,片內的T1定時器便被啟動,每當計時到達10 min,就對當前金額加上中途等待的單價,以后每10 min都自動加上中途等待的單價。當中途等待結束時,就自動切換到正常的計價。
2.5 啟動/清除計程中斷服務程序
當系統有啟動/清除中斷請求產生時,可以設定第一次中斷為啟動中斷,第二次中斷為清除中斷,并在中斷服務程序中將標志寄存器的內容相應置“1”或清“0”。其中,標志為“1”時表示本次中斷是啟動中斷;為“0”時表示是清除中斷。
2.6 顯示子程序服務程序
由于是分屏顯示數據,所以就要用到4個顯示子程序,分別是:時分秒顯示子程序(HMS_DIS),金額單價顯示子程序(CP_DIS),路程單價顯示子程序(DP_DIS)和單價調節子程序(PA_DIS)。
2.7 鍵盤服務程序
鍵盤采用查詢的方式,放在主程序中,當沒有按鍵按下的時候,單片機循環主程序,一旦右鍵按下,便轉向相應的子程序處理,處理結束再返回。
3 結語
由于本出租車計價器采用單片機作為核心控制元件,采用靈敏的霍爾傳感器器件作為檢測,因此使其具有功能強,性能可靠,電路簡單,成本低的特點,加上經過優化的程序,使其有很高的智能化水平,解決了以往出租車計價器計價不準確,使用壽命短等缺點。
霍爾傳感器相關文章:霍爾傳感器工作原理
霍爾傳感器相關文章:霍爾傳感器原理
評論