版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一章 引言1.1 選題意義音識(shí)別以語(yǔ)音為研究對(duì)象,它是語(yǔ)音信號(hào)處理的一個(gè)重要研究方向,是模式識(shí)別的一個(gè)分支,涉及到生理學(xué)、心理學(xué)、語(yǔ)言學(xué)、計(jì)算機(jī)科學(xué),以及信號(hào)處理等諸多領(lǐng)域,其最終目的是實(shí)現(xiàn)人與機(jī)器進(jìn)行自然語(yǔ)言通信,用語(yǔ)言操縱計(jì)算機(jī)。 語(yǔ)音識(shí)別系統(tǒng)的分類(lèi)方式及依據(jù)是根據(jù)對(duì)說(shuō)話人說(shuō)話方式的要求,可以分為孤立字(詞) 語(yǔ)音識(shí)別系統(tǒng),連接字語(yǔ)音識(shí)別系統(tǒng),以及連續(xù)語(yǔ)音識(shí)別系統(tǒng)。 進(jìn)一步分為兩個(gè)方向:一是根據(jù)對(duì)說(shuō)話人的依賴(lài)程度可以分為特定人和非特定人語(yǔ)音識(shí)別系統(tǒng);二是根據(jù)詞匯量大小,可以分為小詞匯量、中等詞匯量、大詞匯量,以及無(wú)限詞匯量語(yǔ)音識(shí)別系統(tǒng)。 不同的語(yǔ)音識(shí)別系統(tǒng),雖然具體實(shí)現(xiàn)細(xì)節(jié)有所不同,但所
2、采用的基本技術(shù)相似,一個(gè)典型語(yǔ)音識(shí)別系統(tǒng)的實(shí)現(xiàn)過(guò)程如圖1 所示。 圖1目前,在智能語(yǔ)音玩具的研究中,語(yǔ)音這種人類(lèi)最簡(jiǎn)單、最自然、最方便和最有效的交換信息的方式,在玩具上的應(yīng)用還較少,顯然,在玩具系統(tǒng)上增加語(yǔ)音接口,用語(yǔ)音代替鍵盤(pán)輸入,并進(jìn)行人機(jī)對(duì)話,讓玩具能聽(tīng)會(huì)說(shuō),不僅十分誘人,而且具有廣泛的應(yīng)用前景,同時(shí),也是玩具智能化的重要標(biāo)志之一.而語(yǔ)音識(shí)別技術(shù)是近年來(lái)十分活躍的研究領(lǐng)域,語(yǔ)音識(shí)別系統(tǒng)的實(shí)用化研究是語(yǔ)音識(shí)別研究的一個(gè)主要方向。本文設(shè)計(jì)了一款智能語(yǔ)音交互式玩具系統(tǒng),該玩具可以實(shí)現(xiàn)識(shí)別語(yǔ)音命令,完成相應(yīng)的背唐詩(shī)、做算術(shù)題、唱歌等功能, 融合了較高的娛樂(lè)性, 也是未來(lái)智能語(yǔ)音玩具的一個(gè)發(fā)展方向
3、。1.2 當(dāng)今應(yīng)用領(lǐng)域智能語(yǔ)音拿玩具的發(fā)展趨勢(shì)融合類(lèi)個(gè)人電子終端發(fā)展到今天,我們已經(jīng)看到pmp、手持游戲機(jī)、umpc、pda,以及智能手機(jī)的各顯神通。但是在另一個(gè)領(lǐng)域玩具領(lǐng)域,智能玩具正在悄悄興起,成為新一類(lèi)的融合電子終端,代表著世界玩具業(yè)發(fā)展的趨勢(shì)。在香港的玩具出口量中傳統(tǒng)玩具包括洋娃娃的出口數(shù)字出現(xiàn)負(fù)增長(zhǎng),其占整體出口的比重,由2005年的約七成下跌至2007年的約五成,而非傳統(tǒng)的智能玩具的比重,則由2005年的約27%上升至2007年的48%。說(shuō)明互動(dòng)性、高科技玩具已漸漸成為發(fā)展主流,電腦技術(shù)與玩具結(jié)合已成為創(chuàng)新的方向。去年,高科技玩具在美國(guó)玩具市場(chǎng)上的銷(xiāo)售額已達(dá)到100億美元,增長(zhǎng)速度
4、遠(yuǎn)遠(yuǎn)高于傳統(tǒng)玩具。2007年世界智能玩具銷(xiāo)售收入達(dá)到23.5億美元。 in-stat預(yù)計(jì)到2012年這個(gè)數(shù)字將增長(zhǎng)到90億美元。智能玩具市場(chǎng)相比其他融合終端絕對(duì)是新興市場(chǎng),因?yàn)橹悄芡婢呤腔诂F(xiàn)成的主流融合終端上的技術(shù)而產(chǎn)生的創(chuàng)新,相對(duì)成本較低,不僅可以給投資者提供較好的投資回報(bào),而且還有很好的市場(chǎng)反應(yīng)。同時(shí),中國(guó)內(nèi)地玩具人均消費(fèi)與歐美國(guó)家差距巨大,存在著很大的智能玩具市場(chǎng)空間。1.3 本課題主要研究?jī)?nèi)容智能語(yǔ)音玩具是現(xiàn)代玩具發(fā)展的一個(gè)必然趨勢(shì),其市場(chǎng)上的主要功能可以分為語(yǔ)音對(duì)話,即是由人與玩具進(jìn)行對(duì)話模式,在有限的范圍能,語(yǔ)音玩具能自動(dòng)進(jìn)行回答或者提問(wèn),根據(jù)芯片的語(yǔ)言編寫(xiě)不同,回答和提問(wèn)的范圍
5、也不同。 1.3.1 玩具設(shè)計(jì)要求 1、基本要求 (1)、簡(jiǎn)單語(yǔ)音對(duì)話交流 (2)、語(yǔ)音點(diǎn)播: 、唱兒歌 、朗誦古詩(shī) 、說(shuō)英語(yǔ) 、講科普知識(shí) 、講笑話本項(xiàng)目志在開(kāi)發(fā)一個(gè)將語(yǔ)音識(shí)別技術(shù),傳感器技術(shù)等技術(shù)引用其中,并集教育性、娛樂(lè)性和互動(dòng)性于一體的智能玩具控制系統(tǒng)。 第二章 單片機(jī)及相關(guān)器件介紹2.1 stc10l08xe 單片機(jī)介紹 2.1.1 stc11/10xx系列單片機(jī)簡(jiǎn)介stc11loxx系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘機(jī)器周期(it)的單片機(jī),是高速低功耗超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成高可靠復(fù)位電路,針對(duì)高速通信,智能控制,
6、強(qiáng)干擾場(chǎng)合。11/loxx系列單片機(jī)的定時(shí)器0/定時(shí)器1串行口與傳統(tǒng)8051兼容,增加了獨(dú)立波特率發(fā)牛器,省去了定時(shí)器2。傳統(tǒng)8051的111條指令執(zhí)行速度全面提速,最快的指令快24倍,最慢的指令快3倍。v 增強(qiáng)型8051 cpu,it,單時(shí)鐘機(jī)器周期,指令代碼完全兼容傳統(tǒng)8051。v 工作電壓: stciifxx系列工作電壓:5.5v - 4.1v3.7v (5v單片機(jī)); stciilxx系列工作電壓:3.6v - 2.4v2.1v (3v單片機(jī)); stciofxx系列工作電壓:5.5v - 3.8v3.3v (5v單片機(jī)); stciolxx系列工作電壓:3.6v - 2.4v2.1v
7、 (3v單片機(jī))。v 工作頻率范圍:035mhz,相當(dāng)于普通8051的0420mhz。v stciif/lxx系列單斤機(jī)用戶應(yīng)用程序空間: 1/2/3/4/5/6/8/16/20/3 2/40/4 8/5 2/5 6/60/62k字節(jié)。 stciof/lxx系列單片機(jī)用戶應(yīng)用程序空間:4k6k8k10k12k14k字節(jié)。v stcllxx系列單片機(jī):片上集成1280字節(jié)或256字節(jié)ram; stcllxx系列單片機(jī):片上集成512字節(jié)或256字節(jié)ram。v 通用i/o口(36/40/12/14/16個(gè))每個(gè)1/0口驅(qū)動(dòng)能力均可達(dá)到20ma,復(fù)位后為 (1)、準(zhǔn)雙向口弱上拉(普通8051傳統(tǒng)1/
8、0口); (2)、可設(shè)置成四種模式: 、準(zhǔn)雙向口弱上拉; 、強(qiáng)推挽強(qiáng)上拉; 、僅為輸入高阻; 、開(kāi)漏 。 v isp(在系統(tǒng)可編程)iap(在應(yīng)用可編程),無(wú)需專(zhuān)用編程器,無(wú)需專(zhuān)用仿真器。 可通過(guò)串口(rxd/p3.0,txd/p3.1)直接下載用戶程序,數(shù)秒即可完成一片。v 有eeprom功能。v 看門(mén)狗。v 內(nèi)部集成max810專(zhuān)用復(fù)位電路(晶體頻率在24mhz以下時(shí),要選擇高的復(fù)位門(mén) 檻電壓,如4.1v以下復(fù)位,晶體頻率在12mhz以下時(shí),可選擇低的復(fù)位門(mén)檻電壓, 如3.7v以下復(fù)位,復(fù)位腳接ik電阻到地)。v 內(nèi)置一個(gè)對(duì)內(nèi)部vcc迸行掉電檢測(cè)的掉電檢測(cè)電路,可設(shè)置為中斷或復(fù)位。5v單片
9、 機(jī)掉電檢測(cè)門(mén)檻電壓為4.iv/3. 7v附近,3.3v單片機(jī)掉電檢測(cè)門(mén)檻電壓為2.4v附近。v 時(shí)鐘源:外部高精度晶體時(shí)鐘,內(nèi)部r/c振蕩器。用戶在下載用戶程序時(shí),可選擇是使用內(nèi)部r/c振蕩器還是外部晶體時(shí)鐘; 常溫下內(nèi)部r/c振蕩器頻率為:4mhz8mhz;精度要求不高時(shí),可選擇使用內(nèi)部時(shí)鐘,但因?yàn)橛兄圃煺`差和溫漂,以實(shí)際測(cè)試為準(zhǔn)。v 共2個(gè)16位定時(shí)器(與傳統(tǒng)8051兼容的定時(shí)器計(jì)數(shù)器,16位定時(shí)器to和t1), stcllxx/; stcloxx全系列都有1個(gè)獨(dú)立波特率發(fā)牛器(故小必用t2做為波特率發(fā)牛器,詳 細(xì)使用方法請(qǐng)參考獨(dú)立波特率發(fā)牛器做串口通訊的相關(guān)使用說(shuō)明及示例程序)。v 3
10、個(gè)時(shí)鐘輸出口,可由to的溢出在p3. 4/to輸出時(shí)鐘,可由tl的溢出在p3. 5/ti 輸出時(shí)鐘,獨(dú)立波特率發(fā)生器可以在pl.0口輸出時(shí)鐘(部分型號(hào)無(wú)獨(dú)立波特率發(fā)牛器,詳情請(qǐng)參閱單片機(jī)選型一覽表)。v 外部中斷i/o口5路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷, power down模式可 v 由外部中斷喚醒,into/p3.2,intl/p3.3,int/to/p3.4,int/t1/p3.5, intint/rxd/p3.0 r或int/rxd/p1.6)。v powct、down(掉電)模式可由內(nèi)部掉電喚醒之用定時(shí)器喚醒(stcllxx系列有 此功能, stcloxx無(wú)此功能),也口j由上
11、而提到的外部中斷口中斷喚西星,由 于int/rxd支持卜降沿中斷,故也可支持遠(yuǎn)程通信喚醒。v 一個(gè)獨(dú)立的通用全雙工異步串行口(uart),做主機(jī)時(shí)可以當(dāng)2個(gè)串口便用 rxd/p3.0,txd/p3.1可以切換到rxd/pi.6,txd/pi.7,通過(guò)將串口在p3口和pl口之間來(lái)回切換,將1個(gè)串口作為2個(gè)主串口分時(shí)復(fù)用,可低成本實(shí)現(xiàn)2個(gè)串口,當(dāng)然有其局限性。v 工作溫度范圍:-40 - +85(工業(yè)級(jí))0- 75(商業(yè)級(jí))。v 封裝:sop16/dip16/dip18/sop20/dip20/lssop20/pdip-40/lqfp-44/plcc-44(暫時(shí)盡量不要選plcc44) 。sop1
12、6/dip16有12個(gè)1/0口,dip18有14個(gè)1/0口,sop20/pdip20/lssop20有16個(gè)1/0口 ,lqfp44有40個(gè)1/0口,pdip40/qfn40 (5mmx5mm)有36個(gè)1/0口。 2.1.2 stc11/10xx系列單片機(jī)的內(nèi)部結(jié)構(gòu)stc11loxx系列單片機(jī)的內(nèi)部結(jié)構(gòu)框圖如圖2-1所示。stc11loxx單片機(jī)中包含中央處理器(cpu)、程序存儲(chǔ)器(flash)、數(shù)據(jù)存儲(chǔ)器(sram)、定時(shí)計(jì)數(shù)器、uart串口、i/o接口、看門(mén)狗及片內(nèi)rjc振蕩器和外部晶體振蕩電路等模塊。stc11loxx系列單片機(jī)幾乎包含了數(shù)據(jù)采集和控制中所需的所有單元模塊,可稱(chēng)得上一個(gè)
13、片上系統(tǒng)。2.2 主要器件介紹ld3320ld3320芯片(圖2-2)是一款“語(yǔ)音識(shí)別”專(zhuān)用芯片,由icroute公司設(shè)計(jì)生產(chǎn)。該芯片集成了語(yǔ)音識(shí)別處理器和一些外部電路,包括ad、da轉(zhuǎn)換器、麥克風(fēng)接口、聲音輸出接口等。本芯片在設(shè)計(jì)上注重節(jié)能與高效,不需要外接任何的輔助芯片如flash、ram等,直接集成在現(xiàn)有的產(chǎn)品中即可以實(shí)現(xiàn)語(yǔ)音識(shí)別聲控人機(jī)對(duì)話功能。并且,識(shí)別的關(guān)鍵詞語(yǔ)列表是可以任意動(dòng)態(tài)編輯的。 ( 圖2-2 ) 2.2.1 功能介紹l 通過(guò)icroute公司特有的快速而穩(wěn)定的優(yōu)化算法,完成非特定人語(yǔ)音識(shí)別。不需要用戶事先訓(xùn)練和錄音,識(shí)別準(zhǔn)確率95%。l 不需要外接任何輔助的flash芯片
14、,ram芯片和ad芯片,就可以完成語(yǔ)音識(shí)別功能。真正提供了單芯片語(yǔ)音識(shí)別解決方案。l 每次識(shí)別最多可以設(shè)置50項(xiàng)候選識(shí)別句,每個(gè)識(shí)別句可以是單字,詞組或短句,長(zhǎng)度為不超過(guò)10個(gè)漢字或者79個(gè)字節(jié)的拼音串。另一方面,識(shí)別句內(nèi)容可以動(dòng)態(tài)編輯修改,因此可由一個(gè)系統(tǒng)支持多種場(chǎng)景。l 芯片內(nèi)部已經(jīng)準(zhǔn)備了16位a/d轉(zhuǎn)換器、16位d/a轉(zhuǎn)換器和功放電路,麥克風(fēng)、立體聲耳機(jī)和單聲道喇叭可以很方便地和芯片管腳連接。立體聲耳機(jī)接口的輸幽功率為20mw,而喇叭接口的輸出功率為550mw,能產(chǎn)生清晰響亮的聲音。l 支持并行和串行接口,串行方式可以簡(jiǎn)化與其他模塊的連接。l 可設(shè)置為休眠狀態(tài),而且可以方便地激活。l 支
15、持mp3播放功能,無(wú)需外圍輔助器件,主控mcu將mp3數(shù)據(jù)依次送入ld3320芯片內(nèi)部就可以從芯片的相應(yīng)pin輸出聲音。產(chǎn)品設(shè)計(jì)可以選擇從立體聲的耳機(jī)或者單聲道喇叭來(lái)獲得聲音輸出。支持mpegi(iso/iec11172-3), mpeg2(iso/iec13818-3)和mpeg 2.5 layer 3等格式。l 工作供電為3. 3v,如果用于便攜式系統(tǒng),使用3節(jié)aa電池就可以滿足供電需要。2.2.2 電路說(shuō)明 以下為內(nèi)部電路的簡(jiǎn)單邏輯圖(圖23): (圖23)詳細(xì)說(shuō)明如下:電壓要求:vdd 數(shù)字電路用電源輸入 3. 0 v - 3. 3 vvddio 數(shù)字1/0電路用電源輸入 1. 65
16、v - vddvdda 模擬電路用電源輸入 3. 0 v - 4. 0 v建議用戶可以用統(tǒng)一的3. 3v電壓輸入以簡(jiǎn)化設(shè)計(jì)。數(shù)字電壓和模擬電壓進(jìn)行隔離可以使得芯片有更好的效果。芯片管腳輸入電壓范圍:高電壓(邏輯“1”):0. 7;lcvddio'vddio 低電壓(邏輯“0”):0'0. 3vddio因此,開(kāi)發(fā)者需要保證自己使用的主控mcu同樣工作在3.3v,保證主控mcu向ld3320的管腳輸出的高電壓不超過(guò)3.3v。v 時(shí)鐘(clock)芯片必須連接外部時(shí)鐘,可接受的頻率范圍是4-48mhz;而芯片內(nèi)部還有pll頻率合成器,可產(chǎn)生特定的頻率供內(nèi)部模塊使用。v 復(fù)位對(duì)芯片的復(fù)
17、位信號(hào)(rstb:1:)必須在vdd/vdda/vddio都穩(wěn)定后進(jìn)行。無(wú)論芯片正在進(jìn)行何種運(yùn)算,復(fù)位信號(hào)都可以使它恢復(fù)初始狀態(tài),并使各寄存器復(fù)位。如果沒(méi)有后續(xù)的指令(對(duì)寄存器的設(shè)置),復(fù)位后芯片將進(jìn)入休眠狀態(tài)。此后,一個(gè)csb:1:信號(hào)就可以重新激活芯片進(jìn)入工作狀態(tài)。v 并行接口本芯片可通過(guò)并行方式和外部主cpu連接,此時(shí)使用8根數(shù)據(jù)線(po-p7),4個(gè)控制信號(hào)(wrb#,rdb#,cs冰,ao),以及一個(gè)中斷返回信號(hào)(intb#)。v 串行接口串行接口通過(guò)spi協(xié)議和外部主cpu連接,首先要將md接高電平,而將(spis:1:)接地。此時(shí)只使用4個(gè)管腳:片選(scs冰)、spi時(shí)鐘(sd
18、ck)、spi輸入(sdi)和spi輸出(sdo)。v 寄存器對(duì)芯片的設(shè)置和命令,包括傳送數(shù)據(jù)和接受數(shù)據(jù),都是通過(guò)對(duì)寄存器的操作來(lái)完成的。例如進(jìn)行語(yǔ)音識(shí)別時(shí),設(shè)置識(shí)別的關(guān)鍵詞語(yǔ)列表,設(shè)定芯片的識(shí)別模式,諛別完成后獲得識(shí)別結(jié)果都是通過(guò)讀寫(xiě)寄存器來(lái)完成。播放聲音時(shí),就是將mp3格式的數(shù)據(jù)循環(huán)放入fifo對(duì)應(yīng)的寄存器。(識(shí)別結(jié)果是通過(guò)寄存器返回識(shí)別出的關(guān)鍵詞語(yǔ)在關(guān)鍵詞語(yǔ)列表中的排列序號(hào)index數(shù)值,該index數(shù)值是在設(shè)置關(guān)鍵詞語(yǔ)列表時(shí)指定)。v 喇叭音量的外部控制除了特定寄存器來(lái)控制音量以外,芯片外部的電路可以控制喇叭的音量增益。使用的是epi、ep2、ep3對(duì)應(yīng)的管腳。2.2.3 管腳分布圖(
19、圖24)(圖24) 第3節(jié) 系統(tǒng)軟件設(shè)計(jì)3.1 軟件開(kāi)發(fā)環(huán)境3.1.1 source insight 介紹source insight是一個(gè)面向項(xiàng)目開(kāi)發(fā)的程序編輯器和代碼瀏覽器,它擁有內(nèi)置的對(duì)c/c+, c#和java等程序的分析。source insight能分析你的原代碼并在你工作的同時(shí)動(dòng)態(tài)維護(hù)它自己的符號(hào)數(shù)據(jù)庫(kù),并自動(dòng)為你顯示有用的上下文信息。 source insight不僅僅是一個(gè)強(qiáng)大的程序編輯器,它還能顯示reference trees,class inheritance diagrams和call trees。source insight提供了最快速的對(duì)源代碼的導(dǎo)航和任何程序編輯
20、器的源信息。 source insight提供了快速和革新的訪問(wèn)源代碼和源信息的能力。與眾多其它編輯器產(chǎn)品不同,source insight能在你編輯的同時(shí)分析你的源代碼,為你提供實(shí)用的信息并立即進(jìn)行分析。3.1.2 source insight 技術(shù)特點(diǎn)source insight是如今最好用的語(yǔ)言編輯器,支持幾乎所有的語(yǔ)言, 如c、c+、asm、pas、asp、html等常見(jiàn)的,還支持自己定義關(guān)鍵字,如果您 是一個(gè)程序員或者網(wǎng)頁(yè)制作人,這個(gè)軟件對(duì)您都是有幫助的! source insight為您提供了可快速訪問(wèn)源代碼和源信息的功能。source insight相較其它的編輯器產(chǎn)品來(lái)說(shuō),還可
21、以幫您分析源代碼,并在您編輯的同時(shí)立刻提供給您有用的信息和分析。 source insight自動(dòng)創(chuàng)建并維護(hù)它自己高性能的符號(hào)數(shù)據(jù)庫(kù),包括函數(shù)、method、全局變量、結(jié)構(gòu)、類(lèi)和工程源文件里定義的其它類(lèi)型的符號(hào)。source insight 可以迅速地更新您的文件信息,即使在您編輯代碼的時(shí)候。而且符號(hào)數(shù)據(jù)庫(kù)的符號(hào)可以自動(dòng)創(chuàng)建到您的工程文件中。 而是insight 4.0,關(guān)于insight,網(wǎng)上對(duì)此軟件的簡(jiǎn)介是: insight 是一個(gè)小巧實(shí)用的多標(biāo)簽的文檔編輯器,可替代系統(tǒng)自帶的記事本軟件。 3.2 程序流程圖(圖31)程序流程圖(圖31)3.3 軟件功能代碼 #ifndef flashde
22、f_h #define flashdef_hsbit flash_cs = p1 7;sbit flash_clk = p1 3;sbit flash_io0 = p1 2;sbit flash_io1 = p1 6;sbit flash_io2 = p1 5;sbit flash_io3= p1 4;sbit flash_wp = p1 5;sbit flash_hold = p1 4;sbit flash_do = p1 6;sbit flash_dio = p1 2;#define w25p_fastreaddata 0x0bvoid io_send_byte(uint8 dataout
23、);#endifsbitp10= p10;sbitp11 =p11;sbitp12=p12;sbitp13=p13;sbitp14=p14;sbitp15=p15;sbitp16=p16;sbitp17=p17;sbitp30=p30;sbitp31=p31;sbitp32=p32;sbitp33=p33;sbitp34=p34;sbitp35=p35;sbitp36=p36;sbitp37=p37;sbitp20=p20;sbitp21=p21;sbitp22=p22;sbitp23=p23;sbitp24=p24;sbitp25=p25;sbitp26=p26;sbitp27=p27;sb
24、itp00=p00;sbitp01=p01;sbitp02=p02;sbitp03=p03;sbitp04=p04;sbitp05=p05;sbitp06=p06;sbitp07=p07;sbitp40=p40;sbitp41=p41;sbitp42=p42;sbitp43=p43;sbitp44=p44;sbitp45=p45;sbitp46=p46;sbitp47=p47;#include "stc10l08xe.h"#include "ldchip.h"#include "flashdef.h"/#include "s
25、erial.h"sbit rstb= p33;uint32 nmp3startpos= 0;uint32 nmp3size= 0;uint32 nmp3pos= 0;uint32 ncurmp3pos= 0;uint8 idata nld_mode = ld_mode_idle;uint8 bmp3play= 0;uint8 idata ucregval;uint8 idata uchighint;uint8 idata uclowint;uint8 idata ucstatus;uint8 idata ucspvol= 15; / max= 15 min= 0extern uint
26、8 idata nasrstatus;extern uint8 idata nint0flag;void processint0();void ld_init_common() bmp3play = 0;ld_readreg(0x06); /* soft reset. */ld_writereg(0x1f, 0x1);delay( 10 ); ld_writereg(0x1f, 0x0); delay( 10 ); ld_writereg(0x89, 0x03); ld_writereg(0xcf, 0x43); ld_writereg(0xcb, 0x02);/*pll setting*/l
27、d_writereg(0x11, ld_pll_11); if (nld_mode = ld_mode_mp3)ld_writereg(0x19, ld_pll_19); ld_writereg(0x1b, ld_pll_1b); ld_writereg(0x1d, ld_pll_1d);ld_writereg(0x79, ld_ledmtr_freq);elseld_writereg(0x1e,0x00); ld_writereg(0x19,0x3f); ld_writereg(0x1d,0x1f);ld_writereg(0x1b,0x08);ld_writereg(0xcd, 0x04)
28、;ld_writereg(0x17, 0x4c); ld_writereg(0xb9, 0x00);ld_writereg(0xcf, 0x4f); void ld_init_mp3()nld_mode = ld_mode_mp3;ld_init_common();ld_writereg(0xbd,0x02);ld_writereg(0x17, 0x48);ld_writereg(0x85, 0x52); ld_writereg(0x8f ,0x00); ld_writereg(0x81,0x00);ld_writereg(0x83,0x00);ld_writereg(0x8e,0xff);l
29、d_writereg(0x8d,0xff); delay(1);ld_writereg(0x87,0xff);ld_writereg(0x89,0xff);ld_writereg(0x22,0); ld_writereg(0x23,0);ld_writereg(0x20,(uint8)2031); ld_writereg(0x21,(uint8)(2031>>8)&0x07);ld_writereg(0x24, (uint8)0x77); ld_writereg(0x25, (uint8)3); ld_writereg(0x26,(uint8)0xbb); ld_write
30、reg(0x27,(uint8)1); void ld_init_asr()nld_mode= ld_mode_asr_run;ld_init_common();ld_writereg(0xbd, 0x00);ld_writereg(0x17, 0x48);delay( 10 );ld_writereg(0x3c, 0x80); ld_writereg(0x3e, 7);ld_writereg(0x38, 0xff); ld_writereg(0x3a, 7);ld_writereg(0x40, 8); ld_writereg(0x42, 0);ld_writereg(0x44, 8); ld
31、_writereg(0x46, 0); ld_writereg(0x1b,0x48);delay( 1 );void ld_reset()rstb= 1;delay(1);rstb= 0;delay(1);rstb= 1;void processint0()uint8 nasrrescount= 0;ex0= 0;et0= 0;nint0flag= 0;ucregval = ld_readreg(0x2b);uchighint = ld_readreg(0x29); ld_writereg(0x29,0) ;uclowint=ld_readreg(0x02); ld_writereg(0x02
32、,0) ;if(nld_mode = ld_mode_asr_run)if(ucregval & 0x10) &&ld_readreg(0xb2)= 0x21 && ld_readreg(0xbf)= 0x35)nasrrescount = ld_readreg(0xba);if(nasrrescount>0 && nasrrescount<4) nasrstatus= ld_asr_foundok;else nasrstatus= ld_asr_foundzero;elsenasrstatus= ld_asr_error;/
33、ld_asr_foundzero;20101124ld_writereg(0x2b, 0); ld_writereg(0x1c,0);et0= 1;return; if(ld_readreg(0xba)&cause_mp3_song_end) ld_writereg(0x2b,ld_readreg(0x2b)&(mask_int_sync); ld_writereg(0xba, 0);ld_writereg(0xbc,0x0);bmp3play= 0;ld_writereg(0x08,1);delay(5); ld_writereg(0x08,0);ld_writereg(0x
34、33, 0);et0= 1;return ; if(nmp3pos>= nmp3size)ld_writereg(0xbc,0x01);ucstatus = ld_readreg(0x02);ucstatus&= (mask_afifo_int);ld_writereg(0x02, ucstatus);ucstatus= ld_readreg(0x29);ucstatus&= (mask_int_fifo); ld_writereg(0x29,ucstatus|mask_int_sync) ;/bmp3play= 0;ex0= 1;et0= 1;return;ld_rel
35、oadmp3data();ld_writereg(0x29,uchighint); ld_writereg(0x02,uclowint) ;delay(10);ex0= 1;et0= 1;void ld_play()nmp3pos= 0;bmp3play= 1;ld_writereg(0x1b, ld_readreg(0x1b)|0x08);if (nmp3pos >= nmp3size)return ; ld_reloadmp3data(); ld_writereg(0xba, 0);ld_writereg(0x17,0x48);ld_writereg(0x33, 1);ucregva
36、l = ld_readreg(0x29);ld_writereg(0x29, ucregval|mask_int_fifo);ucregval = ld_readreg(0x02);ld_writereg(0x02, ucregval|mask_afifo_int); ucregval=ld_readreg(0x89);ld_writereg(0x89, ucregval | 0x0c);ucregval = (2& 0x03)<<2;/ucstatus=ld_readreg(0x85)&(0x0c);ld_writereg(0x85, ucstatus | ucr
37、egval);ex0= 1;void ld_adjustmix2spvolume(uint8 val)ucspvol = val;val = (15-val)&0x0f) << 2;ucregval = ld_readreg(0x8e)&0xc3; ld_writereg(0x8e, val | ucregval); ld_writereg(0x87, 0x78); void ld_writereg( uint8 uladdr, uint8 ucval )ld_index_port = uladdr; ld_data_port = ucval; uint8 ld_r
38、eadreg( uint8 uladdr )ld_index_port = uladdr; return (uint8)ld_data_port; void ld_reloadmp3data()uint32 ncurmp3pos;uint8 val;uint8 k;ncurmp3pos = nmp3startpos + nmp3pos;flash_cs= 1;flash_clk= 0;flash_cs= 0; io_send_byte(w25p_fastreaddata); io_send_byte(ncurmp3pos & 0xffffff) >> 16); io_sen
39、d_byte(ncurmp3pos & 0xffff) >> 8); io_send_byte(ncurmp3pos & 0xff); io_send_byte(0xff);ucstatus = ld_readreg(0x06);while ( !(ucstatus&mask_fifo_status_afull) && (nmp3pos<nmp3size) )val= 0;for(k= 0;k<8;k+)flash_clk=0;val<<=1;flash_clk=1;val|=flash_do;ld_writereg(
40、0x01,val);/send_uart(val);nmp3pos+;ucstatus = ld_readreg(0x06);flash_cs=1;flash_clk=0;/ return 1: success.uint8 ld_check_asrbusyflag_b2()uint8 j;uint8 flag = 0;for (j=0; j<10; j+)if (ld_readreg(0xb2) = 0x21)flag = 1;break;delay(10);return flag;void ld_asrstart()ld_init_asr();/ return 1: success.u
41、int8 ld_asrrun()ld_writereg(0x35, mic_vol);ld_writereg(0x1c, 0x09);ld_writereg(0xbd, 0x20);ld_writereg(0x08, 0x01);delay( 1 );ld_writereg(0x08, 0x00);delay( 1 );if(ld_check_asrbusyflag_b2() = 0)return 0;ld_writereg(0xb2, 0xff);ld_writereg(0x37, 0x06);delay( 5 );ld_writereg(0x1c, 0x0b);ld_writereg(0x
42、29, 0x10);ld_writereg(0xbd, 0x00);ex0=1;return 1;/ return 1: success.uint8 ld_asraddfixed()uint8 k, flag;uint8 nasraddlength;const char srecog515 = "bei tang shi", "zuo shu xue ti", "zuo ti","yi jia yi", "er jia er ", ;const uint8 pcode5 = code_tangs
43、hi, code_suanshu, code_suanshu, code_yijiayi,code_erjiaer, ;flag = 1;for (k=0; k<5; k+)if(ld_check_asrbusyflag_b2() = 0)flag = 0;break;ld_writereg(0xc1, pcodek );ld_writereg(0xc3, 0 );ld_writereg(0x08, 0x04);delay(1);ld_writereg(0x08, 0x00);delay(1);for (nasraddlength=0; nasraddlength<20; nasr
44、addlength+)if (srecogknasraddlength = 0)break;ld_writereg(0x5, srecogknasraddlength);ld_writereg(0xb9, nasraddlength);ld_writereg(0xb2, 0xff);ld_writereg(0x37, 0x04); return flag;uint8 ld_getresult()return ld_readreg(0xc5 );#ifndef ld_chip_h#define ld_chip_h#define uint8 unsigned char#define uint16
45、unsigned int#define uint32 unsigned long#define ld_mode_idle0x00#define ld_mode_asr_run0x08#define ld_mode_mp3 0x40#define ld_asr_none0x00#define ld_asr_runing0x01#define ld_asr_foundok0x10#define ld_asr_foundzero 0x11#define ld_asr_error 0x31#define clk_in 22.1184/* user need modify this value acco
46、rding to clock in */#define ld_pll_11(uint8)(clk_in/2.0)-1)#define ld_pll_1d (uint8)(180.0*(ld_pll_11)+1)/(clk_in)-1)#define ld_pll_190x1f#define ld_pll_1b0x40#define ld_ledmtr_freq (uint8)(clk_in*1000000/8)/12700)/ ld chip fixed values.#define resum_of_music 0x01#define cause_mp3_song_end 0x20#defi
47、ne mask_int_sync0x10#define mask_int_fifo0x04#define mask_afifo_int0x01#define mask_fifo_status_afull0x08#define mask_adpcm_start0x01#define ld_index_port(*(volatile uint8 xdata*)(0x8100) #define ld_data_port(*(volatile uint8 xdata*)(0x8000) void ld_writereg( uint8 uladdr, uint8 ucval );uint8 ld_rea
48、dreg( uint8 uladdr );void ld_reset();void ld_init_common();void ld_init_mp3();void ld_init_asr();void ld_play();void ld_adjustmix2spvolume(uint8 value);void ld_reloadmp3data();void ld_reloadmp3data_online();uint8 ld_processasr(uint32 recogaddr);void ld_asrstart();uint8 ld_asrrun();uint8 ld_asraddfix
49、ed();uint8 ld_getresult();void ld_readmemoryblock(uint8 dev, uint8 * ptr, uint32 addr, uint8 count);void ld_writememoryblock(uint8 dev, uint8 * ptr, uint32 addr, uint8 count);extern uint32 nmp3startpos;extern uint32 nmp3size;extern uint32 nmp3pos;extern uint8 bmp3play;extern uint8 idata nld_mode;/code_tangshi, code_suanshu, code_yijiayi, code_erjiaer,#define code_default0#define code_tangshi1#define code_suanshu3#define code_yijiayi7#define code_erjiaer8#define code_abort 9#define code_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 好久都沒(méi)看到合同了的說(shuō)說(shuō)
- 提取公積金還房貸備案合同
- 《氣瓶的基礎(chǔ)知識(shí)》課件
- 2025年武漢貨運(yùn)從業(yè)資格試題及答案
- 2025年廣東貨運(yùn)從業(yè)資格證模擬試題及答案大全
- 2025年欽州貨運(yùn)資格證考試題答案
- 2025年西藏貨運(yùn)從業(yè)資格考試模擬考試題及答案詳解
- 2025年巴彥淖爾貨運(yùn)從業(yè)資格證考試技巧
- 工程安全電力施工合同范本
- 住宅小區(qū)高速電梯施工協(xié)議
- 楊亮高考英語(yǔ)詞匯
- 六大紀(jì)律 演示文稿課件
- 2023年滄州市金融控股有限公司招聘筆試題庫(kù)及答案解析
- DB37-T 4253-2020 地?zé)豳Y源勘查技術(shù)規(guī)程
- 諸暨中學(xué)提前招生選拔考試數(shù)學(xué)試卷含答案
- 高壓氧治療-PPT課件
- 西門(mén)子s7_200PLC基本指令
- 特殊學(xué)生成長(zhǎng)檔案記錄(精選.)
- 高速公路安全封路施工標(biāo)志標(biāo)牌示意圖
- 計(jì)算機(jī)科學(xué)前沿技術(shù)課心得體會(huì)
- 窗玻璃的可見(jiàn)光透射比.遮陽(yáng)系數(shù)
評(píng)論
0/150
提交評(píng)論