出租車計價器設(shè)計與實現(xiàn)
1.8 串口電路(如圖六)。
設(shè)計串口電路來完成計價器與PC機通信。計價器傳送統(tǒng)計信息到PC機,接收并儲存從PC機傳送過來的基本信息,包括車輪直徑,校正時鐘,起步價、里程價、回空價、等待價等計費參數(shù)。在PC機上可以采用VB、VC等設(shè)計串口通信界面,通過串口電路管理者能夠采集詳實、準(zhǔn)確的營運數(shù)據(jù),這些數(shù)據(jù)經(jīng)過PC機處理后能夠詳細(xì)的做出日報表、月報表、運作分析表等,比較直觀的反映出租車的營運情況,便于管理部門全面掌握第一手資料,及時針對所出現(xiàn)的情況做出準(zhǔn)確的判斷和決策,從而實現(xiàn)微機化、科學(xué)化管理。
圖六 串口電路
2.軟件結(jié)構(gòu)
在主程序中,最主要是根據(jù)開關(guān)狀態(tài)做不同的處理。狀態(tài)0:保持空車;狀態(tài)1:保持載客;狀態(tài)2:空車變載客;狀態(tài)3:載客變空車。主程序流程如圖七所示。
圖七 主程序流程
2.1 保持空車
空車部分主要是做顯示、PC機通信以及IC卡消費。通過設(shè)置程序?qū)崿F(xiàn)按不同的按鍵完成不同的功能。例如按下“0”鍵,液晶屏?xí)@示當(dāng)日的統(tǒng)計信息,再按下“2”鍵會顯示前一日的統(tǒng)計信息,按下“4”鍵顯示后一日的統(tǒng)計信息,具體要完成的功能如表一所示。
2.2 空車變載客
這部分要完成禁止串口中斷和啟動計價。啟動計價是為載客部分要完成的計價、計時程序做一些初始化的工作。例如要讀出計價參數(shù),給計程、計時、總誤時單元清0,判斷是否是夜班,啟動定時器等。
2.3 保持載客
載客部分,主要是處理誤時價和里程價,要用到50MS定時器中斷和外部中斷,需要定義計時單元來存儲兩個外部中斷之間的時間,定義累計誤時單元存儲累計等待時間。50MS中斷到來時置位F_50MS,在載客部分會調(diào)用50MS中斷處理程序,流程如圖八所示,該程序主要對計時單元進(jìn)行處理,如果計時單元大于10S,調(diào)用誤時價子程序ADD_PT。
通過霍爾傳感器,車輪每轉(zhuǎn)動一圈,會觸發(fā)外部中斷,在中斷子程序里首先要關(guān)定時器,存T0計數(shù)值,給定時器重新置50MS計數(shù)初值后置位F_int0并開定時器。在載客部分也會調(diào)用外部中斷處理子程序,流程如圖九所示,當(dāng)檢測到車速低于特定值時,需要計算誤時價,將計時單元加入累計誤時單元中,其中ADD_PS是里程價子程序。
2.3.1 誤時價。
誤時價程序主要是判斷累計等待時間是否超過規(guī)定的等待時間(Twait),超過以后,每過10S增加一次10S誤時價,流程圖如圖九所示,其中F_wait表示起價等待時間到標(biāo)志。
2.3.2 里程價
里程價子程序關(guān)鍵是判斷計程單元S的大小,判斷是起步價,還是3KM-8KM的短途價或是8KM以上的長途價。
2.4 載客變空車
這部分要完成停止計價、存統(tǒng)計信息、允許串口中斷的操作,關(guān)鍵是存儲統(tǒng)計信息。每月最多有31天,每天需要4個字節(jié)的容量,這樣一個月的信息至少需要124個字節(jié)。因為采用的存儲芯片AT24C256是分頁存儲,每頁有64個字節(jié)的容量,如果給每個月的信息分配128個字節(jié),這樣通過計算公式: (月-1)×32×4+(日-1)×4+ADDRESS_AT3 ( ADDRESS_AT3表示在AT24C256里分配給統(tǒng)計信息的起始地址) 很容易存儲和查看每日統(tǒng)計信息,所以我們給每個月的信息分配2頁128個字節(jié)的容量。
3.結(jié)論
本文詳細(xì)的闡述了用HT46RU24單片機實現(xiàn)出租車計價器的軟硬件原理。程序設(shè)計清晰、有條理,維護(hù)性強,整個電路完整、緊湊,成本低,且具有操作簡單,管理方便,安全可靠、功能強的優(yōu)點。計價器的核心HT46RU24單片機,軟件編程靈活、自由度大、功能強,功耗低,性價比高,技術(shù)成熟。
參考文獻(xiàn):
[1]李齊雄,鄭顏雄,蔡孟昌. HOLTEK HT46系列單片機原理及應(yīng)用實例[M]. 北京: 北京航空航天大學(xué)出版社, 2005年4月第1版.
[2]范逸之,陳立元.Visual Basic與RS232串行通信控制[M].北京:清華大學(xué)出版社,2002年6月第2版
評論