用單片機實現(xiàn)公交車的自動考核與報站
1 引言
本文引用地址:http://m.butianyuan.cn/article/172193.htm現(xiàn)今社會中,許多中小城市對公交車輛進行考核,大都采用人工考核的方式,該方式存在諸多缺點,例如,對車輛到達每一站的時間以及行駛途中存在的壓客、超速、超載等問題,無法進行有效的監(jiān)督,更重要的是它浪費了大量的人力資源,因此,急需一種系統(tǒng)對公交車輛進行有效的管理。
通過市場調(diào)查,現(xiàn)在對公交車輛進行管理,主要有兩種方式:一是GPS自動考核系統(tǒng),另一種是在站牌上設(shè)一信號發(fā)射裝置,供車輛到站時判別。前一種方式雖然比較先進,但其價格昂貴,對中小城市的公交公司來說,只會增加其負(fù)擔(dān)。而且更為重要的是,它需要對原有的站牌進行改造,程序煩瑣。雖然屬于同步考核方式,但對車輛塞車等情況仍無能為力。候車乘客通過站牌雖可知道車輛與本站的距離,但到達的確切時間仍無法確定,考核效果也不理想;后一種方式利用車輛收到信號和失去信號的時間間隔判別車輛??勘菊镜臅r間,但此系統(tǒng)在實際應(yīng)用中,可以說是效果很差,站牌上電力的供應(yīng)、發(fā)射裝置的穩(wěn)定性、車輛上接收器靈敏度的不一性及路對面站的干擾等情況都嚴(yán)重影響了考核。
近年來,單片機技術(shù)迅猛發(fā)展,廣泛應(yīng)用于諸多領(lǐng)域,由于單片機具有可編程性及很好的存儲擴展性等許多優(yōu)點,因此萌生了用單片機來實現(xiàn)公交車輛的自動考核與報站。
2 系統(tǒng)的功能
(1)自動報站功能:當(dāng)車輛到達某一停車站點時,系統(tǒng)自動報站,無需手動按鍵。
(2)自動考核功能:自動記錄車輛中途停車的時間和行駛的里程數(shù),自動記錄超速、低速行駛的時間和里程數(shù)。
(3)顯示時間功能。
3 系統(tǒng)設(shè)計原理
公交車較一般車輛有個明顯的特點,就是它行駛的路線固定,從起點到終點中途經(jīng)過的站、路口也是固定的。因此,從起點到任一站、任一路口的距離是相對不變的,任意兩站之間、路口之間以及站與路口之間的距離也是不變的。我們利用這一特點,首先把從始發(fā)站出發(fā)的公交車到達每一站、每一路口行駛的里程數(shù)(確切地說是一個范圍,即經(jīng)過反復(fù)試驗,得到的到達某站或路口的數(shù)據(jù)范圍)記錄在系統(tǒng)中,公交車在實際運行中,如果行駛的里程達到某某范圍(范圍的最低值),則自動報站(包括提示是路口等等),此即實現(xiàn)了自動報站功能。對于自動考核中的超速、低速的判斷,只需在系統(tǒng)中設(shè)置一計數(shù)器(計算車輪轉(zhuǎn)過的圈數(shù)),用單位時間內(nèi)車輪轉(zhuǎn)過的圈數(shù)來判斷車速超、低速情況,同時將超、低速時的時間和行駛的里程數(shù)記錄在系統(tǒng)中。這樣,在車輛回到總站后,只要讀取系統(tǒng)內(nèi)部的數(shù)據(jù),就可以知道車輛在運行途中的??空炯俺⒌退傩旭偳闆r。對于車輛停車時間的記錄,實現(xiàn)的方法是在車輛停止轉(zhuǎn)動時就開始計時,在車輪開始轉(zhuǎn)動時停止計時,并將計時時間保存在系統(tǒng)中。由于車輛停車時間的長短和停車時的時間都被記錄下來,就可以杜絕一些公交車在站點延時拉客以及未到達站點就中途停車?yán)偷默F(xiàn)象。這里要說明的是:所謂里程數(shù)=車輪轉(zhuǎn)數(shù)*車輪周長。
圖1 語音錄放電路
4 系統(tǒng)硬件設(shè)計
該系統(tǒng)硬件設(shè)計按功能模塊劃分,可分為四部分:最小系統(tǒng)、顯示部分電路、計數(shù)部分電路和語音電路。下面結(jié)合每一個功能模塊,來介紹一下如何用單片機來實現(xiàn)公交車輛的自動考核與報站。
(一)最小系統(tǒng)
最小系統(tǒng)由89C51、RAM、鎖存器、時鐘電路、復(fù)位電路五部分組成。這是該系統(tǒng)的核心,所有的指令都是由89C51發(fā)出的。
RAM:由于車輛在行駛過程中需要記錄大量的數(shù)據(jù),比如車輛中途停車的時間、慢速行駛的時間、超速的時間等等,而89C51內(nèi)部只有256B的數(shù)據(jù)存儲器RAM,其中128B用戶可以使用,數(shù)據(jù)容量根本無法滿足系統(tǒng)的需要,故須外接RAM。
鎖存器:89C51雖然有P0、P1、P2、P3四個八位的I/O口,但是只有P0口能夠直接用于對外部存儲器的讀/寫操作,而P0口還要輸出外部存儲器的低8位地址(高8位地址直接由89C51的P2口輸出)。為了避免數(shù)據(jù)和地址的信號沖突,這時候就需要在89C51和RAM之間加上一鎖存器(實驗中采用 74LS373),從而使數(shù)據(jù)與地址分時輸出。
時鐘電路:系統(tǒng)要穩(wěn)定的工作必須有可靠的時鐘。本系統(tǒng)采用內(nèi)部時鐘方式,外接6MHZ的晶振,晶振和電容(15P)組成并聯(lián)諧振蕩回路,從而使89C51內(nèi)部的電路產(chǎn)生自振蕩。
復(fù)位電路:即在89C51的RESET端出現(xiàn)一保持10ms的高電平時,單片機復(fù)位。系統(tǒng)將手動復(fù)位和上電復(fù)位結(jié)合在一起。
(二)顯示部分電路
顯示部分主要是顯示時間的。在該系統(tǒng)設(shè)計中,由于89C51本身自帶的并行口有限,故在系統(tǒng)中采用8155對并行口進行擴展。我們用8155PB口輸出段碼(即待顯示的數(shù)據(jù)),利用8155PA口的低四位(PA0、PA1、PA2、PA3),經(jīng)過一個74LS154(四—十六譯碼器)譯碼后產(chǎn)生16個位選信號,某一位選信號有效,與之相對應(yīng)的LED燈即被點亮。我們在此采用的是動態(tài)顯示方式,該方式較靜態(tài)顯示方式的明顯優(yōu)點即其占用的I/O口資源少,從而不必再對89C51進行I/O口擴展。
(三)計數(shù)部分電路
車輛在運行過程中,我們?nèi)绾斡嬎丬囕v行駛的里程,如何判斷車輛超速、低速,這些都是通過計數(shù)部分電路來實現(xiàn)的。我們只要記錄下車輪的轉(zhuǎn)數(shù),然后用它乘以車輪周長就可以得到車輛行駛的里程數(shù)。而對于車速,設(shè)定系統(tǒng)以某一固定時間間隔(比如5秒)來采集計數(shù)值(即車輛轉(zhuǎn)數(shù)),用這一數(shù)值乘以車輪周長得出車輛行駛的里程,再除以時間從而得到車速,這樣我們就可以判斷車輛的超速、低速情況了。其實計數(shù)電路非常簡單,它僅僅利用到89C51的外部中斷INT0,每當(dāng)此引腳有下跳沿信號,計數(shù)器即加1(系統(tǒng)中采用16位計數(shù)器,最大計數(shù)值可達到65535)。在進行實驗的過程中,我們發(fā)現(xiàn),模擬車輪產(chǎn)生的脈沖干擾很大,采用軟件延時,效果不甚理想,而且影響到顯示(用以顯示的LED燈產(chǎn)生明顯的抖動),故想到在INT0端采用硬件延時。而RS觸發(fā)器在此方面有良好的特性,因此在INT0引腳與產(chǎn)生脈沖的車輪之間加上一RS觸發(fā)器。
(四)語音部分電路
自動考核與報站系統(tǒng)的報站功能主要是由語音部分電路來實現(xiàn)的。實驗中我們使用的語音芯片為ISD4002-120P,該芯片的存儲時間僅為120秒,只可用于實驗室階段,實際應(yīng)用中可以更換存儲時間長的芯片。由于車輛在運行途中,只需報站,而無需錄音,故我們采用圖1所示電路對語音芯片進行錄音。
開關(guān)在“REC”端是錄音狀態(tài),按住“AN”鍵不放,指示燈亮即可對著話筒講話錄音,松鍵錄音停止并形成一段。再按則錄下一段。按“STOP”鍵復(fù)位,再錄音時又從第一段開始。開關(guān)在“PLAY”一側(cè)是放音狀態(tài),按一下“AN”即播放一段錄音,一段結(jié)束后自動停止放音,再按“AN”鍵則播放下一段。
把錄好的芯片放到系統(tǒng)中,當(dāng)車輛行駛的里程數(shù)達到某一段范圍時,我們利用語音芯片的快進功能,跳到相應(yīng)的語音段開始放音從而實現(xiàn)自動報站。
5 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件采用模塊化結(jié)構(gòu),主要由主程序、計數(shù)中斷子程序、時間中斷子程序等級成。下面列出了主程序流程圖(如圖2)和計數(shù)中斷子程序流程圖(如圖3):
6 結(jié)束語
總的看來,本系統(tǒng)采用了一種比較新穎的思路,用單片機來實現(xiàn)公交車輛的自動考核和報站。能夠?qū)卉囕v進行有效的管理,投入市場的前景較好。在實際運用的時候,可以在系統(tǒng)中擴展鍵盤,以防止公交車行駛路線發(fā)生變化以及出現(xiàn)一些異常情況時,改用鍵盤控制報站。
參考文獻
[1]何立民.MCS-51系列單片機應(yīng)用系統(tǒng)設(shè)計:系統(tǒng)配置與接口技術(shù).北京:北京航空航天大學(xué)出版社,1990年。
[2]劉樂善,葉濟忠.微型計算機接口技術(shù)原理及應(yīng)用.湖北:華中理工大學(xué)出版社,1996年。
評論