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

正文內(nèi)容

基于單片機的語音控制小車畢業(yè)設計論文-資料下載頁

2025-08-18 14:38本頁面

【導讀】常消費生活中起著不可忽視的作用。目前,聲控技術已在很多領域得到使用。本文對語音控制功能的小車概況做了闡述。在硬件設計方面,本論文以凌陽公司的。SPCE061A單片機為控制核心,以語音小車控制電路板為輔,設計小車的動作。在軟件方面,利用C語言進行編程,進行語音的“訓練”和“識別”。具有如下功能的語音聲控小車:能夠根據(jù)錄制的語音命令來控制小車的前進,后退,左轉(zhuǎn),測試表明,在環(huán)境背景噪音不太大,控制者的發(fā)音清晰的前提下,語音控制。小車的語音識別系統(tǒng)能對特定的語音指令做出智能反應,做出預想中的有限的動作。并介紹了系統(tǒng)的主要組成部分情況。

  

【正文】 BS_Flag內(nèi)容為 0xffff,就會要求操作者對它進行訓練操作,訓練操作的過程如圖 :訓練采用兩次訓練獲取結(jié)果的方式,以訓練名字為例:小車首先會提示:給我取個名字吧, 這時你可以告訴它一個名字 (比如 Jack) ; 然后它會提示: 請再說一遍, 這時再次告訴它名字 ( Jack) ,如果兩次的聲音差別不大,小車就能夠成功的建立模型,名稱訓練成功;如果沒能夠成功的建立模型,小車會告知失敗的原因并要求重新訓練。成功訓練名稱后會給出下一條待訓練指令提示音:前進,參照名稱訓練方式訓練前進指令。依次訓練小車的名稱 — 前進指令 — 倒車指令 — 左轉(zhuǎn)指令 — 右轉(zhuǎn)指令,全部訓練成功子程序返回,訓練結(jié)束。 華科學院本科畢業(yè)設計(論文) 29 圖 void TrainSD() { while(TrainWord(NAME_ID,S_NAME) != 0) 。 //訓練名稱 while(TrainWord(COMMAND_GO_ID,S_ACT1) != 0) 。 //訓練第 1個動作 while(TrainWord(COMMAND_BACK_ID,S_ACT2) != 0) 。 //訓練第 2個動作 while(TrainWord(COMMAND_LEFT_ID,S_ACT3) != 0) 。 //訓練第 3個動作 while(TrainWord(COMMAND_RIGHT_ID,S_ACT4) != 0) 。 //訓練第 4 個動作 } 語音識別子程序 語音識別流程如圖 所示:首先獲取辨識器的辨識結(jié)果,判斷是否有語音觸發(fā),如果有語音觸發(fā)則會返回識別結(jié)果的 ID號, ID 號對應名稱或者對應不同的動作。如果 ID號為名稱,則結(jié)束運動(如果當前在運動狀態(tài)) ,進入待命狀態(tài),等待下一次的指令觸發(fā);如果 ID 號為動作,則語音告知將要執(zhí)行的動作,并執(zhí)行該動作。注:語音識別程序開始訓練訓練結(jié)束訓練名稱 訓練左轉(zhuǎn)指令訓練前進指令 訓練右轉(zhuǎn)指令訓練倒車指令 訓練成功提示名稱訓練成功左轉(zhuǎn)訓練成功前進訓練成功 右轉(zhuǎn)訓練成功倒車訓練成功NYNYNYYNYN康虹:基于單片機的語言控制小車設計 30 在語音中斷函數(shù)中進行。 圖 void BSR(void) { int Result。 //辨識結(jié)果寄存 Result = BSR_GetResult()。 //獲得識別結(jié)果 if(Result0) //有語音觸發(fā)? { *P_IOB_Data=0x0000。 //臨時停車 switch(Result) { case NAME_ID: //識別出名稱命令 Stop()。 //停車待命 break。 case COMMAND_GO_ID: //識別出第一條命令 GoAhead()。 //執(zhí)行動作一:直走 break。 case N Y 語音識別 語音觸發(fā) 前進指令 倒車指令 左轉(zhuǎn)指令 右轉(zhuǎn)指令 名字 前進 倒車 左轉(zhuǎn) 右轉(zhuǎn) 停車命令 返回 華科學院本科畢業(yè)設計(論文) 31 BackUp()。 //執(zhí)行動作二:倒車 break。 case COMMAND_LEFT_ID: //識別出第三條命令 TurnLeft()。 //執(zhí)行動作三:左轉(zhuǎn) break。 case COMMAND_RIGHT_ID: //識別出第四條命令 TurnRight()。 //執(zhí)行動作四:右轉(zhuǎn) break。 default: break。 } } } 動作子程序 動作子程序包括:前進、倒車、左拐、右拐、停車子程序。 前進:由小車的結(jié)構原理和驅(qū)動電路分析知:只要 IOB8 為高電平, IOB9, IOB10, IOB11 全部為低電平即可實現(xiàn)小車的前進。前進子程序包括語音提示、置端口數(shù)據(jù)、啟動定時器操作。 倒車:由小車的結(jié)構原理分析和驅(qū)動電路分析知:只要 IOB9 為高電平, IOB8, IOB10,IOB11 全部為低電平即可實現(xiàn)小車的倒退。倒退子程序包括語音提示、置端口數(shù)據(jù)、啟動定時器操作。 左轉(zhuǎn):由小車的結(jié)構原理分析和 驅(qū)動電路分析知:小車左轉(zhuǎn)需要兩個條件: 偏 ,這時對應的 I/O 狀態(tài)為: IOB IOB10 為高電平, IOB IOB11 為低電平。左轉(zhuǎn)子程序包括語音提示、置端口數(shù)據(jù)、啟動定時器操作。 右轉(zhuǎn):由小車的結(jié)構原理分析和驅(qū)動電路分析知:小車右轉(zhuǎn)需要兩個條件: 偏 ,這時對應的 I/O 狀態(tài)為: IOB IOB11 為高電平, IOB IOB10 為低電平。右轉(zhuǎn)子程序包括語音提示、置端口數(shù)據(jù)、啟動定時器操作。 注:在轉(zhuǎn)彎之前首先讓前輪朝目標方向的反方向偏轉(zhuǎn),然后再讓前輪 朝目標方向偏轉(zhuǎn),這樣前輪的擺動范圍更大,慣性更大,擺幅也最大,能更好實現(xiàn)轉(zhuǎn)彎。 void GoAhead() //前進 康虹:基于單片機的語言控制小車設計 32 { PlaySnd(S_ACT1,3)。 //提示 *P_IOB_Data=0x0100。 //前進 *P_INT_Mask |= 0x0004。 //以下為中斷定時操作 __asm(int fiq,irq)。 uiTimecont = 0。 } //============================================================= // 語法格式: void BackUp()。 // 實現(xiàn)功能: 后退子函數(shù) // 參數(shù): 無 // 返回值: 無 //============================================================= void BackUp() //倒退 { PlaySnd(S_DCZY,3)。 //提示 *P_IOB_Data=0x0200。 //倒退 *P_INT_Mask |= 0x0004。 //以下為中斷定時操作 __asm(int fiq,irq)。 uiTimecont = 0。 } //============================================================= // 語法格式: void TurnLeft()。 // 實現(xiàn)功能: 左轉(zhuǎn)子函數(shù) // 參數(shù): 無 // 返回值: 無 //============================================================= void TurnLeft() //左轉(zhuǎn) { 華科學院本科畢業(yè)設計(論文) 33 PlaySnd(S_GJG,3)。 *P_IOB_Data=0x0900。 //右轉(zhuǎn) Delay()。 //延時 *P_IOB_Data=0x0500。 //左轉(zhuǎn) *P_INT_Mask |= 0x0004。 //以下為中斷定時操作 __asm(int fiq,irq)。 uiTimecont = 0。 } //============================================================= // 語法格式: void TurnRight()。 // 實現(xiàn)功能: 右轉(zhuǎn)子函數(shù) // 參數(shù): 無 // 返回值: 無 //============================================================= void TurnRight() //右轉(zhuǎn) { PlaySnd(S_GJG,3)。 //語音提示 *P_IOB_Data=0x0500。 //左轉(zhuǎn) Delay()。 //延時 *P_IOB_Data=0x0900。 //右轉(zhuǎn) *P_INT_Mask |= 0x0004。 //以下為中斷定時操作 __asm(int fiq,irq)。 uiTimecont = 0。 } //============================================================= // 語法格式: void Stop()。 // 實現(xiàn)功能: 停車子函數(shù) // 參數(shù): 無 // 返回值: 無 康虹:基于單片機的語言控制小車設計 34 //============================================================= void Stop() //停車 { *P_IOB_Data=0x0000。 //停車 PlaySnd(S_RDY,3)。 //語音提示 } 中斷子程序 雖然已經(jīng)有了前進、后退以及停車(通過直接呼叫小車的名字使其停車)等語音控制指令,但是考慮環(huán)境的干擾因素,小車運行時的噪音影響和有效距離的限制,小車運行后可能接收不到語音指令而一直運行。為了防止出現(xiàn)這種情況,加入了時間控制,在啟動小車運行的同時啟動定時器,定時器時間到停止小車的運行,該定時器借助于 2Hz 時基中斷完成, 所示為該程序的流程圖??梢栽诔绦蛑行薷?u i Time set 參數(shù)來控制運行時間,當 ui Time set=2 時,運行時間為 1s,以此類推。 void IRQ5(void)__attribute__((ISR))。 //運動定時控制 void IRQ5(void) { if(uiTimecont++ == uiTimeset) { *P_IOB_Data = 0x0000。 } *P_INT_Clear = 0x0004。 } 程序中需要說明的幾個問題 在程序中可能有幾個地方不易理解,下面我向大家說明一下: 首先,小車有沒有被訓練過是怎么知道的? 在這里利用了一個特殊的 Flash 單元, 語音模型存儲區(qū)首單元 (該示例程序中為 0xe000 單元) 。 當 Flash 在初始化以后,或者在擦除后為 0xffff,在成功訓練并存儲后為 0x0055(該值由辨識器自動生成) 。這樣就可以根據(jù)這個單元的值來判斷是否經(jīng)過訓練。 其次,為什么已經(jīng)訓練過的系統(tǒng)在重新運行時還要進行模型裝載? 華科學院本科畢業(yè)設計(論文) 35 在首次訓練完成之后,辨識器中保存著訓練的模型,但是系統(tǒng)一旦復位辨識器中的模型就會丟失,所以在重新運行時必須把存儲在 Flash 中的語音模型裝載到辨識器( RAM)中去。 第三,在轉(zhuǎn)彎時為什么前輪要先做一個反方向的擺動? 這是為了克服車體的限制,由于前輪電機的驅(qū)動能力有限 ,有時會出現(xiàn)前輪偏轉(zhuǎn)不到位的情況,所以在轉(zhuǎn)彎前首先讓前輪朝反方向擺動,然后再朝目標方向擺動。這樣前輪的擺動范圍更大,慣性更大,擺幅也最大,能更好實現(xiàn)轉(zhuǎn)彎。 第四,關于語音的一些具體問題,關于語音的一些具體問題請參看 SPCE061A 相關書籍中關于語音的詳細介紹。 康虹:基于單片機的語言控制小車設計 36 華科學院本科畢業(yè)設計(論文) 37 第 5 章 系統(tǒng)調(diào)試 硬件調(diào)試 一、硬件鏈接 語音控制小車電路包括兩大部分: 61板部分和控制板部分,硬件部分的連接。主要用到 SPCE061A 的 IOB8~IOB11 來控制小車的狀 態(tài)。 電源部分連接:電池電源直接接控制板電源接口 J1, J2 接 61 板的電源,連接時注意電源極性。 61板和控制板的 I/O 連接有兩種情況: 采用 I/O 排針向下的 61 板,直接將 61 板和控制板扣接在一起即可, 61 板的 IOBH通過 J6與控制電路連通; 采用 I/O 排針向上的 61 板,直接用排線將 61 板的 IOBH 和 J5 相連接即可。 二、硬件模塊連線圖 圖 連線圖 三、功能說明 1. 小車運動控制: 通過 SPCE061A 的 I/O 端口,驅(qū)動控制 板的
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1