摘要:本文介紹了一種基于STC12C5A60S2單片機的語音功能設計方案。利用該單片機的大容量ROM將語音編碼數據存儲到單片機中,再利用單片機內置的數字脈沖寬度調制器(PWM)將語音還原,無需專用語音芯片即可實現語音功能,可以極大地減少硬件成本,使語音系統的設計變得簡潔。
關鍵詞: STC12C5A60S2,PWM,PCM,單片機,語音
1 引言
目前,語音系統越來越廣泛地應用于各個領域。目前常用的方案是采用專用語音集成電路加以單片機控制實現,而這類設計用到的語音芯片一般價格較高,電路的軟硬件設計成本和難度都比較大。如果采用STC12C5A60S2單片機的大容量ROM存儲語音數據,再利用內置的PWM功能,可以方便的將語音信號還原。本文就單片機設計語音功能原理和方法進行詳細介紹。
2 STC12C5A60S2單片機介紹
STC12C5A60S2單片機是宏晶科技生產的單時鐘/機器周期(1T)的單片機,是高速/低功耗/超強抗干擾的新一代51單片機,指令代碼完全兼容傳統8051,但速度快8-12倍。內部擁有高達60K的用戶應用程序空間(ROM),1280字節RAM,集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉換(250K/S)等功能。
STC12C5A60S2單片機集成了兩路可編程計數器陣列(PCA)模塊,可通過程序設定,使其工作于8位PWM模式,它是實現語音輸出的重要部件。大容量的ROM空間適合存儲較長的語音數據,1T高速的運算能力和1KB的RAM為語音解碼輸出提供了保障,所以應用該單片機可以很容易的設計出具備語音功能的系統。
3 單片機實現語音功能的原理
在STC12C5A60S2單片機上實現語音輸出,首先要有供單片機讀取的語音數據,可以借助PC機上的軟件錄制或從現有聲音文件中提取,保存為PCM編碼,8kHz采樣,8位的WAV格式文件。采取這種格式的原因有兩點:一是該采樣速率下可獲得清晰的語音效果,能滿足語音系統的要求,二是和單片機位數以及PWM位數一致,有利于單片機的處理和運算。
PCM是波形編碼技術的一種,特點是比較簡單,語音質量高,缺點就是占用存儲空間較多,如果要實現較長的語音,可采取適當的編碼形式進行壓縮,如ADPCM自適應差分脈沖編碼算法等,在這里限于篇幅不再對語音編解碼知識加以論述,有興趣的讀者可以自己查閱相關資料。
當獲得了WAV文件中的PCM數據后,要把該數據以數組的形式存放,并和單片機程序一道經過C編譯器編譯生成代碼。再通過USART將代碼下載到單片機內部FLASH ROM存儲器中。
單片機對FLASH存儲器中的語音編碼數據進行解碼,在采樣時鐘頻率下,送到內部集成的脈沖寬度調制器PWM中,來控制PWM每個波形的占空比,再通過低通波器濾波,最后經功放單元推動揚聲器發出聲音。
4 系統硬件設計
4.1 系統框圖
系統STC12C5A60S2單片機為核心,按鍵、顯示和低通濾波器等外圍器件共同組成,硬件電路設計簡單,這也是本系統的優點之一,極大程序地節約了硬件成本。
圖1 系統組成框圖
4.2 系統電路圖
圖2 單片機主系統電路圖
圖3 RC低通濾波器
PWM 輸出后須通過低通濾波器濾除高頻噪聲,才能還原成人耳能識別的聲音。低通濾波器的類型和參數取決于聲音的采樣頻率和價格預算。用的最多的要數RC濾波器,這種濾波器的設計簡單成本低廉,即使使用參數不是非常明確的元件也能獲得很好的聲音輸出。
5 系統軟件設計
在主程序設計時,首先要建立一個PWM任務,PWM的輸出頻率要高于定時器中斷頻率,最好兩倍以上,這樣語音輸出混雜的高頻PWM波容易被低通濾波器濾除,使語音信號變得清晰,然后設置一個周期性的定時器中斷程序,在中斷函數里面將語音數據寫入PWM寄存器,來改變PWM 的占空比,中斷周期應和語音數據的采樣周期一致,本系統采用的是8KHz采樣速率的音頻數據,因此定時器的中斷周期應設定為125uS。下面是主程序及定時器中斷程序的設計流程。
圖4 系統主程序流程圖
6 結束語
隨著語音技術應用的越來越廣泛,對語音系統設計要求也越來越高,很多的電子產品要求語音合成集成電路電路簡單,成本低廉,利用STC12C5A60S2單片機內大容量ROM和自帶的PWM可以很好地解決這個問題,而PWM方式進行D/A轉換輸出電壓信號,可以直接輸出語音信號。并且,數字脈沖寬度調制器避免了復雜的模擬電路的設計,降低了設計和生產的難度。所以,PWM方式作為語音合成的輸出具有極大的應用前景。
參考文獻
[1] 趙力.語音信號處理[M].北京:機械工業出版社,2003
[2] [美]T.W.Parsons.語音處理[M].國防工業出版社,1990