《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于AT89S52 和K9F6408U0A 的語音數字系統設計
基于AT89S52 和K9F6408U0A 的語音數字系統設計
維庫
摘要: 在研究傳統語音錄放電路的基礎上,提出了一種基于AT89S52的音頻信號采集、存儲與處理系統。該系統以單片機AT89S52為控制器,采用鍵盤和LCD作為人機界面,ADC0809采集音頻信號,擴展8MB閃速存儲器K9
Abstract:
Key words :

  摘要: 在研究傳統語音錄放電路的基礎上,提出了一種基于AT89S52 的音頻信號采集、存儲與處理系統。該系統以單片機AT89S52 為控制器, 采用鍵盤和LCD 作為人機界面,ADC0809 采集音頻信號, 擴展8 MB 閃速存儲器K9F6408U0A作為數字化音頻信號的存儲器,通過軟件濾波濾除噪音;采用PWM 產生聲音的原理,使存儲在Flash 中的音頻數據控制PWM 每個波形的占空比,通過低通濾波器將聲音從PWM 的脈沖中分離,并驅動揚聲器。實驗表明:8 kHz 采樣頻率和8 位采樣位數可獲得清晰的語音以及較好的音樂聲,語音存儲時間達15 min。

數據采集技術涉及領域廣,采集信號的動態范圍寬,處理數據量大,對系統實時性能要求高。以數字信號的形式對信號進行處理,具有處理速度快、靈活、精確、抗干擾能力強、體積小及可靠性高等優點,滿足了對信號快速、精確、實時處理及控制的要求。本設計利用了數字電路的這些優點,對傳統的模擬錄音電路進行了改進,以較低的成本使性能得到了提高。

1 方案論證

本設計以數字化信號的形式對音頻信號進行處理,有以下3 種方案可供選擇:

1)直接利用語音芯片進行語音錄放。Winbond 公司的ISD系列語音芯片采用了Chip-Corded 專利技術, 聲音無需A/D轉換和壓縮就可直接存儲,不存在A/D 轉換誤差,在一個記錄位(BIT)可存儲多達250 級聲音信號,相當于通常A/D 技術記錄容量的8 倍。片內集成了晶體振蕩器、麥克風前置放大器、自動增益控制、抗混疊濾波器、平滑濾波器、聲音功率放大器等,只需很少的外圍器件,就可構成一個完整的聲音錄放系統。

2)利用DSP 對采樣信號進行處理。DSP 是專門為快速實現各種信號處理算法而設計的、具有特殊結構的微處理器,其處理速度遠遠超過一般的CPU。

3)利用AT89S52 作為系統主控芯片,利用ADC0809 對音頻信號進行采集和A/D 轉換,將轉換得到的數字化音頻信號存儲到擴展的數據存儲器中,利用軟件對信號進行數字濾波,最后通過單片機輸出PWM 信號來完成放音。

從經濟和技術等因素考慮對上述3 種方案進行比較:直接利用語音芯片可以減少很多外圍電路, 電路設計方便,但語音芯片使用不夠靈活。DSP 具有強大的數字信號處理功能,使用靈活,但該芯片價格較高,不適于一般的應用。方案3)中器件均為常用芯片,易于獲取,且價位不高。因此,方案3)為最佳設計方案。

2 硬件設計

圖1 為系統硬件結構圖。音頻信號通過拾音器將聲音信號轉換為可以處理的電信號,前置放大電路用來對拾音器的輸出進行放大, 與A/D 轉換電路匹配,A/D 轉換電路實現對模擬信號的編碼。微處理器是系統的核心,它用來對數字化音頻信號進行處理和存儲,協調系統各個部分的工作,輸出PWM 波來驅動輸出電路。

系統硬件結構框圖
系統硬件結構框圖
圖1 系統硬件結構框圖。

2.1 單片機

單片機是系統的控制中心, 它主要實現以下的功能:控制LCD 顯示語音信號的相關信息, 控制按鍵識別和功能選擇; 控制音頻數據的采集并存儲在Flash ROM, 放音時讀取Flash ROM 中數據,用軟件方法產生PWM 脈沖信號,實現語音的存儲和回放。

2.2 聲音信號拾取、放大電路

聲音信號拾取電路就是將聲音信號轉換為電信號的裝置。本設計選用麥克風,它是一種聲敏電阻,其阻值隨外界聲音信號的變化而變化,將其串聯在電路中,電阻的變化形成電壓的變化,經過電容通交隔直,就得到了表征聲音信號特征的電信號。

然而由于聲音信號拾取電路輸出電壓的幅值很小,為20~25 mV,若將該信號直接與A/D 轉換電路相連,由于A/D轉換器最小分辨電壓也為毫伏數量級, 會產生很大的誤差,為了保證系統的精度,在和A/D 轉換電路相連之前,需串聯一個放大電路, 考慮到聲音信號拾取電路的輸出信號很小,放大電路的失真度和噪聲對系統的精度影響最大,故將其設計為抗共模干擾強的并聯負反饋放大電路, 由于音頻信號的頻寬較大,故選用寬頻帶,低輸出阻抗的雙運放NE5532。

2.3 A/D 轉換電路

A/D 轉換電路由A/D 轉換器ADC0809 與系統處理器AT89S52 組成, 主要實現對放大后的聲音信號進行采樣。

ADC0809 與AT89S52 的電路連接如圖2 所示。

ADC0809 與AT89S52 的連接電路
ADC0809 與AT89S52 的連接電路
圖2 ADC0809 與AT89S52 的連接電路

從圖2 中可以看到,把ADC0809 的ALE 信號與START信號接在一起,這樣可使得在信號的前沿寫入(鎖存)通道地址,緊接著在其后沿就啟動轉換。啟動A/D 轉換只需要一條P2.7=0 指令。在此之前,要將P2.7 清零并將最低3 位與所選的通道對應的地址送入數據指針DPTR 中。ADC0809 的轉換結束信號EOC 取反后與AT89S52 的INT1 相連,采用中斷方式讀取A/D 轉換結果,并啟動下一次A/D 轉換。也可定時啟動A/D 轉換,并讀取上次轉換結果。

2.4 聲音編碼存儲電路

在采樣時每一采樣點都會產生1 字節的數字編碼信號,由于采樣的頻率為8 kHz, 若錄音15 min, 則所需的存儲空間為7.031 25 MB,故系統選用8 MB 的Flash 存儲器K9F6408U0A,由于該存儲器的地址線和數據線可復用[3],這樣可節省I/O 接口。K9F6408U0A 的最大優點在于其命令、數據和地址均可通過8 條I/O 接口線與主控制器進行通信, 大大簡化了系統的連線, 增強了系統的穩定性。除8 條I/O 接口線外,K9F6408U0A 還包括以下控制線,1)CLE: 命令鎖存使能端,高電平有效。在WE 信號的上升沿,命令信號可通過I/O 口鎖入命令寄存器;2)ALE:地址鎖存使能端,高電平有效。在WE信號的上升沿, 地址信號可通過I/O 口鎖入地址寄存器;3)CE:片選線,低電平有效。在頁編程或塊擦除操作期間或器件處于忙狀態時,CE 高電平將被忽略,4)WE: 寫使能口,命令、地址和數據在WE 信號的上升沿被鎖定;5)RE: 讀使能口,在該口的下降沿將數據送到I/O 口線上,并使內部列地址寄存器加1;6)WP:寫保護口,低電平有效,當其為低時,編程和擦除操作禁止;7)R/B:操作狀態指示信號。為低時,表示正在編程、擦除或讀操作,操作結束后變高。利用上述控制線,從而方便實現系統主控制器對K9F6408U0A 的控制。AT89S52單片機與K9F6408U0A 存儲接口電路如圖3 所示。

AT89S52 與K9F6408U0A 存儲接口電路
AT89S52 與K9F6408U0A 存儲接口電路
圖3 AT89S52 與K9F6408U0A 存儲接口電路。

2.5 PWM 輸出電路

本設計采用單片機輸出PWM 信號驅動音頻放大電路,PWM 輸出電路如圖4 所示。PWM 是一種利用微處理器的數字輸出控制模擬電路的有效技術,對一系列脈沖的寬度進行調制,等效獲得所需波形,并且由于沒有使用D/A 轉換器,系統成本減少很多。PWM 的優點是從處理器到被控系統信號都是數字形式的,無需進行D/A 轉換。讓信號保持為數字形式可將噪聲影響降到最小。此外PWM 信號很容易通過MCU 的軟件進行控制,即使電路稍微有些系統誤差,易于通過軟件進行校正。

圖4 中, 利用單片機的P1.7 引腳輸出一定寬度的PWM信號,通過三極管整形后,作用在慣性環節上,得到的輸出信號PWMOUT 將作用在音頻功放電路上,還原為聲音。

PWM 輸出電路
PWM 輸出電路
圖4 PWM 輸出電路。

2.6 音頻功率放大電路

為了使系統有足夠大的輸出,驅動揚聲器發聲,便于調節音量, 在PWM 輸出電路后使用了音頻信號功率放大器LM386 構建功率放大電路,如圖5 所示。

音頻功放電路
音頻功放電路
圖5 音頻功放電路。

LM386 型音頻功率放大器主要應用于低電壓消費類產品。為使外圍元件最少,電壓增益內置為20。但在其引腳1 和8 之間外接電阻和電容, 便可將電壓增益調為任意值, 直至200。輸入端以地位參考,同時輸出端被自動偏置到電源電壓的一半, 在6 V 電源電壓下, 其靜態功耗僅為24 mW, 使得LM386 特別適用于電池供電的場合。PWMOUT 為PWM 輸出電路的輸出,揚聲器為8 Ω,0.5 W。經過調試發現將電源+5 V用10 μF 和0.1 μF 的電容濾波后,會減小很多噪聲,效果較好。

3 系統軟件設計

系統具有錄音、放音、暫停、清除存儲內容等功能,各種功能由按鍵來選擇,系統首先掃描各個按鍵的狀態,如果有按鍵按下,就轉往相應的處理程序,系統程序流程如圖6 所示。

系統流程圖
系統流程圖
圖6 系統流程圖。

3.1 系統初始化程序

系統初始化程序主要對單片機中斷、定時器、LCD 初始化、鍵盤、PWM、K9F6408U0A 存儲接口,以及ADC0809 地址、程序中要用到的各個變量進行設置。

3.2 按鍵掃描程序

由于錄音和暫停是由和外部中斷引腳相連的2 個按鍵來設置,一旦按鍵按下就進入錄音或放音程序,所以按鍵掃描程序用于掃描放音鍵和清除鍵是否按下。

3.3 錄音程序

與外部中斷0 相連的按鍵按下,則進入錄音程序。

錄音過程實質上是啟動ADC0809 對模擬音頻信號進行采樣, 并將A/D 轉換結果存儲到外圍數據存儲器中的過程,故其主要包含對ADC0809 進行讀取, 對外圍數據存儲器進行寫入兩個部分。

提取聲音數據時,要注意采樣頻率、采樣位數、存儲容量與存儲時間的關系,通常8 kHz 的采樣頻率和8 位的采樣位數可獲得清晰的語音以及較好的音樂聲,并且占有較少的存儲空間。

以8 kHz 的采樣頻率啟動ADC0809,并讀取上次采樣結果,寫到外擴Flash 存儲器的代碼片段如下:




3.4 放音程序

若P1.0 按下,則執行放音程序。放音過程實質上是讀取外圍數據存儲器中的數據,將其轉化為一定寬度的PWM 波,進行輸出的過程。讀取K9F6408U0A 的子函數如下:

// 函數名稱: READBYTE


產生PWM 波形的步驟:1)設置定時器,產生定時中斷,若采樣率為11.025 kHz, 則設置定時器的定時中斷頻率為11.025 kHz;2)初始化PWM 模塊,產生11.025 kHz 的PWM波形;3)等待定時器中斷,在中斷處理程序中取采樣數據,并設置PWM 占空比寄存器,判斷聲音是否播放完成。若完成,則關定時器中斷,并停止PWM 輸出。

3.5 暫停程序

在錄音過程中,如果需要暫時停止錄音可以按下暫停鍵進入暫停狀態, 再次按下暫停鍵可以返回暫停以前的狀態。

程序中設置了一個變量來指示現在是應該暫停還是恢復。

3.6 存儲器內容清除程序

當存儲器內容已滿,而又需要錄音時,可以按下清除按鍵,清除一定容量的內容,供用戶再次使用。

擦除:以塊為單位進行擦除。代碼片段如下。






4 調試注意事項

系統進行調試時,應注意以下方面:

1)由于在PCM(Pulse Code Modulation)編碼及DPCM 編碼模式下都要采用8 kHz 的采樣率,所以,每次壓縮中斷服務程序必須在不超過125 μs 的時間內完成,因此,壓縮錄音處理程序的代碼必須進行最大可能的優化,以減少程序執行時間,以免采樣和數據處理或信息顯示發生沖突,也可避免在中斷采樣時造成采樣點的丟失。

2)在選擇ADC0809 的時鐘時,經典選擇是640 kHz 左右,最初選擇將單片機的ALE 端4 分頻后作為ADC0809 的時鐘信號,但發現影響了LCD 的輸出顯示。將ALE 改為2 分頻后(用1 M 觸發)作為ADC0809 的時鐘信號,問題得到解決。

3)使用MAX813L 復位芯片替代RC 復位電路,使電路可靠復位,結合軟件監控實現看門狗功能。

4)當采樣頻率為8 kHz,字長為8 位時,存儲語言時長超過15 min,回放語音質量良好。

5 結束語

利用K9F6408U0A 8 MB NAND Flash 存儲器和單片機PWM 功能可為單片機的應用增加語音功能。對聲音采樣數據的存儲方式是用直接的、原始的采樣數據。在具體的實際應用中,可選用內嵌A/D 轉換器的STC12C5A08AD,可省去外擴ADC0809,使電路更簡潔。創新之處在于不使用專用的語音芯片,實現使單片機應用系統語音的存儲與回放。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 久久青草免费线观最新 | 久久成人性色生活片 | 国产欧美综合在线一区二区三区 | 久久香蕉国产线看观看精品yw | 国产精品视频久久久 | 台湾三级 | 国产一区二区三区在线观看影院 | 亚洲欧美日韩久久精品第一区 | 久久精品中文字幕免费 | 18视频免费网址在线观看 | 国产精品欧美亚洲日本综合 | 99精品视频在线免费观看 | 日韩一区二区三区精品 | 热伊人99re久久精品最新地 | 高清三级毛片 | 亚洲精品久久久久久久777 | 国产精品欧美一区二区 | 国产素人在线观看 | 男人女人做刺激视频免费 | 国产九区 | 精品视频久久久久 | 久久久久综合一本久道 | 亚洲欧美卡通成人制服动漫 | 久久精品6 | 综合色久七七综合七七蜜芽 | 性刺激久久久久久久久 | 91视频欧美 | 欧美性夜欢 | 国产手机在线精品 | 女教师的一级毛片 | 免费一区在线观看 | 久久久久久久久久免费视频 | 99在线观看 | 亚洲综合片 | 一级特黄aa大片欧美 | 精品中文字幕在线观看 | 91精品国产综合久久久久久 | 日韩欧美一及在线播放 | 男人扒开腿躁女人j | 免费观看一级一片 | 欧美一级黄视频 |