版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
-z.課程設(shè)計說明書〔論文〕課程名稱:單片機課程設(shè)計設(shè)計題目:智能控制小車課程設(shè)計考核表題目:智能聲控小車實驗局部考核考核內(nèi)容分值得分根本設(shè)計任務(wù)的完成情況40附加設(shè)計任務(wù)的完成情況10對教師提問的答復(fù)情況10總結(jié)報告評分評分內(nèi)容分值得分內(nèi)容完整、字數(shù)達標(biāo)20層次清晰、重點突出、分析透徹10書寫標(biāo)準(zhǔn)、文字流暢5有獨特見解、有一定的創(chuàng)新5總成績:指導(dǎo)教師簽字:**工業(yè)大學(xué)課程設(shè)計任務(wù)書姓名:院〔系〕:電氣工程及自動化學(xué)院專業(yè):測控技術(shù)與儀器班號任務(wù)起至日期:課程設(shè)計題目:智能聲控小車技術(shù)參數(shù)和設(shè)計要求:技術(shù)參數(shù):1.凌陽SPCE061A型單片機最小開發(fā)系統(tǒng)一套,包括電源接口、IO接口、音頻輸出接口、MIC輸入接口及程序下載接口;小車額定工作電壓4.5V(3節(jié)干電池)。設(shè)計要求:正確焊接電路板,完成單片機最小系統(tǒng)的調(diào)試;利用61板實現(xiàn)語音控制小車的根本功能,包括前進、倒車、左拐和右拐的功能;3.根據(jù)自己能力,完成小車附加功能。工作量:總工作時間為10天;完成凌陽SPCE061A型單片機最小系統(tǒng)的焊接與調(diào)試工作;設(shè)計程序流程圖并編寫、調(diào)試程序;車體與單片機最小系統(tǒng)連接調(diào)試,完成設(shè)定的功能;最后撰寫開題報告和結(jié)題報告各一份。工作方案安排:——2011.8.24:電路板焊接、查閱資料,學(xué)習(xí)凌陽單片機;——2011.8.26:熟悉凌陽單片機集成開發(fā)環(huán)境、設(shè)計程序流程圖,編寫程序;——2011.8.30:調(diào)試程序,完成設(shè)定要實現(xiàn)的功能;——2011.9.1:撰寫課程設(shè)計報告、準(zhǔn)備驗收?!炇胀M設(shè)計者及分工:同組人:田序昌分工:田序昌負責(zé)電路板焊接與測試,以及前期根本功能程序的實現(xiàn);王水根〔本人〕負責(zé)后期拓展功能的實現(xiàn)與程序調(diào)試指導(dǎo)教師簽字___________________年月日教研室主任意見:教研室主任簽字___________________年月日*注:此任務(wù)書由課程設(shè)計指導(dǎo)教師填寫-z.單片機課設(shè)報告一、課設(shè)目的及要求〔1〕課題目的通過設(shè)計一個由單片機控制的智能小車來熟悉模塊化編程方法,掌握單片機C語言的程序設(shè)計和調(diào)試方法,并理解單片機的原理、構(gòu)造、指令、運行模式功能模塊及應(yīng)用開發(fā)方法。〔2〕課題意義及單片機開展現(xiàn)狀語音處理技術(shù)是一門新興的技術(shù),它不僅包括語音的錄制和播放,還涉及語音的壓縮編碼和解碼,語音的識別等各種處理技術(shù)。以往做這方面的設(shè)計,一般有兩個途徑:一種方案是單片機擴展設(shè)計,另一種就是借助于專門的語音處理芯片。普通的單片機往往不能實現(xiàn)這么復(fù)雜的過程和算法,即使勉強實現(xiàn)也要加很多的外圍器件。專門的語音處理芯片也比擬多,像ISD系列、PM50系列等,但是專門的語音處理芯片功能比擬單一,想在語音之外的其他方面應(yīng)用根本是不可能的。SPCE061A是凌陽科技推出的一款16位μ'nSP構(gòu)造的微控制器。該芯片帶有硬件乘法器,能夠?qū)崿F(xiàn)乘法運算、內(nèi)積運算等復(fù)雜的運算。它不僅運算能力強,而且處理速度快,單周期最高可以到達49MHz。SPCE061A內(nèi)嵌32K字的FLASH程序存儲器以及2K的SRAM。同時該SOC芯片具有ADC和DAC功能,其MIC_ADC通道帶有AGC自動增益環(huán)節(jié),能夠很輕松的將語音信號采集到芯片內(nèi)部,兩路10位的電流輸出型DAC,只要外接一個功放就可以完成聲音的播放。以上介紹的這些硬件資源使得該SPCE061A能夠單芯片實現(xiàn)語音處理功能。借助于SPCE061A的語音特色,我們開發(fā)出了這款語音控制小車。小車不僅具有前進、后退、左轉(zhuǎn)、右轉(zhuǎn)停車等根本功能;同時配合SPCE061A的語音特色,實現(xiàn)語音控制功能?!?〕設(shè)計要求小車采用語音識別技術(shù),可通過語音命令對其行駛狀態(tài)進展控制。根本設(shè)計任務(wù):前進、倒車、左拐、右拐、停車的功能。附加設(shè)計任務(wù):S型前進、左轉(zhuǎn)圈和右轉(zhuǎn)圈二、課題設(shè)計的主要內(nèi)容和具體實施方案主要內(nèi)容1.可以通過簡單的I/O操作實現(xiàn)小車的前進、后退、左轉(zhuǎn)、右轉(zhuǎn)等功能;2.配合SPCE061A的語音特色,利用系統(tǒng)的語音播放和語音識別資源,實現(xiàn)語音控制的功能;3.可以在行走過程中聲控改變小車運動狀態(tài)實施方案方案論證:方案一:采用MCS-51系列單片機實現(xiàn),由于有語音識別和語音播放功能,所以需要擴展語音識別模塊和語音播放模塊,這樣必然造成端口的資源緊*,所以還必須參加接口擴展芯片。該實現(xiàn)方案構(gòu)造如下列圖所示。方案二:采用SPCE061A實現(xiàn)語音控制小車方案,由于SPCE061A內(nèi)部具有語音識別和語音播放功能,所以只需要擴展根本的MIC和語音功放即可,該方案構(gòu)造如下列圖所示。比擬以上兩個方案,方案二構(gòu)造簡單,易于操作,應(yīng)選則方案二。方案實施:⒈系統(tǒng)的構(gòu)造框圖如下列圖:系統(tǒng)組成主要包括以下兩局部:SPCE061A精簡開發(fā)板、語音小車控制電路板。圖中的語音輸入局部MIC_IN、按鍵輸入KEY、聲音輸出局部的功率放大環(huán)節(jié)等已經(jīng)做到了精簡開發(fā)板——61板上,為我們使用提供了很大的方便。在電機的驅(qū)動方面,采用全橋驅(qū)動技術(shù),利用四個I/O端口分為兩組分別實現(xiàn)兩個電機的正傳、反轉(zhuǎn)和停三態(tài)運行。⒉系統(tǒng)控制方案小車的運動控制采用語音控制和中斷定時控制相結(jié)合,通過語音觸發(fā)小車動作,小車動作之后,隨時可以通過語音指令改變小車的運動狀態(tài)。在每一次動作觸發(fā)的同時啟動定時器,如果小車由于*些原因不能正常的接收語音指令,則只要定時時間到,中斷效勞程序會發(fā)出指令讓小車停下來。⒊車體構(gòu)造介紹語音控制小車為四輪構(gòu)造,其中前面兩個車輪由前輪電機控制,在連桿和支點作用下控制前輪左右擺動,來調(diào)節(jié)小車的前進方向。在自然狀態(tài)下,前輪在彈簧作用下保持中間位置。后面兩個車輪由后輪電機驅(qū)動,為整個小車提供動力,所以又稱前面的輪子為方向輪,后面的兩個輪子為驅(qū)動輪,如下列圖所示。小車的行走原理:直走:由小車的構(gòu)造分析,在自然狀態(tài)下,前輪在彈簧作用下保持中間狀態(tài),這是只要后輪電機正轉(zhuǎn)小車就會前進。倒車:倒車動作和前進動作剛好相反,前輪電機仍然保持中間狀態(tài),后輪電機反轉(zhuǎn),小車就會向后運動。左轉(zhuǎn):前輪電機逆時針旋轉(zhuǎn)〔規(guī)定為正轉(zhuǎn)〕,后輪電機正轉(zhuǎn),這時小車就會在前后輪共同作用下朝左側(cè)前進。右轉(zhuǎn):前輪電機反轉(zhuǎn),后輪電機正轉(zhuǎn),這時小車就是會在前后輪共同作用下朝右側(cè)前進。小車控制板原理圖:控制板主要包括:接口電路、電源電路和兩路電機的驅(qū)動電路。小車根本的運行狀態(tài)與輸入的對照表如下⒋系統(tǒng)軟件設(shè)計系統(tǒng)的總體程序流程如下列圖語音識別小車的主程序分為四大局部:初始化局部、訓(xùn)練局部、識別局部、重訓(xùn)操作。初始化局部:初始化操作將IOB8~IOB11設(shè)置為輸出端,用以控制電機。訓(xùn)練局部:訓(xùn)練局部完成的工作就是建立語音模型。程序一開場判斷小車是否被訓(xùn)練過,如果沒有訓(xùn)練過則要求對其進展訓(xùn)練,并且會在訓(xùn)練成功之后將訓(xùn)練的模型存儲到FLASH,在以后使用時不需要重新訓(xùn)練;如果已經(jīng)訓(xùn)練過會把存儲在FLASH中的模型調(diào)出來裝載到辨識器中。由于凌陽單片機的局限性,每次最多只能識別5條指令,因此在訓(xùn)練時對8條指令預(yù)先分為第一、第二兩組,每組4條指令。當(dāng)程序檢測到訓(xùn)練標(biāo)志位BS_Flag內(nèi)容為0*ffff,就會要求操作者對它進展訓(xùn)練操作,訓(xùn)練采用兩次訓(xùn)練獲取結(jié)果的方式,以訓(xùn)練名字為例:小車首先會提示:給我取個名字吧,這時你可以告訴它一個名字〔比方小車〕;然后它會提示:請再說一遍,這時再次告訴它名字〔小車〕,如果兩次的聲音差異不大,小車就能夠成功的建立模型,名稱訓(xùn)練成功;如果沒能夠成功的建立模型,小車會告知失敗的原因并要求重新訓(xùn)練。成功訓(xùn)練名稱后會給出下一條待訓(xùn)練指令提示音:前進,參照名稱訓(xùn)練方式訓(xùn)練前進指令。依次訓(xùn)練小車的名稱——前進指令——倒車指令——左轉(zhuǎn)指令——右轉(zhuǎn)指令——S型前進指令——左轉(zhuǎn)圈指令——右轉(zhuǎn)圈指令,全部訓(xùn)練成功子程序返回,訓(xùn)練完畢。識別局部:設(shè)定Result為辨識結(jié)果,team為組別標(biāo)識變量。預(yù)先加載第一組語音模型〔team=0〕,程序運行到左轉(zhuǎn)函數(shù)后隨即加載第二組語音模型。語音識別首先獲取辨識器的辨識結(jié)果,判斷是否有語音觸發(fā),如果有語音觸發(fā)則會返回識別結(jié)果Result的值。如果Result是第二組〔team=1〕里面的命令,則該命令無效,跳出循環(huán)等待下一次命令;如果Result是第一組〔team=0〕里面的命令,則根據(jù)相應(yīng)的名稱執(zhí)行相應(yīng)的動作,并且重新設(shè)定team的值。為方便跳轉(zhuǎn),主程序里設(shè)置名稱指令、前進指令、后退指令執(zhí)行完畢后team清0,左拐指令執(zhí)行完畢后team置1,加載第二組語音模型。同理,在team置1的情況下,Result只識別第二組〔team=1〕的命令,對第一組無視。第二組的命令里面,右拐指令、S型前進指令、左轉(zhuǎn)圈指令執(zhí)行完畢后team置1,右轉(zhuǎn)圈指令執(zhí)行完畢后team清0,重新加載第一組命令。以此類推。雖然已經(jīng)有了前進、后退以及倒車等語音控制指令,但是考慮環(huán)境的干擾因素,小車運行時的噪音影響和有效距離的限制,小車運行后可能接收不到語音指令而一直運行。為了防止出現(xiàn)這種情況,參加了時間控制,在啟動小車運行的同時啟動定時器,定時器時間到停頓小車的運行,該定時器借助于2Hz時基中斷完成,可以在程序中修改uiTimeset參數(shù)來控制運行時間,當(dāng)uiTimeset=3時,運行時間為1.5s,以此類推。注:查閱光盤資料,在轉(zhuǎn)彎之前首先讓前輪朝目標(biāo)方向的反方向偏轉(zhuǎn),然后再讓前輪朝目標(biāo)方向偏轉(zhuǎn),據(jù)說這樣這樣前輪的擺動范圍更大,慣性更大,轉(zhuǎn)向效果會更好,但實際操作歷來感覺效果一般。重訓(xùn)操作:考慮到有重新訓(xùn)練的需求,設(shè)置了重新訓(xùn)練的按鍵〔61板的KEY3〕,循環(huán)掃描該按鍵,一旦檢測到此鍵按下,則將擦除訓(xùn)練標(biāo)志位〔0*e000單元〕,并等待復(fù)位。復(fù)位后,程序重新執(zhí)行,當(dāng)檢測到訓(xùn)練標(biāo)志位為0*ffff時會要求重新對其進展訓(xùn)練。三:課程設(shè)計中發(fā)現(xiàn)的問題及解決方案由于電路板焊接與調(diào)試以及前期程序根本功能的實現(xiàn)均由謝思哲實現(xiàn),我這兒提出的都是加上拓展功能時出現(xiàn)的各種問題:1.制作音頻文件時程序始終播放不了。解決方法:一開場以為是文件太大了識別不了,結(jié)果發(fā)現(xiàn)自己錄的音頻文件比系統(tǒng)自帶的還小,不是這個原因;后來發(fā)現(xiàn)是之前用window自帶的錄音機格式轉(zhuǎn)換的時候把格式弄錯導(dǎo)致,改回去便可。2.添加命令時,需要添加相應(yīng)的音頻文件,導(dǎo)致各種串音。解決方法:經(jīng)教師點撥,在Resource.asm文件里最下面的添加文件順序必須與左側(cè)Resource對話框里的音頻文件順序一致,而且必須把添加的文件全部放在最后,不能因為訓(xùn)練命令的原因而認為會“提早〞被調(diào)用而放在前面,這樣會造成串音。四、課程設(shè)計的心得體會這次課程設(shè)計在上學(xué)期的51單片機的根底上第一次接觸全新的開發(fā)板和編譯環(huán)境,加強對單片機運作原理的理解。同時,貫穿整個課設(shè)的查詢資料大大鍛煉了我的搜尋資料的能力。同時,這是我第一次使用集成語音傳感系統(tǒng)的單片機開發(fā)板,是對于新鮮事物的一種嘗試,對我以后更深入探索電子元件世界會有幫助的。五、參考資料凌陽61板產(chǎn)品資料凌陽大學(xué)方案六、鳴謝謝謝學(xué)校、學(xué)院給我們提供了動手實踐單片機的時機,更感謝課設(shè)過程中胡瑞強教師的悉心指導(dǎo)與幫助。附:源程序//========================================================//工程名稱: Car_Demo//功能描述: 實現(xiàn)小車的語音控制//涉及的庫: CMacro1016.lib// bsrv222SDL.lib// sacmv26e.lib//組成文件: main.c// Flash.asm,hardware.asm,ISR.asm// hardware.h,s480.h,hardware.inc// 硬件連接: IOA0-----KEY1// IOA1-----KEY2// IOA2-----KEY3// IOB8-----前進// IOB9-----倒車// IOB10----左拐// IOB11----右拐// 維護記錄: 2005-12-12v1.0//========================================================#include"s480.h"#include"bsrsd.h"#define P_IOA_Data (volatileunsignedint*)0*7000#defineP_IOA_Dir (volatileunsignedint*)0*7002#defineP_IOA_Attrib (volatileunsignedint*)0*7003#defineP_IOB_Data (volatileunsignedint*)0*7005#defineP_IOB_Dir (volatileunsignedint*)0*7007#defineP_IOB_Attrib (volatileunsignedint*)0*7008#defineP_TimerA_Data (volatileunsignedint*)0*700A#defineP_TimerA_Ctrl (volatileunsignedint*)0*700B#defineP_TimerB_Data (volatileunsignedint*)0*700C#defineP_TimerB_Ctrl (volatileunsignedint*)0*700D#defineP_Watchdog_Clear (volatileunsignedint*)0*7012#defineP_INT_Mask (volatileunsignedint*)0*702D#defineP_INT_Clear (volatileunsignedint*)0*7011#defineNAME_ID 0*100//名字#defineMAND_GO_ID 0*101//前進#defineMAND_BACK_ID 0*102//倒車#defineMAND_LEFT_ID 0*103//左拐#defineMAND_RIGHT_ID 0*104//右拐#defineMAND_S_ID0*105//S型前進#defineMAND_LL_ID0*106//左轉(zhuǎn)圈#defineMAND_RR_ID0*107//右轉(zhuǎn)圈#defineS_NAME 0 //給我取個名字吧#defineS_ACT1 1 //前進#defineS_ACT2 2 //倒車,請注意#defineS_ACT3 3 //左拐#defineS_ACT4 4 //右拐 #defineS_RDY 5 //Yeah#defineS_AGAIN 6 //請再說一遍#defineS_NOVOICE 7 //沒有聽到任何聲音#defineS_CMDDIFF 8 //說什么暗語呀#defineS_NOISY 8 //說什么暗語呀#defineS_START 9 //準(zhǔn)備就緒,開場辨識 #defineS_GJG 10 //拐就拐#defineS_DCZY 11 //倒車,請注意#defineS_WAY 12 //S型前進#defineS_LL 13 //向左轉(zhuǎn)圈#defineS_RR 14 //向右轉(zhuǎn)圈e*ternunsignedintBSR_SDModel[100]; //外部變量BSR_SDModel[100],辨識器自帶e*ternvoidF_FlashWrite1Word(unsignedintaddr,unsignedintValue);e*ternvoidF_FlashErase(unsignedintsector);unsignedintuiTimeset=3; //運行時間定時,調(diào)整該參數(shù)控制運行時間unsignedintuiTimecont; //運行時間計時//=============================================================//語法格式: voidDelay();//實現(xiàn)功能: 延時//參數(shù): 無//返回值: 無//=============================================================voidDelay() { unsignedinti; for(i=0;i<0*3Fff;i++) { *P_Watchdog_Clear=0*0001; }}//=============================================================//語法格式: voidPlaySnd(unsignedSndInde*,unsignedDAC_Channel);//實現(xiàn)功能: 語音播放函數(shù)//參數(shù): SndInde*-播放語音資源索引號// DAC_Channel-播放聲道選擇//返回值: 無//=============================================================voidPlaySnd(unsignedSndInde*,unsignedDAC_Channel){ BSR_StopRecognizer(); //停頓識別器 SACM_S480_Initial(1); //初始化為自動播放 SACM_S480_Play(SndInde*,DAC_Channel,3); //開場播放一段語音 while((SACM_S480_Status()&0*0001)!=0) //是否播放完畢? { SACM_S480_ServiceLoop(); //解碼并填充隊列 *P_Watchdog_Clear=0*0001; //清看門狗 } SACM_S480_Stop(); //停頓播放 BSR_InitRecognizer(BSR_MIC); //初始化識別器}//=============================================================//語法格式: intTrainWord(intWordID,intSndID);//實現(xiàn)功能: 訓(xùn)練一條指令//參數(shù): WordID-指令編碼// SndID-指令提示音索引號//返回值: 無//=============================================================intTrainWord(unsignedintWordID,unsignedintSndID){ intResult; PlaySnd(SndID,3); //引導(dǎo)訓(xùn)練,播放指令對應(yīng)動作 while(1) { Result=BSR_Train(WordID,BSR_TRAIN_TWICE); //訓(xùn)練兩次,獲得訓(xùn)練結(jié)果 if(Result==0)break; switch(Result) { case-1: //沒有檢測出聲音 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ù)庫滿 return-4; case-5: //檢測出聲音不同 PlaySnd(S_CMDDIFF,3); return-5; case-6: //序號錯誤 return-6; default: break; } } return0;}//=============================================================//語法格式: voidTrainSD_one();//實現(xiàn)功能: 第一組訓(xùn)練函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidTrainSD_one(){ BSR_DeleteSDGroup(0); //去除內(nèi)存 while(TrainWord(NAME_ID,S_NAME)!=0); //訓(xùn)練名稱 while(TrainWord(MAND_GO_ID,S_ACT1)!=0); //訓(xùn)練第1個動作 while(TrainWord(MAND_BACK_ID,S_ACT2)!=0); //訓(xùn)練第2個動作 while(TrainWord(MAND_LEFT_ID,S_ACT3)!=0); //訓(xùn)練第3個動作}//=============================================================//語法格式: voidTrainSD_two();//實現(xiàn)功能: 第二組訓(xùn)練函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidTrainSD_two(){ BSR_DeleteSDGroup(0); //去除內(nèi)存 while(TrainWord(MAND_RIGHT_ID,S_ACT4)!=0); //訓(xùn)練第4個動作 while(TrainWord(MAND_S_ID,S_WAY)!=0); //訓(xùn)練第5個動作 while(TrainWord(MAND_LL_ID,S_LL)!=0); //訓(xùn)練第6個動作 while(TrainWord(MAND_RR_ID,S_RR)!=0); //訓(xùn)練第7個動作}//=============================================================//語法格式: voidStoreSD_one();//實現(xiàn)功能: 第一組存儲語音模型函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidStoreSD_one(){ unsignedintulAddr,i,mandID,g_Ret; F_FlashWrite1Word(0*ef00,0*aaaa); F_FlashErase(0*e000); F_FlashErase(0*e100); F_FlashErase(0*e200); ulAddr=0*e000;//******** for(mandID=0*100;mandID<0*104;mandID++) { g_Ret=BSR_E*portSDWord(mandID); while(g_Ret!=0) //模型導(dǎo)出成功? g_Ret=BSR_E*portSDWord(mandID); for(i=0;i<100;i++) //保存語音模型SD1(0*e000---0*e063) { F_FlashWrite1Word(ulAddr,BSR_SDModel[i]); ulAddr+=1; } }}//=============================================================//語法格式: voidStoreSD_two();//實現(xiàn)功能: 第二組存儲語音模型函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidStoreSD_two() { unsignedintulAddr,i,mandID,g_Ret; F_FlashWrite1Word(0*ef00,0*aaaa); F_FlashErase(0*e300); F_FlashErase(0*e400); F_FlashErase(0*e500); ulAddr=0*e300;//******** for(mandID=0*105;mandID<0*109;mandID++) { g_Ret=BSR_E*portSDWord(mandID); while(g_Ret!=0) //模型導(dǎo)出成功? g_Ret=BSR_E*portSDWord(mandID); for(i=0;i<100;i++) //保存語音模型SD1(0*e000---0*e063) { F_FlashWrite1Word(ulAddr,BSR_SDModel[i]); ulAddr+=1; } }}//=============================================================//語法格式: voidLoadSD_one();//實現(xiàn)功能: 裝載第一組命令//參數(shù): 無//返回值: 無//=============================================================voidLoadSD_one() { unsignedint*p,k,jk,Ret,g_Ret; BSR_DeleteSDGroup(0); //去除內(nèi)存 p=(int*)0*e000; for(jk=0;jk<4;jk++) { for(k=0;k<100;k++) { Ret=*p; BSR_SDModel[k]=Ret; //裝載語音模型 p+=1; } g_Ret=BSR_ImportSDWord(); while(g_Ret!=0) //模型裝載成功? g_Ret=BSR_ImportSDWord(); }}//=============================================================//語法格式: voidLoadSD_two();//實現(xiàn)功能: 裝載第二組命令//參數(shù): 無//返回值: 無//=============================================================voidLoadSD_two() { unsignedint*p,k,jk,Ret,g_Ret;BSR_DeleteSDGroup(0); //去除內(nèi)存 p=(int*)0*e300; for(jk=0;jk<4;jk++) { for(k=0;k<100;k++) { Ret=*p; BSR_SDModel[k]=Ret; //裝載語音模型 p+=1; } g_Ret=BSR_ImportSDWord(); while(g_Ret!=0) //模型裝載成功? g_Ret=BSR_ImportSDWord(); }}//=============================================================//語法格式: voidGoAhead();//實現(xiàn)功能: 前進子函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidGoAhead() //前進{ PlaySnd(S_ACT1,3); //提示 *P_IOB_Data=0*0100; //前進 *P_INT_Mask|=0*0004; //以下為中斷定時操作 __asm("intfiq,irq"); uiTimecont=0;}//=============================================================//語法格式: voidBackUp();//實現(xiàn)功能: 后退子函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidBackUp() //倒退{ PlaySnd(S_DCZY,3); //提示 *P_IOB_Data=0*0200; //倒退 *P_INT_Mask|=0*0004; //以下為中斷定時操作 __asm("intfiq,irq"); uiTimecont=0;}//=============================================================//語法格式: voidTurnLeft();//實現(xiàn)功能: 左轉(zhuǎn)子函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidTurnLeft() //左轉(zhuǎn){ PlaySnd(S_GJG,3); *P_IOB_Data=0*0900; //右轉(zhuǎn) Delay(); *P_IOB_Data=0*0500; //左轉(zhuǎn) Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); *P_INT_Mask|=0*0004; //以下為中斷定時操作 __asm("intfiq,irq"); uiTimecont=0;}//=============================================================//語法格式: voidTurnRight();//實現(xiàn)功能: 右轉(zhuǎn)子函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidTurnRight() //右轉(zhuǎn){ PlaySnd(S_GJG,3); //語音提示 *P_IOB_Data=0*0500; //左轉(zhuǎn) Delay(); *P_IOB_Data=0*0900; //右轉(zhuǎn) Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); *P_INT_Mask|=0*0004; //以下為中斷定時操作 __asm("intfiq,irq"); uiTimecont=0;}//=============================================================//語法格式: voidS_loop();//實現(xiàn)功能: 停車子函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidS_loop()//S形路線{unsignedinti;PlaySnd(S_WAY,3);for(i=0;i<4;i++){ *P_IOB_Data=0*0500; Delay(); *P_IOB_Data=0*0800; *P_IOB_Data=0*0800; Delay(); *P_IOB_Data=0*0500; *P_INT_Mask|=0*0004; //以下為中斷定時操作 __asm("intfiq,irq"); uiTimecont=0;} }//=============================================================//語法格式: voidL_circle();//實現(xiàn)功能: 左轉(zhuǎn)圈子函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidL_circle() //向左轉(zhuǎn)圈{ PlaySnd(S_LL,3); *P_IOB_Data=0*0900; //右轉(zhuǎn) Delay(); //延時 *P_IOB_Data=0*0500; //左轉(zhuǎn) Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); *P_INT_Mask|=0*0004; //以下為中斷定時操作 __asm("intfiq,irq"); uiTimecont=0;}//=============================================================//語法格式: voidR_circle();//實現(xiàn)功能: 右轉(zhuǎn)圈子函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidR_circle() //向右轉(zhuǎn)圈{ PlaySnd(S_RR,3); //語音提示 *P_IOB_Data=0*0500; //左轉(zhuǎn) Delay(); //延時 *P_IOB_Data=0*0900; //右轉(zhuǎn) Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); Delay(); *P_INT_Mask|=0*0004; //以下為中斷定時操作 __asm("intfiq,irq"); uiTimecont=0;}//=============================================================//語法格式: voidStop();//實現(xiàn)功能: 停車子函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidStop() //停車{ *P_IOB_Data=0*0000; //停車 PlaySnd(S_RDY,3); //語音提示}//=============================================================//語法格式: voidBSR(void);//實現(xiàn)功能: 辨識子函數(shù)//參數(shù): 無//返回值: 無//=============================================================voidBSR(void){ intResult; //辨識結(jié)果存放 intteam=0;//組別鑒定 Result=BSR_GetResult(); //獲得識別結(jié)果 if(Result>0) //有語音觸發(fā)? { *P_IOB_Data=0*0000; //臨時停車 switch(team) { case0: BSR_DeleteSDGroup(0); //初始化存儲器RAM LoadSD_one(); //裝載第一組命令 switch(Result) { caseNAME_ID: //識別知名稱命令 Stop(); //停車待命 team=0; break; caseMAND_GO_ID: //識別出第一條命令 GoAhead(); //執(zhí)行動作一:直走 team=0; break; caseMAND_BACK_ID: //識別出第二條命令 BackUp(); //執(zhí)行動作二:倒車 team=0; break; caseMAND_LEFT_ID: //識別出第三條命令 TurnLeft();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化工企業(yè)環(huán)保基本知識課件
- 飛蛾飼養(yǎng)技術(shù)培訓(xùn)課件
- 2026山東濱州市市屬事業(yè)單位招聘備考考試試題及答案解析
- 2026四川成都東部新區(qū)蘆霞衛(wèi)生院編外人員招聘3人參考考試題庫及答案解析
- 2026貴州貴陽禮物旅游產(chǎn)業(yè)發(fā)展有限公司招聘1人筆試備考試題及答案解析
- 2026中國農(nóng)業(yè)科學(xué)院農(nóng)業(yè)經(jīng)濟與發(fā)展研究所鄉(xiāng)村發(fā)展研究室編制外科研助理招聘1人參考考試題庫及答案解析
- 電氣-接地-施工方案(3篇)
- 2026山東淄博桓臺縣面向退役大學(xué)生士兵專項崗位招聘考試參考試題及答案解析
- 2026廣東佛山順德區(qū)杏壇鎮(zhèn)林文恩中學(xué)招聘臨聘教師4人備考考試試題及答案解析
- 2026江蘇連云港興榆創(chuàng)業(yè)投資有限公司對外招聘崗位開考情況說明筆試備考題庫及答案解析
- 南京醫(yī)科大學(xué)2026年招聘人事代理人員備考題庫及1套參考答案詳解
- 2026年教育平臺資源輸出協(xié)議
- 【《四旋翼飛行器坐標(biāo)系及相互轉(zhuǎn)換關(guān)系分析綜述》1000字】
- 2026浙江金華市婺城區(qū)城市發(fā)展控股集團有限公司招聘59人筆試參考題庫及答案解析
- 靜脈補液課件
- 廣東深圳市鹽田高級中學(xué)2024~2025學(xué)年高一上冊1月期末考試化學(xué)試題 附答案
- 2026年輔警招聘考試試題庫附答案【完整版】
- 浙江省《檢驗檢測機構(gòu)技術(shù)負責(zé)人授權(quán)簽字人》考試題及答案
- 建筑施工風(fēng)險辨識與防范措施
- 浙江省杭州地區(qū)六校2026屆化學(xué)高一第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 2025年CFA二級估值與財務(wù)報表分析試卷(含答案)
評論
0/150
提交評論