鞏學芳,宋曉梅,霍小波,李 楠
(西安工程大學 電子信息學院,陜西 西安 710048)
擴聲系統在日常的課堂教學、學術講座、小型會議中應用廣泛[1].現有擴聲系統按語音傳輸方式可分為有線系統和無線系統.有線擴聲系統語音傳感部分與功率放大部分采用有線連接,而無線擴聲系統則將上述2部分通過無線方式進行互聯通信.因此與有線擴聲系統相比,無線擴聲系統手持移動更方便.文獻[2]設計的無線話筒,未采用單片機等處理器進行控制,運用放大電路進行播放,通過調節磁芯來改變工作頻率,但是硬件外圍器件較多不便調試,操作復雜,增加了成本;文獻[3]采用nRF905芯片[4]進行無線傳輸設計,功耗低,但是工作模式切換方式不便.
本文提出了一種基于FM的無線擴聲系統.該系統利用C8051F340單片機控制FM芯片完成語音信號的無線收發,運用GUI軟件將從USB接收到的語音數據借助計算機的聲卡與功放系統進行放大播放.該系統收發模塊采用一體設計,外擴器件少,集成度高,體積小,便于手持移動,可自動識別切換收發工作模式;同時通過GUI軟件可直觀方便的修改工作頻率,且掉電后頻率值不會改變.
本文提出的基于FM的無線擴聲系統,其系統原理如圖1所示.該無線擴聲系統包括FM發射模塊、FM接收模塊和PC機端的GUI軟件.FM發射模塊利用話筒將語音信號轉換成電信號,經運放放大后再由RDA5820(簡稱RDA)進行FM發射.FM接收模塊利用C8051F340[5-6]對RDA接收到的模擬語音信號進行采樣,并借助USB傳送給計算機的GUI軟件.FM收發模塊均通過C8051F340利用IIC總線來控制RDA的無線語音收發.考慮到FM收發模塊軟硬件相似度高,為簡化設計,降低成本,方便用戶使用,本文將兩模塊集成到一塊PCB板,設計了一個可自動識別、切換工作方式的方案:USB端的VBUS帶電,工作在接收狀態;否則工作在發射狀態.PC機端的GUI軟件是通過LabVIEW實現的,LabVIEW程序通過USB器件和C8051F340單片機進行通信完成頻率的修改,并借助PC機的聲卡和功放系統進行語音的放大播放.發射模塊需3V電池供電,接收模塊通過電腦端USB供電.
該系統由RDA無線收發模塊、運放模塊和微控制器C8051F340單片機模塊組成.
RDA無線收發模塊中,RDA芯片靈敏度高、噪聲小、低功耗、抗干擾能力強、外接組件極少、體積小,非常適合本設計使用.
運放模塊采用最通用最簡易的駐極體話筒,該話筒工作時必須外加偏置.其放大電路,由三極管、電阻、電容組成共集電極,器件少,效果好,便于使用.控制單元采用C8051F340單片機作為微控制器,通過IIC接口來控制與RDA芯片的無線通信.該單片機內置雙線雙向串行總線SMBUS I/O接口,與IIC串行總線兼容,通信速度比較快.系統主要硬件關系連接圖如圖2所示.

圖1 系統原理框圖 圖2 主要器件硬件關系連接圖
圖2中單片機的P0.0和P0.1端口分別作為FM芯片的數據端口和時鐘端口,發射模塊放大電路與FM芯片的聲道相連,接收模塊中,單片機的P2.1端口對FM芯片的輸出進行采樣,將模擬信號轉化成數字信號.發射模塊隨身攜帶,所以用3V電池進行供電,接收模塊借助PC機端進行播放,所以通過電腦的USB接口進行供電.
軟件設計主要實現單片機和USB的初始化設置、信號的接收與發送,LabVIEW調頻界面的設計.系統的軟件設計包括C8051F340單片機程序設計和LabVIEW程序設計兩部分.

(a) 主程序流程圖 (b) 中斷服務程序流程圖3 下位機程序流程圖
C8051F340單片機程序主要由初始化程序、USB驅動函數、無線收/發程序、FLASH擦寫函數組成.初始化程序主要包括單片機初始化和USB初始化程序.程序初始化之后通過辨別VBUS是否帶電來區分收發狀態.若為接收狀態則需要單片機對聲音采樣,將模擬信號轉化成數字信號,然后將采集的數據存儲到數組a和數組b中,a,b數組交替工作,分別完成采樣數據存儲和將數據通過USB端口發送到PC機中的任務.下位機的主程序流程圖如圖3(a)所示,修改頻率是通過中斷實現的,接收狀態時,修改上位機LabVIEW的前面板的頻率會觸發中斷,USB接收中斷,下位機接收上位機的數據,通過下位機程序將輸入的頻率數值轉換成可以直接存儲到寄存器的十六進制數值,再存儲到單片機的FLASH里,修改頻率成功,中斷返回.其中斷服務程序流程如圖3(b)所示.
3.1.1 初始化程序 初始化程序包括C8051F340單片機和USB的初始化.單片機初始化將時鐘設為24MHz,既可以滿足USB工作的需要,又可以滿足IIC通信和RDA5820芯片工作的需要;定時器3配置為以25ms為周期溢出,以檢測SCL低電平超時;設置AD接口為P2.1對聲音進行采樣,模擬信號轉換為數字信號.定時器3的相關設置如下所示:
TMR3CN=0x04;//使能定時器3
TMR3RLL=0xAF;//對定時器3的低8位進行設置
TMR3RLH=0x3C;//對定時器3的低8位進行設置
USB通信主要通過調用USB器件的API函數實現,主要包括USB-Clock-Start()USB時鐘初始化函數,USB-Init()USB初始化函數,USB-Int-Enable() USB使能中斷函數[5].通過設置定時器0來實現對RDA5820芯片的傳輸速率的設置.本文傳輸速度為100KHz,通過TCON(計數器/定時器控制寄存器),TMOD(定時器方式寄存器)和CKCON(時鐘控制寄存器)完成對定時器0的設置.其代碼如下:
TCON=0x10;//使能定時器0
TMOD=0x02;//工作在方式2
CKCON=0x04;//定時器0使用系統時鐘
TH0=0xDB;//定時器0高字節初始值設為0xDB
對定時器0和定時器3的設置保證了IIC的正常通信.

圖4 SMBUS主發送時序圖
3.1.2 無線收/發程序 無線收/發程序主要是通過IIC讀寫函數來實現對RDA芯片的相關寄存器進行設置.本文設計的IIC函數是通過內置在單片機上的雙線雙向串行總線SMBUS I/O接口實現的,使用P0.0作為IIC通信的數據接口,P0.1作為IIC通信的時鐘接口.IIC正常通信需要通過一系列的中斷實現,其中寫函數(即SMBUS主發送) 時序圖如圖4所示.定時器0(在初始化程序中已作說明)和定時器3的設置對IIC的正常通信也很重要.TMR3CN定時器3的中斷服務程序函數如下所示:
TMR3CN=TMR3CN & 0x3F;//定時器3的中斷標志位清0
SMB0CF=SMB0CF & 0x7F;//禁止IIC
SMB0CF=SMB0CF | 0x80;//使能IIC
圖4的時序圖只給出了寫2個字節的傳輸時序,本設計中寫函數是5個字節,只需將時序圖延續3個發送數據時序即可.根據圖4的時序圖編寫寫函數,程序代碼簡寫如下:
while(SMB0CF & 0x20);//檢測IIC是否空閑
STA=1;//STA位置1產生起始條件
SMB0DAT=0x22;//從地址和讀方向位發送給SMB0DAT數據寄存器,觸發中斷.
IIC的中斷服務程序主要程序語句如下:
switch(SMB0CN & 0xFC)//判別SMBUS的控制寄存器SMB0CN的值
case 0xE0:…//產生起始條件
switch(SMB0CN & 0xFE)//判別SMBUS的控制寄存器SMB0CN的值
case 0xC0:…//產生起始條件
case 0xC2:…//收到一個ACK
使用SMBUS時序編寫IIC函數不同于軟件模擬IIC[7],不必根據不同的時鐘頻率編寫精確的延時函數,具有很強的移植性.
3.1.3 Flash擦寫函數及USB驅動函數 C8051F340內部可編程的Flash存儲器具有非易失性的特點,所以Flash擦寫函數適用于頻率值的存儲,掉電后,之前設置的頻率會保存在Flash存儲器中,方便下次直接收/發.本程序中Flash存儲器只需讀寫2個字節的數據,在0x6000地址中存儲的是頻率值的高8位,0x6001地址存儲的是頻率值的低8位.USB驅動函數,調用Block-Read()函數[5]將上位機中的數據存儲到數組中,經過函數處理轉換成 Flash可寫的數據,RDA讀取Flash數據,完成收/發頻率的修改,同時將數據存儲到Flash寄存器中.
LabVIEW程序的主要功能是完成用戶圖形界面和基于USB主機通信.本設計中使用圖形化界面前面板,用戶在空白框里修改頻率,點擊確定即可.程序面板主要包括頻率設置模塊,語音采集與播放模塊,LabVIEW軟件和C8051F340單片機.設置頻率模塊,前面板輸入的電臺頻率通過數學計算和數組轉換成單片機可識別的數據,利用中斷函數SI-wirte()[5]寫到單片機中.聲音信號采集與播放模塊,采樣頻率設為48MHz,緩沖數據設為1800,每次播放數據1800.準備播放的1800個數據經SI-Read()函數被PC機讀取,進行播放和縮放信號,觀察其波形和頻譜.
通過2個實驗驗證所設計系統的可行性.在PC機LabVIEW的前面板設置發射頻率和接收頻率均為97.4MHz,觀察PC機的波形及語音播放效果.具體實驗數據如下所示:
實驗一驗證收發頻率是否可修改及通信是否正常.
圖5為工作在97.4MHz頻率下的實驗結果.從圖5可看出信號流經探針3時上機處的狀態探針1,2中的值為0,且探針3中有值表明信號流經探針1,2時通信正常,即單片機和PC機連接正確,探針2中的值為0,表明SI-Open()函數打開USB器件成功.探針3中的值為974,是輸入頻率值的10倍,這是由于在LabVIEW程序中將輸入值乘了10倍,因此表明輸入頻率97.4MHz的成功.探針4中的數值是SI-Read()函數[5]讀取到的語音數據值,探針4中有數據說明PC機可以正常播送單片機采樣到的語音信號.探針1,2,3,4中數值正常也表明了通信正常.

圖5 實驗一結果的程序面板

圖6 實驗二結果的前面板
實驗二驗證接收語音放大播放效果.
圖6為工作在97.4MHz頻率下的實驗結果的前面板.圖中2個USB檢測燈被點亮表明USB連接成功并被成功打開.波形沒有失真,表明語音信號流暢無噪聲,與預期效果一致.本次實驗接收端在發射端20米范圍內,所以信號的收/發比較清晰,幾乎沒有噪聲,收發信號時也沒有延遲,實驗結果比較滿意.
本文設計的基于FM的無線擴聲系統,通過C8051F340單片機控制RDA5820芯片,實現了語音信號的無線收發,收發模塊一體設計,節約成本,通過連接VBUS即可辨別接收/發射模式,工作模式切換簡單;接收模塊與PC機相連,借助PC機的擴聲系統,音效更好;可在不同場合自由設置工作頻率以避免公共頻道的干擾,頻率修改借助GUI軟件進行,操作簡單方便.經過實驗驗證,該系統是合理可行的.
參考文獻:
[1] 段海濤,冀燕麗,王敬.多媒體教室擴聲系統探討[J].現代教育技術,2013,23(3):59-63.
[2] 陳元棋.教學與舞臺兩用無線話筒的設計與調試[J].實驗室研究與探索,1995(1):42-47.
[3] 肖志勇,楊小玲,李光泉.基于nRF905芯片的無線傳輸設計與實現[J].計算機與現代化,2005 (9):121-126.
[4] 郝妍娜,洪志良.基于MCU和nRF905的低功耗遠距離無線傳輸系統[J].電子技術應用,2007(8):44-46.
[5] 朱磊,劉東.C8051F340與LabVIEW基于API的USB通信[J].單片機與嵌入式系統應用,2007(1):35-37.
[6] 陸敏敏,李明.基于C8051F340船舶模擬器采集卡設計[J].電子測量技術,2011,34(6):91-94.
[7] 徐偉,劉建成.基于模擬IIC總線的電壓測量系統[J].南京信息工程大學學報:自然科學版,2011,3(1):91-96.