余雅婷
摘要:在中國隨著生活水平的提高,越來越多的人們開始選擇乘坐出租車這種既方便又快捷的出行手段。以單片機AT89S52為核心控制元件,硬件系統(tǒng)包括有復(fù)位電路、振蕩電路、路程測量電路、按鍵電路、顯示電路等。能夠在1602字符型液晶顯示屏上顯示里程、單價、起步價、總價,并且可以通過按鍵調(diào)整單價。該文設(shè)計的出租車計價器,其硬件電路所用元件較少,成本低廉,調(diào)節(jié)簡單;軟件采用c語言編程,其靈活性高,可讀性強。
關(guān)鍵詞:52單片機;出租車計價器;霍爾傳感器;1602液晶顯示屏;仿真
中圖分類號:TP368.1 文獻標識碼:A 文章編號:1009-3044(2016)29-0233-02
1背景
隨著生活水平的提高,越來越多的人們開始選擇乘坐出租車這種既方便又快捷的出行手段。隨著嘀嘀打車等一系列打車軟件的誕生,乘客乘坐出租車的費用也有了很大程度的下降。出租車開始成為生活在快節(jié)奏模式下的人們短途出行的首選交通工具。在我國的交通運輸中,出租車所處的地位也越來越重要。
具有更加精良的出租車計價器無論是對于出租車司機還是乘客都是十分重要的?;趩纹瑱C的出租車計價器具有功能強,性能可靠,電路簡單、成本低的優(yōu)點,且靈活性強,能通過軟件編程實現(xiàn)多種附加功能。
2系統(tǒng)硬件設(shè)計
硬件系統(tǒng)包括有復(fù)位電路、振蕩電路、路程測量電路、按鍵電路、顯示電路等。
2.1振蕩電路
單片機發(fā)出時鐘信號的方法有兩種,它們是內(nèi)部時鐘方法和外部時鐘方法。本次設(shè)計采用的是內(nèi)部時鐘方式:電路由兩個電容和一個晶振構(gòu)成,單片機內(nèi)部存在一個高增益反相放大器,XTAL1及XTAL2端口分別作為單片機內(nèi)部放大器的輸入端和輸出端,該放大器和功能是反饋元件的石英晶體振蕩器一塊兒組成自激振蕩器。振蕩電路脈沖經(jīng)歷二分頻之后成為系統(tǒng)的時鐘信號,然后在二分頻的底子之上進行三分頻發(fā)出地址鎖存容許信號,這時候獲得的信號為機器周期信號。采用12MHz的晶振,作為系統(tǒng)的時鐘源。晶體振蕩頻率高,可得硬件系統(tǒng)的時鐘頻率高,因為本電路確定單片機運轉(zhuǎn)速度所以單片機運轉(zhuǎn)速度也跟著變快。
2.2復(fù)位電路
本電路除了正常的初始化功能外,當(dāng)單片機系統(tǒng)在運轉(zhuǎn)過程當(dāng)中遭到外界情況滋擾而發(fā)生程序錯誤時,按下該電路的復(fù)位按鈕,單片機內(nèi)部的程序?qū)⒆詣訌念^執(zhí)行。想實現(xiàn)復(fù)位有上電自動復(fù)位及按鍵手動復(fù)位這兩種方法。其中按鍵手動復(fù)位又分電平模式和脈沖模式。在本次設(shè)計中,為方便操作,采用按鍵手動電平復(fù)位。電平復(fù)位原理:電路輸出端接RST引腳,按下按鈕后,電源經(jīng)兩電阻分壓后在RST端產(chǎn)生一個高電平。RST端口的高電平只需要確保兩個機器周期時段,單片機就將執(zhí)行復(fù)位的一系列操作。單片機的復(fù)位速率要比外圍I/O接口電路高,為保證硬件系統(tǒng)成功地復(fù)位,我們在進行程序設(shè)計時,必須要注意放置一定量的復(fù)位延遲時間。
2.3按鍵控制電路
單片機的P1.0管腳接復(fù)位按鈕,P1.1管腳接單價上調(diào)按鈕,P1.2管腳接單價下調(diào)按鈕,P1-3管腳接白天夜晚切換按鈕。按下復(fù)位按鈕后,單片機P1.0端口為低電平,通過軟件編程,調(diào)用清零子程序,在程序中給各數(shù)值賦0代碼,用于將記錄數(shù)據(jù)例如里程、總價、單價,自動恢復(fù)到初始狀態(tài),方便下次計價。該四個按鈕在計價過程中仍然有效。
2.4路程測量電路
霍爾傳感器是以霍爾效應(yīng)作為原理創(chuàng)造的某種磁場傳感器,其分為開關(guān)型和線性型。線性型輸出模擬量,開關(guān)型輸出數(shù)字量。A44E是單極性開關(guān)型的霍爾器件,它的工作電壓范圍相對較寬,為4.5V到18V。A44E輸出的信號滿足TTL電平準則,能夠直接接入到單片機的I/O端口,并且它的最高檢測頻率能夠到達1mhz。安裝在車輪上的A44E霍爾傳感器,將檢測到的信號送給單片機,單片機的P3.2端口作為信號的輸入端,利用該端口的第二功能即外部中斷0使編程得以簡化。經(jīng)過簡單的計算處理之后,送給顯示模塊,這樣便完成了里程數(shù)的測量。如圖1所示。
計價原理:假定車輪的周長是0.001千米,每當(dāng)車輪轉(zhuǎn)動一圈,霍爾開關(guān)就檢測并且輸出信號,引發(fā)單片機的中斷,每逢霍爾開關(guān)輸出一個低電平信號就將令單片機發(fā)生一次中斷,對脈沖進行計數(shù)。當(dāng)計價器對脈沖計數(shù)達到1000次時即車行駛了1千米時,在單片機的控制下,總價將自動增加。本次流程中,需實現(xiàn)將目前行駛的里程數(shù)和總價進行疊加,并把運轉(zhuǎn)成果保留到里程和總價寄存器當(dāng)中。其計算公式為單價×公里數(shù)=總價。
2.5顯示電路
本設(shè)計將LCD1602液晶顯示器的八位并行數(shù)據(jù)總線連接到單片機的P0口,RW端口接單片機P2.5口,RS端口接單片機P2.6口,E端口接單片機P2.7口。在VEE引腳接一個阻值為1K的電位器,用途是調(diào)節(jié)液晶的對比度。在LCD屏上可顯示公里數(shù),總價,單價的數(shù)據(jù)。
3系統(tǒng)軟件設(shè)計
本設(shè)計中,軟件設(shè)計使用模塊化操作,充分利用各個模塊間的相互關(guān)聯(lián),通過主程序調(diào)用各個子程序令程序通俗易懂,方便易行。整體程序流程圖如圖2所示。
令main函數(shù)開始編寫,首先應(yīng)當(dāng)進行液晶初始化、外部中斷初始化和參數(shù)初始化。經(jīng)過這一系列初始化,使得硬件處于準備就緒狀態(tài)。
判斷有無按鍵按下,如果沒有則無計費脈沖,顯示屏顯示初始值;如果有則通過判斷調(diào)節(jié)單價,單價切換,參數(shù)復(fù)位它們的狀態(tài),以分別調(diào)用不同的子程序。這些放在硬件系統(tǒng)中就是通過按下各個控制按鈕,如單價上調(diào)下調(diào)按鈕、白天/夜晚切換按鈕、復(fù)位按鈕,來分別進行不同的指令,最后液晶顯示屏依據(jù)輸入的信息,顯示不同的數(shù)據(jù)信息,從而達到了軟件控制硬件,輸入信息控制輸出信息的目的。
根據(jù)上述步驟設(shè)計出的程序具有很強的邏輯性和實用性,其靈活性高,可讀性強。
4系統(tǒng)仿真和調(diào)試
本設(shè)計是在Keil uVision4軟件上對AT89C52單片機進行C語言編程。在Protues軟件上進行仿真。
按下硬件系統(tǒng)路程測量電路中的開關(guān),里程開始上漲,當(dāng)公里數(shù)小于3km時,隨機挑選某一里程數(shù),LCD顯示結(jié)果如下:
當(dāng)公里數(shù)超過3km時,隨機挑選某一里程數(shù),LCD顯示結(jié)果如下:
4結(jié)束語
以AT89S52單片機作為中樞控制元件,出租車計價器具有精度高、具有靈敏度高、性能可靠、電路簡單、外接元件少、成本低、實用性強等特點。能夠很好地滿足出出租車計價器的要求。