版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于單片機(jī)的語(yǔ)音玩具的制作</p><p><b> 第一章 引言1</b></p><p> 第二章 單片機(jī)及相關(guān)器件介紹4</p><p><b> (圖2—4)10</b></p><p> 第三節(jié) 系統(tǒng)軟件設(shè)計(jì)11</p><p>
2、; 第四章 系統(tǒng)硬件設(shè)計(jì)41</p><p> 4.1 元器件清單41</p><p> 4.3硬件實(shí)物成果圖43</p><p> 第五章 系統(tǒng)測(cè)試與總結(jié)44</p><p> 5.1 硬件電路調(diào)試44</p><p> 1.檢查硬件焊接是不是有虛焊。44</p><p
3、> 5.1.2 硬件功能檢查44</p><p> 5.2 軟件功能模塊的調(diào)試44</p><p> 5.3 綜合調(diào)試44</p><p> 第七章 參考文獻(xiàn)45</p><p><b> 摘要</b></p><p> 現(xiàn)今,一些領(lǐng)先技術(shù)已廣泛應(yīng)用現(xiàn)在的玩具領(lǐng)域:
4、如無(wú)線電、紅外通訊、傳感器、語(yǔ)音芯片,而嵌入了后兩者的技術(shù)后使得玩具更具生命力。 基于此,我設(shè)計(jì)制作了一種基于單片機(jī)AT89S51控制、以ISD4002為核心的語(yǔ)音模塊的語(yǔ)音玩具的電路樣機(jī)。該電路能夠?qū)崿F(xiàn)實(shí)時(shí)按鍵放音和錄音的功能,在玩具表面裝有帶有圖案的按鍵,一個(gè)按鍵對(duì)應(yīng)一個(gè)圖案,當(dāng)按鍵按下時(shí),玩具會(huì)報(bào)出按鍵對(duì)應(yīng)圖案的名稱。 </p><p> 本文主要就電路樣機(jī)的軟件設(shè)計(jì)進(jìn)行說(shuō)明</p>
5、<p> 關(guān)鍵詞: 單片機(jī), ISD4002語(yǔ)音芯片, 語(yǔ)音玩具ABSTRACT</p><p> Today, some of the leading technology has been widely applied now in the field of toys: such as radio, infrared communications, sensors, voice chip
6、, embedded in the latter two of the technology makes toys more vitality. Based on this, I designed a control-based SCM AT89S51 to ISD4002 as the core of the voice module to the DS1302 clock as the core module of the vo
7、ice dolls. The toy can touch real-time playback functions, to join in the design of the show can be achieved time and recording funct</p><p> Keywords: SCM voive chipISD4002 Pronunciation toy</p>
8、<p><b> 第一章 引言</b></p><p><b> 1.1 選題意義</b></p><p> 音識(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ī)。 </p
9、><p> 語(yǔ)音識(shí)別系統(tǒng)的分類方式及依據(jù)是根據(jù)對(duì)說(shuō)話人說(shuō)話方式的要求,可以分為孤立字(詞) 語(yǔ)音識(shí)別系統(tǒng),連接字語(yǔ)音識(shí)別系統(tǒng),以及連續(xù)語(yǔ)音識(shí)別系統(tǒng)。 進(jìn)一步分為兩個(gè)方向:一是根據(jù)對(duì)說(shuō)話人的依賴程度可以分為特定人和非特定人語(yǔ)音識(shí)別系統(tǒng);二是根據(jù)詞匯量大小,可以分為小詞匯量、中等詞匯量、大詞匯量,以及無(wú)限詞匯量語(yǔ)音識(shí)別系統(tǒng)。 </p><p> 不同的語(yǔ)音識(shí)別系統(tǒng),雖然具體實(shí)現(xiàn)細(xì)節(jié)有所不同,但
10、所采用的基本技術(shù)相似,一個(gè)典型語(yǔ)音識(shí)別系統(tǒng)的實(shí)現(xiàn)過(guò)程如圖1 所示。 </p><p> 目前,在智能語(yǔ)音玩具的研究中,語(yǔ)音—這種人類最簡(jiǎn)單、最自然、最方便和最有效的交換信息的方式,在玩具上的應(yīng)用還較少,顯然,在玩具系統(tǒng)上增加語(yǔ)音接口,通過(guò)按鍵讓玩具能聽(tīng)會(huì)說(shuō),不僅十分誘人,而且具有廣泛的應(yīng)用前景,同時(shí),也是玩具智能化的重要標(biāo)志之一.而語(yǔ)音識(shí)別技術(shù)是近年來(lái)十分活躍的研究領(lǐng)域,語(yǔ)音識(shí)別系統(tǒng)的實(shí)用化研究是語(yǔ)音識(shí)別研
11、究的一個(gè)主要方向。本文是基于51單片機(jī)的語(yǔ)音玩具的制作的設(shè)計(jì),系統(tǒng)以51單片機(jī)為核心,通過(guò)單片機(jī)來(lái)控制語(yǔ)音芯片輸出語(yǔ)音信息。在玩具的表面裝有帶有圖案的按鍵,一個(gè)按鍵對(duì)應(yīng)一個(gè)圖案,有按鍵按下時(shí),玩具會(huì)報(bào)出按鍵對(duì)應(yīng)的圖案名稱。</p><p> 1.2 當(dāng)今應(yīng)用領(lǐng)域智能語(yǔ)音玩具的發(fā)展趨勢(shì)</p><p> 融合類個(gè)人電子終端發(fā)展到今天,我們已經(jīng)看到PMP、手持游戲機(jī)、UMPC、PDA,以
12、及智能手機(jī)的各顯神通。但是在另一個(gè)領(lǐng)域——玩具領(lǐng)域,智能玩具正在悄悄興起,成為新一類的融合電子終端,代表著世界玩具業(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)上
13、的銷售額已達(dá)到100億美元,增長(zhǎng)速度遠(yuǎn)遠(yuǎn)高于傳統(tǒng)玩具。2007年世界智能玩具銷售收入達(dá)到23.5億美元。 In-Stat預(yù)計(jì)到2012年這個(gè)數(shù)字將增長(zhǎng)到90億美元。</p><p> 智能玩具市場(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ó)家差距巨大,存在著很
14、大的智能玩具市場(chǎng)空間。</p><p> 1.3 本課題主要研究?jī)?nèi)容</p><p> 智能語(yǔ)音玩具是現(xiàn)代玩具發(fā)展的一個(gè)必然趨勢(shì) 。</p><p> 1.3.1 玩具設(shè)計(jì)要求</p><p><b> 1、基本要求</b></p><p> (1)一個(gè)按鍵對(duì)應(yīng)一個(gè)圖案,有按鍵
15、 </p><p><b> ?。?)、語(yǔ)音點(diǎn)播:</b></p><p><b> ①、貓叫聲</b></p><p><b> ?、凇㈦u叫聲</b></p><p><b> ?、邸⒐方新?</b></p><p><
16、b> ④、羊叫聲 </b></p><p><b> ?、荨ⅠR叫聲</b></p><p> ?。?)系統(tǒng)應(yīng)具有啟動(dòng)和停止功能。</p><p> 第二章 單片機(jī)及相關(guān)器件介紹</p><p> 2.1 STC10L08XE 單片機(jī)介紹</p><p> 2.1.1 S
17、TC11/10xx系列單片機(jī)簡(jiǎn)介</p><p> STC11/lOxx系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(IT)的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成高可靠復(fù)位電路,針對(duì)高速通信,智能控制,強(qiáng)干擾場(chǎng)合。</p><p> 11/lOxx系列單片機(jī)的定時(shí)器0/定時(shí)器1/串行口與傳統(tǒng)8051兼容,增加
18、了獨(dú)立波特率發(fā)牛器,省去了定時(shí)器2。傳統(tǒng)8051的111條指令執(zhí)行速度全面提速,最快的指令快24倍,最慢的指令快3倍。</p><p> 增強(qiáng)型8051 CPU,IT,單時(shí)鐘/機(jī)器周期,指令代碼完全兼容傳統(tǒng)8051。</p><p><b> 工作電壓:</b></p><p> STCIIFxx系列工作電壓:5.5V - 4.1V/3.
19、7V (5V單片機(jī));</p><p> STCIILxx系列工作電壓:3.6V - 2.4V/2.1V (3V單片機(jī));</p><p> STCIOFxx系列工作電壓:5.5V - 3.8V/3.3V (5V單片機(jī));</p><p> STCIOLxx系列工作電壓:3.6V - 2.4V/2.1V (3V單片機(jī))。</p><p>
20、; 工作頻率范圍:0~35MHz,相當(dāng)于普通8051的0~420MHz。</p><p> STCIIF/Lxx系列單斤機(jī)用戶應(yīng)用程序空間:</p><p> 1/2/3/4/5/6/8/16/20/3 2/40/4 8/5 2/5 6/60/62K字節(jié)。</p><p> STCIOF/Lxx系列單片機(jī)用戶應(yīng)用程序空間:4K6K/8K/10K/12K/14
21、K字節(jié)。</p><p> STCllxx系列單片機(jī):片上集成1280字節(jié)或256字節(jié)RAM;</p><p> STCllxx系列單片機(jī):片上集成512字節(jié)或256字節(jié)RAM?! ?/p>
22、 </p><p> 通用I/O口(36/40/12/14/16個(gè))每個(gè)1/0口驅(qū)動(dòng)能力均可達(dá)到20mA,復(fù)位后為</p><p> ?。?)、準(zhǔn)雙向口/弱上拉(普通8051
23、傳統(tǒng)1/0口);</p><p> (2)、可設(shè)置成四種模式: </p><p> ?、?、準(zhǔn)雙向口/弱上拉;</p><p> ?、凇?qiáng)推挽/強(qiáng)上拉;</p><p> ③、僅為輸入/高阻;</p><p><b> ?、堋㈤_(kāi)漏 。</b></p><p> ISP(
24、在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無(wú)需專用編程器,無(wú)需專用仿真器。 </p><p> 可通過(guò)串口(RxD/P3.0,TxD/P3.1)直接下載用戶程序,數(shù)秒即可完成一片。</p><p> 有EEPROM功能。</p><p><b> 看門狗。</b></p><p> 內(nèi)部集成MAX810專用復(fù)
25、位電路(晶體頻率在24MHz以下時(shí),要選擇高的復(fù)位門 </p><p> 檻電壓,如4.1V以下復(fù)位,晶體頻率在12MHz以下時(shí),可選擇低的復(fù)位門檻電壓,</p><p> 如3.7V以下復(fù)位,復(fù)位腳接IK電阻到地)。</p><p> 內(nèi)置一個(gè)對(duì)內(nèi)部Vcc迸行掉電檢測(cè)的掉電檢測(cè)電路,可設(shè)置為中斷或復(fù)位。5v單片</p><p
26、> 機(jī)掉電檢測(cè)門檻電壓為4.IV/3. 7V附近,3.3V單片機(jī)掉電檢測(cè)門檻電壓為2.4V附近。</p><p> 時(shí)鐘源:外部高精度晶體/時(shí)鐘,內(nèi)部R/C振蕩器。用戶在下載用戶程序時(shí),可選擇是使用內(nèi)部R/C振蕩器還是外部晶體/時(shí)鐘;</p><p> 常溫下內(nèi)部R/C振蕩器頻率為:4MHz~8MHz;</p><p> 精度要求不高時(shí),可選擇使用內(nèi)部
27、時(shí)鐘,但因?yàn)橛兄圃煺`差和溫漂,以實(shí)際測(cè)試為準(zhǔn)。</p><p> 共2個(gè)16位定時(shí)器(與傳統(tǒng)8051兼容的定時(shí)器/計(jì)數(shù)器,16位定時(shí)器TO和T1),</p><p><b> STCllxx/;</b></p><p> STClOxx全系列都有1個(gè)獨(dú)立波特率發(fā)牛器(故小必用T2做為波特率發(fā)牛器,詳 </p><p&g
28、t; 細(xì)使用方法請(qǐng)參考獨(dú)立波特率發(fā)牛器做串口通訊的相關(guān)使用說(shuō)明及示例程序)。</p><p> 3個(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ī)選型一覽表)。</p><p> 外部中斷I/O口5路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷, Powe
29、r Down模式可 </p><p> 由外部中斷喚醒,INTO/P3.2,INTl/P3.3,INT/TO/P3.4,INT/T1/P3.5, </p><p> INTINT/RxD/P3.0 r或INT/RxD/P1.6)。</p><p> PowcT、Down(掉電)模式可由內(nèi)部掉電喚醒之‘用定時(shí)器喚醒(STCllxx系列有 </p>
30、<p> 此功能, STClOxx無(wú)此功能),也口J^由上而提到的外部中斷口中斷喚西星,由 </p><p> 于INT/RxD支持卜降沿中斷,故也可支持遠(yuǎn)程通信喚醒。</p><p> 一個(gè)獨(dú)立的通用全雙工異步串行口(UART),做主機(jī)時(shí)可以當(dāng)2個(gè)串口便用 [RxD/P3.0,TxD/P3.1]可以切換到[RxD/PI.6,TxD/PI.7],通過(guò)將串口
31、在P3口和Pl口之間來(lái)回切換,將1個(gè)串口作為2個(gè)主串口分時(shí)復(fù)用,可低成本實(shí)現(xiàn)2個(gè)串口,當(dāng)然有其局限性。</p><p> 工作溫度范圍:-40 - +85℃(工業(yè)級(jí))/0- 75℃(商業(yè)級(jí))。</p><p> 封裝:SOP16/DIP16/DIP18/SOP20/DIP20/LSSOP20/PDIP-40/LQFP-44/PLCC-44(暫時(shí)盡量不要選PLCC44) 。SOP16/D
32、IP16有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口。</p><p> 2.1.2 STC11/10xx系列單片機(jī)的內(nèi)部結(jié)構(gòu)</p><p> STC11/lOxx系列單片機(jī)的內(nèi)部結(jié)構(gòu)框圖如圖2-1所示。STC11/lOxx單片機(jī)中
33、包含中央處理器(CPU)、程序存儲(chǔ)器(Flash)、數(shù)據(jù)存儲(chǔ)器(SRAM)、定時(shí)/計(jì)數(shù)器、UART串口、、I/O接口、看門狗及片內(nèi)RjC振蕩器和外部晶體振蕩電路等模塊。STC11/lOxx系列單片機(jī)幾乎包含了數(shù)據(jù)采集和控制中所需的所有單元模塊,可稱得上一個(gè)片上系統(tǒng)。</p><p> 2.2 主要器件介紹———LD3320</p><p> LD3320芯片(圖2-2)是一款“語(yǔ)音識(shí)
34、別”專用芯片,由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)編輯的。</p><p><b> ( 圖2-2 )</b></p>
35、;<p> 2.2.1 功能介紹</p><p> 通過(guò)ICRoute公司特有的快速而穩(wěn)定的優(yōu)化算法,完成非特定人語(yǔ)音識(shí)別。不需要用戶事先訓(xùn)練和錄音,識(shí)別準(zhǔn)確率95%。</p><p> 不需要外接任何輔助的Flash芯片,RAM芯片和AD芯片,就可以完成語(yǔ)音識(shí)別功能。真正提供了單芯片語(yǔ)音識(shí)別解決方案。</p><p> 每次識(shí)別最多可以設(shè)置
36、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)景。</p><p> 芯片內(nèi)部已經(jīng)準(zhǔn)備了16位A/D轉(zhuǎn)換器、16位D/A轉(zhuǎn)換器和功放電路,麥克風(fēng)、立體聲耳機(jī)和單聲道喇叭可以很方便地和芯片管腳連接。立體聲耳機(jī)接口的輸幽功率為20mW,而喇叭接口的輸出功率為550mW,能產(chǎn)生清晰響亮的聲音。</
37、p><p> 支持并行和串行接口,串行方式可以簡(jiǎn)化與其他模塊的連接。</p><p> 可設(shè)置為休眠狀態(tài),而且可以方便地激活。</p><p> 支持MP3播放功能,無(wú)需外圍輔助器件,主控MCU將MP3數(shù)據(jù)依次送入LD3320芯片內(nèi)部就可以從芯片的相應(yīng)PIN輸出聲音。產(chǎn)品設(shè)計(jì)可以選擇從立體聲的耳機(jī)或者單聲道喇叭來(lái)獲得聲音輸出。支持MPEGI(ISO/IEC1117
38、2-3), MPEG2(ISO/IEC13818-3)和MPEG 2.5 layer 3等格式。</p><p> 工作供電為3. 3V,如果用于便攜式系統(tǒng),使用3節(jié)AA電池就可以滿足供電需要。</p><p> 2.2.2 電路說(shuō)明</p><p> 以下為內(nèi)部電路的簡(jiǎn)單邏輯圖(圖2—3):</p><p><b>
39、(圖2—3)</b></p><p><b> 詳細(xì)說(shuō)明如下:</b></p><p> 電壓要求:VDD 數(shù)字電路用電源輸入 3. 0 V - 3. 3 V</p><p> VDDIO 數(shù)字1/0電路用電源輸入 1. 65 V - VDD</p><
40、;p> VDDA 模擬電路用電源輸入 3. 0 V - 4. 0 V</p><p> 建議用戶可以用統(tǒng)一的3. 3v電壓輸入以簡(jiǎn)化設(shè)計(jì)。數(shù)字電壓和模擬電壓進(jìn)</p><p> 行隔離可以使得芯片有更好的效果。</p><p> 芯片管腳輸入電壓范圍:高電壓(邏輯“1”):0. 7;lcVDDIO'VD
41、DIO</p><p> 低電壓(邏輯“0”):0'0. 3~VDDIO</p><p> 因此,開(kāi)發(fā)者需要保證自己使用的主控MCU同樣工作在3.3v,保證主控MCU向LD3320的管腳輸出的高電壓不超過(guò)3.3V。</p><p><b> 時(shí)鐘(Clock)</b></p><p> 芯片必須連接外部時(shí)
42、鐘,可接受的頻率范圍是4-48MHz;而芯片內(nèi)部還有PLL頻率合成器,可產(chǎn)生特定的頻率供內(nèi)部模塊使用。</p><p><b> 復(fù)位</b></p><p> 對(duì)芯片的復(fù)位信號(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ù)位后芯
43、片將進(jìn)入休眠狀態(tài)。此后,一個(gè)CSB:1:信號(hào)就可以重新激活芯片進(jìn)入工作狀態(tài)。</p><p><b> 并行接口</b></p><p> 本芯片可通過(guò)并行方式和外部主CPU連接,此時(shí)使用8根數(shù)據(jù)線(PO-P7),4個(gè)控制信號(hào)(WRB#,RDB#,CS冰,AO),以及一個(gè)中斷返回信號(hào)(INTB#)。</p><p><b> 串
44、行接口</b></p><p> 串行接口通過(guò)SPI協(xié)議和外部主CPU連接,首先要將MD接高電平,而將(SPIS:1:)接地。此時(shí)只使用4個(gè)管腳:片選(SCS冰)、SPI時(shí)鐘(SDCK)、SPI輸入(SDI)和SPI輸出(SDO)。</p><p><b> 寄存器</b></p><p> 對(duì)芯片的設(shè)置和命令,包括傳送數(shù)據(jù)和
45、接受數(shù)據(jù),都是通過(guò)對(duì)寄存器的操作來(lái)完成的。例如進(jìn)行語(yǔ)音識(shí)別時(shí),設(shè)置識(shí)別的關(guān)鍵詞語(yǔ)列表,設(shè)定芯片的識(shí)別模式,諛別完成后獲得識(shí)別結(jié)果都是通過(guò)讀/寫寄存器來(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í)指定)。</p><p><b> 喇叭音量的外部控制<
46、/b></p><p> 除了特定寄存器來(lái)控制音量以外,芯片外部的電路可以控制喇叭的音量增益。使用的是EPI、EP2、EP3對(duì)應(yīng)的管腳。</p><p> 2.2.3 管腳分布圖(圖2—4)</p><p><b> (圖2—4) </b></p><p><b> 系統(tǒng)軟件設(shè)計(jì)</b&
47、gt;</p><p> 3.1 軟件開(kāi)發(fā)環(huán)境</p><p> 3.1.1 source insight 介紹</p><p> 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)為你
48、顯示有用的上下文信息。 </p><p> Source Insight不僅僅是一個(gè)強(qiáng)大的程序編輯器,它還能顯示reference trees,class inheritance diagrams和call trees。Source Insight提供了最快速的對(duì)源代碼的導(dǎo)航和任何程序編輯器的源信息。 Source Insight提供了快速和革新的訪問(wèn)源代碼和源信息的能力。與眾多其它編輯器產(chǎn)品不同,Source
49、 Insight能在你編輯的同時(shí)分析你的源代碼,為你提供實(shí)用的信息并立即進(jìn)行分析。</p><p> 3.1.2 Source insight 技術(shù)特點(diǎn)</p><p> Source Insight是如今最好用的語(yǔ)言編輯器,支持幾乎所有的語(yǔ)言, 如C、C++、ASM、PAS、ASP、HTML等常見(jiàn)的,還支持自己定義關(guān)鍵字,如果您 是一個(gè)程序員或者網(wǎng)頁(yè)制作人,這個(gè)軟件對(duì)您都是有幫助的!
50、 </p><p> Source Insight為您提供了可快速訪問(wèn)源代碼和源信息的功能。Source Insight相較其它的編輯器產(chǎn)品來(lái)說(shuō),還可以幫您分析源代碼,并在您編輯的同時(shí)立刻提供給您有用的信息和分析。 </p><p> Source Insight自動(dòng)創(chuàng)建并維護(hù)它自己高性能的符號(hào)數(shù)據(jù)庫(kù),包括函數(shù)、method、全局變量、結(jié)構(gòu)、類和工程源文件里定義的其它類型的符號(hào)。Sou
51、rce Insight 可以迅速地更新您的文件信息,即使在您編輯代碼的時(shí)候。而且符號(hào)數(shù)據(jù)庫(kù)的符號(hào)可以自動(dòng)創(chuàng)建到您的工程文件中。 </p><p> 而是InSight 4.0,關(guān)于InSight,網(wǎng)上對(duì)此軟件的簡(jiǎn)介是: InSight 是一個(gè)小巧實(shí)用的多標(biāo)簽的文檔編輯器,可替代系統(tǒng)自帶的記事本軟件。</p><p> 3.2 程序流程圖(圖3—1)</p><p&
52、gt; 3.3 軟件功能代碼</p><p> #ifndef FlashDef_H</p><p> #define FlashDef_H</p><p> sbit FLASH_CS = P1 ^ 7;</p><p> sbit FLASH_CLK = P1 ^ 3;</p><p> sb
53、it FLASH_IO0 = P1 ^ 2;</p><p> sbit FLASH_IO1 = P1 ^ 6;</p><p> sbit FLASH_IO2 = P1 ^ 5;</p><p> sbit FLASH_IO3= P1 ^ 4;</p><p> sbit FLASH_WP = P1 ^ 5;
54、</p><p> sbit FLASH_HOLD = P1 ^ 4;</p><p> sbit FLASH_DO = P1 ^ 6;</p><p> sbit FLASH_DIO = P1 ^ 2;</p><p> #define W25P_FastReadData 0x0B</p><p&
55、gt; void IO_Send_Byte(uint8 dataout);</p><p><b> #endif</b></p><p> sbitP10= P1^0;</p><p> sbitP11 =P1^1;</p><p> sbitP12=P1^2;</p><
56、;p> sbitP13=P1^3;</p><p> sbitP14=P1^4;</p><p> sbitP15=P1^5;</p><p> sbitP16=P1^6;</p><p> sbitP17=P1^7;</p><p> sbitP30=P3^0;&
57、lt;/p><p> sbitP31=P3^1;</p><p> sbitP32=P3^2;</p><p> sbitP33=P3^3;</p><p> sbitP34=P3^4;</p><p> sbitP35=P3^5;</p><p> sbi
58、tP36=P3^6;</p><p> sbitP37=P3^7;</p><p> sbitP20=P2^0;</p><p> sbitP21=P2^1;</p><p> sbitP22=P2^2;</p><p> sbitP23=P2^3;</p>
59、<p> sbitP24=P2^4;</p><p> sbitP25=P2^5;</p><p> sbitP26=P2^6;</p><p> sbitP27=P2^7;</p><p> sbitP00=P0^0;</p><p> sbitP01=P0^
60、1;</p><p> sbitP02=P0^2;</p><p> sbitP03=P0^3;</p><p> sbitP04=P0^4;</p><p> sbitP05=P0^5;</p><p> sbitP06=P0^6;</p><p>
61、sbitP07=P0^7;</p><p> sbitP40=P4^0;</p><p> sbitP41=P4^1;</p><p> sbitP42=P4^2;</p><p> sbitP43=P4^3;</p><p> sbitP44=P4^4;</p>
62、;<p> sbitP45=P4^5;</p><p> sbitP46=P4^6;</p><p> sbitP47=P4^7;</p><p> #include "STC10L08XE.H"</p><p> #include "LDChip.h"<
63、/p><p> #include "FlashDef.h"</p><p> //#include "serial.h"</p><p> sbit RSTB= P3^3;</p><p> uint32 nMp3StartPos= 0;</p><p> uint32
64、 nMp3Size= 0;</p><p> uint32 nMp3Pos= 0;</p><p> uint32 nCurMp3Pos= 0;</p><p> uint8 idata nLD_Mode = LD_MODE_IDLE;</p><p> uint8 bMp3Play= 0;</p
65、><p> uint8 idata ucRegVal;</p><p> uint8 idata ucHighInt;</p><p> uint8 idata ucLowInt;</p><p> uint8 idata ucStatus;</p><p> uint8 idata ucSPVol= 15;
66、// MAX= 15 MIN= 0</p><p> extern uint8 idata nAsrStatus;</p><p> extern uint8 idata nInt0Flag;</p><p> void ProcessInt0();</p><p> void LD_Init_Common()</p>
67、<p><b> {</b></p><p> bMp3Play = 0;</p><p> LD_ReadReg(0x06); </p><p> /* soft reset. */</p><p> LD_WriteReg(0x1F, 0x1);</p><p>
68、 delay( 10 ); </p><p> LD_WriteReg(0x1F, 0x0); </p><p> delay( 10 ); </p><p> LD_WriteReg(0x89, 0x03); </p><p> LD_WriteReg(0xCF, 0
69、x43); </p><p> LD_WriteReg(0xCB, 0x02);</p><p> /*PLL setting*/</p><p> LD_WriteReg(0x11, LD_PLL_11); </p><p> if (nLD_Mode == LD_MODE_MP3)</p><
70、p><b> {</b></p><p> LD_WriteReg(0x19, LD_PLL_19); </p><p> LD_WriteReg(0x1B, LD_PLL_1B); </p><p> LD_WriteReg(0x1D, LD_PLL_1D);</p><p> LD_Write
71、Reg(0x79, LD_LEDMTR_FREQ);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> LD_WriteReg(0x1E,0x00);</p><
72、p> LD_WriteReg(0x19,0x3f); </p><p> LD_WriteReg(0x1D,0x1f);</p><p> LD_WriteReg(0x1B,0x08);</p><p><b> }</b></p><p> LD_WriteReg(0xCD, 0x04);</
73、p><p> LD_WriteReg(0x17, 0x4c); </p><p> LD_WriteReg(0xB9, 0x00);</p><p> LD_WriteReg(0xCF, 0x4f); </p><p><b> }</b></p><p> void LD_Init_MP3
74、()</p><p><b> {</b></p><p> nLD_Mode = LD_MODE_MP3;</p><p> LD_Init_Common();</p><p> LD_WriteReg(0xBD,0x02);</p><p> LD_WriteReg(0x17,
75、0x48);</p><p> LD_WriteReg(0x85, 0x52); </p><p> LD_WriteReg(0x8F ,0x00); </p><p> LD_WriteReg(0x81,0x00);</p><p> LD_WriteReg(0x83,0x00);</p><p> LD
76、_WriteReg(0x8E,0xff);</p><p> LD_WriteReg(0x8D,0xff);</p><p><b> delay(1);</b></p><p> LD_WriteReg(0x87,0xff);</p><p> LD_WriteReg(0x89,0xff);</p>
77、;<p> LD_WriteReg(0x22,0); </p><p> LD_WriteReg(0x23,0);</p><p> LD_WriteReg(0x20,(uint8)2031); </p><p> LD_WriteReg(0x21,(uint8)((2031>>8)&0x07));</p&
78、gt;<p> LD_WriteReg(0x24, (uint8)0x77); </p><p> LD_WriteReg(0x25, (uint8)3);</p><p> LD_WriteReg(0x26,(uint8)0xbb); </p><p> LD_WriteReg(0x27,(uint8)1); <
79、/p><p><b> }</b></p><p> void LD_Init_ASR()</p><p><b> {</b></p><p> nLD_Mode= LD_MODE_ASR_RUN;</p><p> LD_Init_Common();</p&
80、gt;<p> LD_WriteReg(0xBD, 0x00);</p><p> LD_WriteReg(0x17, 0x48);</p><p> delay( 10 );</p><p> LD_WriteReg(0x3C, 0x80); </p><p> LD_WriteReg(0x3E, 7);<
81、;/p><p> LD_WriteReg(0x38, 0xff); </p><p> LD_WriteReg(0x3A, 7);</p><p> LD_WriteReg(0x40, 8); </p><p> LD_WriteReg(0x42, 0);</p><p> LD_Writ
82、eReg(0x44, 8); </p><p> LD_WriteReg(0x46, 0); </p><p> LD_WriteReg(0x1b,0x48);</p><p> delay( 1 );</p><p><b> }</b></p><p> void LD_res
83、et()</p><p><b> {</b></p><p><b> RSTB= 1;</b></p><p><b> delay(1);</b></p><p><b> RSTB= 0;</b></p><p>
84、;<b> delay(1);</b></p><p><b> RSTB= 1;</b></p><p><b> }</b></p><p> void ProcessInt0()</p><p><b> {</b></p>
85、<p> uint8 nAsrResCount= 0;</p><p><b> EX0= 0;</b></p><p><b> ET0= 0;</b></p><p> nInt0Flag= 0;</p><p> ucRegVal = LD_ReadReg(0x2
86、B);</p><p> ucHighInt = LD_ReadReg(0x29); </p><p> LD_WriteReg(0x29,0) ;</p><p> ucLowInt=LD_ReadReg(0x02); </p><p> LD_WriteReg(0x02,0) ;</p><p> if(
87、nLD_Mode == LD_MODE_ASR_RUN)</p><p><b> {</b></p><p> if((ucRegVal & 0x10) &&</p><p> LD_ReadReg(0xb2)== 0x21 && </p><p> LD_ReadRe
88、g(0xbf)== 0x35)</p><p><b> {</b></p><p> nAsrResCount = LD_ReadReg(0xba);</p><p> if(nAsrResCount>0 && nAsrResCount<4) </p><p><b>
89、; {</b></p><p> nAsrStatus= LD_ASR_FOUNDOK;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p>
90、nAsrStatus= LD_ASR_FOUNDZERO;</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>&l
91、t;p> nAsrStatus= LD_ASR_ERROR;//LD_ASR_FOUNDZERO;20101124</p><p><b> }</b></p><p> LD_WriteReg(0x2b, 0);</p><p> LD_WriteReg(0x1C,0);</p><p><b&g
92、t; ET0= 1;</b></p><p><b> return;</b></p><p><b> }</b></p><p> if(LD_ReadReg(0xBA)&CAUSE_MP3_SONG_END)</p><p><b> {</b
93、></p><p> LD_WriteReg(0x2B,LD_ReadReg(0x2B)&(~MASK_INT_SYNC));</p><p> LD_WriteReg(0xBA, 0);</p><p> LD_WriteReg(0xBC,0x0);</p><p> bMp3Play= 0;</p>
94、;<p> LD_WriteReg(0x08,1);</p><p><b> delay(5);</b></p><p> LD_WriteReg(0x08,0);</p><p> LD_WriteReg(0x33, 0);</p><p><b> ET0= 1;</b&g
95、t;</p><p><b> return ;</b></p><p><b> }</b></p><p> if(nMp3Pos>= nMp3Size)</p><p><b> {</b></p><p> LD_WriteRe
96、g(0xBC,0x01);</p><p> ucStatus = LD_ReadReg(0x02);</p><p> ucStatus&= (~MASK_AFIFO_INT);</p><p> LD_WriteReg(0x02, ucStatus);</p><p> ucStatus= LD_ReadReg(0
97、x29);</p><p> ucStatus&= (~MASK_INT_FIFO); </p><p> LD_WriteReg(0x29,ucStatus|MASK_INT_SYNC) ;</p><p> //bMp3Play= 0;</p><p><b> EX0= 1;</b>&l
98、t;/p><p><b> ET0= 1;</b></p><p><b> return;</b></p><p><b> }</b></p><p> LD_ReloadMp3Data();</p><p> LD_WriteReg(0x
99、29,ucHighInt); </p><p> LD_WriteReg(0x02,ucLowInt) ;</p><p> delay(10);</p><p><b> EX0= 1;</b></p><p><b> ET0= 1;</b></p><p>
100、<b> }</b></p><p> void LD_play()</p><p><b> {</b></p><p> nMp3Pos= 0;</p><p> bMp3Play= 1;</p><p> LD_WriteReg(0x1B, LD_Rea
101、dReg(0x1B)|0x08);</p><p> if (nMp3Pos >= nMp3Size)</p><p><b> return ; </b></p><p> LD_ReloadMp3Data();</p><p> LD_WriteReg(0xBA, 0);</p>&l
102、t;p> LD_WriteReg(0x17,0x48);</p><p> LD_WriteReg(0x33, 1);</p><p> ucRegVal = LD_ReadReg(0x29);</p><p> LD_WriteReg(0x29, ucRegVal|MASK_INT_FIFO);</p><p> ucR
103、egVal = LD_ReadReg(0x02);</p><p> LD_WriteReg(0x02, ucRegVal|MASK_AFIFO_INT); </p><p> ucRegVal=LD_ReadReg(0x89);</p><p> LD_WriteReg(0x89, ucRegVal | 0x0c);</p><p&g
104、t; ucRegVal = (2& 0x03)<<2;//</p><p> ucStatus=LD_ReadReg(0x85)&(~0x0c);</p><p> LD_WriteReg(0x85, ucStatus | ucRegVal);</p><p><b> EX0= 1;</b></p&
105、gt;<p><b> }</b></p><p> void LD_AdjustMIX2SPVolume(uint8 val)</p><p><b> {</b></p><p> ucSPVol = val;</p><p> val = ((15-val)&a
106、mp;0x0f) << 2;</p><p> ucRegVal = LD_ReadReg(0x8E)&0xc3; </p><p> LD_WriteReg(0x8E, val | ucRegVal); </p><p> LD_WriteReg(0x87, 0x78); </p><p><b&g
107、t; }</b></p><p> void LD_WriteReg( uint8 ulAddr, uint8 ucVal )</p><p><b> {</b></p><p> LD_INDEX_PORT = ulAddr; </p><p> LD_DATA_PORT =
108、 ucVal; </p><p><b> }</b></p><p> uint8 LD_ReadReg( uint8 ulAddr )</p><p><b> {</b></p><p> LD_INDEX_PORT = ulAddr; <
109、/p><p> return (uint8)LD_DATA_PORT; </p><p><b> }</b></p><p> void LD_ReloadMp3Data()</p><p><b> {</b></p><p> uint32 nCurMp3
110、Pos;</p><p> uint8 val;</p><p><b> uint8 k;</b></p><p> nCurMp3Pos = nMp3StartPos + nMp3Pos;</p><p> FLASH_CS= 1;</p><p> FLASH_CLK= 0;&
111、lt;/p><p> FLASH_CS= 0;</p><p> IO_Send_Byte(W25P_FastReadData); </p><p> IO_Send_Byte(((nCurMp3Pos & 0xFFFFFF) >> 16)); </p><p> IO_Send_Byte(((nCurMp3P
112、os & 0xFFFF) >> 8));</p><p> IO_Send_Byte(nCurMp3Pos & 0xFF);</p><p> IO_Send_Byte(0xFF);</p><p> ucStatus = LD_ReadReg(0x06);</p><p> while ( !(ucSta
113、tus&MASK_FIFO_STATUS_AFULL) && (nMp3Pos<nMp3Size) )</p><p><b> {</b></p><p><b> val= 0;</b></p><p> for(k= 0;k<8;k++)</p><p&g
114、t;<b> {</b></p><p> FLASH_CLK=0;</p><p><b> val<<=1;</b></p><p> FLASH_CLK=1;</p><p> val|=FLASH_DO;</p><p><b> }
115、</b></p><p> LD_WriteReg(0x01,val);</p><p> //send_UART(val);</p><p> nMp3Pos++;</p><p> ucStatus = LD_ReadReg(0x06);</p><p><b> }</b&g
116、t;</p><p> FLASH_CS=1;</p><p> FLASH_CLK=0;</p><p><b> }</b></p><p> // Return 1: success.</p><p> uint8 LD_Check_ASRBusyFlag_b2()</p&g
117、t;<p><b> {</b></p><p><b> uint8 j;</b></p><p> uint8 flag = 0;</p><p> for (j=0; j<10; j++)</p><p><b> {</b></p&g
118、t;<p> if (LD_ReadReg(0xb2) == 0x21)</p><p><b> {</b></p><p><b> flag = 1;</b></p><p><b> break;</b></p><p><b> }&
119、lt;/b></p><p> delay(10);</p><p><b> }</b></p><p> return flag;</p><p><b> }</b></p><p> void LD_AsrStart()</p>&l
120、t;p><b> {</b></p><p> LD_Init_ASR();</p><p><b> }</b></p><p> // Return 1: success.</p><p> uint8 LD_AsrRun()</p><p><b&
121、gt; {</b></p><p> LD_WriteReg(0x35, MIC_VOL);</p><p> LD_WriteReg(0x1C, 0x09);</p><p> LD_WriteReg(0xBD, 0x20);</p><p> LD_WriteReg(0x08, 0x01);</p>&
122、lt;p> delay( 1 );</p><p> LD_WriteReg(0x08, 0x00);</p><p> delay( 1 );</p><p> if(LD_Check_ASRBusyFlag_b2() == 0)</p><p><b> {</b></p><p&
123、gt;<b> return 0;</b></p><p><b> }</b></p><p> LD_WriteReg(0xB2, 0xff);</p><p> LD_WriteReg(0x37, 0x06);</p><p> delay( 5 );</p><
124、;p> LD_WriteReg(0x1C, 0x0b);</p><p> LD_WriteReg(0x29, 0x10);</p><p> LD_WriteReg(0xBD, 0x00);</p><p><b> EX0=1;</b></p><p><b> return 1;</
125、b></p><p><b> }</b></p><p> // Return 1: success.</p><p> uint8 LD_AsrAddFixed()</p><p><b> {</b></p><p> uint8 k, flag;<
126、;/p><p> uint8 nAsrAddLength;</p><p> const char sRecog[5][15] = {"bei tang shi", "zuo shu xue ti", "zuo ti","yi jia yi", "er jia er ", };</p&
127、gt;<p> const uint8 pCode[5] = {CODE_TANGSHI, CODE_SUANSHU, CODE_SUANSHU, CODE_YIJIAYI,CODE_ERJIAER, };</p><p><b> flag = 1;</b></p><p> for (k=0; k<5; k++)</p>&
128、lt;p><b> {</b></p><p> if(LD_Check_ASRBusyFlag_b2() == 0)</p><p><b> {</b></p><p><b> flag = 0;</b></p><p><b> break;&
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 語(yǔ)音電子門鎖設(shè)計(jì)【畢業(yè)論文】
- 畢業(yè)論文——無(wú)線語(yǔ)音遙控智能車
- 畢業(yè)論文——無(wú)線語(yǔ)音遙控智能車
- 帶語(yǔ)音提示功能的智能電子鐘設(shè)計(jì)【畢業(yè)論文】
- 嬰幼兒電子玩具設(shè)計(jì)畢業(yè)論文
- 電子工程畢業(yè)論文
- 嬰幼兒電子玩具設(shè)計(jì)畢業(yè)論文
- 安防智能電子畢業(yè)論文
- 畢業(yè)論文(設(shè)計(jì))嬰幼兒電子玩具設(shè)計(jì)
- 基于語(yǔ)音控制的智能小車設(shè)計(jì)畢業(yè)論文
- 幼兒家庭玩具畢業(yè)論文
- 畢業(yè)論文語(yǔ)音電子溫度計(jì)設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文語(yǔ)音電子溫度計(jì)設(shè)計(jì)與實(shí)現(xiàn)
- 智能電子計(jì)數(shù)器的畢業(yè)論文
- 電子與信息工程畢業(yè)論文家庭智能安防系統(tǒng)設(shè)計(jì)
- 電子信息工程畢業(yè)論文
- 電子信息工程畢業(yè)論文
- 玩具產(chǎn)業(yè)集群研究畢業(yè)論文
- 語(yǔ)音控制智能電飯煲的設(shè)計(jì)與實(shí)現(xiàn)-物聯(lián)網(wǎng)工程畢業(yè)論文開(kāi)題報(bào)告
- 機(jī)械電子工程畢業(yè)論文-智能紅外電風(fēng)扇遙控系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論