特定人語音控制機器人設計_第1頁
特定人語音控制機器人設計_第2頁
特定人語音控制機器人設計_第3頁
特定人語音控制機器人設計_第4頁
特定人語音控制機器人設計_第5頁
已閱讀5頁,還剩57頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、前言 隨著科學技術的發(fā)展,現(xiàn)如今單片機已滲透到我們生活的各個領域,幾乎很難找到那個領域沒有單片機的蹤跡。導彈的導航裝置,飛機上的各種儀表控制,計算機的網絡通訊與數據傳輸,工業(yè)自動化過程的實時控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領域的機器人、智能儀表、醫(yī)療器械了。機器人在當今社會里已經不在是一個陌生的名詞,在許多領域都采用了機器人來代替人類操作,給生產,科研等帶來了極大的方便。 本次畢業(yè)設計通過采用“61”板實現(xiàn)對機器人的控制,完成一些簡單的動作。在本次畢業(yè)設計中

2、得到了韓全力老師的辛勤指導,在此表示衷心的感謝!也對在本次課程設計中提供無私幫助的老師及同學表示感謝!目錄第一章、單片機及61板簡介.1.1、單片機.1.2、 61板.1.3 如何從PC機上下載程序.第二章 機器人.2.1 機器人簡介.2.2 系統(tǒng)總體方案介紹.2. 3編寫程序.個人總結.參考文獻. 第一章、單片機及61板簡介1.1、單片機1.1.1 定義單片微型計算機(Single-Chip Microcomputer),簡稱單片機。就是將微處理器(CPU)、存儲器(存放程序或數據的ROM和RAM)、總線、定時器/計數器、輸入/輸出接口(I/O口)和其他多種功能器件集成在一塊芯片上的微型計算

3、機。單片機的主要特點有:(1)可靠性高(2)便于擴展(3)控制功能強(4)低電壓、低功耗(5)片內存儲容量較小,除此之外,單片機還具有集成度高、體積小、性價比高、應用廣泛、易于產品化等特點。1.1.2 單片機發(fā)展階段(1)第一階段(19741976年):制造工藝落后,集成度低,而且采用了雙片形式。典型的代表產品有Fairchild公司的F8系列。其特點是:片內只包括了8位CPU,64B的RAM和兩個并行口,需要外加一塊3851芯片(內部具有1KB的ROM、定時器/計數器和兩個并行口)才能組成一臺完整的單片機。(2)第二階段(19771978年):在單片芯片內集成CPU、并行口、定時器/計數器、

4、RAM和ROM等功能部件,但性能低,品種少,應用范圍也不是很廣。典型的產品有Intel公司的MCS-48系列。其特點是,片內集成有8位的CPU,1KB或2KB的ROM,64B或128B的RAM,只有并行接口,無串行接口,有1個8位的定時器/計數器,中斷源有2個。片外尋址范圍為4KB,芯片引腳為40個。(3)第三階段(19791982年): 8位單片機成熟的階段。其存儲容量和尋址范圍增大,而且中斷源、并行I/O口和定時器/計數器個數都有了不同程度的增加,并且集成有全雙工串行通信接口。在指令系統(tǒng)方面增設了乘除法、位操作和比較指令。其特點是,片內包括了8位的CPU,4KB或8KB的ROM,128B或

5、256B的RAM,具有串/并行接口,2個或3個16位的定時器/計數器,有57個中斷源。片外尋址范圍可達64KB,芯片引腳為40個。(4)第四階段(1983年至今): 16位單片機和8位高性能單片機并行發(fā)展的時代。16位機的工藝先進,集成度高,內部功能強,運算速度快,而且允許用戶采用面向工業(yè)控制的專用語言,其特點是,片內包括了16位的CPU,8KB的ROM,232B 的RAM,具有串/并行接口,4個16位的定時器/計數器,有8個中斷源,具有看門狗(Watchdog),總線控制部件,增加了D/A和A/D轉換電路,片外尋址范圍可達64KB,本次設計采用凌陽大學開發(fā)的16位單片機SPCE061A。近年

6、來出現(xiàn)的32位單片機,是單片機的頂級產品,具有較高的運算速度。1.2、 61板1.2.1、 "61板"的組成和作用"61板"是以16位單片機SPCE061A為核心的精簡開發(fā)仿真實驗板,大小相當于一頁撲克牌,是"凌陽大學計劃"專為大學生、電子愛好者等進行電子實習、課程設計、畢業(yè)設計、電子制作及電子競賽所設計的,也可作為單片機項目初期研發(fā)使用。61板的主要特點是:簡單、易學、實用?!?1”板實物圖如圖1.1:圖1.1實物圖圖1.2 61板的結構圖POWER5v&3V供電電路PLL鎖向環(huán)外部電路Power電源指示燈Sleep睡眠指示

7、燈RESET復位電路K4復位按鍵PROBE在線調試器串行5pin接口S5EZ-PROBE和PROBE切換的撥斷開關J12、J3耳機插孔和兩pin喇叭插針DAC一路音頻輸出電路,采用SPY0030集成音頻放大器MIC麥克風輸入電路OSC32768晶振電路VREFA/D轉換外部參考電壓輸入接口R/C芯片其他外圍電阻、電容電路K1K3擴展的按鍵:接IOA0IOA2SPCE061A61板核心:16位微處理器PORTA/B32個I/O口圖1.3 功能指示(一) 輸入/輸出(I/O)接口"61板"將SPCE061A的32個I/O口全部引出:IOA0IOA15,IOB0IOB15,對應的

8、引腳為:A口,4148、53、5460;B口,51、8176、6864。而且該I/O口是可編程的,即可以設置為輸入或輸出:設置為輸入時,分為懸浮輸入或非懸浮輸入,非懸浮輸入又可以設置為上拉輸入或是下拉輸入;在5V情況下,上拉電阻為150K,下拉電阻為110K;設置為輸出時,可以選擇同相輸出或者反相輸出。 (二) 音頻輸入/輸出接口正如我們在前面介紹的"61板"具有強大的語音處理功能,如圖2所示,X1是語音的MIC輸入端,帶自動增益(AGC)控制,J12和J3都是語音輸出接口,一個是耳機插孔另一個是兩pin的插針外接喇叭,由DAC輸出引腳21或22經語音集成放大器SPYOO3

9、0放大,然后輸出,SPY0030是凌陽的芯片,相當于LM386,但是比386音質好,它可以工作在2.46.0V范圍內,最大輸出功率可達700mW(386必須工作在4V以上,而且功率只有100mW)。(三) 在線調試器(PROBE)和EZ-PROBE接口圖2中J4為PROBE的接口,該接口有5PIN,其中兩個分別是地(VSS)和3.3v電源(VCC),我們就是通過PROBE一端接PC機25針并口,一端連接它來調試、仿真和下載程序的。這樣,就不需要再用仿真器和編程器了,只要按圖2所示將其連接好,就可以通過它在PC機上調試程序,并且在線仿真,最后將程序下載到芯片中,即完成了程序的燒寫。圖2中的J11

10、是EZ-PROBE的接口,我們提供一根轉接線用作EZ-PROBE的下載,一端連接PC機的25pin并口,另外一端接61板的5pin EZ-PROBE接口,參見圖2。(四) 電源接口圖2中J10是電源接口,"61板"的內核SPCE061A電壓要求為3.3V,而I/O端口的電壓可以選擇3.3V也可以選擇5V。所以,在板子上具有兩種工作電壓:5V和3.3V。對應的引腳中15、36和7必須為3.3V, 對于I/O端口的電壓51、52、75可以為3.3V也可以是5V,這兩種電平的選擇通過跳線J5來選擇。"61板"的供電電源系統(tǒng)采用用戶多種選擇方式: 1、 DC5V

11、電池供電我們可以用3節(jié)電池來供電,5V直流電壓直接通過SPY0029(相當于一般3.3V 穩(wěn)壓器)穩(wěn)壓到3.3V,為整個"61板"提供了4.5V和3.3V兩種電平的電壓。 2、 DC5V穩(wěn)壓源供電我們可以直接外接5V的直流穩(wěn)壓源供電,5V電壓再通過SPY0029穩(wěn)壓到3.3V。3、 DC3V供電我們可以提供直流3.3V電壓為實驗板進行供電,此時整個板子只有3.3V電壓,I/O端口電壓此時只有一種選擇。 需要注意的是由于SPY0029最大輸出電流為50mA,所以如果需要外接一些模組時要先考慮一下是否合適。 (五)外部復位復位是對"61板"內部的硬件初始化,

12、"61板"本身具有上電復位功能,即只要一通電就自動復位,另外,還具有外部復位電路,即在引腳6上外加一個低電平就可令其復位。如圖2中的REST按鍵。1.2.2 "61板"核心部件 SPCE061A特性簡介SPCE061A是凌陽科技研發(fā)生產的性價比很高的一款十六位單片機,使用它可以非常方便靈活的實現(xiàn)語音的錄放系統(tǒng),該芯片擁有8路10位精度的ADC,其中一路為音頻轉換通道,并且內置有自動增益電路。這為實現(xiàn)語音錄入提供了方便的硬件條件。兩路10位精度的DAC,只需要外接功放(SPY0030A)即可完成語音的播放。另外凌陽十六位單片機具有易學易用的效率較高的一套指

13、令系統(tǒng)和集成開發(fā)環(huán)境。在此環(huán)境中,支持標準C語言,可以實現(xiàn)C語言與凌陽匯編語言的互相調用,并且,提供了語音錄放的庫函數,只要了解庫函數的使用,就會很容易完成語音錄放,這些都為軟件開發(fā)提供了方便的條件:特性: 16位'nSP微處理器; 工作電壓:內核工作電壓VDD為3.03.6V(CPU),IO口工作電壓VDDH為VDD5.5V(I/O); CPU時鐘:0.32MHz49.152MHz; 內置2K字SRAM; 內置32K閃存ROM; 可編程音頻處理; 晶體振蕩器; 系統(tǒng)處于備用狀態(tài)下(時鐘處于停止狀態(tài)),耗電小于; 2個16位可編程定時器/計數器(可自動預置初始計數值) 2個10位DAC

14、(數-模轉換)輸出通道; 32位通用可編程輸入/輸出端口; 14個中斷源可來自定時器A / B,時基,2個外部時鐘源輸入,鍵喚醒; 具備觸鍵喚醒的功能; 使用凌陽音頻編碼SACM_S240方式(2.4K位/秒),能容納210秒的語音數據; 鎖相環(huán)PLL振蕩器提供系統(tǒng)時鐘信號; 32768Hz實時時鐘; 7通道10位電壓模-數轉換器(ADC)和單通道聲音模-數轉換器; 聲音模-數轉換器輸入通道內置麥克風放大器和自動增益控制(AGC)功能; 具備串行設備接口; 低電壓復位(LVR)功和低電壓監(jiān)測(LVD)功能; 內置在線仿真板(ICE,In- Circuit Emulator)接口。 1.2.3

15、"61板"檢測的具體步驟 第一步、連接電源,可以連接3節(jié)電池,也可以直接接5V的穩(wěn)壓源現(xiàn)象:當電源接通時,紅色的發(fā)光二極管會點亮。同時會有語音提示:"歡迎進入自檢模式",此時因為還沒有連線,所以會聽到:"I/O測試失敗"的警告,所以就要進行第二步的操作;第二步、用連線分別將I/OA口的低8位和IOB口的低8位相連,IOA口的高8位和IOB口的高8位相連,然后按下REST復位鍵現(xiàn)象:當按下復位鍵后,程序從第一調開始運行開始執(zhí)行,語音提示"歡迎進入自檢模式",當聽到語音:"I/O測試成功"后,進行第

16、三步操作; 第三步、按K1鍵進行睡眠功能測試現(xiàn)象:如果測試成功,會看到綠色的發(fā)光二極管亮滅一下,并有語音提示"睡眠測試成功",否則提示"睡眠測試失敗",然后進行第四步操作;第四步、按下K2鍵進行A/D轉換的測試現(xiàn)象:語音提示:"A/D測試成功",否則提示"A/D測試失敗",進入最后一步操作; 第五步、拔掉第一步測試時的連接線,并按下K3鍵測試MIC輸入及D/A轉換輸出是否正常;現(xiàn)象:可以在MIC上輕輕的拍幾下,同時聽是否有聲音輸出,如果有,則說明MIC輸入和D/A轉換輸出部分正常。圖1.6 檢測流程圖1.3 如何從

17、PC機上下載程序(一)、 接電源61板配套有電池盒,將電池盒的插頭插到61板的5V座上,這時電源指示燈(紅色發(fā)光二極管)就被點亮了。若未被點亮時,應先排除故障再使用。(二)、 接喇叭或者耳機61板配套有喇叭,將喇叭插到電路板上標有J3和SPK的兩PIN方針座上,不分反正,插上就可以使用。這時按復位鍵,會有語音播放。(三)、 接下載線 下載線大口(25pin)端接PC機的并口上,另一端接在61板的Ez_probe接口上,在probe與ez_probe之間有一個邏輯開關,扳到ez_probe方向。表示在線調試器選擇ez_probe。(四)、 輸入程序凌陽十六位單片機指令系統(tǒng)共有41條指令。 例如:

18、指令代碼為:R1 = 0xffff;P_IOA_Data = R1,代碼的功能就是將16個A口全部輸出高電平。集成開發(fā)環(huán)境也支持標準C語言。例如完成1到100的累加程序。步驟如下:第一步:雙擊系統(tǒng)桌面IDE182圖標,進入系統(tǒng)開發(fā)環(huán)境。第二步:新建項目文件:用鼠標左鍵單擊 File 下拉菜單 New 彈出New對話框。在File文本框中輸入項目名稱 Example1,在location下選擇項目文件存儲路徑:E:ZxyProgram Example1新建項目后的 Workspace 窗口 結果: 生成了新項目Example第三步:新建C文件點擊菜單 File 下拉菜單 New 彈出New對話框

19、,在File文本框中輸入C文件名稱main,點擊OK后,main.c的編輯窗口就顯示出來。第四步:將代碼寫入main.c的窗口處例:/= / 函數: main()/ 描述:主函數/=int F_CleaWatchdog();int main() int i, G_Sum=0;for (i=0;i<=100;i+) G_Sum = G_Sum + i; /G_Sum保存結果while(1) /程序結束循環(huán) F_ClearWatchdog(); /清看門狗/*/ (五)、 編譯并下載代碼編寫結束后,將代碼進行編譯,方法是在IDE的菜單命令中,點擊build/rebuild all.在輸出窗口

20、中,會有編譯信息輸出,如果為0個錯誤,表示編譯通過,這時點擊工具欄中的標識為,然后點擊工具欄中的,就可以將代碼下載到芯片的程序存儲空間中。點擊工具欄中的標識 ,程序就自動開始全速運行。第二章 機器人在現(xiàn)代社會機器人這個詞語已經不再新鮮,而且形形色色的機器人出現(xiàn)在我們的日常生活中。本文將對凌陽科技大學計劃教育推廣中心推出的應用SPCE061A控制的智能機器人的軟硬件制作進行介紹。該機器人采用特定人語音識別對機器人進行控制,可以完成向前走、倒退、左轉、右轉、跳兩首舞曲、向左瞄準、向右瞄準、發(fā)射、連續(xù)發(fā)射等功能2.1 機器人簡介2.1.1 機器人驅動電路圖與實物圖機器人驅動電路圖如下圖所示:圖2.1

21、實物圖 圖2.2機器人驅動電路圖 機器人驅動電路采用功率較大的三極管搭成H橋來驅動電機,可以實現(xiàn)電機的正向旋轉與電機的反向旋轉。這些電機包括2個用于走路的電機與一個頭部轉向的電機。另外用了一個三極管驅動單向旋轉的電機,包括加速電機與發(fā)射電機,驅動電路比較簡單。2.1.2主要功能 通過語音命令對其進行控制; 可以跳兩首舞曲; 走步功能、轉向功能、轉頭功能; 發(fā)射飛盤功能;2.2 系統(tǒng)總體方案介紹2.2.1系統(tǒng)結構框圖用61板來控制機器人,使用了IOA7-IOA15資源,另外使用了揚聲器。如圖3.1所示:圖2.3 系統(tǒng)的結構框圖根據圖3.1將10pin線與機器人實現(xiàn)各種功能的電機連接起來系統(tǒng)主要由

22、61板與機器人驅動電路構成。61板作為整個系統(tǒng)的主控板,驅動電路驅動電機。在主控板61板的控制下完成各個動作。另外增加了特定人語音識別的功能,通過命令來控制機器人,使機器人智能化。 2.2.2 系統(tǒng)軟件設計 在主函數中調用相關函數完成特定人語音的訓練,然后再訓練成功后進行語音識別,根據識別的命令執(zhí)行相關的操作。程序流程圖如下圖所示:圖2.4程序流程圖與中斷流程圖判斷是否為第一次下載根據FLASH中的標志位來進行判斷。將訓練好的語音模型導出存儲到FLASH中使用庫函數BSR_ExportSDWord(uiCommandID);進行操作,然后再調用讀寫FLASH中的函數進行。在進行語音識別時,首先

23、讀取FLASH將語音模型取得,然后調用BSR_ImportSDWord(uiCommandID);函數將語音資源載入內存。在識別出命令后,執(zhí)行相關動作,相關動作操作就是操作電機的正向或反向旋轉同時配合延時與播放聲音組合起來形成不同的動作。2.2.3 應用方案的驗證步驟:步驟一:啟動u'nSP IDE。打開機器人應用實例程序,編譯、鏈接確認沒有錯誤。 步驟二:下載程序代碼到機器人的61板上。步驟三:打開機器人的電源,進行語音訓練,訓練過程按照下面進行:按順序訓練以下15條指令:"名稱","開始","準備","跳舞&qu

24、ot;,"再來一曲","開始","向前走","倒退","向右轉","向左轉","準備","向左瞄準","向右瞄準","發(fā)射","連續(xù)發(fā)射"。每條指令要訓練兩遍。當一條指令被正確識別時會提示進入下一條;如沒有被識別會要求重復該指令,直到正確識別為止。步驟四:如果訓練成功則進入語音識別狀態(tài),如果訓練沒有成功則重復訓練。由于SPCE061A的FLASH存儲器只有32K,所以15條指令

25、需要分組存放。在這里分成3組,每組5條指令。在不同組指令中交換需要根據出發(fā)名稱,所以在識別狀態(tài),要執(zhí)行動作首先需要出發(fā)名稱,就是訓練的第一條命令,然后可以識別第一組的其余四條命令。在觸發(fā)第一條指令,然后再觸發(fā)第二條指令,就可以識別第三條指令,參考圖2.5圖2.5語音訓練圖2. 3編寫程序主程序:Robot功能描述:智能語音識別避障機器人。 語音識別+機器人+超聲波測距綜合應用方案。涉及的庫:CMacro1016.lib bsr222SDL.lib SACMV26e.lib組成文件;main.c/BackGroudPlaying.c/Flash.asm/FIQ.asm/hadrware.asm

26、InterruptStatus.asm/IRQ.c/robot_function.c/SetIOBit.asm System.asm/ultrasonic.c/BackGroundPlaying.h/hardware.inc bsrSD.h/s480.h/hardware.h/robot.h注 意:*超聲波障礙檢測程序位于robot_function.c中。在機器人前進、后退、跳舞期間,調用Robot_CheckEnemy()函數進行障礙檢測,一旦檢測到附近25cm左右距離有障礙物,則停止當前動作,并發(fā)射飛盤。*文件名稱:main.c功能描述:使用ADC轉換器,將輸入的0-3.3V電壓轉換為數

27、字信號。=#include "bsrSD.h"#include "robot.h"#include "ultrasonic_App.h"#include "spce061a.h"#include "BackGroundPlaying.h"#include "InterruptStatus.h"extern void RobotSystemInit(void);extern unsigned int IsFirstDownLoad(void);extern void Forma

28、tFlash(void);extern void TrainFiveCommand(void);extern void SaveFiveCommand(unsigned int uiAddr);extern void ImportFiveCommand(unsigned int uiAddr_Import);extern unsigned int TrainWord(unsigned int WordID,unsigned int SndIndex);extern void Robot_DanceAgain(unsigned int n);extern void Robot_Dance(uns

29、igned int n);extern void Robot_Go(unsigned int n);extern void Robot_Backup(unsigned int n);extern void Robot_TurnLeft(unsigned int n);extern void Robot_TurnRight(unsigned int n);extern void Robot_HeadTurnLeft(unsigned int n);extern void Robot_HeadTurnRight(unsigned int n);extern void Robot_Shoot_Pre

30、pare(unsigned int n);extern void Robot_Shoot2(unsigned int n);extern void Robot_Shoot_Five(unsigned int n);extern void F_FlashWrite1Word(unsigned int,unsigned int);extern void F_FlashErase(int);extern void Delay(unsigned int);extern unsigned int uiTim;=語法格式:int main(void)實現(xiàn)功能:系統(tǒng)主函數參數:無返回值:無=int main

31、(void)unsigned int uiFlagFirst; /是否為第一次下載。unsigned int uiRes; /識別結果。unsigned int uiTimerCount; /時間是否超時。unsigned int uiBS_Team; /用于標識現(xiàn)在是第幾組命令在內存當中unsigned int uiKey; /存儲鍵盤值,按下將重新訓練。unsigned int uiActivated; /是否出于待命狀態(tài)。uiTim = 0;/4096Hz計數器。SetPlayStatus(plNULL);/初始化語音播放狀態(tài)為空閑。uiEnemyIndex = 0; /該變量用于保存當

32、前測距記錄在數組中的位置。uiEnemy0 = 0; /該數組用于保存最近幾次的測距記錄uiEnemy1 = 0;uiEnemy2 = 0;uiEnemy3 = 0;uiEnemy4 = 0;*P_INT_Ctrl = *P_INT_Ctrl_New | 0x0004;/打開2Hz時基中斷。SetInterruptStatus(0x0004);/設置R_InterruptStatus變量以防止放音程序將中斷關閉。_asm("INT FIQ,IRQ");RobotSystemInit();/初始化機器人IO口。Initial_ult();/初始化超聲波測距模組IO口。uiAc

33、tivated = 0; uiFlagFirst = IsFirstDownLoad();/判斷是否為第一次下載程序。if(uiFlagFirst = 1)/訓練FormatFlash(); /格式化需要存儲命令的存儲器。TrainFiveCommand();/訓練需要的五條命令(一組)。SaveFiveCommand(0xf700);/存儲五條命令。PlaySnd(OK, 1);/播放Ok,Let's go,表示一組命令存儲結束PlaySnd(LETUSGO, 1);TrainFiveCommand();SaveFiveCommand(0xf900);PlaySnd(FOLLOWME

34、, 1);TrainFiveCommand();SaveFiveCommand(0xfb00);PlaySnd(HO, 1);PlaySnd(HOO, 1);PlaySnd(HOO, 1);PlaySnd(HOOO, 1);PlaySnd(HO, 1);PlaySnd(HOO, 1);PlaySnd(HOO, 1);PlaySnd(HOOO, 1);uiFlagFirst = 0xaaaa;F_FlashWrite1Word(0xfd00,0xaaaa); ImportFiveCommand(Group1);uiBS_Team = 0;Loop:BSR_InitRecognizer(BSR_M

35、IC);/初始化識別器。while(1)/開始識別命令uiRes = BSR_GetResult(); /取得識別結果。if(uiRes > 0) if(uiActivated) uiTimerCount = 0; switch(uiRes) case NAME_ID: switch(uiBS_Team) case 0: /第一組的第一個命令(杰克)。 /播放Ok,Les's go,Yeah PlaySnd(OK, 1); break; case 1:/第二組的第一個命令(開始)。 PlaySnd(OK, 1); PlaySnd(LETUSGO, 1); PlaySnd(YEAH

36、, 1); /播放Ok,Les's go break; case 2:/第三組的第一個命令(準備)。 PlaySnd(OK, 1); /播放Ok break; break; case Command_One_ID: switch(uiBS_Team) case 0:/第一組的第二個命令(開始)。/導入第二組命令,修改uiBS_Team為1,播放Wo,Ho,Hoo,Hooo,跳出循環(huán)。 ImportFiveCommand(Group2); uiBS_Team = 1; PlaySnd(HO, 1); PlaySnd(HOO, 1); PlaySnd(HOO, 1); PlaySnd(HO

37、OO, 1); goto Loop; break; case 1:/第二組的第二個命令(向前走)。 /播放喀咔聲音,控制電機向前走。 Robot_Go(1); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; case 2:/第三組的第二個命令(向左瞄準) /播放旋轉聲音,頭部電機向左轉 Robot_HeadTurnLeft(1); PlaySnd(TURNHEAD, 1); PlaySnd(TURNHEAD, 1); PlaySnd(TURNHEAD, 1); ImportFiveCommand(Group1); uiBS

38、_Team = 0; goto Loop; break; uiActivated = 0;/杰克為觸發(fā)命令,每完成一個動作需要出發(fā)一次。break;case Command_Two_ID: switch(uiBS_Team) case 0:/第一組的第三個命令(準備)。/導入第三組命令,修改uiBS_Team為2,播放Wo,Ho,Hoo,Hooo,跳出循環(huán)。 ImportFiveCommand(Group3); uiBS_Team = 2; PlaySnd(HO, 1); PlaySnd(HOO, 1); PlaySnd(HOO, 1); PlaySnd(HOOO, 1); goto Loop

39、; break; case 1: /第二組的第三個命令(倒退)。 /播放喀咔聲音,控制電機向后走。 Robot_Backup(1); ImportFiveCommand(Group1); uiBS_Team = 0; break; case 2: /第三組的第三個命令(向右瞄準) /播放旋轉聲音,頭部電機向右轉。 Robot_HeadTurnRight(1); PlaySnd(TURNHEAD, 1); PlaySnd(TURNHEAD, 1); PlaySnd(TURNHEAD, 1); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop;

40、 break; uiActivated = 0; break;case Command_Three_ID: switch(uiBS_Team) case 0: /第一組的第四個命令(跳舞)。 /跳舞,清看門狗,時間比較長。 Robot_Dance(2); break; case 1: /第二組的第四個命令(左轉)。 /播放旋轉聲音,向左旋轉。 Robot_TurnLeft(1); PlaySnd(WALK, 1); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; case 2:/第三組的第四個命令(發(fā)射)。 /播放咚咚聲音

41、,發(fā)射飛盤。 Robot_Shoot_Prepare(5); Delay(1500); Robot_Shoot2(3); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; uiActivated = 0; break; case Command_Four_ID: switch(uiBS_Team) case 0:/第一組的第五個命令(向前滑行) /在來一曲。 Robot_DanceAgain(2); break; case 1:/第二組的第五個命令(右轉)。/播放聲音,向右旋轉,導到第一組命令,設置uiBS_Team為0,推

42、出循環(huán)。 Robot_TurnRight(1); PlaySnd(WALK, 1); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; case 2:/第三組的第五個命令(向后滑行)。/連續(xù)發(fā)射飛盤,導到第一組命令,設置uiBS_Team為0,推出循環(huán)。 Robot_Shoot_Prepare(5); Delay(1500); Robot_Shoot_Five(3); ImportFiveCommand(Group1); uiBS_Team = 0; goto Loop; break; uiActivated = 0; br

43、eak; else if(uiRes = NAME_ID) uiActivated = 1; uiTimerCount = 0; PlaySnd(OK, 1); /播放應答OK。 else if(uiActivated) if(+uiTimerCount > 700) uiActivated = 0; uiTimerCount = 0; PlaySnd(HOOO, 1); uiKey = *P_IOA_Data;uiKey = uiKey&0x0004;if(uiKey = 0x0004)F_FlashErase(0xfd00);/擦除標志位 。 文件名稱:robot_funct

44、ion.c功能描述:機器人語音訓練和執(zhí)行相關動作的實現(xiàn)#include "bsrSD.h"#include "s480.h"#include "robot.h"#include "BackGroundPlaying.h"#include "ultrasonic_App.h"void RobotSystemInit(void);unsigned int IsFirstDownLoad(void);void FormatFlash(void);void TrainFiveCommand(void);

45、void SaveFiveCommand(unsigned int uiAddr);void ImportFiveCommand(unsigned int uiAddr_Import);unsigned int TrainWord(unsigned int WordID,unsigned int SndIndex);void Robot_DanceAgain(unsigned int n);void Robot_Dance(unsigned int n);void Robot_Go(unsigned int n);void Robot_Backup(unsigned int n);void Robot_TurnLeft(unsigned int n);void Robot_TurnRight(unsigned int n);void Robot_HeadTurnLeft(unsigned int n);void Robot_HeadTurnRight(unsigned int n);void Robot_Shoot_Prepare(unsigned int n);void Robot_Shoot2(unsigned int n);void Robot_Shoot_Five(unsigned int n);int Robot_C

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論