張蒙蒙 吳萌 王艷榮
摘 要:基于對(duì)現(xiàn)在出租車計(jì)價(jià)器的功能的改進(jìn)和完善,結(jié)合STC公司的STC89C52芯片,提出了出租車多人計(jì)價(jià)器的設(shè)計(jì)方案,給出了采用C語(yǔ)言,Keil C軟件設(shè)計(jì)的出租車多人計(jì)價(jià)器的實(shí)現(xiàn)步驟、仿真及硬件測(cè)試結(jié)果,驗(yàn)證了方案的正確性。出租車多人計(jì)價(jià)器相對(duì)于現(xiàn)有的計(jì)價(jià)器功能更加完善,實(shí)用性更強(qiáng)。
關(guān)鍵詞:多人計(jì)價(jià)器;C語(yǔ)言;STC89C52單片機(jī);Keil C
0 引言
在當(dāng)今社會(huì)的出租車計(jì)價(jià)器中,只能計(jì)算出一位乘客的乘車價(jià)錢(qián),所以現(xiàn)在的出租車計(jì)費(fèi)還有一定的改進(jìn)空間。為了更好的解決這個(gè)問(wèn)題,設(shè)計(jì)了多人計(jì)價(jià)器,以達(dá)到打車費(fèi)用更加合理,使人們的出行更加便利的目的。多人計(jì)價(jià)器是在原有的計(jì)價(jià)器基礎(chǔ)上進(jìn)行功能的創(chuàng)新和改善,使得計(jì)價(jià)器的功能更加完善。
1 系統(tǒng)總體方案
系統(tǒng)主要由單片機(jī)STC89C52,霍爾傳感器,液晶顯示器LCD1602,和鍵盤(pán)電路組成(系統(tǒng)結(jié)構(gòu)圖如圖1所示)。
單片機(jī)的功能是完成里程計(jì)算,車費(fèi)計(jì)算,等待計(jì)費(fèi)等,是整個(gè)系統(tǒng)的核心。霍爾傳感器來(lái)完成信號(hào)的采集,并且將采集到的信號(hào)傳遞給單片機(jī)。鍵盤(pán)電路控制每位乘客的計(jì)價(jià)開(kāi)始和終止。液晶顯示器用于顯示每位乘客的總價(jià)。
2 硬件電路設(shè)計(jì)
2.1 霍爾傳感器
本次設(shè)計(jì)使用的是A44E型霍爾傳感器,A44E型傳感器是開(kāi)關(guān)型傳感器,其傳出的信號(hào)是符合TTL電平標(biāo)準(zhǔn)的信號(hào),所以霍爾傳感器可以直接接到單片機(jī)的I/O端口上。霍爾傳感器的工作電壓范圍是4.5~18V,最高檢測(cè)頻率可達(dá)到1MHZ(管腳圖如圖2所示)。
A44E型霍爾傳感器是由穩(wěn)壓器,霍爾電勢(shì)發(fā)生器,差分放大器,施密特觸發(fā)器和三極管輸出端5個(gè)基本部分組成的。
在輸入端接入輸入電壓VCC,提供電路工作電壓。當(dāng)霍爾傳感器處在磁場(chǎng)內(nèi)部,并在與磁場(chǎng)垂直的方向通入電流,根據(jù)霍爾效應(yīng)原理,與這兩者垂直的方向上將會(huì)產(chǎn)生霍爾電勢(shì)差VH輸出,再由后續(xù)電路的放大和整形,使其輸出信號(hào)成為方波。
霍爾傳感器主要完成里程的計(jì)算。把霍爾傳感器安裝在車輪上來(lái)檢測(cè)信號(hào),把輸出端接在單片機(jī)的P3.3端口,車輪每轉(zhuǎn)過(guò)一周,霍爾傳感器就完成一個(gè)開(kāi)關(guān)動(dòng)作,輸出一個(gè)脈沖,引起單片機(jī)的中斷一次,通過(guò)對(duì)中斷次數(shù)的計(jì)算來(lái)完成對(duì)里程的計(jì)算。車輪的周長(zhǎng)為1m(可以根據(jù)相應(yīng)的車輛設(shè)置),每當(dāng)霍爾傳感器傳出1000個(gè)脈沖,單片機(jī)中斷1000次,出租車就行走了一千米,里程加一。
2.2 鍵盤(pán)控制單元
本次設(shè)計(jì)需要對(duì)每位乘客的乘車費(fèi)用分別進(jìn)行計(jì)算,這部分用獨(dú)立按鍵控制。一輛出租車上最多可以乘坐4名乘客,所以采用了4個(gè)獨(dú)立按鍵。每個(gè)獨(dú)立按鍵可以控制一個(gè)乘客的乘車費(fèi)用。當(dāng)按鍵按下第一次時(shí),對(duì)乘客的計(jì)費(fèi)開(kāi)始,當(dāng)按下第二次時(shí),對(duì)相應(yīng)程序初始化,并對(duì)乘客的乘車費(fèi)用清零。
按鍵的按動(dòng)過(guò)程中會(huì)有抖動(dòng)存在,所以在程序設(shè)計(jì)中要設(shè)置去抖程序。
2.3 顯示單元
顯示部分需要顯示四位乘客的乘車總費(fèi)用,其主要功能是由LCD1602來(lái)完成。LCD1602與單片機(jī)的數(shù)據(jù)地址線0-7分別連接。根據(jù)P0口的硬件特點(diǎn),外部必須接入上拉電阻。LCD1602具有的特性為:①1602采用的是5×7點(diǎn)陣圖來(lái)顯示單個(gè)字符,②LCD1602中的“16”代表了每行最多可以顯示16個(gè)字符,“02”代表了總共可以顯示兩行字符。1602內(nèi)有一個(gè)80字節(jié)的緩沖區(qū)(如表一所示),每一行有40個(gè)字節(jié)地址,但是1602的屏幕上只能顯示前十六個(gè)字節(jié)地址的內(nèi)容。
3 軟件設(shè)計(jì)
3.1 主程序
在主程序中,需要完成對(duì)各個(gè)參量寄存器以及接口的初始化,以及對(duì)應(yīng)程序的中斷、計(jì)算、循環(huán)等工作,主要部分是按鍵程序的書(shū)寫(xiě)。
當(dāng)出租車啟動(dòng)后,主程序開(kāi)始執(zhí)行,各個(gè)部分進(jìn)行初始化并開(kāi)始掃描鍵盤(pán),當(dāng)掃描到按鍵的狀態(tài)發(fā)生變化時(shí),鍵盤(pán)狀態(tài)改變次數(shù)變量就加1(key++),當(dāng)key=1時(shí),就啟動(dòng)計(jì)價(jià)子程序,執(zhí)行相應(yīng)子程序的內(nèi)容,完成該按鍵對(duì)應(yīng)乘客的乘車費(fèi)用的計(jì)算,當(dāng)key=2時(shí),相應(yīng)部分子程序初始化把按鍵對(duì)應(yīng)乘客的乘車費(fèi)用清零,并把key從新賦值為零。程序框圖如圖3所示。
3.2 總價(jià)計(jì)算子程序
主程序啟動(dòng)后,里程中斷服務(wù)子程序?qū)⒂?jì)算好的數(shù)值傳入里程寄存器中。總價(jià)計(jì)算子程序就是根據(jù)里程寄存器里的內(nèi)容來(lái)判斷乘客乘車的里程數(shù)是否大于3km。若里程大于3km,則執(zhí)行計(jì)算公式:總價(jià)金額=起步價(jià)+(里程-3)×單價(jià)+等待時(shí)間×等待單價(jià);若乘客里程小于或等于三千米,則執(zhí)行公式:總金額=起步價(jià)+等待時(shí)間×等待單價(jià)。
3.3 里程中斷服務(wù)子程序
里程中斷子程序的原理為:每當(dāng)霍爾傳感器傳來(lái)一個(gè)脈沖,單片機(jī)就中斷一次。只有當(dāng)相應(yīng)的鍵盤(pán)狀態(tài)改變次數(shù)變量key1,key2,key3,key4得值為1時(shí),相應(yīng)乘客的里程計(jì)算才開(kāi)始,對(duì)應(yīng)計(jì)算子程序的單片機(jī)每中斷一次,單片機(jī)中斷次數(shù)加一,當(dāng)中斷次數(shù)達(dá)到1000以后,里程加一,然后將中斷的次數(shù)清零,重新進(jìn)行累加。根據(jù)按鍵的不同從而可以分別計(jì)算不同乘客的里程。
3.4 等待中斷服務(wù)子程序
等待中斷服務(wù)子程序的原理為:首先設(shè)置單片機(jī)為每1ms中斷一次,然后將當(dāng)前里程值存入一個(gè)緩存變量,每過(guò)5分鐘,把當(dāng)前得到的里程值與緩存變量中的里程值進(jìn)行比較,如果數(shù)值相等,就可以得出霍爾傳感器沒(méi)有傳出信號(hào),從而啟動(dòng)等待計(jì)費(fèi),每過(guò)5分鐘,等待時(shí)間計(jì)價(jià)就改變一次。
4 結(jié)論
通過(guò)軟件仿真和硬件實(shí)驗(yàn)可以驗(yàn)證多人計(jì)價(jià)器在功能上實(shí)現(xiàn)了對(duì)多個(gè)乘客進(jìn)行乘車計(jì)費(fèi)的,并且在硬件測(cè)試時(shí)1602上顯示的乘車費(fèi)用與理論值一致,所以多人計(jì)價(jià)器在準(zhǔn)確度上也達(dá)到了要求。經(jīng)實(shí)驗(yàn)證明硬件系統(tǒng)在實(shí)時(shí)性能上比軟件系統(tǒng)要低,所以會(huì)出現(xiàn)計(jì)時(shí)功能與實(shí)際相比有微小延遲的結(jié)果。硬件實(shí)驗(yàn)的靈活性較軟件仿真較差,可能會(huì)出現(xiàn)按鍵按下程序執(zhí)行執(zhí)行延遲的情況。
參考文獻(xiàn)
[1]耿永剛,李利珍編著.單片機(jī)技術(shù)與應(yīng)用[M].上??茖W(xué)技術(shù)出版社.2012.
[2]深圳信盈達(dá)電子有限公司.輕松成為設(shè)計(jì)高手51單片機(jī)設(shè)計(jì)實(shí)戰(zhàn)[M].北京航空航天大學(xué)出版社,2013.
[3]陳海宴.51單片機(jī)原理及應(yīng)用[M].北京航空航天大學(xué)出版社,2010.
(作者單位:內(nèi)蒙古工業(yè)大學(xué))