新聞中心

        EEPW首頁 > 設計應用 > 移動卡拉OK系統

        移動卡拉OK系統

        ——
        作者:華中科技大學電子與信息工程系 羅綺麗 劉應狀 時間:2007-01-26 來源:《世界電子元器件》 收藏

        引言

        在當今這樣一個充滿競爭與挑戰的社會,人們的生活顯得日益緊張而繁忙,同時也對休閑娛樂的要求越來越高。卡拉ok作為一種休閑娛樂項目一直備受人們青睞。但人們在唱歌時往往被局限于狹小的卡拉ok廳內,行動、思維、靈感上都大大受到影響,無法最佳發揮。針對這種現狀,我們設計出一種基于u盤存儲的體積小巧的移動卡拉ok系統。用戶可以在精心設計的環境中隨心所欲地引吭高歌,充分展示自己的激情與靈感,使人與音樂達到完美結合。

        本文引用地址:http://www.104case.com/article/20722.htm


        系統硬件實現

        本系統以at89c51snd1c為核心處理器,采用美國國家半導體公司的lm4832、lmv722和lm4838作為立體聲音頻功率放大器, 以cs4330為音頻dac,k9f5608u0a為存儲器并通過usb接口與主機通信,從而實現歌曲播放與麥克風輸入;同時輔以鍵盤輸入控制和lcd實時顯示。整體硬件結構如圖1所示。

        歌曲播放部分設計

        歌曲播放部分主要實現歌曲播放與麥克風輸入,即實現音樂與用戶歌聲的融合,是系統的核心部分。本系統采用at89c51snd1c作為中央處理器。flash中存儲的mp3文件經解碼器解碼后輸出i2s格式的數字信號,通過數模轉換芯片轉換后輸出左右兩路微弱的音頻模擬信號,分別作為lm4832左右聲道的輸入信號。本設計利用lm4832、lmv722和lm4838的巧妙結合(如圖1所示),對音樂信號和用戶歌聲進行混合和功率放大,達到絕佳的音響效果。

        lm4832是具有i2c接口的數控音質音量的立體聲音頻功率放大器。它的左右聲道、高低音均獨立可調,并具有3d音響效果和軟件可控低功耗休眠模式。此外,它還提供兩路獨立可選的麥克風輸入前置放大與音量控制,這就使得整個系統實現卡拉ok的功能成為可能。但lm4832的音頻輸出與麥克風輸出是獨立的,這就需要對歌曲和用戶歌聲進行前置混合。在此采用lmv722構成的加法運算電路,它具有低噪聲高增益帶寬的特點,其增益帶寬高達10mhz,完全滿足本系統的要求。由于lmv722是單電源供電的,要結合前級輸入信號幅值來設計它的直流偏置電壓值,同時其輸出的兩路混合信號要經過濾波電路濾除其直流偏置后方可作為后級功放輸入。為了達到卡拉ok震撼人心的音響效果,需要對音頻信號進行功率放大,因此選用功率高達2w的lm4838音頻功率放大器。它具有dc音量控制、可選內外部增益、低音加重等特點,并帶有過熱保護電路和低功耗休眠模式(休眠電流為0.7 a)。這里通過螺旋電位器來調節功率大小。lm4838輸出提供揚聲器和耳機兩種接口,而且兩者之間可以方便切換,使得用戶可以隨意改變自己的方式。

        值得注意的是:在整個音頻功放實現過程中,要合理分配每級電路的增益,以免音頻信號失真。 lcd實時顯示部分設計


        lcd用于實時歌詞和狀態顯示。由于windows 系統自帶的字庫有267k之多,因此選用容量為512k的flash w29c040來存放字庫。同時考慮到主處理器ram大小及音頻解碼的連續性,我們選用一片單片機(即從處理器)來專門處理lcd的顯示,它與主處理器之間通過串口(uart)來通信。lcd上的每個漢字是以16 16點陣方式來顯示的,需用32字節來表示;每個ascii字符是以8 16點陣方式顯示,需用16字節來表示。而1首歌曲歌詞文件(*.lrc)一般有1~2k字節左右大小,故采用外擴ram(62256)來存儲歌詞文件。整個lcd顯示部分采用總線結構,編程簡單方便,處理數據游刃有余。

        u盤設計部分

        歌曲的存放與更新采用usb接口。存儲器大小可以自選,作為代表性實驗,本系統采用32m flash k9f5608u0a作存儲器。u盤設計的硬件電路十分簡單,只需將flash和主處理器的一些相應引腳相連即可。u盤設計的重點是usb協議的實現,在后文將會詳細介紹。為了保證系統能正確識別出當前狀態是處于u盤狀態,還是處于歌曲播放狀態,需要設置狀態判定電路,如圖2所示。

        系統軟件設計

        系統軟件主要包括歌曲播放和usb通信程序。系統上電后,根據p3_4口判斷當前所處的狀態而分別執行相應的程序代碼。 歌曲播放軟件設計

        歌曲播放器程序要與鍵盤和lcd配合起來設計。程序流程大概可分為:硬件初始化→獲取u盤中mp3歌曲列表→歌曲播放和lcd顯示。

        硬件初始化主要負責mp3解碼器的時鐘設置、flash復位和lm4832的初始化,這是系統正常工作的關鍵。lm4832上電時,其聲道音量和麥克風音量均為無聲狀態,表1為左聲道的i2c數據流格式真值表,其他類似,具體可參考lm4832芯片資料。因此需設置各狀態初始值,將各初始值均設在0db。另外硬件初始化還包括鍵盤、lcd、uart初始化等工作。

        獲取u盤中的mp3歌曲列表通過查找u盤根目錄區中每個目錄項來實現,同時將歌曲數目通過串口發送給lcd顯示從處理器。

        歌曲播放和lcd顯示是程序的核心部分。主處理器和lcd從處理器之間通過串口進行通信,以達到歌曲播放與歌詞顯示的同步以及鍵盤操作狀態的及時刷新。其程序流程圖如圖3所示。
        mp3解碼器一旦開始工作,就會一直向 cpu請求數據,直至歌曲結束。只有用鍵盤操作才能中斷cpu。鍵盤操作總共4個按鍵(menu/previous/next/play)。menu負責功能切換,共有5項功能:歌曲音量控制、高音調節、低音調節、麥克風音量控制和歌曲選擇。在不同功能下previous和next分別代表不同的含義。在音量控制上為加/減音量,在歌曲選擇上為上一首/下一首歌曲。lcd在顯示歌詞的同時實時顯示鍵盤操作狀態,以便用戶操作。

        usb海量存儲設計

        主處理器讓usb海量存儲設備在批量傳輸方式下工作,這樣共需要3個端點。

        0端點:控制端點。用于控制傳輸,pc機通過與端點0相對應的管道來讀取設備描述符,完成對設備地址的設置,并完成配置。此端點為雙向數據傳輸端點。

        兩個非0端點:批量傳輸端點。這種端點為單向數據傳輸端點,分別為批量輸入端點和批量輸出端點。

        主處理器通過一個端點中斷寄存器(uepint)和pc機通信。如果某個端點完成了相應的操作,就會引發中斷。u盤主程序流程圖如圖4所示。

        當usb設備插入到pc機時,pc機一旦檢測到設備后,就會通過控制管道向默認地址發送usb標準請求,進入設備配置階段,即pc機向設備索取各種描述符的過程,如get descriptor、set address、set configuration等。每當設備收到主機發送的數據后,便會觸發端點中斷寄存器中端點0所代表的位。此時,應讀取端點0的數據緩沖區,對照usb標準設備請求的數據格式,對請求類型進行識別,然后轉向相應的標準請求處理函數。配置完成后,主機便使用在描述符中所選定的命令塊向批量傳輸端點發送控制消息和數據。

        在批量傳輸方式下,有3種類型的數據在usb和設備之間傳送:cbw、csw和普通數據。因此,批量傳輸階段程序設計的任務就是要識別來自批量輸出端點的cbw與數據,進行相應的處理,然后通過批量輸入端點向主機回傳相應的csw或數據。pc機依次向設備發出inquiry、read capacity、ufi mode sense、read format capacity等請求,這幾個命令用于告知pc這個設備的存儲器情況,pc基于此創建一個存儲器設備,即在瀏覽器中生成一個移動盤符,并可以復制、刪除或創建文件等。系統自動將這些命令都轉換成read或write兩種命令,通過usb的read或write命令塊描述符從flash中相應扇區讀取數據,或是將特定長度的數據寫入flash相應簇中。文件在u盤中按fat16協議存儲。由于pc對存儲器的讀寫是按扇區(512字節/扇區)為最小單位進行的,但bulk端點的最大傳輸能力為64字節。因此,主機讀寫操作的數據傳輸過程要分多次才能完成。而寫操作比讀操作更加繁瑣一些,這是因為flash在對某扇區進行寫之前,必須要將其擦除,而擦之前存在已有數據的保存問題。為了加快主機與u盤之間數據傳輸率,讀寫操作的代碼改用匯編來編寫。測試表明,u盤的讀寫速度可達到450kbps。


        結束語

        本系統采用lm4832、lmv722和lm4838的巧妙結合作為立體聲音頻功率放大器,并利用u盤存儲技術來存儲歌曲,使得整個系統不僅擁有優質的視聽效果,而且體積僅有180mm 70mm 100mm這么大。實驗表明,本移動卡拉ok系統不僅具有數控音質音量、立體聲音頻功率放大和超強3d音響效果的特點,而且功耗低、用戶界面友好、便于攜帶。同時它也可作為mp3播放器或u盤使用,功能齊全。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 自治县| 电白县| 彰化市| 内丘县| 洛宁县| 大石桥市| 南川市| 卢湾区| 青神县| 溧水县| 罗江县| 谢通门县| 乐安县| 平原县| 邛崃市| 成都市| 治县。| 林州市| 图们市| 金山区| 娱乐| 庄浪县| 拉萨市| 和林格尔县| 蒲城县| 灌云县| 临沧市| 葫芦岛市| 焦作市| 改则县| 翁牛特旗| 灌阳县| SHOW| 宁国市| 呈贡县| 鲜城| 杭锦后旗| 牡丹江市| 象州县| 望谟县| 南岸区|