何小映
西安航空學院電氣系,陜西 西安 710077
目前的城市公交售票有兩種形式:無人售票和有人售票,對于無人公交來說,乘客只需要打卡或者投幣即可,無所謂遠近,一律都是同樣的價錢,比較方便;另一種形式是有人售票,主要是中巴車及部分站點較多的大巴車,這部分車輛由售票員根據路途的遠近收取相應的票價,所以售票員需要記住所有站點的名稱及站數,對于站點比較多的公交來說,往往出現記錯站收錯錢的情況。本文針對這一具體情況,設計出一種公交車計價系統,有效地解決了這一問題,售票員只需要點擊起點、終點及站名,進行兩到三次按鍵選擇即能自動計算出相應的價格,即方便又快捷準確。
該系統的整體框圖如圖1所示:

圖1 系統框圖
該系統主要包括鍵盤、單片機、液晶顯示器三大部分,系統以單片機為核心,加上鍵盤和液晶顯示器,實現了起點站和終點站的選擇,也實現了站名和站數的顯示,并能根據站數自動計算出應繳納的費用。
整個硬件以單片機89S52為核心,主要電路包括鍵盤與單片機的接口電路以及單片機與液晶顯示器的接口電路兩部分,其他的輔助電路包括時鐘電路和復位電路,現將主要電路分別進行介紹。
鍵盤一般有獨立式和行列式兩種,中巴車的站數比較多,基本上都在三十個以上,比如設計中以西安504路中巴車為例,該線路共有39個站,由于站數比較多,所以鍵盤采用行列式結構[1]。設計中采用5行8列的結構,行線是P1.0~P1.4,列線是P3.0~P3.7,在行列交匯處布下40個鍵,鍵盤接口如圖2所示。

圖2 鍵盤接口
另外還有兩個鍵用于選擇起點站和終點站,采用獨立式結構,其中起點站由P2.6控制,終點站由P2.7控制。
顯示器采用液晶顯示器PG12864[2],與單片機的連接由P2.0~P2.4提供控制信號,由P0口提供數據信號。顯示字體采用16*16點陣結構,顯示4行,每行8個字符。字符由子模軟件產生。

圖3 程序流程圖
在PG12864上面一共顯示4行信息,系統上電或復位后顯示的初始信息是第1行顯示:“起點:”、第2行顯示:“終點:”、第3行顯示:“站數:”、第4行顯示:“價格:”。
軟件主要包括鍵盤處理程序、顯示程序兩部分,程序采用C51語言[3]編寫,程序流程圖如圖3所示。
其中,12864初始化完成12864的初始信息設置,包括:光標指針設置、圖形區首地址、圖形區寬度設置、顯示方式及顯示狀態設置。12864顯示4行的初始信息如2.2部分所示。這些工作完成后,等待站屬性鍵按下,站屬性鍵是指起點站還是終點站,分別由P2.6、P2.7表示,當都沒按下時則一直等待,若P2.6按下,則行號為0,表示是起點站,站名將在第1行顯示,第一行的行號為0;若P2.7按下,則行號為1,表示是終點站,站名將在第2行顯示,第2行的行號為1。接下來等待站點鍵按下,若無鍵按下則等待,若有鍵按下則讀其鍵值,鍵值從1到39,讀到鍵值后,根據前述行號,從相應行的相應列開始顯示站名,站名控制在五個字以內。接下來在第3行顯示站數,格式為:起點站序號——終點站序號,最后在第4行顯示價格,價格依據起點站和終點站的站數差取不同的值,起步價0.5元,最多4元,三站內0.5元,28站及以上都是4元。顯示器截圖如圖4所示。

圖4 顯示器截圖
在圖4中,曲江池是第3站,西門外是第23站,兩站之間相差20個站,價格是3.0元。
該系統不僅適用于有人售票公交系統的票價計算,也適用于有類似計算要求的場合,該系統減輕了售票員的記憶負擔,能提供及時準確的票價計算,不會出現人為算錯價格的情況,具有一定的實用性。
[1]劉建華.單片機原理及應用技術[M].上海科學技術出版社,2010.06:86
[2]楊斌等.微機原理與接口技術試驗及課程設計[M].西南交通大學出版社,2005.10:122
[3]劉文濤.單片機語言C51程序設計[M].原子能出版社,2004.07:1~139