聲控小車設(shè)計(jì)論文_第1頁(yè)
聲控小車設(shè)計(jì)論文_第2頁(yè)
聲控小車設(shè)計(jì)論文_第3頁(yè)
聲控小車設(shè)計(jì)論文_第4頁(yè)
聲控小車設(shè)計(jì)論文_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、聲控小車設(shè)計(jì)中文摘要: 聲控小車指的是能夠在人的語(yǔ)音命令控制下完成具體動(dòng)作的小車,主要由控制板、驅(qū)動(dòng)電路和車體組成,同時(shí)還要編輯合適的軟件來(lái)具體控制小車的動(dòng)作。 控制板主要負(fù)責(zé)軟件的寫入,能夠完成語(yǔ)音信號(hào)的壓縮、存儲(chǔ)、辨識(shí)、響應(yīng)等功能,而驅(qū)動(dòng)電路則能夠根據(jù)控制板送來(lái)的驅(qū)動(dòng)信號(hào)對(duì)車體上的直流電機(jī)和繼電器進(jìn)行控制,從而完成具體的動(dòng)作。 在本次設(shè)計(jì)中,控制板我們將采用凌陽(yáng)公司的16位單片機(jī),驅(qū)動(dòng)電路將根據(jù)單片機(jī)的控制原理由我們利用模擬器件自己焊接。軟件的編寫將主要參考單片機(jī)的C語(yǔ)言程序設(shè)計(jì),編譯環(huán)境為凌陽(yáng)公司的IDE 1.16.1.具體軟件編寫和硬件功能實(shí)現(xiàn)將在正文中詳細(xì)講述。 關(guān)鍵詞:凌陽(yáng)16位單

2、片機(jī),語(yǔ)音識(shí)別,單片機(jī)C語(yǔ)言編程,驅(qū)動(dòng)電路設(shè)計(jì)英文摘要: The audio-control car is a kind of car that can be controlled by human's voice and can achieve many functions such as Turn-right ,Turn-left, Go-ahead and Back-off. The car is composed of 3 parts: control board, drive board and base. The software should be downloaded

3、in the control board is also necessary. For the control board, it should have 2 qualifications: first, the software can be planted in, second, the voice signal can be compacted, stored, differentiated and responded. For the drive board, it should control the DC motor and the relay directly via the s

4、ignal that sent by the control board. For this design, we will use the Single Chip Microprocessor (SCM) manufactured by Sunplus Corporation as the control board, so the drive board should be fit for the SCM. The software will be compiled in the IDE 1.6.1 also provided by Sunplus Corporation. The des

5、ign process will be introduced in the following text in details.Keywords: Single Chip Microprocessor, Audio control, program design.目錄: 前言3一、硬件電路設(shè)計(jì)及連接3 1.1 SPCE061A3 1.1.1 SPCE061A 總述3 1.1.2 SPCE061A 性能3 1.1.3 選擇SPCE061A的理由4 1.1.4 凌陽(yáng)16位單片機(jī)SPCE061A實(shí)物圖4 1.1.5 SPCE061A內(nèi)部結(jié)構(gòu)框圖5 1.2.車體驅(qū)動(dòng)電路6 1.2.1車體驅(qū)動(dòng)電路設(shè)計(jì)思

6、路6 1.2.2實(shí)際驅(qū)動(dòng)電路71.3、小車車底部分81.4.硬件部分結(jié)論8二、軟件編寫與調(diào)試92.1主程序流程圖 92.2 控制口連接方式 102.3.RAM中數(shù)據(jù)存取方式112.4語(yǔ)音訓(xùn)練和識(shí)別 122.4.1語(yǔ)音命令訓(xùn)練過(guò)程122.4.2語(yǔ)音識(shí)別過(guò)程132.5 具體動(dòng)作的實(shí)現(xiàn)132.6語(yǔ)音命令的重新訓(xùn)練142.7程序的組成和調(diào)試142.8程序代碼下載15三、小車的操作說(shuō)明:153.1使用方法15 3.2使用時(shí)的注意事項(xiàng)15 四、結(jié)論16 五、參考書目16正文: 前言:本次設(shè)計(jì)的目的是利用凌陽(yáng)16位單片機(jī)SPCE061A的語(yǔ)音播放和語(yǔ)音識(shí)別資源進(jìn)行語(yǔ)音控制,使小車能在具體的語(yǔ)音命令下完成前進(jìn)

7、、后退、左拐、右拐的動(dòng)作。通過(guò)完成本次畢業(yè)設(shè)計(jì),可以加深對(duì)凌陽(yáng)16位單片機(jī)SPCE061A的熟悉,對(duì)單片機(jī)的C語(yǔ)言編程能力也有較高的要求,并且對(duì)小車直流電機(jī)的控制過(guò)程也要熟悉。本次畢業(yè)設(shè)計(jì)由我和馬祥鶴同學(xué)共同完成,我主要負(fù)責(zé)軟件方面的工作。 通過(guò)老師的指導(dǎo)和我們的思考,決定所設(shè)計(jì)的小車主要由以下幾部分組成: 1、凌陽(yáng)16位單片機(jī)SPCE061A精簡(jiǎn)開(kāi)發(fā)辦板 2、電機(jī)驅(qū)動(dòng)電路板 3、小車車體,包括帶有四個(gè)輪子的車底板,其中前面兩個(gè)輪子由一繼電器控制,可以根據(jù)電流方向的變化控制小車轉(zhuǎn)彎,后面兩個(gè)輪子由一直流電機(jī)控制,可以根據(jù)電流方向的變化控制小車前進(jìn)后退。 根據(jù)我們的設(shè)計(jì)思路及過(guò)程,將分別從硬件設(shè)

8、計(jì)和軟件編寫兩個(gè)方面來(lái)介紹:一、硬件電路設(shè)計(jì)及連接:本部分主要包括凌陽(yáng)16位單片機(jī)SPCE061A,驅(qū)動(dòng)電路和小車車體,首先介紹一下凌陽(yáng)16位單片機(jī)SPCE061A:1.1 SPCE061A1.1.1 SPCE061A 總述SPCE061A 是凌陽(yáng)科技推出的一款16位微控制器。高速的處理速度和'nSP.的內(nèi)核結(jié)構(gòu)使它能夠非常容易、快速地處理復(fù)雜的數(shù)字信號(hào)。同時(shí)SPCE061A內(nèi)嵌32K字的FLASH ROM和2K字的SRAM。因此SPCE061A微控制器是適用于語(yǔ)音識(shí)別領(lǐng)域的一種最佳選擇。1.1.2 SPCE061A 性能SPCE061A在芯片內(nèi)部集成了ICE仿真電路接口、FLASH程

9、序存儲(chǔ)器、SRAM數(shù)據(jù)存儲(chǔ)器、通用I/O端口、定時(shí)器/計(jì)數(shù)器、中斷控制、CPU時(shí)鐘、模-數(shù)轉(zhuǎn)換器A/D、DAC輸出、通用異步串行輸入輸出接口、串行輸入輸出接口、低電壓監(jiān)測(cè)/低電壓復(fù)位等若干部分。各個(gè)部分之間存在著直接或間接的聯(lián)系。 SPCE061A的內(nèi)核由總線、算術(shù)邏輯運(yùn)算單元、寄存器組、中斷系統(tǒng)及堆棧等部分組成。 SPCE061A的ALU在運(yùn)算能力上很有特色,它不僅能做16位基本的算術(shù)邏輯運(yùn)算,也能做帶移位操作的16位算術(shù)邏輯運(yùn)算,同時(shí)還能做用于數(shù)字信號(hào)處理的16位×16位的乘法運(yùn)算和內(nèi)積運(yùn)算。 工作電壓(CPU) VDD為3.0V-3.6V; (I/O) VDDH為3.0V-5.

10、5V; CPU時(shí)鐘:0.32MHz-49.152MHz; 內(nèi)置2K字SRAM; 內(nèi)置32K字FLASH ROM; 可編程音頻處理; 晶體振蕩器; 系統(tǒng)處于休眠模式下(時(shí)鐘處于停止?fàn)顟B(tài)),耗電僅為2A3.6V; 2個(gè)16位可編程定時(shí)器/計(jì)數(shù)器(可自動(dòng)預(yù)置初始計(jì)數(shù)值); 2個(gè)10位DAC(數(shù)-模轉(zhuǎn)換)輸出通道; 32位通用可編程輸入/輸出端口; 兩級(jí)中斷,14個(gè)中斷源; 具備觸鍵喚醒的功能; 使用凌陽(yáng)音頻編碼SACM_S240方式(2.4K位/秒),能容納210秒的語(yǔ)音數(shù)據(jù); 鎖相環(huán)PLL振蕩器提供系統(tǒng)時(shí)鐘信號(hào); 32768Hz實(shí)時(shí)時(shí)鐘; 7通道10位電壓模-數(shù)轉(zhuǎn)換器(ADC)和單通道聲音模-數(shù)轉(zhuǎn)

11、換器; 聲音模-數(shù)轉(zhuǎn)換器輸入通道內(nèi)置麥克風(fēng)放大器和自動(dòng)增益控制(AGC)功能; 具備串行設(shè)備接口(UART,SIO); 具有低電壓復(fù)位(LVR)功能和低電壓監(jiān)測(cè)(LVD)功能; 內(nèi)置在線仿真電路ICE(In- Circuit Emulator)接口; 具有加密功能; 具有Watch-dog功能1.1.3 選擇凌陽(yáng)16位單片機(jī)SPCE061A的理由: 首先是因?yàn)楸締纹瑱C(jī)所具有的強(qiáng)大的語(yǔ)音處理及辨識(shí)功能,由自帶的麥克風(fēng)和喇叭,內(nèi)置的2K字SRAM可以存儲(chǔ)大量的音頻文件,具有的32個(gè)雙16位I/O口可以方便地和驅(qū)動(dòng)板連接,CPU快速的處理能力也使小車具有快速的響應(yīng)時(shí)間。并且有和它所關(guān)聯(lián)的軟件編譯環(huán)境

12、Unsp IDE 1.6.1,支持C語(yǔ)言程序設(shè)計(jì),不用涉及復(fù)雜的后臺(tái)程序處理操作,使用的時(shí)候非常方便。1.1.4 凌陽(yáng)16位單片機(jī)SPCE061A實(shí)物圖 圖1、 SPCE061A實(shí)物圖1.1.5 SPCE061A內(nèi)部結(jié)構(gòu)框圖 圖2、SPCE061A內(nèi)部結(jié)構(gòu)框圖1.2.車體驅(qū)動(dòng)電路1.2.1車體驅(qū)動(dòng)電路設(shè)計(jì)思路: 車體驅(qū)動(dòng)電路指的是連接SPCE061A和車體的電路,其中輸入的是來(lái)自單片機(jī)SPCE061A的控制信號(hào),用以控制小車上繼電器和直流電機(jī)的電流方向,從而完成小車的具體動(dòng)作。繼電器和直流電機(jī)的電流方向和小車的狀態(tài)之間的關(guān)系如下表所示: 直流電機(jī)的電流方向繼電器電流方向小車狀態(tài) 無(wú) 無(wú) 停止

13、正 無(wú) 前進(jìn) 正 正 左拐 正 反 右拐 反 無(wú) 倒車 表1、狀態(tài)控制關(guān)系由此表可知,只要驅(qū)動(dòng)電路在單片機(jī)的具體信號(hào)控制下,可以控制流過(guò)直流電機(jī)和繼電器的電流方向,即可實(shí)現(xiàn)對(duì)小車狀態(tài)的控制。由于三極管具有良好的開(kāi)關(guān)特性,所以我們將利用三極管級(jí)聯(lián)電路來(lái)完成控制電路的設(shè)計(jì)。1.2.2實(shí)際驅(qū)動(dòng)電路在本次設(shè)計(jì)中我們將采用如下電路來(lái)實(shí)現(xiàn)具體的控制,具體連接和各個(gè)元件的參數(shù)都已在圖中標(biāo)出: 圖3、直流電機(jī)控制電路其中1、2腳分別連接電機(jī)的兩端,MOT1和MOT2連接單片機(jī)上的信號(hào)輸出口。具體的控制過(guò)程是: Q1 負(fù)責(zé)控制Q2、Q3 的導(dǎo)通與關(guān)斷,Q1 導(dǎo)通激發(fā)Q2、Q3 導(dǎo)通,Q1 關(guān)斷的同時(shí)Q2、Q3

14、也關(guān)斷。Q6 負(fù)責(zé)控制Q7、Q8 的導(dǎo)通與關(guān)斷,其工作過(guò)程同Q2、Q3。如果讓Q2、Q3 導(dǎo)通Q7、Q8 關(guān)斷,電流會(huì)流經(jīng)Q3、負(fù)載、Q2 組成的回路,加在負(fù)載兩端的電壓左正右負(fù),此時(shí)電機(jī)正轉(zhuǎn);如果讓Q7、Q8 導(dǎo)通Q2、Q3 關(guān)斷,電流會(huì)流經(jīng)Q8、負(fù)載、Q7 組成的回路,加在負(fù)載Load 兩端的電壓為左負(fù)右正,此時(shí)電機(jī)反轉(zhuǎn)。另外如果讓Q2、Q3 關(guān)斷Q7、Q8 也關(guān)斷,負(fù)載Load 兩端懸空,此時(shí)電機(jī)停轉(zhuǎn)。這樣就實(shí)現(xiàn)了電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)、停止三態(tài)控制。 繼電器的控制電路和直流電機(jī)的相同,具體電路如下: 圖4、繼電器控制電路其中RE1和RE2輸入來(lái)自單片機(jī)的控制信號(hào),3和4連接繼電器的兩端,通過(guò)

15、電流方向的改變來(lái)實(shí)現(xiàn)方向控制。1.3、小車車底部分 單片機(jī)需要由小車車體上的電源供電,注意電線不要和直流電機(jī)、車輪纏繞在一起,同時(shí)要使單片機(jī)和驅(qū)動(dòng)板共地,以保證信號(hào)的正確識(shí)別。1.4.硬件部分結(jié)論:通過(guò)以上分析,我們可以得出電路的連接框圖,如下所示: 圖5、電路連接框圖二、軟件編寫與調(diào)試 在本設(shè)計(jì)中,選用C語(yǔ)言進(jìn)行程序設(shè)計(jì),這是因?yàn)椋?. 不用懂得單片機(jī)的指令集,也能編寫出完美的程序;2. 有標(biāo)準(zhǔn)的函數(shù)庫(kù),可以直接使用;3. 有嚴(yán)格的句法檢查,可以避免錯(cuò)誤,提高編程效率;4. 對(duì)單片機(jī)的內(nèi)部硬件結(jié)構(gòu)不需要了解很多。2.1主程序流程圖主程序主要包括四個(gè)方面的內(nèi)容,即初始化部分,訓(xùn)練部分,識(shí)別部分

16、和重新訓(xùn)練部分,為了防止外界聲音的干擾,在程序中加入了待命狀態(tài),只有小車在識(shí)別了待命命令(名字)之后,才進(jìn)入識(shí)別模式。主程序的流程圖如下: 圖6、主程序流程圖初始化部分:初始化操作將IOB13IOB10 設(shè)置為輸出端,用以控制電機(jī),將IOA 的低8 位設(shè)置為下拉的輸入端,用來(lái)連接按鍵。訓(xùn)練部分:訓(xùn)練部分完成的工作就是建立語(yǔ)音模型。程序一開(kāi)始就會(huì)去判斷小車是否被訓(xùn)練過(guò),如果沒(méi)有訓(xùn)練過(guò)則會(huì)要求對(duì)其進(jìn)行訓(xùn)練,并且會(huì)在訓(xùn)練成功之后將訓(xùn)練的模型存儲(chǔ)到Flash 當(dāng)中,在以后使用時(shí)就不需要重新訓(xùn)練了;如果已經(jīng)訓(xùn)練過(guò)會(huì)把存儲(chǔ)在Flash 中的模型調(diào)出來(lái)裝載到辨識(shí)器中。識(shí)別部分:在識(shí)別環(huán)節(jié)當(dāng)中,如果辨識(shí)結(jié)果是

17、名字,直接置待命標(biāo)志,然后等待動(dòng)作命令。只有檢測(cè)到待命標(biāo)志,小車才會(huì)根據(jù)相應(yīng)的辨識(shí)結(jié)果執(zhí)行動(dòng)作,如果沒(méi)有待命標(biāo)志即使識(shí)別到動(dòng)作命令也不會(huì)執(zhí)行。重新訓(xùn)練操作:考慮到有重新訓(xùn)練的需求,所以在這里設(shè)置了重新訓(xùn)練的按鍵(本程序用的是KEY2),程序運(yùn)行時(shí)循環(huán)掃描該按鍵,什么時(shí)間檢測(cè)到此鍵按下,則將擦除語(yǔ)音模型存儲(chǔ)區(qū)首單元(0xe000)所在的頁(yè),等待復(fù)位到來(lái)。復(fù)位后,程序重新從頭開(kāi)始執(zhí)行,當(dāng)檢測(cè)到語(yǔ)音模型存儲(chǔ)區(qū)首地址為0xffff(擦除后的值)時(shí)會(huì)要求重新對(duì)其進(jìn)行訓(xùn)練。2.2 控制口連接方式軟件的編譯環(huán)境為IDE1.16.1,所用語(yǔ)言為C語(yǔ)言。通過(guò)硬件電路的設(shè)計(jì)過(guò)程可以看出,單片機(jī)只需輸出4路控制信號(hào)

18、即可完成對(duì)小車的控制,在這里我們選擇使用輸入/輸出接口來(lái)輸出控制信號(hào)。輸入/輸出接口(也可簡(jiǎn)稱為I/O口)是單片機(jī)與外設(shè)交換信息的通道。輸入端口負(fù)責(zé)從外界接收檢測(cè)信號(hào)、鍵盤信號(hào)等各種開(kāi)關(guān)量信號(hào)。輸出端口負(fù)責(zé)向外界輸送由內(nèi)部電路產(chǎn)生的處理結(jié)果、顯示信息、控制命令、驅(qū)動(dòng)信號(hào)等。unSP內(nèi)有并行和串行兩種方式的I/O口。SPCE061A有兩個(gè)16位通用的并行I/O口:A口和B口。這兩個(gè)口的每一位都可通過(guò)編程單獨(dú)定義成輸入或輸出口。 方向向量Dir、屬性向量Attrib和數(shù)據(jù)向量Data分別代表三個(gè)控制口。這三個(gè)口中每個(gè)對(duì)應(yīng)的位組合在一起,形成一個(gè)控制字,來(lái)定義相應(yīng)I/O口位的輸入/輸出狀態(tài)和方式。

19、Dir位決定了口位的輸入/輸出方向:即0為輸入,1輸出。 Attrib位決定了在口位的輸入狀態(tài)下是為懸浮式輸入還是非懸浮式輸入:即0為帶上拉或下拉電阻式輸入,而1則為懸浮式輸入。在口位的輸出狀態(tài)下則決定其輸出是反相的還是同相的;0為反相輸出,1則為同相輸出。 Data位在口位的輸入狀態(tài)下被寫入時(shí),與Attrib位組合在一起形成輸入方式的控制字00、01、10、11,以決定輸入口是帶喚醒功能的上拉電阻式、下拉電阻式或懸浮式以及不帶喚醒功能的懸浮式輸入。Data位在口位的輸出狀態(tài)下被寫入的是輸出數(shù)據(jù),不過(guò),數(shù)據(jù)是經(jīng)過(guò)反相器輸出還是經(jīng)過(guò)同相緩存器輸出要由Attrib位來(lái)決定。 在本次設(shè)計(jì)中將I/OB

20、11-I/OB8 四個(gè)口設(shè)置為同向輸出,用以輸出控制信號(hào)。具體程序及說(shuō)明如下:*P_IOB_ Dir =0xff00;/初始化IOB,IOB811同向輸出*P_IOB_ Attrib=0xff00;*P_IOB_ Data=0x0000;其中I/OB13與MOT1, I/OB12與MOT2, I/OB11與RE1, I/OB10與RE2一一對(duì)應(yīng)聯(lián)接在一起。同時(shí)將IOA 的低8 位設(shè)置為下拉的輸入端,用來(lái)連接按鍵KEY2,當(dāng)KEY2鍵被按下后重新復(fù)位時(shí)進(jìn)入重新訓(xùn)練狀態(tài)。2.3 語(yǔ)音資料在RAM中的存儲(chǔ)與讀取方式 SPCE061A有2K字的SRAM(包括堆棧區(qū)),其地址范圍從0x0000到0x07

21、FF。前64個(gè)字,即0x00000x003F地址范圍內(nèi)可采用6位地址直接地址尋址方法,尋訪速度為2個(gè)CPU時(shí)鐘周期;其余0x00400x07FF地址范圍內(nèi)存儲(chǔ)器的尋訪速度則為3個(gè)CPU時(shí)鐘周期。堆棧是在內(nèi)存RAM區(qū)專門開(kāi)辟出來(lái)的按照“先進(jìn)后出”原則進(jìn)行數(shù)據(jù)存取的一種工作方式,如圖所示。主要用于子程序調(diào)用及返回和中斷處理斷點(diǎn)的保護(hù)及返回。堆棧的最大容量范圍限制在2K字RAM內(nèi),即其地址范圍從0X07FF到0X0000的存儲(chǔ)器范圍中。值得注意的是堆棧的生長(zhǎng)方向,SPCE061A系統(tǒng)復(fù)位后,SP初始化為0x07FF,每執(zhí)行PUSH指令一次,SP指針減一。 圖7、內(nèi)存映射表2.4語(yǔ)音訓(xùn)練和識(shí)別對(duì)于整個(gè)

22、主程序,首先必須完成對(duì)語(yǔ)音命令的訓(xùn)練和識(shí)別,在訓(xùn)練階段,單片機(jī)對(duì)采集到的語(yǔ)音樣本進(jìn)行分析處理,從中提取出語(yǔ)音特征信息,建立一個(gè)特征模型;在識(shí)別階段,單片機(jī)對(duì)采集到的語(yǔ)音樣本也進(jìn)行類似的分析處理,提取出語(yǔ)音的特征信息,然后將這個(gè)特征信息模型與已有的特征模型進(jìn)行對(duì)比,如果二者達(dá)到了一定的匹配度,則輸入的語(yǔ)音被識(shí)別,否則將提示命令出錯(cuò)。我們采用的是對(duì)特定人聲音的識(shí)別,這樣操作的時(shí)候比較方便,但如果其他人再想控制小車的話就必須重新訓(xùn)練。2.4.1語(yǔ)音命令訓(xùn)練過(guò)程小車的訓(xùn)練步驟是:名稱->名稱->前進(jìn)->前進(jìn)->倒退->倒退->左轉(zhuǎn)->左轉(zhuǎn)->右轉(zhuǎn)->

23、;右轉(zhuǎn).下面先以“前進(jìn)”命令 的訓(xùn)練過(guò)程為例進(jìn)行說(shuō)明程序流程:步驟一:小車提示“前進(jìn)”步驟二:告訴小車“前進(jìn)”步驟三:小車提示:“請(qǐng)?jiān)僬f(shuō)一遍”(重復(fù)訓(xùn)練提示音)步驟四:再次告訴小車“前進(jìn)”(重復(fù)訓(xùn)練一次)這是一個(gè)完整的訓(xùn)練過(guò)程,如果訓(xùn)練成功,小車會(huì)自動(dòng)進(jìn)入下一條指令的訓(xùn)練,并會(huì)提示下一條指令對(duì)應(yīng)的動(dòng)作(后退,左拐,右拐等);如果沒(méi)有聽(tīng)到聲音,小車會(huì)提示“沒(méi)有聽(tīng)到任何聲音”,如果第二次的聲音與第一次不相同,小車會(huì)提示“說(shuō)什么暗語(yǔ)呀”。這樣的話就要重復(fù)剛才所說(shuō)的四個(gè)步驟,直到成功為止。具體程序如下:int TrainWord(unsigned int WordID,unsigned int Snd

24、ID)int Result;PlaySnd(SndID,3);/引導(dǎo)訓(xùn)練,播放指令對(duì)應(yīng)動(dòng)作while(1)Result = BSR_Train(WordID,BSR_TRAIN_TWICE);/訓(xùn)練兩次,獲得訓(xùn)練結(jié)果if(Result=0)break;switch(Result)case -1:/沒(méi)有檢測(cè)出聲音PlaySnd(S_NOVOICE,3);return -1;case -2: /需要訓(xùn)練第二次PlaySnd(S_AGAIN,3);break;case -3:/環(huán)境太吵PlaySnd(S_NOISY,3);return -3;case -4:/數(shù)據(jù)庫(kù)滿 return -4;case

25、-5: /檢測(cè)出聲音不同PlaySnd(S_CMDDIFF,3);return -5;case -6: /序號(hào)錯(cuò)誤return -6;default:break;return 0;訓(xùn)練完成后還要利用void StoreSD()函數(shù)存儲(chǔ)語(yǔ)音模型,等待語(yǔ)音命令的識(shí)別。2.4.2語(yǔ)音識(shí)別過(guò)程本環(huán)節(jié)重要的一點(diǎn)就是待命命令(小車名字),只有只有檢測(cè)到待命標(biāo)志,小車才會(huì)根據(jù)相應(yīng)的辨識(shí)結(jié)果執(zhí)行動(dòng)作,如果沒(méi)有待命標(biāo)志即使識(shí)別到動(dòng)作命令也不會(huì)執(zhí)行。這樣做的原因是:一是比較符合人的思維過(guò)程,比如想個(gè)人做什么事情,那么首先要把這個(gè)人叫過(guò)來(lái),然后才告訴他要去做什么事情;另外一個(gè)原因是從可靠性的角度出發(fā),因?yàn)檎Z(yǔ)音識(shí)別不

26、可避免的存在一定的誤差,而在動(dòng)作前加了一道屏障,這樣就大大減小了因錯(cuò)誤識(shí)別導(dǎo)致小車錯(cuò)誤動(dòng)作的幾率。在識(shí)別出待命命令后回答“YEATH”并進(jìn)入待命狀態(tài),如果這時(shí)聽(tīng)到“前進(jìn)”命令,會(huì)回答“前進(jìn)”并執(zhí)行相應(yīng)動(dòng)作;如果這時(shí)聽(tīng)到“倒車”命令,會(huì)回答“倒車,請(qǐng)注意”并執(zhí)行相應(yīng)動(dòng)作;如果這時(shí)聽(tīng)到“左拐”命令,會(huì)回答“拐就拐”并執(zhí)行相應(yīng)動(dòng)作;如果這時(shí)聽(tīng)到“右拐”命令,會(huì)回答“拐就拐”并執(zhí)行相應(yīng)動(dòng)作。2.5 具體動(dòng)作的實(shí)現(xiàn):我們可以通過(guò)設(shè)置I/OB13-11的狀態(tài)來(lái)實(shí)現(xiàn)具體的動(dòng)作,其關(guān)系如下表所示: I/OB13-11直流電機(jī)的電流方向繼電器電流方向小車狀態(tài) 0000 無(wú) 無(wú) 停止 1000 正 無(wú) 前進(jìn) 10

27、10 正 正 左拐 1001 正 反 右拐 0100 反 無(wú) 倒車 表2、I/OB口與小車狀態(tài)關(guān)系當(dāng)識(shí)別出命令時(shí),就把I/OB13-11設(shè)置為相應(yīng)的狀態(tài),通過(guò)Delay()延時(shí)函數(shù)來(lái)控制小車走過(guò)的距離,下面以前進(jìn)子函數(shù)為例來(lái)說(shuō)明動(dòng)作的實(shí)現(xiàn)過(guò)程:oid GoAhead() /前進(jìn) unsigned int j;PlaySnd(S_ACT1,3); 播放“前進(jìn)”語(yǔ)音*P_IOB_Data=0x2000; 設(shè)置輸出口狀態(tài)為1000for(j=0;j<40;j+)延時(shí)函數(shù)Delay();*P_IOB_Data=0x0000; 清零,返回識(shí)別狀態(tài) 2.6語(yǔ)音命令的重新訓(xùn)練 在這里利用了一個(gè)特殊的F

28、lash 單元語(yǔ)音存儲(chǔ)區(qū)的首單元(該示例程序中為0xe000 單元),F(xiàn)lash 在初始化以后,如果沒(méi)有進(jìn)行過(guò)寫操作,那么該單元的內(nèi)容為“0xffff”。如果進(jìn)行過(guò)訓(xùn)練并成功存儲(chǔ)語(yǔ)音模型后為“0x0055”(該值由辨識(shí)器自動(dòng)生成)。這樣就可以根據(jù)這個(gè)單元的值來(lái)判斷是否經(jīng)過(guò)訓(xùn)練,具體的程序是: if(*P_IOA_Data)&0x0002)/是否重新訓(xùn)練,即KEY2是否被按下F_FlashErase(0xe000);while(1)/等待中斷*P_Watchdog_Clear=0x0001;2.7程序的組成和調(diào)試至此程序的編寫工作已經(jīng)基本完成,整個(gè)程序由main.c,F(xiàn)lash.asm,

29、 hardware.asm,ISR.asm, hardware.h,s480.h, hardware.inc等文件組成,打開(kāi)集成開(kāi)發(fā)環(huán)境IDE1.16.1,點(diǎn)擊菜單File>Open ,在彈出的對(duì)話框中找到小車資料文件夾,選擇其中的“CarDemo.spj”文件,打開(kāi)該工程。(注意:如果看不到CarDemo.spj,請(qǐng)?jiān)趶棾龅膶?duì)話框中選擇打開(kāi)類型為spj 或者所有文件)然后打開(kāi)BUILDSTART DEBUGGO,進(jìn)行軟件的編譯,找出錯(cuò)誤并進(jìn)行適當(dāng)?shù)男薷摹?.8程序代碼下載:硬件連接完成之后,檢查無(wú)誤,接下來(lái)就可以下載程序了。具體的步驟為:第一步:打開(kāi)集成開(kāi)發(fā)環(huán)境IDE1.16.1,點(diǎn)擊菜單File>Open ,在彈出的對(duì)話框中找到小車資料文件夾,再進(jìn)入到CarDemo 文件夾,選擇其中的“CarDemo.spj”文件,打開(kāi)該工程。第二步:點(diǎn)擊菜單Project>Select Body,或者直接點(diǎn)擊圖標(biāo)打開(kāi)如所下圖所示的對(duì)話框: 圖8、類型選擇對(duì)話框第三步:在彈出的對(duì)話框中選擇Body Name 為SPCE060A_061A,選擇Probe 為Auto,點(diǎn)擊OK 按鈕確定。第四步:點(diǎn)擊IDE 工具欄上的圖標(biāo),選擇Use ICE

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論