聶 茹
(華南理工大學廣州學院電子信息工程學院,廣州 510800)
隨著我國城市建設的發展,公交車已成為人們的主要交通工具,公交車的服務質量代表了一個城市交通發展的水平。如今由售票員人工售票,報站的公交車已經基本沒有了,無人售票公交車在街頭逐漸多起來了,語音報站器也被廣泛使用,這在相當大程度上免除了乘務人員沿途報站的麻煩,給許多不熟悉公交線路的乘客帶來了方便。隨著單片機技術的日益成熟,多媒體技術的普通應用,公交車語音報站器系統的服務得到進一步完善。
在結合單片機和公交車報站器特點的基礎上,設計了一種基于單片機STC89C52來控制語音芯片ISD4004進行公交車語音報站,并通過LCD1602來顯示當前實時情況的公交車自動報站系統。該公交車報站器系統結構簡單,音質清晰,可以在各種公交車上提供及時報站服務,具有很強的實用性。
公交車自動報站系統的主要功能如下:
(1)不同公交線路站名的輸入和更換。
(2)實現完整手動播報一條公交線路的站名,包括上行線路與下行線路。
(3)進行語音播報,使報站器更人性化。
(4)可以在LED顯示屏上顯示時間、日期、報站信息、提示語和廣告。
(5)利用汽車后門的打開與關閉實現對當前站名的播報和下一站的預報,當播報出錯時還可以利用調試按鈕對播報系統進行調試。
本系統硬件部分主要包括MCU微處理控制器單元、LCD液晶顯示模塊、語音芯片、功放、按鍵控制、紅外電路模塊、溫度測試模塊、實時時鐘電路、晶振電路、電源模塊等電路。
系統結構圖如圖1所示。

圖1 系統結構圖
系統以STC89C52單片機為CPU進行系統搭建,它是宏晶科技推出的新一代高速、低功耗、超強抗干擾的單片機,具有8K可編程Flash存儲器,512字節RAM,32位I/O口線,指令代碼完全兼容傳統8051[1]。
系統利用液晶1602模塊進行顯示。LCD1602是一種用5×7點陣圖形來顯示字符的液晶顯示器模塊,它顯示的容量為2行16個字。它的顯示內容豐富、體積小、美觀和易于控制都是本設計選擇它作為顯示模塊的原因。常以I/O口方式進行讀寫訪問,在該設計中,我們使用P0口直接驅動1602,由P2.0、P2.1、P2.2 這3 個引腳做控制端。
語音芯片采用 ISD4004。美國 ISD公司的ISD4004芯片是一種功能非常強大的語音芯片[2],它的錄放時間為8至16分鐘,而本公交車系統的錄音時間長,采用ISD4004利于每個站臺的錄音和報站。另外在控制上,ISD4004可以直接通過地址方式查詢錄音信息并通過揚聲器報放錄音信息。最后也是最重要的,ISD4004具有錄音結束標志,當錄音結束后,單片機可以通過讀取該標志產生中斷信號,使CE、PD置高電平,從而控制ISD4004進入不工作節能狀態。
紅外無線控制電路,由發射和接收兩大部分組成,應用編/解碼專用集成電路芯片來進行控制操作。發射部分包括鍵盤矩陣、編碼調制、LED紅外發送器;接收部分包括光、電轉換放大器、解調、解碼電路。
實時時鐘模塊采用DS1302時鐘芯片實現。DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路[3],它可以對年、月、日、星期、時、分、秒計時,DS1302與單片機之間用同步串行的方式進行通信,用RST(復位)、I/O(數據線)、SCLK(串行時鐘)這三個接口線進行連接。
溫度傳感模塊采用單總線數字溫度傳感器DS18B20,單總線即只有一根數據線,系統中的數據交換,控制都由這根線完成。DALLAS公司的DS18B20是這樣一種獨特的溫度傳感器,它只需一個接口引腳即可通信,可用數據線供電,并具備多點測溫能力[4]。DS18B20具有測溫系統簡單、測溫精度高、連接方便、占用口線少等優點[5],本設計在P3.3懸掛該溫度傳感器。
按鍵控制模塊使用簡單的獨立式按鍵來控制報站信息,同時設置系統在不同功能下單個按鍵的功能也隨之不同。按鍵采用重復使用功能,這使系統看起來較簡便,控制簡單,設計新穎。
系統的軟件設計包括中斷服務程序、錄音/放音控制程序、紅外遙控解碼程序及主程序的設計。
在CPU工作的同時,它也在查詢INTO是否有中斷信號(低電平有效)產生。當檢查到有中斷信號時,CPU發出讓顯示器和ISD4004工作的控制信號,把接收到的站牌信息顯示并播報出來,播報結束后,系統返回到相應的主程序。圖2為本設計使用的中斷服務程序流程圖。

圖2 中斷服務流程圖
如果有按鍵按下,電路將執行該按鍵指向的工作程序。有放音鍵,停止鍵,加一,減一鍵以及特殊語鍵。在待機狀態下,如果放音鍵首次被按下,程序將首先判斷是去還是回(公交車路徑一般是既去又回的),并點亮相應的指示燈。自動讀出第一站的放音內容,站號顯示1。如果不是首次按下,程序則首先判斷當前站號,并以該站號為依據獲得存放該站放音內容的首地址。調用放音子程序,讀入前面獲得的本站放音內容首地址,開始放音。每一句放音完畢后,ISD4004的中斷引腳(25腳)會自動送一低電平信號。在硬件設計中,該引腳與單片機的P3.3連接。因此,會引起一次中斷,在中斷子程序中會有一個計數器記錄中斷次數,從而判斷何時一站結束,站號加一并刷新顯示。加一鍵按下后則使程序放音內容轉向下一站,減一鍵則使程序放音內容轉向上一站,相應的站號顯示也將隨之刷新。特殊語鍵按下后,程序轉向執行特殊語放音(比如拐彎請注意等語句)。停止鍵被按下將中止當前的放音狀態。
系統的主程序設計是用來控制整個系統運行的時序工作狀態,因此,完善的程序設計是本設計的重點內容。圖4是本設計使用的主程序設計流程圖。

圖3 錄音/放音程序流程圖

圖4 主程序流程圖
以STC89C52單片機為核心設計公交車自動報站系統。系統經過實際調試,可以正常運行,音質清晰,在各種公交車上都可以提供及時報站服務,具有很強的實用性。
[1]劉維紅,譚永超.基于STC89C52單片機的電子時鐘研究[J].機電產品開發與創新,2012(9):57-58.
[2]靖大同,吳向前,司志澤.基于ISD4004芯片的電梯智能語音系統的設計[J].電子世界,2012(11):35-36.
[3]裘昌利,金美善,楊坤.串行時鐘芯片DS1302在單片機系統中的應用[J].現代教育科學,2010(1):96-97.
[4]何慧娟,何芝仙,趙轉哲.基于DS18B20的單片機溫控系統[J].科技信息,2008(13):149-150.
[5]王琪,朱光衡.一種基于DS18B20的單點測溫方法的研究[J].科技傳播,2011(17):223-224.