董進
(江蘇電子信息職業學院計算機與通信學院,江蘇淮安 223003)
雖然公共交通系統朝著越來越人性化、高效化、智能化的方向發展,但還有不少地區使用傳統的公交司機按鍵報站的模式,容易造成疲勞駕駛,進而對乘客的生命安全造成一定影響,也會一定程度上造成乘車時間的浪費。隨著科技產業的快速更迭,微型計算機電路在眾多領域得到了施展的空間[1-3],其中在聲音傳播方面,使用微機電路與聲音芯片相融合就可以完美地使用聲音合成技術。本文通過對單片機、GPS收發模塊以及語音解碼芯片的使用完成公交站臺的自動播報。考慮到現有的公交系統的問題結合公交車的實際運營環境,目標就是完全拋棄人工報站的方式,設計出一種以由單片機為核心主控,再由GPS 技術為基礎的自動報站系統,進而實現公交車在進入站點和走出站點時的自動語音播報。
設計一個基于單片機控制的語音自動報站系統,要求實現的功能如下3種功能。
1)可以設置上、下行路線。
2)可以顯示當前的站名、下一站的站名進行設置。
3)具備手動和自動報站兩種功能。
其中設置上、下行路線是指用戶可以自定義站點相隔的距離長短,通常情況站與站點要相隔大于200米這樣會更加便于GPS的精確定位;同樣的用戶可以自定義每一站站點的名稱,通過轉換把抽象的經緯度變成直觀具體的地點名稱;最后分為手動和自動報站兩個模式,自動報站是把事先測量好的站點的經緯度存入單片機的存儲模塊中然后通過GPS 的實時定位數據與存儲數據進行比對,數據相同時就會自動報站,同時在液晶顯示屏上顯示播報的信息。
當然機器難免會出現一些故障,此時可以啟用備用的按鍵進行手動報站,這兩種方式最后實現的效果是完全一致。系統工作流程如圖1所示。

圖1 系統工作流程圖
該系統的硬件主要包括單片機、GPS、按鍵、語音、存儲和屏幕顯示和電源等功能模塊;軟件方面用GPS模塊和單片機STC89C52RC 之間通過串口來進行數據的交換。而按鍵模塊方面是通過手動的方式來實現公交的自動報站。本系統詳細的結構如圖2所示。

圖2 智慧候車亭自動報站系統框圖
本系統的硬件部分含有VK16U6GPS 模塊、核心單片機STC89C52RC 模塊、LCD12864 顯示模塊、按鍵模塊、MX500S-10P語音模塊等部分,每塊電路通過與單片機上的引腳插口的組合連接,展現其各自的功能。
本系統核心單片機采用STC89C52RC,將MCU(中央處理器)、ROM(只讀存儲器)、RAM(隨機存取存儲器)以及IO接口(輸入輸出接口)等元器件集中在一塊電子印刷板上。它同時還具有實時運算速度快、能源功率消耗少以及抗干擾性強等明顯的優勢,同時它由頂而下兼容舊版的C51型號單片機設備。
單片機STC89C52RC引腳示意如圖3所示。

圖3 STC89C52RC引腳圖
主要用到的引腳主要的是:P0(即圖3中39至32)對應連接LCD12864 模塊的RB0-RB7 接口,P2.7、P2.6、P2.5(即圖3 中28、27、26) 口對應連接至LCD12864 模塊的E、RW、RS 口,P3.0、P3.1(即圖3 中10、11),連接下載程序接口RXD、TXD,最后是VCC接5V左右的電源,VSS接地。
晶振電路是單片機擁有的一種特殊電路,就它本身而言也是單片機架構中必有的一項環節,毫不夸張地說是起決定作用,它的本質為時鐘電路,所產生的時鐘頻率越快單片機指令執行的速度也越快。傳統意義而言晶振頻率是極高的,最高可達到百萬分之一。此外通過壓控振蕩器(VCO)產生的外部電壓也可以使得某些晶振的頻率在一定的范圍內發生改變。
綜合而言晶振的存在是為了幫助系統的時鐘信號維持相對的平衡關系,因此一個系統必帶一個晶振,該晶振的使用頻率為11.0592M。如圖4所示。

圖4 外部晶振設計
復位電路是單片機上的一個保護電路,作用是恢復單片機原始狀態,目前選擇的這個STC89C52 內部集成了這一項設計,具體為高電平復位,當然外部復位電路也同時保留了下來,通過連接單片機的RST引腳也可實現。
本系統用到的是業內標準的高精度GPS 尺寸為25mm×25mm×4mm,擁有5Hz 的實時定位速率,UART/TTL、232、USB2.0三種格式的可選接口也是比較齊全。使用KDS 0.5PPM 高精確度TCXO,內建RTC 晶體及皮法電容能夠更快地熱啟動以及內置EEPROM能自由豐富配置參數。
用到的引腳接口為RXD、GND、VCC_N(即為DEF接口),其中RXD 為串行輸入接口與單片機STC89C52RC 相連,主要目的是把GPS 接收到的數據發送給單片機進行解析處理,GND 為接地接口,VCC為電源接口。
本系統設計使用的是型號為LCD12864 液晶顯示模塊,如圖5 所示。其中數字12864 為尺寸比例是128×64,可以顯示漢字和簡單圖片。另外就是它也具備低功耗低電壓的優勢,可以在輕量級的設備上使用。綜合來說在LCD12864模塊是當前價位實現液晶顯示功能的最佳選擇。

圖5 LCD12864液晶顯示屏引腳圖
LCD12864液晶顯示屏引腳圖如圖5所示。
LCD液晶模塊使用到的引腳是VSS、BLK(即圖5中的1、20)接地,VDD、PBS、RST、BLA(即圖5中的2、15、17、19)連電源接口,RS、RW、RE(即圖5中的4、5、6)接單片機STC89C52RC的P2口,也就是P2.5、P2.6、P2.7。
MX500S 為串口可供選擇的一種MP3 芯片,它的優點是對于MP3、WAV格式的文件能完美支持,同時支持使用電腦更新SPI-flash。通過使用串口指令就能完成音樂的播放,舍棄掉復雜的底層操作,便捷穩定則是該款產品的最大優勢。此外該芯片也是經過深度定制,具體定制內容:為了固定語音播放而開發的低成本的打包方案。按鍵電路與晶振電路并聯,按鍵模塊與單片機STC89C52RC 的P3.7 KEY 口進行連接。本系統外放采用最為簡單的喇叭模塊,是面對絕大多數場景的最優選擇。
本系統設計的軟件編程部分使用KEIL 4 這個專業的匯編軟件來完成,KEIL 軟件具有編譯靈活小巧,簡便易于操作等特點,采用C語言進行軟件代碼編寫。
主程序能夠對各個子程序進行調度。按下開始按鈕,先是初始的加載界面,然后進入主界面,選擇是否啟動GPS模式,如果選擇啟動就通過GPS接受當前經緯度信息,經過比對后就進行語音播報再通過單片機解析把位置信息轉化成站點名稱顯示在LCD 液晶顯示屏上然后停車結束。如果選擇不啟動GPS模式,就按下按鍵,同樣的單片機就會把預先設置好的站點信息投放到LED顯示屏幕上,隨后語音播報完成整個流程,如圖6所示。

圖6 主程序流程圖
LCD12864 液晶顯示模塊的子程序操作流程為:先要接收到主程序的指令信息后,將其設置輸入為模式子函數的狀態,選擇是否要初始化LCD 子函數,選擇是否顯示定位子函數,接著在顯示字符子函數和站點信息設置及調用,從而達到顯示站名信息功能,如圖7所示。

圖7 LCD液晶模塊流程圖
MX500 語音模塊子程序建立在收到主程序的指令信息后,輸出一個負脈沖信號,語音芯片內部指針指向本站點的語音段,然后再輸出一個負脈沖信號,最后依靠喇叭播報當前指針指向的語音段。流程圖如圖8所示。

圖8 語音模塊子程序流程圖
單片機上電后,選擇經過GPS 掃描后,倘若檢測到GPS 信號。經過判斷數據是否有效。完成后通過內在核心自行計算經度和緯度信息,最后發送給單片機核。程序流程圖如圖9所示。

圖9 GPS解析流程圖
開機調試具體包括以下六大步驟。
1)使用USB 充電線一端連接實物一端連接充電寶,等待電源接通屏幕亮起。
2) 此時需要走到戶外把實物靜置幾分鐘等待GPS 定位完成并且會在屏幕上顯示詳細的當前經緯度位置信息,然后把收到的經緯度信息與站臺名稱記錄,前往下一站點再經過同樣的方式收集并且記錄當前的經緯度以及站臺信息,總計重復四次。
3)成定位信息收集后利用KEIL軟件完成代碼的編寫。代碼編寫如圖10所示。

圖10 代碼編寫顯示圖
代碼編寫完成之后通過KEIL軟件生成hex文件。文件生成結果如圖11所示。

圖11 文件生成結果顯示
4)用STC 單片機下載軟件并將文件燒入單片機。軟件截圖如圖12所示。

圖12 STC軟件截圖
5)使用手機自帶的錄音軟件把自動播報的語音錄好并將語音格式調整為MP3格式以及32bit的碼率并且按照播報的順序排列整齊。
6)通過USB 數據線把錄音文件拷入單片機就完成整個調試步驟。
本文基于GPS 設計了一種智慧候車亭自動報站系統,首先簡述了系統工作原理及總體設計架構,從單片機模塊及最小系統、VK16U6GPS模塊、LCD12864液晶顯示模塊、MX500S-10P 語音模塊等方面給出了硬件部分設計思路及方法,從系統主程序設計、LCD液晶顯示子程序、語音模塊子程序、GPS 解析軟件流程圖等方面闡述了軟件部分設計思路及方法,最后進行了該系統的調試。