摘 要:介紹一種以單片機AT89S52為核心的多功能出租車計價器的設計,闡述軟硬件設計過程中關鍵技術的處理。仿真結果表明該計價器具有集計程、計時、計費、存儲、查看、統(tǒng)計等多種計量功能,并且具有超速提醒、防止司機作弊、語音、打印和顯示等多種功能。與已有的系統(tǒng)相比,該系統(tǒng)具有超速提醒等更強的功能。
關鍵詞:出租車計價器;多功能;AT89C52;軟硬件設計
中圖分類號:TP368.1 文獻標識碼:B 文章編號:1004373X(2008)1618006
Design of Multifunction Taximeter Based on Single Chip Microcomputer
XIAO Weichu,CHEN Weihong,YANG Ming
(Hunan City University,Yiyang,413000,China)
Abstract: The designs of a new type of taximeter based on single chip microcomputer AT89S52 are presented.How to solve key problems in the process of designing software and hardware system is also discussed.The simulation results have proved that the system is satisfied with the practical requirements of distance,time and fare counting,storing,examining,accumulating data,reminding of the excessive speed,guarding against driver cheating,and the print,speech and display function.Compared with the existing system,this system has stronger function,such as reminding of the excessive speed and so on.
Keywords:taximeter;multifunction;AT89C52;software/hardware design
1 引 言
出租車計價器是出租車營運收費的專用智能化儀表,隨著電子技術的發(fā)展,出租車計價器技術也在不斷進步和提高。國內(nèi)出租車計價器已經(jīng)經(jīng)歷了4個階段的發(fā)展。從傳統(tǒng)的全部由機械元器件組成的機械式,到半電子式即用電子線路代替部分機械元器件的出租車計價器;再從集成電路式到目前的單片機系統(tǒng)設計的出租車計價器。出租車計價器計費是否準確、出租車司機是否超速才是乘客最關心的問題,而計價器營運數(shù)據(jù)的管理是否方便才是出租車司機最關注的。因此怎樣設計出一種既能有效防止司機作弊和超速又能方便司機的計價器尤為重要。
因此,本文以單片機AT89S52為核心設計一款多功能出租車計價器,該計價器能實現(xiàn)里程計價與顯示、數(shù)據(jù)存儲與查詢、時鐘顯示、超速提醒、語音播報和票據(jù)打印等功能。它比市場上的一些計價器使用更方便,功能更全,還具有有效防止司機作弊和系統(tǒng)穩(wěn)定性好的優(yōu)點。其中的超速提醒功能可以提醒司機和乘客,以告誡司機不要超速行駛,以避免交通事故的發(fā)生。
2 系統(tǒng)硬件結構及功能特性
2.1 整體方案
整體方案設計方框圖如圖1所示,整個系統(tǒng)由單片機AT89S52控制電路、A44E霍爾傳感器電路、AT24C02存儲電路、DS1302時鐘電路、ISD2560語音播報電路、票據(jù)打印電路、按鍵調整電路、MAX7219驅動顯示電路及電源電路組成。
單片機采集并判斷空車燈信號及路程檢測傳感器信號,當出租車啟動時,單片機檢測到霍爾傳感器的脈沖信號并進行里程計算。當無乘客時,單片機調用實時時間芯片DS1302程序和MAX7219串口顯示驅動程序,用4只LED進行時鐘顯示;當空車燈掰下乘客上車時:ISD2560語音播報電路進行語音播報1(歡迎乘客乘坐本出租車…),通過DS1302獲取時間信息分辨白天/晚上,然后調用AT24C02程序獲取白天/晚上的單價及起始價,便開始計價并顯示時間、里程和金額等信息;當空車燈打上乘客下車時:進行播報2(謝謝再次乘坐本出租車,請交金額¥…),并打印好票據(jù),單片機將營運數(shù)據(jù)信息存儲到24C02中,等待出租車再次啟動后單次金額與里程等信息清零復位,就此完成一次計價。
2.2 硬件電路設計
其硬件電路整體圖如圖2所示。
由電源部分、霍爾傳感器路程測量部分、數(shù)據(jù)顯示部分、時鐘部分、語音播報部分、票據(jù)打印部分和數(shù)據(jù)存儲部分等組成,各部分端口分別與單片機AT89S52的輸出口相連,通過單片機的控制來實現(xiàn)計價器的功能實現(xiàn)。
2.2.1 電源部分
由于計價器的工作環(huán)境比較差,它要求有抗振動、抗高低溫、抗潮濕、抗電磁干擾等能力,特別是電源方面的干擾,如出租車啟動時,發(fā)動機打火、電瓶充電等造成輸入計價器的+12 V電源不穩(wěn)定。因此采用+12 V電瓶電源經(jīng)過濾波和電源穩(wěn)壓管理芯片7805后得到+5 V的穩(wěn)定電壓輸出,保證整個系統(tǒng)能夠正常工作。如圖3所示。
2.2.2 路程測量部分
出租車中需要一個能準確獲得車輪轉動即路程計量信號的裝置,以得到標準的脈沖信號送入單片機的定時/計數(shù)器T1即P3.5引腳,利用單片機的T1的計數(shù)功能完成100次的計數(shù)后產(chǎn)生一中斷來完成路程的測量。(設車輪周長為1 m,則霍爾傳感器每產(chǎn)生100個脈沖便表示車已行程0.1 km,根據(jù)實際情況在程序中進行設置)。汽車聯(lián)軸器按圓周間隔嵌入磁鋼,用霍爾傳感器集成芯片A44E檢測并輸出脈沖,其工作原理如圖4所示,霍爾傳感器集成芯片A44E有信號轉換、電壓放大、整形輸出等功能,為增加其抗干擾的能力,經(jīng)過74LS14對信號整形后再通過光偶送入P3.5引腳。如圖5所示。而在此電路中為了防止司機作弊,可采用加密傳感器的方法,先對霍爾傳感器采集到的計數(shù)脈沖加密,使計費脈沖以密文方式傳輸,最后解密為明文脈沖,傳送到計價器計費。在密碼傳感器中,加密器向解碼器發(fā)送的是密碼,只有加密器和解密器固有密碼相同時,解碼器才向計價器發(fā)送計數(shù)脈沖,計價器才計費,因此,密碼傳感器提高了計價器計費可靠性,不法出租車司機也無法使車費增加,同時司機也不能私自更換計價器傳感器,實現(xiàn)了計價器由國家計量部門統(tǒng)一安裝、維修和年檢的統(tǒng)一管理。
2.2.3 數(shù)據(jù)顯示部分
由于設計要求有單價(2位)、中途等待時間(2位)、路程(4位)、金額(4位)顯示、時鐘(4位)輸出,如果采用LCD液晶顯示,在距離屏幕1 m之外就無法看清數(shù)據(jù),而且在白天其對比度也不能夠滿足要求,因此采用16 位的高亮度LED數(shù)碼管顯示。當為空車時,為了節(jié)電,只顯示時間,為供司機查看時間提供方便,當司機要查詢以往的營運數(shù)據(jù)時,按查詢鍵可提供顯示;在乘客時顯示營運的單價、等待時間、路程、金額及時鐘。
顯示驅動器MAX7219具有串行輸入/并行輸出功能,最多可顯示8個LED數(shù)碼管,同時有可以對亮度、譯碼方式、顯示位數(shù)、工作模式進行編程,非常滿足遠距離數(shù)據(jù)顯示;MAX7219采用串行尋址方式,進入DIN端的16位串行數(shù)據(jù)在每個CLK的上升沿被移入到內(nèi)部的16位移位寄存器中,在LOAD端的上升沿被鎖存到控制寄存器和數(shù)據(jù)寄存器中,接收到的第一位為最高位D15 ,在該電路中采用89S52的P1.5為數(shù)據(jù)口,P1.6為LOAD端,P1.7為時鐘口。
由于要顯示16個LED,所以采用2片MAX7219級連進行驅動顯示,把上一片的數(shù)據(jù)輸出口和下一片的數(shù)據(jù)輸入口連接使用。而主電路板上TA89S52輸出的DIN,LOAD,CLK信號在傳輸?shù)斤@示板的過程中可能會由于干擾而產(chǎn)生變形,所以在顯示板電路板上對這3個信號進行整形然后再通過光偶,以防止數(shù)據(jù)的錯誤顯示或不顯示的現(xiàn)象發(fā)生。如圖6所示。圖
2.2.4 時鐘部分
計價器在出租車空車行駛時需要顯示實時時鐘,因為它的時鐘是作為白天/晚上單價自動轉換的一個基準,而且計價器的時鐘顯示能為司機和乘客提供方便,所以選擇一個好的時鐘芯片對計價器很重要。DS1302是美國DALLAS公司推出的一種高性能、低功耗的實時時鐘芯片,采用SPI三線接口與CPU進行同步通信;時鐘可提供秒、分、時、日、星期、月和年;通過設置DS1302的控制/狀態(tài)寄存器選擇日歷,時鐘方式經(jīng)過初始校準后即可工作使用;工作電壓寬達2.5~5.5 V,采用雙電源供電(主電源和備用電源),并設置備用電源充電方式,提供了對后背電源進行涓細電流充電的能力,在沒有主電源的情況下啟用備用電源能保存時間信息及數(shù)據(jù)。如圖7所示。
2.2.5 語音播報部分
考慮到計價器的微型化、智能化,語音芯片采用集成度較高ISD2560芯片,其最大特點是采用E.2PROM進行模擬信息直接存取而不必經(jīng)過A/D和D/A轉換。它內(nèi)部帶有話筒放大器、自動增益控制時鐘、揚聲器驅動電路等,采用+5 V電源供電。
語音模塊與單片機的接口如圖8 所示,設計過程中,先將固定語音部分(上、下車用語、)信息存儲到ISD2560內(nèi)部的不同起點地址中。營運過程中根據(jù)上、下車的不同營運狀態(tài)來實現(xiàn)不同語音功能播放。在語音芯片工作時,系統(tǒng)首先主程序調用放音處理程序,根據(jù)發(fā)音地址尋找ISD2560中的發(fā)音單元,然后將信號送到揚聲器發(fā)出聲音。
2.2.6 票據(jù)打印部分
當出租車到達指定地點,司機翻起空車牌,便產(chǎn)生一個信號通知單片機AT89S52,單片機啟動打印服務,將行車的中途等待時間、營運里程、單價、金額、日期及上下車時間等數(shù)據(jù)打印成出租車專用發(fā)票,微型打印機接口電路如圖9所示。該電路采用接口插板方式與單片機相連,這一特點使得計價器的票據(jù)打印在功能上與主系統(tǒng)一體化,而在檢查、維修時又可單獨進行。本設計中所用微打是EPSON公司生產(chǎn)的TPμp16微型打印機,微打與單片機通過并行接口相連,當所需要打印的數(shù)據(jù)出現(xiàn)在打印機I/O0~I/O7上時,STB只要從高電平轉到低電平,再從低電平轉到高電平,就可把數(shù)據(jù)送入打印機。這時打印機將BUSY線置為忙(高電平),禁止新數(shù)據(jù)輸入;當打印機取走數(shù)據(jù)并處理完畢后,BUSY線被置為閑(低電平),同時送出回答脈沖ACK通知系統(tǒng),可以再次輸入數(shù)據(jù)。
2.2.7 數(shù)據(jù)存儲部分
數(shù)據(jù)存儲部分的作用是在電源斷開時,存儲當前設定的單價信息。AT24C02 是ATMEL 公司的2 kB的電可擦除存儲芯片,采用2線串行的總線和單片機通訊,電壓最低可以到2.5 V,額定電流為1 mA,靜態(tài)電流10Ua(5.5 V),芯片內(nèi)的資料可以在斷電的情況下保存40 年以上,而且采用8 腳的DIP 封裝,使用方便。如圖10所示。
圖10中的時鐘信號線SCL與數(shù)據(jù)線SDA需外接5.1 kΩ的上拉電阻,其作用是減少AT24C02 的靜態(tài)功耗,24C02 采用I.2C 總線與AT89S52 相連,AT89S52 的P1.3 作為它的串行時鐘線,P1.4 作為它的串行數(shù)據(jù)線。當通過通過按鍵設定一次數(shù)據(jù)完畢后(如:晝夜單價、等候時間、起租里程、起租金額等),系統(tǒng)就自動調用存儲程序,將數(shù)據(jù)信息保存在芯片內(nèi);當系統(tǒng)重新上電時,自動調用讀存儲器程序,將存儲器內(nèi)的數(shù)據(jù)信息,讀到緩存單元中,供主程序使用。由于保存在24C02 中的數(shù)據(jù)是不能隨意進行改動的,因此它具有防作弊功能。此外出租車營運過程中的一些營運數(shù)據(jù),如:單次出租的營運額和營運里程、一段時間內(nèi)的營運總額和總路程等,也存儲在24C02中,以便出租車公司及司機查詢,使出租車司機更方便的管理營運數(shù)據(jù),出租車行業(yè)得到更有效的管理。
2.2.8 超速提醒與按鍵設置部分
有些出租車司機為了獲取更多的時間來多送一個乘客,他們在送客過程中以高速行駛來榨取時間,而引起一些交通事故,為了制止這些事故發(fā)生,在系統(tǒng)程序中通過軟件檢測行駛速度,當速度高于設置的最高速度時即超速時以紅色LED顯示,乘客觀察后可以提醒司機不要超速行駛,以避免交通事故發(fā)生。
如圖11所示,按鍵部分有營運數(shù)據(jù)查詢鍵和數(shù)據(jù)設置鍵,營運數(shù)據(jù)查詢按鍵置于計價器的外面,司機通過該查詢鍵可以查看1個月的總營運額與總營運里程,和單次的營運額與營運里程。
短按查看總營運數(shù)據(jù),再次短按則循環(huán)依次往上翻閱過去單次的營運數(shù)據(jù),長按3 s則跳出數(shù)據(jù)查詢。數(shù)據(jù)設置鍵則秘密安放于計價器內(nèi)部,且必須對計價器多處進行鉛封,以防止司機通過該按鍵對營運的重要數(shù)據(jù)進行設置而作弊,該按鍵由出租車公司的專業(yè)人員來調整數(shù)據(jù),由功能設置/確認鍵、UP、DOWN鍵組成,其中功能設置/確認鍵對系統(tǒng)時間、起步價、白天/晚上單價、等待時間等數(shù)據(jù)調整進行設置,然后通過UP與DOWN來對數(shù)據(jù)值進行加與減。然后再通過功能設置/確認鍵來對所設數(shù)據(jù)的確認。
3 系統(tǒng)軟件設計
軟件設計部分可分為:主程序控制程序、外部中斷0空車燈信號中斷程序、外部中斷1里程計算程序、T0等待時間計數(shù)中斷程序、MAX7219串口靜態(tài)16位LED顯示程序、DS1302時鐘程序、ISD2560語音播報程序、24C02數(shù)據(jù)存儲程序、打印程序和鍵盤服務程序等;在整個軟件中一些變量使用全局變量形式,以供主程序的調用并進行顯示。
3.1 主程序設計
在主程序模塊中,需要完成對各芯片的初始化(MAX7219,AT24C02,ISD2560語音芯片及微型打印機的初始化)、各中斷的初始化(外部中斷0、外部中斷1、T0的初始化),另外,在主程序模塊中還需要設置啟動/清除標志寄存器、里程寄存器和價格寄存器,并對它們進行初始化。然后,主程序將根據(jù)各標志寄存器的內(nèi)容,分別完成啟動、清除、計程和計價等不同的操作。主程序流程圖如圖12所示。當空車信號燈打下時,表示有乘客上車,就就進行語音播報1,并啟動計價,將根據(jù)里程寄存器中的內(nèi)容計算和判斷出行駛里程是否已超過起價公里數(shù)。若已超過,則根據(jù)里程值、每公里的單價和起價來計算出當前的累計價格,并將結果存于價格寄存器中,然后將當前時間和累計價格送MAX7219驅動的LED顯示電路顯示出來。當中途塞車(等待或低速行駛)時,在一定時間內(nèi)沒有檢測到傳感器的脈沖信號就啟動T0計時器進行計時,當超過規(guī)定的等待時間后,計價器就根據(jù)等待價格進行當前金額的累加與顯示,并在計價器上顯示等待時間;當?shù)竭_目的地的時候,司機把空車燈打上,就停止計價,顯示當前所應該付的金額和對應的單價,并進行語音播報2,及票據(jù)打印。等乘客下車后,啟動出租車,計價器檢測到傳感器的脈沖信號,系統(tǒng)自動對顯示清零,并重新進行初始化過程,完成1次計價。
3.2 幾個關鍵子程序
3.2.1 外部中斷1里程計數(shù)程序
霍爾傳感器輸出的脈沖信號輸入到單片機的外部中斷1接口,車輪每轉一圈就產(chǎn)生一個脈沖信號,單片機就進行一次中斷,在中斷程序中完成兩項任務:
(1) 啟動定時器0,表示出租車啟動;
(2) 單次里程與總里程的累加計算并將結果存入寄存器中(設車輪轉1圈為1 m,則每中斷1次,里程就增加1 m)。
3.2.2 T0中途等待計時程序
當外部中斷1進行中斷時就啟動改T0開始計時,每當計時到達1 min,等待時間累加器值就自加,而超過規(guī)定的等待時間后,就對當前金額加上額外的中途等待的價錢,以后每0.1 min都自動加上中途等待的單價。當中途等待結束的時候,也就自動切換到正常的計價。
3.2.3 鍵盤服務程序
鍵盤采用查詢的方式,其放在主程序中,當沒有按鍵按下的時候,單片機循環(huán)主程序,一旦有按鍵按下,便轉向相應的子程序處理,處理結束再返回。鍵盤服務包括司機查詢與出租車管理人員對數(shù)據(jù)的調整。
4 系統(tǒng)仿真
在Proteus的ISIS 6軟件環(huán)境下畫出電路原理圖,如圖13所示。接下來就是將設計的程序在Keil C51 μVision2開發(fā)集成環(huán)境上編譯成機器語言,進入Proteus的ISIS,鼠標左鍵點擊菜單“Debug”, 選中“use romote debuger monitor”,便可實現(xiàn)KeilC與Proteus連接調試。首先在Proteus中雙擊單片機AT89S52,將KeilC下編程生成的 .HEX文件導入到AT89S52中,可在Proteus中單擊全速仿真運行按鈕,進行現(xiàn)象的查看,能清楚地觀察到芯片上每一個引腳的電平變化,紅色代表高電平,藍色代表低電平;并在LED顯示器上顯示相應的數(shù)據(jù),如圖13所示。如果現(xiàn)象不正確,則在KeilC中單步調試程序,并在Proteus觀察現(xiàn)象,那一步不正確則對該段的程序進行修改,調試直到仿真完全成功為止。
該仿真中霍爾傳感器采集的路程脈沖信號用系統(tǒng)提供的脈沖信號源代替,其他器件均可找到,電路設計及程序調試完畢,表明系統(tǒng)硬件和程序通過了模擬,為檢驗設計的電路和程序,將調試好的程序下載到制作的實物電路板的單片機中,制作電路印刷板,得到的實物運行結果與Proteus的仿真結果完全一致。
5 結 語
本文設計了以單片機AT89S52為核心,以語音芯片ISD2560、時鐘芯片DS1302、MAX7219等芯片為外設的新型出租車計價器。給出硬件電路圖及主程序流程圖,闡述了軟硬件設計過程中關鍵技術的處理。該系統(tǒng)完全滿足集計程、計時、計費、存儲、查看、統(tǒng)計等多種計量功能為一體的出租車計價器的實用要求。本文在出租車計價器的設計中,優(yōu)化了的設計的程序,實現(xiàn)Keil C51與Proteus連接調試,這對于單片機應用系統(tǒng)、電子電路的開發(fā)和教學等都有較大的實用價值。與已有的系統(tǒng)相比,該系統(tǒng)具有超速提醒等更強的功能。
參 考 文 獻
[1]何立民.單片機應用技術選編[M].北京:北京航空航天大學出版社,1999.
[2]求實科技.單片機典型模塊設計實例導航[M].北京:人民郵電出版社,2004.
[3]陳小忠.單片機接口技術實用子程序[M].北京:人民郵電出版社,2005.
[4]趙晶主.電路設計與制版Protel99高級應用[M].北京:人民郵電出版社,2000.
[5]全國大學生電子設計競賽組委會.全國大學生電子設計競賽獲獎作品精選[M].北京:北京理工大學出版社,2000.
[6]楊恢先,黃輝先.單片機原理及應用[M].長沙:國防科技大學出版社,2003.
[7]康華光.電子技術基礎數(shù)字部分[M].4版.北京:高等教育出版社,2003.
[8]童詩白,華成英.模擬電子技術基礎[M].北京:高等教育出版社,2003.
[9]戴勝華,蔣大明.單片機原理與應用[M].北京:清華大學出版社,2005.
[10]陳學平,蘭帆.Protel 2004 電路設計與電路仿真[M].北京:清華大學出版社,2007.
[11]求是科技.單片機典型外圍器件及應用實例 [M].北京:人民郵電出版社,2006.
作者簡介 肖衛(wèi)初 男,1974年出生,湖南婁底人,講師。主要研究方向為集成電路設計、移動通信中的無線定位。