畢業(yè)設計論文智能語音玩具設計_第1頁
畢業(yè)設計論文智能語音玩具設計_第2頁
畢業(yè)設計論文智能語音玩具設計_第3頁
畢業(yè)設計論文智能語音玩具設計_第4頁
畢業(yè)設計論文智能語音玩具設計_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第一章 引言1.1 選題意義音識別以語音為研究對象,它是語音信號處理的一個重要研究方向,是模式識別的一個分支,涉及到生理學、心理學、語言學、計算機科學,以及信號處理等諸多領域,其最終目的是實現(xiàn)人與機器進行自然語言通信,用語言操縱計算機。 語音識別系統(tǒng)的分類方式及依據(jù)是根據(jù)對說話人說話方式的要求,可以分為孤立字(詞) 語音識別系統(tǒng),連接字語音識別系統(tǒng),以及連續(xù)語音識別系統(tǒng)。 進一步分為兩個方向:一是根據(jù)對說話人的依賴程度可以分為特定人和非特定人語音識別系統(tǒng);二是根據(jù)詞匯量大小,可以分為小詞匯量、中等詞匯量、大詞匯量,以及無限詞匯量語音識別系統(tǒng)。 不同的語音識別系統(tǒng),雖然具體實現(xiàn)細節(jié)有所不同,但所

2、采用的基本技術相似,一個典型語音識別系統(tǒng)的實現(xiàn)過程如圖1 所示。 圖1目前,在智能語音玩具的研究中,語音這種人類最簡單、最自然、最方便和最有效的交換信息的方式,在玩具上的應用還較少,顯然,在玩具系統(tǒng)上增加語音接口,用語音代替鍵盤輸入,并進行人機對話,讓玩具能聽會說,不僅十分誘人,而且具有廣泛的應用前景,同時,也是玩具智能化的重要標志之一.而語音識別技術是近年來十分活躍的研究領域,語音識別系統(tǒng)的實用化研究是語音識別研究的一個主要方向。本文設計了一款智能語音交互式玩具系統(tǒng),該玩具可以實現(xiàn)識別語音命令,完成相應的背唐詩、做算術題、唱歌等功能, 融合了較高的娛樂性, 也是未來智能語音玩具的一個發(fā)展方向

3、。1.2 當今應用領域智能語音拿玩具的發(fā)展趨勢融合類個人電子終端發(fā)展到今天,我們已經(jīng)看到pmp、手持游戲機、umpc、pda,以及智能手機的各顯神通。但是在另一個領域玩具領域,智能玩具正在悄悄興起,成為新一類的融合電子終端,代表著世界玩具業(yè)發(fā)展的趨勢。在香港的玩具出口量中傳統(tǒng)玩具包括洋娃娃的出口數(shù)字出現(xiàn)負增長,其占整體出口的比重,由2005年的約七成下跌至2007年的約五成,而非傳統(tǒng)的智能玩具的比重,則由2005年的約27%上升至2007年的48%。說明互動性、高科技玩具已漸漸成為發(fā)展主流,電腦技術與玩具結合已成為創(chuàng)新的方向。去年,高科技玩具在美國玩具市場上的銷售額已達到100億美元,增長速度

4、遠遠高于傳統(tǒng)玩具。2007年世界智能玩具銷售收入達到23.5億美元。 in-stat預計到2012年這個數(shù)字將增長到90億美元。智能玩具市場相比其他融合終端絕對是新興市場,因為智能玩具是基于現(xiàn)成的主流融合終端上的技術而產(chǎn)生的創(chuàng)新,相對成本較低,不僅可以給投資者提供較好的投資回報,而且還有很好的市場反應。同時,中國內(nèi)地玩具人均消費與歐美國家差距巨大,存在著很大的智能玩具市場空間。1.3 本課題主要研究內(nèi)容智能語音玩具是現(xiàn)代玩具發(fā)展的一個必然趨勢,其市場上的主要功能可以分為語音對話,即是由人與玩具進行對話模式,在有限的范圍能,語音玩具能自動進行回答或者提問,根據(jù)芯片的語言編寫不同,回答和提問的范圍

5、也不同。 1.3.1 玩具設計要求 1、基本要求 (1)、簡單語音對話交流 (2)、語音點播: 、唱兒歌 、朗誦古詩 、說英語 、講科普知識 、講笑話本項目志在開發(fā)一個將語音識別技術,傳感器技術等技術引用其中,并集教育性、娛樂性和互動性于一體的智能玩具控制系統(tǒng)。 第二章 單片機及相關器件介紹2.1 stc10l08xe 單片機介紹 2.1.1 stc11/10xx系列單片機簡介stc11loxx系列單片機是宏晶科技生產(chǎn)的單時鐘機器周期(it)的單片機,是高速低功耗超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成高可靠復位電路,針對高速通信,智能控制,

6、強干擾場合。11/loxx系列單片機的定時器0/定時器1串行口與傳統(tǒng)8051兼容,增加了獨立波特率發(fā)牛器,省去了定時器2。傳統(tǒng)8051的111條指令執(zhí)行速度全面提速,最快的指令快24倍,最慢的指令快3倍。v 增強型8051 cpu,it,單時鐘機器周期,指令代碼完全兼容傳統(tǒng)8051。v 工作電壓: stciifxx系列工作電壓:5.5v - 4.1v3.7v (5v單片機); stciilxx系列工作電壓:3.6v - 2.4v2.1v (3v單片機); stciofxx系列工作電壓:5.5v - 3.8v3.3v (5v單片機); stciolxx系列工作電壓:3.6v - 2.4v2.1v

7、 (3v單片機)。v 工作頻率范圍:035mhz,相當于普通8051的0420mhz。v stciif/lxx系列單斤機用戶應用程序空間: 1/2/3/4/5/6/8/16/20/3 2/40/4 8/5 2/5 6/60/62k字節(jié)。 stciof/lxx系列單片機用戶應用程序空間:4k6k8k10k12k14k字節(jié)。v stcllxx系列單片機:片上集成1280字節(jié)或256字節(jié)ram; stcllxx系列單片機:片上集成512字節(jié)或256字節(jié)ram。v 通用i/o口(36/40/12/14/16個)每個1/0口驅(qū)動能力均可達到20ma,復位后為 (1)、準雙向口弱上拉(普通8051傳統(tǒng)1/

8、0口); (2)、可設置成四種模式: 、準雙向口弱上拉; 、強推挽強上拉; 、僅為輸入高阻; 、開漏 。 v isp(在系統(tǒng)可編程)iap(在應用可編程),無需專用編程器,無需專用仿真器。 可通過串口(rxd/p3.0,txd/p3.1)直接下載用戶程序,數(shù)秒即可完成一片。v 有eeprom功能。v 看門狗。v 內(nèi)部集成max810專用復位電路(晶體頻率在24mhz以下時,要選擇高的復位門 檻電壓,如4.1v以下復位,晶體頻率在12mhz以下時,可選擇低的復位門檻電壓, 如3.7v以下復位,復位腳接ik電阻到地)。v 內(nèi)置一個對內(nèi)部vcc迸行掉電檢測的掉電檢測電路,可設置為中斷或復位。5v單片

9、 機掉電檢測門檻電壓為4.iv/3. 7v附近,3.3v單片機掉電檢測門檻電壓為2.4v附近。v 時鐘源:外部高精度晶體時鐘,內(nèi)部r/c振蕩器。用戶在下載用戶程序時,可選擇是使用內(nèi)部r/c振蕩器還是外部晶體時鐘; 常溫下內(nèi)部r/c振蕩器頻率為:4mhz8mhz;精度要求不高時,可選擇使用內(nèi)部時鐘,但因為有制造誤差和溫漂,以實際測試為準。v 共2個16位定時器(與傳統(tǒng)8051兼容的定時器計數(shù)器,16位定時器to和t1), stcllxx/; stcloxx全系列都有1個獨立波特率發(fā)牛器(故小必用t2做為波特率發(fā)牛器,詳 細使用方法請參考獨立波特率發(fā)牛器做串口通訊的相關使用說明及示例程序)。v 3

10、個時鐘輸出口,可由to的溢出在p3. 4/to輸出時鐘,可由tl的溢出在p3. 5/ti 輸出時鐘,獨立波特率發(fā)生器可以在pl.0口輸出時鐘(部分型號無獨立波特率發(fā)牛器,詳情請參閱單片機選型一覽表)。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)部掉電喚醒之用定時器喚醒(stcllxx系列有 此功能, stcloxx無此功能),也口j由上

11、而提到的外部中斷口中斷喚西星,由 于int/rxd支持卜降沿中斷,故也可支持遠程通信喚醒。v 一個獨立的通用全雙工異步串行口(uart),做主機時可以當2個串口便用 rxd/p3.0,txd/p3.1可以切換到rxd/pi.6,txd/pi.7,通過將串口在p3口和pl口之間來回切換,將1個串口作為2個主串口分時復用,可低成本實現(xiàn)2個串口,當然有其局限性。v 工作溫度范圍:-40 - +85(工業(yè)級)0- 75(商業(yè)級)。v 封裝:sop16/dip16/dip18/sop20/dip20/lssop20/pdip-40/lqfp-44/plcc-44(暫時盡量不要選plcc44) 。sop1

12、6/dip16有12個1/0口,dip18有14個1/0口,sop20/pdip20/lssop20有16個1/0口 ,lqfp44有40個1/0口,pdip40/qfn40 (5mmx5mm)有36個1/0口。 2.1.2 stc11/10xx系列單片機的內(nèi)部結構stc11loxx系列單片機的內(nèi)部結構框圖如圖2-1所示。stc11loxx單片機中包含中央處理器(cpu)、程序存儲器(flash)、數(shù)據(jù)存儲器(sram)、定時計數(shù)器、uart串口、i/o接口、看門狗及片內(nèi)rjc振蕩器和外部晶體振蕩電路等模塊。stc11loxx系列單片機幾乎包含了數(shù)據(jù)采集和控制中所需的所有單元模塊,可稱得上一個

13、片上系統(tǒng)。2.2 主要器件介紹ld3320ld3320芯片(圖2-2)是一款“語音識別”專用芯片,由icroute公司設計生產(chǎn)。該芯片集成了語音識別處理器和一些外部電路,包括ad、da轉(zhuǎn)換器、麥克風接口、聲音輸出接口等。本芯片在設計上注重節(jié)能與高效,不需要外接任何的輔助芯片如flash、ram等,直接集成在現(xiàn)有的產(chǎn)品中即可以實現(xiàn)語音識別聲控人機對話功能。并且,識別的關鍵詞語列表是可以任意動態(tài)編輯的。 ( 圖2-2 ) 2.2.1 功能介紹l 通過icroute公司特有的快速而穩(wěn)定的優(yōu)化算法,完成非特定人語音識別。不需要用戶事先訓練和錄音,識別準確率95%。l 不需要外接任何輔助的flash芯片

14、,ram芯片和ad芯片,就可以完成語音識別功能。真正提供了單芯片語音識別解決方案。l 每次識別最多可以設置50項候選識別句,每個識別句可以是單字,詞組或短句,長度為不超過10個漢字或者79個字節(jié)的拼音串。另一方面,識別句內(nèi)容可以動態(tài)編輯修改,因此可由一個系統(tǒng)支持多種場景。l 芯片內(nèi)部已經(jīng)準備了16位a/d轉(zhuǎn)換器、16位d/a轉(zhuǎn)換器和功放電路,麥克風、立體聲耳機和單聲道喇叭可以很方便地和芯片管腳連接。立體聲耳機接口的輸幽功率為20mw,而喇叭接口的輸出功率為550mw,能產(chǎn)生清晰響亮的聲音。l 支持并行和串行接口,串行方式可以簡化與其他模塊的連接。l 可設置為休眠狀態(tài),而且可以方便地激活。l 支

15、持mp3播放功能,無需外圍輔助器件,主控mcu將mp3數(shù)據(jù)依次送入ld3320芯片內(nèi)部就可以從芯片的相應pin輸出聲音。產(chǎn)品設計可以選擇從立體聲的耳機或者單聲道喇叭來獲得聲音輸出。支持mpegi(iso/iec11172-3), mpeg2(iso/iec13818-3)和mpeg 2.5 layer 3等格式。l 工作供電為3. 3v,如果用于便攜式系統(tǒng),使用3節(jié)aa電池就可以滿足供電需要。2.2.2 電路說明 以下為內(nèi)部電路的簡單邏輯圖(圖23): (圖23)詳細說明如下:電壓要求: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電壓輸入以簡化設計。數(shù)字電壓和模擬電壓進行隔離可以使得芯片有更好的效果。芯片管腳輸入電壓范圍:高電壓(邏輯“1”):0. 7;lcvddio'vddio 低電壓(邏輯“0”):0'0. 3vddio因此,開發(fā)者需要保證自己使用的主控mcu同樣工作在3.3v,保證主控mcu向ld3320的管腳輸出的高電壓不超過3.3v。v 時鐘(clock)芯片必須連接外部時鐘,可接受的頻率范圍是4-48mhz;而芯片內(nèi)部還有pll頻率合成器,可產(chǎn)生特定的頻率供內(nèi)部模塊使用。v 復位對芯片的復

17、位信號(rstb:1:)必須在vdd/vdda/vddio都穩(wěn)定后進行。無論芯片正在進行何種運算,復位信號都可以使它恢復初始狀態(tài),并使各寄存器復位。如果沒有后續(xù)的指令(對寄存器的設置),復位后芯片將進入休眠狀態(tài)。此后,一個csb:1:信號就可以重新激活芯片進入工作狀態(tài)。v 并行接口本芯片可通過并行方式和外部主cpu連接,此時使用8根數(shù)據(jù)線(po-p7),4個控制信號(wrb#,rdb#,cs冰,ao),以及一個中斷返回信號(intb#)。v 串行接口串行接口通過spi協(xié)議和外部主cpu連接,首先要將md接高電平,而將(spis:1:)接地。此時只使用4個管腳:片選(scs冰)、spi時鐘(sd

18、ck)、spi輸入(sdi)和spi輸出(sdo)。v 寄存器對芯片的設置和命令,包括傳送數(shù)據(jù)和接受數(shù)據(jù),都是通過對寄存器的操作來完成的。例如進行語音識別時,設置識別的關鍵詞語列表,設定芯片的識別模式,諛別完成后獲得識別結果都是通過讀寫寄存器來完成。播放聲音時,就是將mp3格式的數(shù)據(jù)循環(huán)放入fifo對應的寄存器。(識別結果是通過寄存器返回識別出的關鍵詞語在關鍵詞語列表中的排列序號index數(shù)值,該index數(shù)值是在設置關鍵詞語列表時指定)。v 喇叭音量的外部控制除了特定寄存器來控制音量以外,芯片外部的電路可以控制喇叭的音量增益。使用的是epi、ep2、ep3對應的管腳。2.2.3 管腳分布圖(

19、圖24)(圖24) 第3節(jié) 系統(tǒng)軟件設計3.1 軟件開發(fā)環(huán)境3.1.1 source insight 介紹source insight是一個面向項目開發(fā)的程序編輯器和代碼瀏覽器,它擁有內(nèi)置的對c/c+, c#和java等程序的分析。source insight能分析你的原代碼并在你工作的同時動態(tài)維護它自己的符號數(shù)據(jù)庫,并自動為你顯示有用的上下文信息。 source insight不僅僅是一個強大的程序編輯器,它還能顯示reference trees,class inheritance diagrams和call trees。source insight提供了最快速的對源代碼的導航和任何程序編輯

20、器的源信息。 source insight提供了快速和革新的訪問源代碼和源信息的能力。與眾多其它編輯器產(chǎn)品不同,source insight能在你編輯的同時分析你的源代碼,為你提供實用的信息并立即進行分析。3.1.2 source insight 技術特點source insight是如今最好用的語言編輯器,支持幾乎所有的語言, 如c、c+、asm、pas、asp、html等常見的,還支持自己定義關鍵字,如果您 是一個程序員或者網(wǎng)頁制作人,這個軟件對您都是有幫助的! source insight為您提供了可快速訪問源代碼和源信息的功能。source insight相較其它的編輯器產(chǎn)品來說,還可

21、以幫您分析源代碼,并在您編輯的同時立刻提供給您有用的信息和分析。 source insight自動創(chuàng)建并維護它自己高性能的符號數(shù)據(jù)庫,包括函數(shù)、method、全局變量、結構、類和工程源文件里定義的其它類型的符號。source insight 可以迅速地更新您的文件信息,即使在您編輯代碼的時候。而且符號數(shù)據(jù)庫的符號可以自動創(chuàng)建到您的工程文件中。 而是insight 4.0,關于insight,網(wǎng)上對此軟件的簡介是: insight 是一個小巧實用的多標簽的文檔編輯器,可替代系統(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論