freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的語(yǔ)音控制小車(chē)畢業(yè)設(shè)計(jì)論文(編輯修改稿)

2025-07-24 19:51 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 B8控制,這樣就可以通過(guò) IOB8 和 IOB9 控制四個(gè)橋臂的導(dǎo)通與關(guān)斷控制后輪電機(jī)的運(yùn)行狀態(tài),使之正轉(zhuǎn)反轉(zhuǎn)或者停轉(zhuǎn),進(jìn)而控制小車(chē)的前進(jìn)和后退。:IOB11IOB10IOB9IOB8后電機(jī)前電機(jī)小車(chē)0000停轉(zhuǎn)停轉(zhuǎn)停0001正轉(zhuǎn)停轉(zhuǎn)前進(jìn)0010反轉(zhuǎn)停轉(zhuǎn)倒退0101正轉(zhuǎn)正轉(zhuǎn)左前轉(zhuǎn)1001正轉(zhuǎn)反轉(zhuǎn)右前轉(zhuǎn)另外還有一些不常用的運(yùn)行狀態(tài),比如右后轉(zhuǎn)、左后轉(zhuǎn)等,結(jié)合以上對(duì)前輪和后輪的狀態(tài)分析,其端口對(duì)照如表 :IOB11IOB10IOB9IOB8后電機(jī)前電機(jī)小車(chē)0110正轉(zhuǎn)正轉(zhuǎn)右后轉(zhuǎn)1010正轉(zhuǎn)反轉(zhuǎn)左后轉(zhuǎn)注意:為了小車(chē)的安全請(qǐng)不要出現(xiàn)以下兩種組合情況:表 禁止的輸入狀態(tài)列表IOB11IOB10IOB9IOB8后電機(jī)前電機(jī)小車(chē)**11停轉(zhuǎn)*停11***停轉(zhuǎn)停 系統(tǒng)總體電路圖 總體電路圖第4章 系統(tǒng)軟件設(shè)計(jì) 系統(tǒng)總體程序設(shè)計(jì) 系統(tǒng)的總體程序流程如圖 所示:YNNY初始化 開(kāi)始已經(jīng)訓(xùn)練過(guò)訓(xùn)練小車(chē)保存訓(xùn)練結(jié)果進(jìn)入識(shí)別模式語(yǔ)言識(shí)別與執(zhí)行重新訓(xùn)練清模型存儲(chǔ)區(qū)等待復(fù)位轉(zhuǎn)載語(yǔ)音模型圖 系統(tǒng)總體程序流程圖,分為四大部分:初始化部分、訓(xùn)練部分、識(shí)別部分、重訓(xùn)操作。 初始化部分:初始化操作將 IOB8~IOB11 設(shè)置為輸出端,用以控制電機(jī)。必要時(shí)還要有對(duì)應(yīng)的輸入端設(shè)置和PWM 端口設(shè)置等。 訓(xùn)練部分:訓(xùn)練部分完成的工作就是建立語(yǔ)音模型。程序一開(kāi)始判斷小車(chē)是否被訓(xùn)練過(guò),如果沒(méi)有訓(xùn)練過(guò)則要求對(duì)其進(jìn)行訓(xùn)練,并且會(huì)在訓(xùn)練成功之后將訓(xùn)練的模型存儲(chǔ)到FLASH,在以后使用時(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é)果是名字,停止當(dāng)前的動(dòng)作并進(jìn)入待命 狀態(tài),然后等待動(dòng)作命令。如果辨識(shí)結(jié)果為動(dòng)作指令小車(chē)會(huì)語(yǔ)音告知相應(yīng)動(dòng)作并執(zhí)行該動(dòng)作,在運(yùn)動(dòng)過(guò)程中可以通過(guò)呼叫小車(chē)的名字使小車(chē)停下來(lái)。 重訓(xùn)操作:考慮到有重新訓(xùn)練的需求,設(shè)置了重新訓(xùn)練的按鍵(61 板的KEY3) ,循環(huán)掃描該按鍵,一旦檢測(cè)到此鍵按下,則將擦除訓(xùn)練標(biāo)志位(0xe000 單元) ,并等待復(fù)位。復(fù)位后,程序重新執(zhí)行,當(dāng)檢測(cè)到訓(xùn)練標(biāo)志位為0xffff時(shí)會(huì)要求重新對(duì)其進(jìn)行訓(xùn)練。 下面詳細(xì)介紹以上提到的子程序。 系統(tǒng)各分支設(shè)計(jì)當(dāng)程序檢測(cè)到訓(xùn)練標(biāo)志位BS_Flag內(nèi)容為0xffff,就會(huì)要求操作者對(duì)它進(jìn)行訓(xùn)練操作,訓(xùn)練操作的過(guò)程如圖 :訓(xùn)練采用兩次訓(xùn)練獲取結(jié)果的方式,以訓(xùn)練名字為例:小車(chē)首先會(huì)提示:給我取個(gè)名字吧, 這時(shí)你可以告訴它一個(gè)名字 (比如Jack) ; 然后它會(huì)提示: 請(qǐng)?jiān)僬f(shuō)一遍, 這時(shí)再次告訴它名字 (Jack) ,如果兩次的聲音差別不大,小車(chē)就能夠成功的建立模型,名稱(chēng)訓(xùn)練成功;如果沒(méi)能夠成功的建立模型,小車(chē)會(huì)告知失敗的原因并要求重新訓(xùn)練。成功訓(xùn)練名稱(chēng)后會(huì)給出下一條待訓(xùn)練指令提示音:前進(jìn),參照名稱(chēng)訓(xùn)練方式訓(xùn)練前進(jìn)指令。依次訓(xùn)練小車(chē)的名稱(chēng)—前進(jìn)指令—倒車(chē)指令—左轉(zhuǎn)指令—右轉(zhuǎn)指令,全部訓(xùn)練成功子程序返回,訓(xùn)練結(jié)束。void TrainSD(){ while(TrainWord(NAME_ID,S_NAME) != 0) 。 //訓(xùn)練名稱(chēng) while(TrainWord(COMMAND_GO_ID,S_ACT1) != 0) 。 //訓(xùn)練第1個(gè)動(dòng)作 while(TrainWord(COMMAND_BACK_ID,S_ACT2) != 0) 。 //訓(xùn)練第2個(gè)動(dòng)作 while(TrainWord(COMMAND_LEFT_ID,S_ACT3) != 0) 。 //訓(xùn)練第3個(gè)動(dòng)作 while(TrainWord(COMMAND_RIGHT_ID,S_ACT4) != 0) 。 //訓(xùn)練第4個(gè)動(dòng)作} 語(yǔ)音識(shí)別流程如圖 :首先獲取辨識(shí)器的辨識(shí)結(jié)果,判斷是否有語(yǔ)音觸發(fā),如果有語(yǔ)音觸發(fā)則會(huì)返回識(shí)別結(jié)果的ID號(hào),ID號(hào)對(duì)應(yīng)名稱(chēng)或者對(duì)應(yīng)不同的動(dòng)作。如果ID號(hào)為名稱(chēng),則結(jié)束運(yùn)動(dòng)(如果當(dāng)前在運(yùn)動(dòng)狀態(tài)) ,進(jìn)入待命狀態(tài),等待下一次的指令觸發(fā);如果 ID 號(hào)為動(dòng)作,則語(yǔ)音告知將要執(zhí)行的動(dòng)作,并執(zhí)行該動(dòng)作。注:語(yǔ)音識(shí)別程序在語(yǔ)音中斷函數(shù)中進(jìn)行。NY語(yǔ)音識(shí)別語(yǔ)音觸發(fā)前進(jìn)指令倒車(chē)指令左轉(zhuǎn)指令右轉(zhuǎn)指令名字前進(jìn)倒車(chē)左轉(zhuǎn)右轉(zhuǎn)停車(chē)命令返回void BSR(void){ int Result。 //辨識(shí)結(jié)果寄存 Result = BSR_GetResult()。 //獲得識(shí)別結(jié)果if(Result0) //有語(yǔ)音觸發(fā)? { *P_IOB_Data=0x0000。 //臨時(shí)停車(chē) switch(Result) { case NAME_ID: //識(shí)別出名稱(chēng)命令 Stop()。 //停車(chē)待命 break。 case COMMAND_GO_ID: //識(shí)別出第一條命令 GoAhead()。 //執(zhí)行動(dòng)作一:直走 break。 case COMMAND_BACK_ID://識(shí)別出第二條命令 BackUp()。 //執(zhí)行動(dòng)作二:倒車(chē) break。 case COMMAND_LEFT_ID: //識(shí)別出第三條命令 TurnLeft()。 //執(zhí)行動(dòng)作三:左轉(zhuǎn) break。 case COMMAND_RIGHT_ID: //識(shí)別出第四條命令 TurnRight()。 //執(zhí)行動(dòng)作四:右轉(zhuǎn) break。 default: break。 } }} 動(dòng)作子程序包括:前進(jìn)、倒車(chē)、左拐、右拐、停車(chē)子程序。 前進(jìn):由小車(chē)的結(jié)構(gòu)原理和驅(qū)動(dòng)電路分析知:只要IOB8 為高電平,IOB9,IOB10,IOB11 全部為低電平即可實(shí)現(xiàn)小車(chē)的前進(jìn)。前進(jìn)子程序包括語(yǔ)音提示、置端口數(shù)據(jù)、啟動(dòng)定時(shí)器操作。 倒車(chē):由小車(chē)的結(jié)構(gòu)原理分析和驅(qū)動(dòng)電路分析知:只要IOB9 為高電平,IOB8,IOB10,IOB11全部為低電平即可實(shí)現(xiàn)小車(chē)的倒退。倒退子程序包括語(yǔ)音提示、置端口數(shù)據(jù)、啟動(dòng)定時(shí)器操作。 左轉(zhuǎn):由小車(chē)的結(jié)構(gòu)原理分析和驅(qū)動(dòng)電路分析知:小車(chē)左轉(zhuǎn)需要兩個(gè)條件:,這時(shí)對(duì)應(yīng)的 I/O 狀態(tài)為:IOBIOB10 為高電平,IOBIOB11 為低電平。左轉(zhuǎn)子程序包括語(yǔ)音提示、置端口數(shù)據(jù)、啟動(dòng)定時(shí)器操作。 右轉(zhuǎn):由小車(chē)的結(jié)構(gòu)原理分析和驅(qū)動(dòng)電路分析知:小車(chē)右轉(zhuǎn)需要兩個(gè)條件:,這時(shí)對(duì)應(yīng)的 I/O 狀態(tài)為:IOBIOB11 為高電平,IOBIOB10 為低電平。右轉(zhuǎn)子程序包括語(yǔ)音提示、置端口數(shù)據(jù)、啟動(dòng)定時(shí)器操作。 注:在轉(zhuǎn)彎之前首先讓前輪朝目標(biāo)方向的反方向偏轉(zhuǎn),然后再讓前輪朝目標(biāo)方向偏轉(zhuǎn),這樣前輪的擺動(dòng)范圍更大,慣性更大,擺幅也最大,能更好實(shí)現(xiàn)轉(zhuǎn)彎。void GoAhead() //前進(jìn){ PlaySnd(S_ACT1,3)。 //提示 *P_IOB_Data=0x0100。 //前進(jìn) *P_INT_Mask |= 0x0004。 //以下為中斷定時(shí)操作 __asm(int fiq,irq)。 uiTimecont = 0。}//=============================================================// 語(yǔ)法格式: void BackUp()。// 實(shí)現(xiàn)功能: 后退子函數(shù)// 參數(shù): 無(wú)// 返回值: 無(wú)//=============================================================void BackUp() //倒退{(lán) PlaySnd(S_DCZY,3)。 //提示 *P_IOB_Data=0x0200。 //倒退 *P_INT_Mask |= 0x0004。 //以下為中斷定時(shí)操作 __asm(int fiq,irq)。 uiTimecont = 0。}//=============================================================// 語(yǔ)法格式: void TurnLeft()。// 實(shí)現(xiàn)功能: 左轉(zhuǎn)子函數(shù)// 參數(shù): 無(wú)// 返回值: 無(wú)//=============================================================void TurnLeft() //左轉(zhuǎn){ PlaySnd(S_GJG,3)。 *P_IOB_Data=0x0900。 //右轉(zhuǎn) Delay()。 //延時(shí) *P_IOB_Data=0x0500。 //左轉(zhuǎn) *P_INT_Mask |= 0x0004。 //以下為中斷定時(shí)操作 __asm(int fiq,irq)。 uiTimecont = 0。}//=============================================================// 語(yǔ)法格式: void TurnRight()。// 實(shí)現(xiàn)功能: 右轉(zhuǎn)子函數(shù)// 參數(shù): 無(wú)// 返回值: 無(wú)//=============================================================void TurnRight() //右轉(zhuǎn){ PlaySnd(S_GJG,3)。 //語(yǔ)音提示 *P_IOB_Data=0x0500。 //左轉(zhuǎn) Delay()。 //延時(shí) *P_IOB_Data=0x0900。 //右轉(zhuǎn) *P_INT_Mask |= 0x0004。 //以下為中斷定時(shí)操作 __asm(int fiq,irq)。 uiTimecont = 0。}//=============================================================// 語(yǔ)法格式: void Stop()。// 實(shí)現(xiàn)功能: 停車(chē)子函數(shù)// 參數(shù): 無(wú)// 返回值: 無(wú)//=============================================================void Stop() //停車(chē){ *P_IOB_Data=0x0000。 //停車(chē) PlaySnd(S_RDY,3)。 //語(yǔ)音提示} 雖然已經(jīng)有了前進(jìn)、后退以及停車(chē)(通過(guò)直接呼叫小車(chē)的名字使其停車(chē))等語(yǔ)音控制指令,但是考慮環(huán)境的干擾因素,小車(chē)運(yùn)行時(shí)的噪音影響和有效距離的限制,小車(chē)運(yùn)行后可能接收不到語(yǔ)音指令而一直運(yùn)行。為了防止出現(xiàn)這種情況,加入了時(shí)間控制,在啟動(dòng)小車(chē)運(yùn)行的同時(shí)啟動(dòng)定時(shí)器,定時(shí)器時(shí)間到停止小車(chē)的運(yùn)行,該定時(shí)器借助于 2Hz 時(shí)基中斷完成,所示為該程序的流程圖??梢栽诔绦蛑行薷膗 i Time set 參數(shù)來(lái)控制運(yùn)行時(shí)間,當(dāng)ui Time set=2 時(shí),運(yùn)行時(shí)間為1s,以此類(lèi)推。void IRQ5(void)__attribute__((ISR))。 //運(yùn)動(dòng)定時(shí)控制void IRQ5(void){ if(uiTimecont++ == uiTimeset) { *P_IOB_Data = 0x0000。 } *P_INT_Clear = 0x0004。}程序中需要說(shuō)明的幾個(gè)問(wèn)題在程序中可能有幾個(gè)地方不易理解,下面我向大家說(shuō)明一下: 首先,小車(chē)有沒(méi)有被訓(xùn)練過(guò)是怎么知道的? 在這里利用了一個(gè)特殊的 Flash 單元, 語(yǔ)音模型存儲(chǔ)區(qū)首單元 (該示例程序中為 0xe000單元) 。 當(dāng) Flash在初始化以后,或者在擦除后為 0xffff,在成功訓(xùn)練并存儲(chǔ)后為 0x0055(該值由辨識(shí)器自動(dòng)生成) 。這樣就可以根據(jù)這個(gè)單元的值來(lái)判斷是否經(jīng)過(guò)訓(xùn)練。 其次,為什么已經(jīng)訓(xùn)練過(guò)的系統(tǒng)在重新運(yùn)行時(shí)還要進(jìn)行模型裝載? 在首次訓(xùn)練完成之后,辨識(shí)器中保存著訓(xùn)練的模型,但是系統(tǒng)一旦復(fù)位辨識(shí)器中的模型就會(huì)丟失,所以在重新運(yùn)行時(shí)必須把存儲(chǔ)在 Flash 中的語(yǔ)音模型裝載到辨識(shí)器(RAM)中去。 第三,在轉(zhuǎn)彎時(shí)為什么前輪要先做一個(gè)反方向的擺動(dòng)? 這是為了克服車(chē)體的限制,由于前輪電機(jī)的驅(qū)動(dòng)能力有限,有時(shí)會(huì)出現(xiàn)前輪偏轉(zhuǎn)不到位的情況,所以在轉(zhuǎn)彎前首先讓前輪朝反方向擺動(dòng),然后再朝目標(biāo)方向擺動(dòng)。這樣前輪的擺動(dòng)范圍更大,慣性更大,擺幅也最大,能更好實(shí)現(xiàn)轉(zhuǎn)彎。 第四,關(guān)于語(yǔ)音的一些具體問(wèn)題,關(guān)于語(yǔ)音的一些具體問(wèn)題請(qǐng)參看 SPCE061A相關(guān)書(shū)籍中關(guān)于語(yǔ)音的詳細(xì)介紹。 57
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1