基于單片機(jī)的語音控制小車設(shè)計(jì)_第1頁
基于單片機(jī)的語音控制小車設(shè)計(jì)_第2頁
基于單片機(jī)的語音控制小車設(shè)計(jì)_第3頁
基于單片機(jī)的語音控制小車設(shè)計(jì)_第4頁
基于單片機(jī)的語音控制小車設(shè)計(jì)_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

程序下

載電纜程序下

載電纜圖1控制系統(tǒng)所需硬件5、系統(tǒng)硬件設(shè)計(jì)系統(tǒng)的硬件方面,由于大部分的功能實(shí)現(xiàn)都是在61板上完成的,只有電機(jī)控制部分電路另外設(shè)計(jì)在一塊獨(dú)立的電路板上,我們稱之為控制板。下面詳細(xì)的介紹小車的結(jié)構(gòu)和運(yùn)行原理以及控制電路板的結(jié)構(gòu)和功能實(shí)現(xiàn)。圖2系統(tǒng)硬件框圖車體介紹語音控制小車為四輪結(jié)構(gòu)。其中前面兩個(gè)車輪由前輪電機(jī)控制,在連桿和支點(diǎn)作用下控制前輪左右擺動(dòng),來調(diào)節(jié)小車的前進(jìn)方向。在自然狀態(tài)下,前輪在彈簧作用下保持中間位置。后面兩個(gè)車輪由后輪電機(jī)驅(qū)動(dòng),為整個(gè)小車提供動(dòng)力。所以又稱前面的輪子為方向輪后面的兩個(gè)輪子為驅(qū)動(dòng)輪。小車的行走原理.直走:由小車的結(jié)構(gòu)分析,在自然狀態(tài)下,前輪在彈簧作用下保持中間狀態(tài),這是只要后輪電機(jī)正轉(zhuǎn)小車就會(huì)前進(jìn)。倒車:倒車動(dòng)作和前進(jìn)動(dòng)作剛好相反,前輪電機(jī)仍然保持中間狀態(tài),后輪電機(jī)反轉(zhuǎn),小車就會(huì)向后運(yùn)動(dòng)。

圖4小車前進(jìn)、后退示意圖左轉(zhuǎn):前輪電機(jī)逆時(shí)針旋轉(zhuǎn)(規(guī)定為正轉(zhuǎn)),后輪電機(jī)正轉(zhuǎn),這時(shí)小車就會(huì)在前后輪共同作用下朝左側(cè)前進(jìn)。右轉(zhuǎn):前輪電機(jī)反轉(zhuǎn),后輪電機(jī)正轉(zhuǎn),這時(shí)小車就是會(huì)在前后輪共同作用下朝右側(cè)前進(jìn)。圖5小車轉(zhuǎn)向示意圖控制板原理圖控制板主要包括:接口電路、電源電路和兩路電機(jī)的驅(qū)動(dòng)電路,控制板原理圖如下。接口電路:接口電路負(fù)責(zé)將61板的I/O接口信號(hào)傳送給控制電路板,I/O信號(hào)主要為控制電機(jī)需要的IOB8~IOB11這四路信號(hào),同時(shí)為了方便后續(xù)的開發(fā)和完善,預(yù)留了IOB12~IOB15以及IOA8~IOA15接口,可以在這些接口上添加一些傳感器。

電源部分:整個(gè)小車有4個(gè)電源信號(hào):電池電源,控制板工作電源,61板工作電源,61板的1/0輸出電源。系統(tǒng)供電由電池提供,控制板直接采用電池供電(VCC),然后經(jīng)二極管D1后產(chǎn)生61板電源SPCE061A在語音控制小車中的應(yīng)用(VCC_61),通過61板的Vio跳線產(chǎn)生61板的端口電源(V1)。iyIK口IK"1IDES2iwes3iyIK口IK"1IDES2iwes3iceiD丄ice-157ag圖6小車控制電路圖6、系統(tǒng)軟件設(shè)計(jì)系統(tǒng)的主程序設(shè)計(jì)系統(tǒng)的主程序流程如下圖所示

開始初始化己經(jīng)訓(xùn)煉訓(xùn)練小車保?存訓(xùn)練結(jié)果翅入識(shí)別模式語音識(shí)捌導(dǎo)執(zhí)疔NJf系統(tǒng)總體程序流程圖圖7主程序流程圖共分為四大部分:初始化部分、訓(xùn)練部分、識(shí)別部分、重訓(xùn)操作。初始化部分:初始化操作將IOB8~IOB11設(shè)置為輸出端,用以控制電機(jī)。必要時(shí)還要有對(duì)應(yīng)的輸入端設(shè)置和PWM端口設(shè)置等。訓(xùn)練部分:訓(xùn)練部分完成的工作就是建立語音模型。程序一開始判斷小車是否被訓(xùn)練過,如果沒有訓(xùn)練過則要求對(duì)其進(jìn)行訓(xùn)練,并且會(huì)在訓(xùn)練成功之后將訓(xùn)練的模型存儲(chǔ)到Flash,在以后使用時(shí)不需要重新訓(xùn)練;如果已經(jīng)訓(xùn)練過會(huì)把存儲(chǔ)在Flash中的模型調(diào)出來裝載到辨識(shí)器中。識(shí)別部分:在識(shí)別環(huán)節(jié)當(dāng)中,如果辨識(shí)結(jié)果是名字,停止當(dāng)前的動(dòng)作并進(jìn)入待命狀態(tài),然后等待動(dòng)作命令。如果辨識(shí)結(jié)果為動(dòng)作指令小車會(huì)語音告知相應(yīng)動(dòng)作并執(zhí)行該動(dòng)作,在運(yùn)動(dòng)過程中可以通過呼叫小車SPCE061A在語音控制小車中的應(yīng)用的名字使小車停下來。重訓(xùn)操作:考慮到有重新訓(xùn)練的需求,設(shè)置了重新訓(xùn)練的按鍵(61板的

KEY3),循環(huán)掃描該按鍵,一旦檢測(cè)到此鍵按下,則將擦除訓(xùn)練標(biāo)志位(OxeOOO單元),并等待復(fù)位。復(fù)位后,程序重新執(zhí)行,當(dāng)檢測(cè)到訓(xùn)練標(biāo)志位為0xffff時(shí)會(huì)要求重新對(duì)其進(jìn)行訓(xùn)練。主程序:Andshallnotbedistributed,reproduced,//========================================================////工程名稱:Car_Demo//功能描述:實(shí)現(xiàn)小車的語音控制//涉及的庫://////////組成文件://////硬件連接////////////IOA0KEY1IOA1KEY2IOA2KEY3IOB8前進(jìn)IOB9倒車IOB10左拐IOB11右拐#defineP_IOA_Data#defineP_IOA_Dir#defineP_IOA_Attrib#defineP_IOB_Data#defineP_IOB_Dir#defineP_IOB_Attrib#defineP_TimerA_Data#defineP_TimerA_Ctrl#defineP_TimerB_Data#defineP_TimerB_Ctrl#defineP_Watchdog_Clear#defineP_INT_Mask#defineP_INT_Clear#defineP_IOA_Data#defineP_IOA_Dir#defineP_IOA_Attrib#defineP_IOB_Data#defineP_IOB_Dir#defineP_IOB_Attrib#defineP_TimerA_Data#defineP_TimerA_Ctrl#defineP_TimerB_Data#defineP_TimerB_Ctrl#defineP_Watchdog_Clear#defineP_INT_Mask#defineP_INT_Clear//#include<>#include<>(volatileunsignedint*)0x7000(volatileunsignedint*)0x7002(volatileunsignedint*)0x7003(volatileunsignedint*)0x7005(volatileunsignedint*)0x7007(volatileunsignedint*)0x7008(volatileunsignedint*)0x700A(volatileunsignedint*)0x700B(volatileunsignedint*)0x700C(volatileunsignedint*)0x700D(volatileunsignedint*)0x7012(volatileunsignedint*)0x702D(volatileunsignedint*)0x7011#defineNAME_ID0x100#defineCOMMAND_GO_ID0x101

#defineCOMMAND_BACK_ID0x102#defineCOMMAND_LEFT_ID0x103#defineCOMMAND_RIGHT_ID0x104#defineS_NAME#defineS_ACT1#defineS_ACT2#defineS_ACT3#defineS_ACT4#defineS_RDY#defineS_AGAIN#defineS_NOVOICE音#defineS_CMDDIFF#defineS_NOISY#defineS_START識(shí)#defineS_GJG#defineS_NAME#defineS_ACT1#defineS_ACT2#defineS_ACT3#defineS_ACT4#defineS_RDY#defineS_AGAIN#defineS_NOVOICE音#defineS_CMDDIFF#defineS_NOISY#defineS_START識(shí)#defineS_GJG#defineS_DCZY012345678891011//給我取個(gè)名字吧//前進(jìn)//倒車,請(qǐng)注意//左拐//右拐//Yeah//請(qǐng)?jiān)僬f一遍//沒有聽到任何聲//說什么暗語呀//說什么暗語呀//準(zhǔn)備就緒,開始辨//拐就拐//倒車,請(qǐng)注意////外部變量externunsignedintBSR_SDModel[100];BSR_SDModel[100],辨識(shí)器自帶externvoidF_FlashWrite1Word(unsignedintaddr,unsignedintValue);externvoidF_FlashErase(unsignedintsector);unsignedintuiTimeset=3;該參數(shù)控制運(yùn)行時(shí)間unsignedintuiTimecont;//運(yùn)行時(shí)間定時(shí),調(diào)整//運(yùn)行時(shí)間計(jì)時(shí)////語法格式:voidDelay();//實(shí)現(xiàn)功能:延時(shí)//參數(shù):無//返回值:無//============================================================intTrainWord(unsignedintWordID,unsignedintSndID){intResult;PlaySnd(SndID,3);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:PlaySnd(S_AGAIN,3);break;case-3:PlaySnd(S_NOISY,3);return-3;case-4:return-4;case-5:PlaySnd(S_CMDDIFF,3);return-5;case-6:return-6;default:break;}}return0;}intmain(void){unsignedintBS_Flag;*P_IOA_Dir=0xff00;*P_IOA_Attrib=0xff00;*P_IOA_Data=0x0000;*P_IOB_Dir=0x0f00;輸出*P_IOB_Attrib=0x0f00;*P_IOB_Data=0x0000;BSR_DeleteSDGroup(0);BS_Flag=*(unsignedint*)0xe000;if(BS_Flag==0xffff)0xffff){TrainSD();//沒有檢測(cè)出聲音//沒有檢測(cè)出聲音//需要訓(xùn)練第二次//環(huán)境太吵//數(shù)據(jù)庫滿//檢測(cè)出聲音不同//序號(hào)錯(cuò)誤//Train標(biāo)志位//初始化IOA,IOA0~7下拉輸入〃初始化I0B,I0B8?11同向//初始化存儲(chǔ)器RAM//讀存儲(chǔ)單元0xe000〃沒有經(jīng)過訓(xùn)練(OxeOOO內(nèi)容為//訓(xùn)練//存儲(chǔ)訓(xùn)練結(jié)果(語音模型)}else0x0055){LoadSD();}PlaySnd(S_START,3);BSR_InitRecognizer(BSR_MIC);while(1){BSR();if((*P_IOA_Data)&0x0004){F_FlashErase(0xe000);while(1);}}}子程序:voidF_FlashErase(unsignedintsector){}voidBSR(){}voidBSR_InitRecognizer(){}voidPlaySnd(){}voidLoadSD(){}voidStoreSD(){}voidTrainSD(){}voidBSR_DeleteSDGroup(){}voidBSR_Train(){}語音識(shí)別的原理簡(jiǎn)介

//經(jīng)過訓(xùn)練(0xe000內(nèi)容為//語音模型載入識(shí)別器//開始識(shí)別提示//初始化識(shí)別器//是否重新訓(xùn)練語音識(shí)別主要分為“訓(xùn)練”和“識(shí)別”兩個(gè)階段。在訓(xùn)練階段,單片機(jī)對(duì)采集到的語音樣本進(jìn)行分析處理,從中提取出語音特征信息,建立一個(gè)特征模型;在識(shí)別階段,單片機(jī)對(duì)采集到的語音樣本也進(jìn)行類似的分析處理,提取出語音的特征信息,然后將這個(gè)特征信息模型與已有的特征模型進(jìn)行對(duì)比,如果二者達(dá)到了一定的匹配度,則輸入的語音被識(shí)別。語音識(shí)別的具體流程如下圖I11訓(xùn)練成功返冋3時(shí)再音特從模戰(zhàn)切始化識(shí)別器獲取識(shí)別站果執(zhí)行對(duì)應(yīng)動(dòng)仆語音識(shí)別流程框圖識(shí)別過程定時(shí)釆集語汗I11訓(xùn)練成功返冋3時(shí)再音特從模戰(zhàn)切始化識(shí)別器獲取識(shí)別站果執(zhí)行對(duì)應(yīng)動(dòng)仆語音識(shí)別流程框圖識(shí)別過程定時(shí)釆集語汗中斷服務(wù)初姑化RAML執(zhí)仃訓(xùn)練,獲取訓(xùn)所示:7結(jié)束語本設(shè)計(jì)綜合應(yīng)用了SPCE061A豐富的軟硬件資源,成功的實(shí)現(xiàn)了語音控制功能

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論