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