基于SPCE061A的小車語音控制系統(tǒng)
初始化部分的初始化操作會(huì)將SPCE061A單片機(jī)上的IOB13~IOB10設(shè)置為輸出端,用以控制電機(jī)。將其IOA的低8位IOA0~IOA7設(shè)置為下拉的輸入端,用來連接按鍵。
訓(xùn)練部分完成的工作是建立語音模型。程序一開始會(huì)判斷小車是否被訓(xùn)練過,如果沒有訓(xùn)練過,系統(tǒng)會(huì)要求對(duì)其進(jìn)行訓(xùn)練,并且會(huì)在訓(xùn)練成功之后將訓(xùn)練的模型存儲(chǔ)到Flash中;如果已經(jīng)訓(xùn)練過則會(huì)把存儲(chǔ)在Flash中的模型調(diào)出,裝載到辨識(shí)器中。
在識(shí)別環(huán)節(jié)當(dāng)中,如果辨識(shí)結(jié)果是名字,直接置待命標(biāo)志,然后等待動(dòng)作命令。只有檢測(cè)到待命標(biāo)志,小車才會(huì)根據(jù)相應(yīng)的辨識(shí)結(jié)果執(zhí)行動(dòng)作。如果沒有待命標(biāo)志,即使識(shí)別到動(dòng)作命令也不會(huì)執(zhí)行動(dòng)作。小車在執(zhí)行完對(duì)應(yīng)的命令之后清除待命標(biāo)志,結(jié)束待命狀態(tài)。
考慮到有重新訓(xùn)練的需求,這里設(shè)置了重新訓(xùn)練的按鍵。程序運(yùn)行時(shí)循環(huán)掃描該按鍵,什么時(shí)間檢測(cè)到此鍵按下,則將擦除語音模型存儲(chǔ)區(qū)首單元(0xe000)所在的頁,等待復(fù)位到來。復(fù)位后,程序重新從頭開始執(zhí)行,當(dāng)檢測(cè)到語音模型存儲(chǔ)區(qū)首地址為0xffff(擦除后的值)時(shí),系統(tǒng)會(huì)要求重新對(duì)其進(jìn)行訓(xùn)練。
FIQ中斷服務(wù)程序
FIQ中斷服務(wù)程序用來調(diào)用語音辨識(shí)子程序,并對(duì)a2000格式的語音進(jìn)行解碼播放。
調(diào)試及性能分析
系統(tǒng)的調(diào)試以程序?yàn)橹?。硬件調(diào)試時(shí),首先檢查電路的焊接是否正確,然后用萬用表測(cè)試或通電檢測(cè)。軟件調(diào)試則需要分別進(jìn)行主程序、FIQ中斷服務(wù)程序、顯示子程序等的編程及調(diào)試。本程序采用單片機(jī)匯編語言編寫,用KEILuVision2編譯器編程調(diào)試。軟件調(diào)試直到語音能夠控制小車的行駛狀態(tài),并顯示出小車的行駛距離等功能為止。
結(jié)語
本文設(shè)計(jì)的語音控制系統(tǒng)主要采用16位單片機(jī)SPCE061A來實(shí)現(xiàn)。軟件編程則是采用C語言和匯編語言的混合編程來實(shí)現(xiàn)的,集兩種語言的優(yōu)點(diǎn)于一體,實(shí)現(xiàn)對(duì)硬件的實(shí)時(shí)控制。通過實(shí)驗(yàn)驗(yàn)證,該語音控制系統(tǒng)主要可實(shí)現(xiàn)以下功能:
(1)可以通過語音命令來控制小車的行駛狀態(tài),實(shí)現(xiàn)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等功能;
(2)顯示小車的運(yùn)行時(shí)間以及運(yùn)行路程;
(3)可以擴(kuò)展控制板的調(diào)速環(huán)節(jié),利用系統(tǒng)的PWM資源,實(shí)現(xiàn)小車的PWM調(diào)速;
(4)預(yù)留多路開關(guān)型傳感器接口,可以自行安裝各類傳感器,配合程序?qū)崿F(xiàn)小車的循跡、避障等功能。
霍爾傳感器相關(guān)文章:霍爾傳感器工作原理
霍爾傳感器相關(guān)文章:霍爾傳感器原理
評(píng)論