張海龍
【摘要】汽車計價器設(shè)計以AT89C2051 單片機為核心控制元件,利用靈敏的霍爾傳感器測距,采用AT24C02 實現(xiàn)系統(tǒng)掉電時的價格和時間等信息保存,輸出采用6 位LED數(shù)碼管分屏顯示單價、路程、總金額以及時間。
【關(guān)鍵詞】單片機;計費系統(tǒng);霍爾傳感器
一、引言
汽車計價器是出租車行業(yè)發(fā)展的重要標志。它關(guān)系著交易雙方的利益。具有良好性能的計價器無論是對廣大汽車司機朋友還是乘客來說都是很必要的。隨著汽車行業(yè)的日漸發(fā)展,汽車計價器的功能已從剛開始的只顯示路程發(fā)展到了能夠自主計費,以及打印發(fā)票和語音提示、按時間自主變動單價等功能?,F(xiàn)在各大城市出租車行業(yè)都已普及自動計價器,所以計價器技術(shù)的發(fā)展已成定局。而部分小城市尚未普及,但隨著城市建設(shè)日益加快,汽車行業(yè)也將加速發(fā)展,計價器的普及也是必然的,所以汽車計價器的市場還是十分有潛力的。
二、硬件設(shè)計方案
采用傳統(tǒng)的模擬電路和數(shù)字電路設(shè)計的計價器,其整體電路規(guī)模較大,故障率高,難調(diào)試,功能不易實現(xiàn)。本次設(shè)計我們利用單片機AT89C2051芯片作為設(shè)計的核心,利用霍爾傳感器測距,實現(xiàn)對汽車計價統(tǒng)計,采用AT24C02 實現(xiàn)在系統(tǒng)掉電的時候保存單價和系統(tǒng)時間等信息,顯示采用6位LED數(shù)碼管,分屏顯示單價、路程、總金額以及時間。本系統(tǒng)具有功能強大、電路簡單、便于維護等特點??傮w設(shè)計框圖如圖2.1所示。
1.單片機
AT89C2051是美國ATMEL公司生產(chǎn)的低電壓、高性能CMOS 8位單片機,只有20引腳。片內(nèi)含有2K字節(jié)可反復(fù)擦寫的只讀程序存儲器和128字節(jié)的隨機數(shù)據(jù)存儲器,兼容標準MCS-51指令系統(tǒng),內(nèi)置通用8位中央處理器和Flash存儲單元。
該系統(tǒng)中AT89C2051作為總控芯片,主要具有對測量結(jié)果進行運算處理、控制顯示及保證系統(tǒng)正常工作等功能。
2.里程計算設(shè)計
本次設(shè)計里程計算采用霍爾傳感器A44E,里程計算是通過安裝在車輪上的霍爾傳感器A44E檢測到的信號,送到單片機,經(jīng)處理計算,送給顯示單元的。其原理如圖2.2所示。
我們選擇了P3.2口作為信號的輸入端,內(nèi)部采用外部中斷0(這樣可以減少程序設(shè)計的麻煩),車輪每轉(zhuǎn)一圈(我們設(shè)車輪的周長是1 米),霍爾開關(guān)就檢測并輸出信號,引起單片機的中斷,對脈沖計數(shù),當計數(shù)達到1000 次時,也就是1公里,單片機就控制將金額自動的加增加,其計算公式:
當前單價×公里數(shù)=金額。
圖2.2 傳感器測距示意圖
3.顯示單元設(shè)計
本設(shè)計具有單價、路程、金額顯示輸出,加上我們另外擴展了時鐘顯示(包含時分秒的顯示),采用LCD液晶屏顯示,在距離屏幕較遠處無法看清數(shù)據(jù),不能滿足要求,而且在白天其對比度也不能夠滿足要求,因此我們采用6位LED數(shù)碼管顯示方式。
數(shù)據(jù)的分屏的顯示是通過按鍵S1來實現(xiàn)切換的,在汽車不走的時候,按下S1,可以實現(xiàn)數(shù)據(jù)的分屏顯示,車在行走的時候只有總金額和單價顯示屏在顯示,當?shù)竭_目的地的時候,客戶要求查看總的里程的時候,就可以按下S1 切換到里程和單價顯示屏,供客戶查詢。
4.AT24C02掉電存儲單元的設(shè)計
掉電存儲單元的作用是在電源斷開的時候,存儲當前設(shè)定的單價信息。AT24C02是ATMEL 公司的2KB字節(jié)的電可擦除存儲芯片,采用兩線串行的總線和單片機通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10Ua(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8腳的DIP封裝,使用方便。
其電路如圖2.3所示。
圖中R8、R10是上拉電阻,其作用是減少AT24C02的靜態(tài)功耗,由于AT24C02的數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(移位脈沖)和SDA(數(shù)據(jù)/地址)與單片機傳送數(shù)據(jù)。
每當設(shè)定一次單價,系統(tǒng)就自動調(diào)用存儲程序,將單價信息保存在芯片內(nèi)。當系統(tǒng)重新上電的時候,自動調(diào)用讀存儲器程序,將存儲器內(nèi)的單價等信息,讀到緩存單元中,供主程序使用。
5.按鍵設(shè)計
(1)S1按鍵的功能
在汽車不走的時候,按下S1,可以實現(xiàn)數(shù)據(jù)的分屏顯示,車在行走的時候只有總金額和單價顯示屏在顯示,當?shù)竭_目的地的時候,客戶要求查看總的里程的時候,就可以按下S1 切換到里程和單價顯示屏,供客戶查詢。
(2)S2按鍵的功能
在按下S1按鍵之后,若接著按下S2鍵則進行單價調(diào)整(默認為調(diào)整白天單價),當接著按下S1時,則進行晚上單價調(diào),再次按下S1可進行中途等待單價調(diào)整。當單價調(diào)整結(jié)束后,可以通過按下S2按鍵進行時間調(diào)整,默認為調(diào)整時,接著按下S1可進行調(diào)整分,分調(diào)整后再接下S1可進行秒調(diào)整。當時調(diào)整完成后,若接著按下S2則又可進行單價調(diào)整。
(3)S3按鍵的功能
在顯示金額及單價時,若按下S3鍵則顯示路程和單價,再次按下S3則可返回顯示金額及單價。
(4)S4按鍵的功能
在按下S1按鍵之后,若接著按下S4按鍵,則進行設(shè)定默認晚上單價,并啟動計價器,若沒有按下S4則可設(shè)定默認單價(白天),并啟動計價器。當設(shè)定默認晚上單價結(jié)束后,再次接下S4按鍵則可設(shè)定默認中途等待單價,并啟動計價器。當設(shè)定默認中途等待單價后,若還按一次S4,則返回系統(tǒng)時間的顯示。
三、軟件設(shè)計
本系統(tǒng)的軟件設(shè)計主要可分為主程序模塊、定時計數(shù)中斷程序、里程計數(shù)中斷服務(wù)程序、中途等待中斷服務(wù)程序、顯示子程序服務(wù)程序、鍵盤服務(wù)程序六大模塊。
主程序模塊完成對各接口芯片的初始化、汽車起價和單價的初始化、中斷向量的設(shè)計以及開中斷、循環(huán)等待等工作。
另外,在主程序模塊中還需要設(shè)置啟動/清除標志寄存器、里程寄存器和價格寄存器,并對它們進行初始化。然后,主程序?qū)⒏鶕?jù)各標志寄存器的內(nèi)容,分別完成啟動、清除、計程和計價等不同的操作。
四、結(jié)論
采用AT89C2051單片機作為核心的控制元件,靈敏的霍爾開關(guān)型器件A44E霍爾傳感器,因此本汽車計價器具有功能強、性能可靠、電路簡單、成本低實用性強等特點,加上經(jīng)過優(yōu)化的程序,使其有很高的智能化水平。