《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于AT89S52和K9F6408U0A的語音數(shù)字系統(tǒng)設(shè)計
基于AT89S52和K9F6408U0A的語音數(shù)字系統(tǒng)設(shè)計
電子設(shè)計工程
鐘志萬
摘要:  利用K9F6408UOA 8 MB NAND Flash存儲器和單片機(jī)PWM功能可為單片機(jī)的應(yīng)用增加語音功能,。對聲音采樣數(shù)據(jù)的存儲方式是用直接的,、原始的采樣數(shù)據(jù),。在具體的實際應(yīng)用中,,可選用內(nèi)嵌A/D轉(zhuǎn)換器的STC12C5A08AD,,可省去外擴(kuò)ADC0809,,使電路更簡潔,。創(chuàng)新之處在于不使用專用的語音芯片,實現(xiàn)使單片機(jī)應(yīng)用系統(tǒng)語音的存儲與回放,。
Abstract:
Key words :

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

  1 方案論證

  本設(shè)計以數(shù)字化信號的形式對音頻信號進(jìn)行處理,,有以下3種方案可供選擇:

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

  2)利用DSP對采樣信號進(jìn)行處理,。DSP是專門為快速實現(xiàn)各種信號處理算法而設(shè)計的,、具有特殊結(jié)構(gòu)的微處理器,其處理速度遠(yuǎn)遠(yuǎn)超過一般的CPU,。

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

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

  2 硬件設(shè)計

  圖1為系統(tǒng)硬件結(jié)構(gòu)圖。音頻信號通過拾音器將聲音信號轉(zhuǎn)換為可以處理的電信號,,前置放大電路用來對拾音器的輸出進(jìn)行放大,,與A/D轉(zhuǎn)換電路匹配,A/D轉(zhuǎn)換電路實現(xiàn)對模擬信號的編碼,。微處理器是系統(tǒng)的核心,它用來對數(shù)字化音頻信號進(jìn)行處理和存儲,,協(xié)調(diào)系統(tǒng)各個部分的工作,,輸出PWM波來驅(qū)動輸出電路。

系統(tǒng)硬件結(jié)構(gòu)圖

  2.1 單片機(jī)

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

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

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

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

  2.3 A/D轉(zhuǎn)換電路

  A/D轉(zhuǎn)換電路由A/D轉(zhuǎn)換器ADC0809與系統(tǒng)處理器AT89S52組成,主要實現(xiàn)對放大后的聲音信號進(jìn)行采樣,。ADC0809與AT89S52的電路連接如圖2所示,。

ADC0809與AT89S52的電路連接

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

  2.4 聲音編碼存儲電路

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

 

AT89S52單片機(jī)與K9F6408UOA存儲接口電路

  2.5 PWM輸出電路

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

PWM輸出電路

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

  2.6 音頻功率放大電路

  為了使系統(tǒng)有足夠大的輸出,,驅(qū)動揚(yáng)聲器發(fā)聲,,便于調(diào)節(jié)音量,在PWM輸出電路后使用了音頻信號功率放大器LM386構(gòu)建功率放大電路,,如圖5所示,。

音頻功率放大電路

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

  3 系統(tǒng)軟件設(shè)計

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

系統(tǒng)程序流程

  3.1 系統(tǒng)初始化程序

  系統(tǒng)初始化程序主要對單片機(jī)中斷,、定時器、LCD初始化,、鍵盤,、PWM,、K9F6408UOA存儲接口,以及ADC0809地址,、程序中要用到的各個變量進(jìn)行設(shè)置,。

  3.2 按鍵掃描程序

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

  3.3 錄音程序

  與外部中斷O相連的按鍵按下,則進(jìn)入錄音程序,。

[next]

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

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

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

程序

  3.4 放音程序

  若P1.O按下,,則執(zhí)行放音程序。放音過程實質(zhì)上是讀取外圍數(shù)據(jù)存儲器中的數(shù)據(jù),,將其轉(zhuǎn)化為一定寬度的PWM波,,進(jìn)行輸出的過程,。讀取K9F6408UOA的子函數(shù)如下:

程序

程序

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

  3.5 暫停程序

  在錄音過程中,,如果需要暫時停止錄音可以按下暫停鍵進(jìn)入暫停狀態(tài),再次按下暫停鍵可以返回暫停以前的狀態(tài),。程序中設(shè)置了一個變量來指示現(xiàn)在是應(yīng)該暫停還是恢復(fù),。

  3.6 存儲器內(nèi)容清除程序

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

  擦除:以塊為單位進(jìn)行擦除,。代碼片段如下。

程序

程序

  4 調(diào)試注意事項

  系統(tǒng)進(jìn)行調(diào)試時,,應(yīng)注意以下方面:

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

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

  3)使用MAX813L復(fù)位芯片替代RC復(fù)位電路,,使電路可靠復(fù)位.結(jié)合軟件監(jiān)控實現(xiàn)看門狗功能,。

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

  5 結(jié)束語

  利用K9F6408UOA 8 MB NAND Flash存儲器和單片機(jī)PWM功能可為單片機(jī)的應(yīng)用增加語音功能,。對聲音采樣數(shù)據(jù)的存儲方式是用直接的,、原始的采樣數(shù)據(jù)。在具體的實際應(yīng)用中,,可選用內(nèi)嵌A/D轉(zhuǎn)換器的STC12C5A08AD,,可省去外擴(kuò)ADC0809,使電路更簡潔,。創(chuàng)新之處在于不使用專用的語音芯片,,實現(xiàn)使單片機(jī)應(yīng)用系統(tǒng)語音的存儲與回放,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。