隨著生活水平的提高,人們已不再滿足于衣食住的享受,,出行的舒適已受到越來越多人的關(guān)注,。于是,出租車行業(yè)以低價高質(zhì)的服務(wù)給人們帶來了出行的享受,。但是總存在買賣糾紛困擾著行業(yè)的發(fā)展,。然而解決這一矛盾的最好方法就是改良出租車的計價器,用更加精良的計價器來為乘客提供更加方便快捷的服務(wù),。我國的出租車始于20世紀(jì)70年代,,隨著電子技術(shù)的發(fā)展,出租車計價器" title="出租車計價器">出租車計價器的設(shè)計技術(shù)也在不斷進步和提高,。國內(nèi)出租車計價器的發(fā)展已經(jīng)經(jīng)歷了4個階段,,從傳統(tǒng)的全部由機械元器件組成的機械式到半電子式出租車計價器,再從集成電路式到目前的基于單片機系統(tǒng)設(shè)計的出租車計價器,。
基于單片機系統(tǒng)設(shè)計的出租車計價器是以單片機作為核心的控制元件,,采用靈敏的霍爾開關(guān)型器件,具有功能強,,性能可靠,,電路簡單,成本低的特點,,加上經(jīng)過優(yōu)化的程序,,使其具有很高的智能化水平,。
1 系統(tǒng)硬件設(shè)計
出租車計價器系統(tǒng)以AT89S51" title="AT89S51">AT89S51單片機為核心,由按鍵電路,、AT24C02掉電存儲電路,、里程計算電路、數(shù)碼管顯示電路組成,。利用單片機靈活的編程設(shè)計和豐富的I/O端口,,及其控制的準(zhǔn)確性,不僅能實現(xiàn)基本的里程計價價格調(diào)節(jié),、時鐘顯示,,而且能很大程度上實現(xiàn)擴展功能,同時可方便日后對系統(tǒng)進行升級,。圖1給出計價器系統(tǒng)框圖,。
1.1 里程計算、計價電路的設(shè)計
里程計算是通過安裝在車輪上的霍爾傳感器" title="霍爾傳感器">霍爾傳感器A44E檢測到的信號,,送到單片機,,經(jīng)處理計算,送給顯示單元的,。A44E的檢測原理如圖2所示,,P3.2口作為信號的輸入端,內(nèi)部采用外部中斷0,,車輪每轉(zhuǎn)一圈(設(shè)車輪的周長是1 m),,霍爾開關(guān)就檢測并輸出信號,引起單片機的中斷,,對脈沖計數(shù),,當(dāng)計數(shù)達到1 000次時,也就是1 km,,單片機就控制將金額自動增加,,其計算公式為:
當(dāng)前單價×公里數(shù)=金額
1.2 數(shù)據(jù)顯示電路的設(shè)計
設(shè)計使用一個定時/計數(shù)器每0.1 s向主機發(fā)1次中斷請求信號,并利用并行接口電路完成對時鐘的實時顯示功能,。同時,,利用動態(tài)掃描電路完成對出租車的起價和當(dāng)前累計價的顯示。
由于設(shè)計要求有單價(2位),、路程(2位),、總金額(3位)顯示輸出,加上另外擴展的時鐘顯示(包含時分秒的顯示),,采用LCD液晶段碼顯示,,在距離屏幕1 m之外就無法看清數(shù)據(jù),不能滿足要求,,而且在白天其對比度也不能夠滿足要求,,因此采用6位LED數(shù)碼管的分屏顯示,。
在出租車不走的時候,按下S1,,可以實現(xiàn)數(shù)據(jù)的分屏顯示,;車在行走的時候只有總金額和單價顯示屏在顯示,當(dāng)?shù)竭_目的地的時候,,客戶要求查看總里程時,,就可以按下S1切換到里程和單價顯示屏,供客戶查詢,。
1.3 AT24C02掉電存儲電路的設(shè)計
存儲電路的作用是在電源斷開的時候,,存儲當(dāng)前設(shè)定的單價信息,。存儲電路如圖3所示,,采用Atmel公司推出的容量為2 KB的串行電可擦除、可編程存儲芯片AT24C02設(shè)計,,傳輸方式為I2C總線,。該設(shè)計優(yōu)點在其簡單性和處理的高效性上。一般地址輸入端A0,,A1,,A2,寫保護WP接Vcc或GND,;SCL,,SDA接上拉電阻(上拉電阻的阻值可參考有關(guān)數(shù)據(jù)手冊選擇,通??蛇x用5~10kΩ的電阻,,設(shè)計中選用的電阻阻值為5.1kΩ)后再接單片機的普通I/O口,這便可實現(xiàn)單片機對AT24C02的操作,。上拉電阻的作用是減少AT24C02的靜態(tài)功耗,。
1.4 啟動及清除電路
在系統(tǒng)電路中,設(shè)計一個啟動/清除按鈕,,用來作為啟動里程計數(shù)或清除里程數(shù)計數(shù)的開關(guān),。將該按鈕開關(guān)接到微機系統(tǒng)的某個中斷請求線上,當(dāng)開關(guān)被按下1次時就作為計程啟動中斷請求,;再按下1次時,,就作為系統(tǒng)的計程清零中斷處理。
1.5 按鍵電路的設(shè)計
電路共采用4個按鍵,,即S1,,S2,S3,,S4,,其功能是:S1為分屏顯示切換按鍵,;S2為功能設(shè)定按鍵;S3為‘+’/白天晚上切換按鍵,;S4為‘-’/中途等待開關(guān),。
2 系統(tǒng)軟件設(shè)計
2.1 主程序模塊
主程序流程圖如圖4所示,在主程序模塊中,,需要完成對各接口芯片的初始化,、出租車起價和單價的初始化、中斷向量的設(shè)計以及開中斷,、循環(huán)等待等工作,。另外,在主程序模塊中還需要設(shè)置啟動/清除標(biāo)志寄存器,、里程寄存器和價格寄存器,,并對它們進行初始化。然后,,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,,分別完成啟動、清除,、計程和計價等不同的操作,。
當(dāng)按下S1時,就啟動計價,,將根據(jù)里程寄存器中的內(nèi)容計算和判斷出行駛里程是否已超過起價公里數(shù),。若已超過,則根據(jù)里程值,、每公里的單價數(shù)和起價數(shù)來計算出當(dāng)前的累計價格,,并將結(jié)果存于價格寄存器中,然后將時間和當(dāng)前累計價格送顯示電路顯示出來,。
當(dāng)?shù)竭_目的地的時候,,由于霍爾開關(guān)沒有送來脈沖信號,就停止計價,,顯示當(dāng)前所應(yīng)該付的金額和對應(yīng)的單價,。到下次啟動計價器時,系統(tǒng)自動對顯示清零,,并重新進行初始化過程,。
2.2 定時中斷服務(wù)程序
在定時中斷服務(wù)程序中,每100 ms產(chǎn)生一次中斷,,當(dāng)產(chǎn)生10次中斷的時候,,也就到了1 s,送數(shù)據(jù)到相應(yīng)的顯示緩沖單元,并調(diào)用顯示子程序?qū)崟r顯示,。
2.3 里程計數(shù)中斷服務(wù)程序
每當(dāng)霍爾傳感器輸出一個低電平信號就使單片機中斷一次,,當(dāng)里程計數(shù)器對里程脈沖計滿1 000次時,就有程序?qū)?dāng)前總額累加,,使微機進入里程計數(shù)中斷服務(wù)程序中,。在該程序中,需要完成當(dāng)前行駛里程數(shù)和總額的累加操作,,并將結(jié)果存入里程和總額寄存器中,。
2.4 中途等待中斷服務(wù)程序
當(dāng)在計數(shù)狀態(tài)下霍爾開關(guān)沒有輸出信號,片內(nèi)的T1定時器便被啟動,,每當(dāng)計時到達10 min,,就對當(dāng)前金額加上中途等待的單價,以后每10 min都自動加上中途等待的單價,。當(dāng)中途等待結(jié)束時,,就自動切換到正常的計價。
2.5 啟動/清除計程中斷服務(wù)程序
當(dāng)系統(tǒng)有啟動/清除中斷請求產(chǎn)生時,,可以設(shè)定第一次中斷為啟動中斷,,第二次中斷為清除中斷,并在中斷服務(wù)程序中將標(biāo)志寄存器的內(nèi)容相應(yīng)置“1”或清“0”,。其中,標(biāo)志為“1”時表示本次中斷是啟動中斷,;為“0”時表示是清除中斷,。
2.6 顯示子程序服務(wù)程序
由于是分屏顯示數(shù)據(jù),所以就要用到4個顯示子程序,,分別是:時分秒顯示子程序(HMS_DIS),,金額單價顯示子程序(CP_DIS),路程單價顯示子程序(DP_DIS)和單價調(diào)節(jié)子程序(PA_DIS),。
2.7 鍵盤服務(wù)程序
鍵盤采用查詢的方式,,放在主程序中,當(dāng)沒有按鍵按下的時候,,單片機循環(huán)主程序,,一旦右鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,,處理結(jié)束再返回,。
3 結(jié)語
由于本出租車計價器采用單片機作為核心控制元件,采用靈敏的霍爾傳感器器件作為檢測,,因此使其具有功能強,,性能可靠,電路簡單,成本低的特點,,加上經(jīng)過優(yōu)化的程序,,使其有很高的智能化水平,解決了以往出租車計價器計價不準(zhǔn)確,,使用壽命短等缺點,。