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

下載本文檔

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

文檔簡介

第1頁共20頁基于SPCE061A單片機(jī)的語音遙控小車設(shè)計(jì)作者:宇曉梅摘要:近年來,智能化和自動化技術(shù)在玩具制造領(lǐng)域中越來越被關(guān)注。本文介紹了一種基于SPCE061A單片機(jī)的語音遙控小車,重點(diǎn)討論了其硬件子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。在環(huán)境背景噪音不太大,控制者的發(fā)音清晰的前提下,語音控制小車能對特定的語音指令做出反應(yīng),做出預(yù)想中的有限的動作。關(guān)鍵詞:單片機(jī)SPCE061A;語音識別;智能小車;1引言隨著計(jì)算機(jī)技術(shù)的發(fā)展,單片機(jī)作為計(jì)算機(jī)的一個分支,廣泛用于工業(yè)控制、智能儀器、家用電氣、高科技玩具等領(lǐng)域。語音技術(shù)的發(fā)展,縮短了人機(jī)界面的距離,增強(qiáng)了互動性和智能性。具有語音識別功能的智能遙控小車,集語音識別、無線遙控、機(jī)械控制于一體。以單片機(jī)為主控元件,完成前進(jìn)、后退、轉(zhuǎn)彎等預(yù)定的工作,采用凌陽公司具有語音處理功能的SPCE061A作為控制核心可以方便的實(shí)現(xiàn)語音控制。2概述本文介紹了一個以凌陽公司具有語音處理功能的SPCE061A為控制核心,附加一定外圍電路組成的語音遙控小車系統(tǒng)。該小車可以通過簡單的I/O操作實(shí)現(xiàn)小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)功能;配合SPCE061A的語音特色,利用系統(tǒng)的語音播放和語音識別資源,實(shí)現(xiàn)語音控制的功能;可以在行走過程中聲控改變小車運(yùn)動狀態(tài);在超出語音控制范圍時能夠自動停車。3硬件功能模塊電路設(shè)計(jì)3.1SPCE061A簡介SPCE061A是凌陽科技推出的又一個u’nSP(TM)系列產(chǎn)品16位結(jié)構(gòu)的微控制器,主要包括輸入/輸出端口、定時器/計(jì)數(shù)器、數(shù)/模轉(zhuǎn)換、模/數(shù)轉(zhuǎn)換、串行設(shè)備輸入輸出、通用異步串行接口、低電壓監(jiān)測和復(fù)位等部分,并且內(nèi)置在線仿真電路ICE接口,內(nèi)嵌32K字的閃存(FLASH),較高的處理速度使u’nSP(TM)能夠非常容易地、快速地處理數(shù)字信號。以u’nSP(TM)為核心的SPCE061A微控制器是適用于數(shù)字語音識別應(yīng)用領(lǐng)域產(chǎn)品的一種經(jīng)濟(jì)的選擇。3.2電源模塊圖1穩(wěn)壓電源電路61板采用3節(jié)5號電池進(jìn)行供電,其中的前后兩組電容用來去耦濾波,使其供給芯片的電源更加干凈平滑。為了獲得標(biāo)準(zhǔn)的3.3V電壓,在板子上加入SPY0029A三端穩(wěn)壓器。兩個二極管,是為了防止誤將電源接反造成不必要損失而設(shè)置的,在操作過程中千萬不要將電源接反,因?yàn)榉聪螂妷撼^一定的值,二極管將會被損壞,達(dá)不到保護(hù)的目的。后面的零電阻及其電源、地分成不同的幾路是為了減少電磁干擾設(shè)置的。圖中的VDDH3為SPCE061A的I/O電平參考,如果該點(diǎn)接SPCE061A(PLCC84封裝,下面的介紹中當(dāng)出現(xiàn)SPCE061A的引腳描述時,均指此封裝的芯片)的51腳,可使I/O輸出高電平為3.3V;VDDP為PLL鎖相環(huán)電源,接SPCE061A的7腳;VDD和VDDA分別為數(shù)字電源與模擬電源,分別接SPCE061A的15腳和36腳;AVSS1是模擬地,接SPCE061A的24腳;VSS是數(shù)字地,接SPCE061A的38腳;AVSS2接音頻輸出電路的AVSS2。3.3SPCE061A最小系統(tǒng)模塊最小系統(tǒng)接線如圖2所示,在OSCO、OSCI端接上32768HZ的晶振及諧振電容,在鎖相環(huán)壓控振蕩器的阻容輸入VCP端接上相應(yīng)的電容電阻后即可工作,復(fù)位電路采用的是按鍵式復(fù)位模式,由一個按鍵和一個電阻及電容構(gòu)成。其它不用的電源端和地端接上0.1uF的去耦電容提高抗干擾能力。圖2SPCE061A最小系統(tǒng)原理圖3.4語音提示模塊圖3為音頻輸出電路。SPCE061A內(nèi)接2路10位精度DAC,只需要外接功放電路即可完成語音的播放。圖中的SPY0030是凌陽的一款音頻放大芯片,可以工作在2.4V~6V范圍內(nèi),最大輸出功率可達(dá)700mV。圖3音頻輸出電路圖3.5程序下載電路(ICE接口電路)SPCE061A芯片內(nèi)部集成了ICE(在線仿真)接口,PC機(jī)通過Probe(在線調(diào)試器)或EZ_Probe(簡易下載線)與61板相連,就可方便地完成程序的下載、調(diào)試等。61板為Probe和EZ_Probe各自提供了一組接口,可通過S5跳線來選擇使用的接口類型。ICE接口部分電路如圖4所示。圖4ICE接口電路圖3.6語音遙控小車的技術(shù)要求小車采用語音識別技術(shù),可通過語音命令對其行駛狀態(tài)進(jìn)行控制。語音控制小車的主要功能:1.可以通過簡單的I/O操作實(shí)現(xiàn)小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)功能;2.配合SPCE061A的語音特色,利用系統(tǒng)的語音播放和語音識別資源,實(shí)現(xiàn)語音控制的功能;3.可以在行走過程中聲控改變小車運(yùn)動狀態(tài);4.在超出語音控制范圍時能夠自動停車。

在對編程基礎(chǔ)知識了解后,基于對題目要求的理解和思考,我們確定實(shí)現(xiàn)方案??梢酝ㄟ^簡單的I/O操作實(shí)現(xiàn)小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)功能;配合SPCE061A的語音特色,利用系統(tǒng)的語音播放和語音識別資源,實(shí)現(xiàn)語音控制的功能;可以在行走過程中聲控改變小車的運(yùn)動狀態(tài);實(shí)現(xiàn)能自動往返于起跑線與終點(diǎn)線間的智能流程,并具備人工遙控(我們選用語音控制)的功能。4總體設(shè)計(jì)4.1系統(tǒng)結(jié)構(gòu)方案系統(tǒng)的結(jié)構(gòu)框圖如圖5所示:圖5系統(tǒng)的結(jié)構(gòu)框圖系統(tǒng)組成主要包括以下兩部分:SPCE061A精簡開發(fā)板、語音小車控制電路板。圖中的語音輸入部分MIC_IN、按鍵輸入KEY、聲音輸出部分的功率放大環(huán)節(jié)等已經(jīng)做到了精簡開發(fā)板——61板上,為我們使用提供了很大的方便。在電機(jī)的驅(qū)動方面,采用全橋驅(qū)動技術(shù),利用四個I/O端口分為兩組分別實(shí)現(xiàn)兩個電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)和停三態(tài)運(yùn)行。4.2系統(tǒng)控制方案小車的運(yùn)動控制采用語音控制和中斷定時控制相結(jié)合,通過語音觸發(fā)小車動作,小車動作之后,隨時可以通過語音指令改變小車的運(yùn)動狀態(tài)。在每一次動作觸發(fā)的同時啟動定時器,如果小車由于某些原因不能正常的接收語音指令,則只要定時時間到,中斷服務(wù)程序會發(fā)出指令讓小車停下來。5硬件設(shè)計(jì)說明小車分為三大部分:車體部分、61板、控制板。車體部分:小車車體主要為兩個電機(jī)驅(qū)動裝置,分前輪(方向)驅(qū)動和后輪(動力驅(qū)動)。在車體的下面有一個可以安裝3節(jié)AA電池的電池盒,整個小車的電源就是由它來提供的。在小車的底部有一個紅色的小開關(guān),它負(fù)責(zé)控制整個小車的電源開通與關(guān)斷。61板:61板是小車的核心部分,它負(fù)責(zé)整個小車控制信號的產(chǎn)生,以及語音的播放和識別功能實(shí)現(xiàn)的。在不使用小車時可以將61板從小車上拆下來,61板仍然是完整的,可以用它來做其它的實(shí)驗(yàn)或開發(fā)??刂瓢澹合到y(tǒng)的硬件方面,由于大部分的功能實(shí)現(xiàn)都是在61板上完成的,只有電機(jī)控制部分電路另外設(shè)計(jì)在一塊獨(dú)立的電路板上,我們稱之為控制板??刂瓢遑?fù)責(zé)將來自61板的控制信號轉(zhuǎn)化為能夠驅(qū)動電動機(jī)的信號。下面詳細(xì)介紹小車的結(jié)構(gòu)和運(yùn)行原理以及控制電路板的結(jié)構(gòu)和功能實(shí)現(xiàn)。5.1車體介紹語音控制小車為四輪結(jié)構(gòu),如圖6、7所示。其中前面兩個車輪由前輪電機(jī)控制,在連桿和支點(diǎn)作用下控制前輪左右擺動,來調(diào)節(jié)小車的前進(jìn)方向。在自然狀態(tài)下,前輪在彈簧作用下保持中間位置。后面兩個車輪由后輪電機(jī)驅(qū)動,為整個小車提供動力。所以又稱前面的輪子為方向輪,后面的兩個輪子為驅(qū)動輪。圖6車體側(cè)視圖圖7車體頂視圖5.1.1小車的行走原理直走:由小車的結(jié)構(gòu)分析,在自然狀態(tài)下,前輪在彈簧作用下保持中間狀態(tài),這是只要后輪電機(jī)正轉(zhuǎn)小車就會前進(jìn),如圖8所示;倒車:倒車動作和前進(jìn)動作剛好相反,前輪電機(jī)仍然保持中間狀態(tài),后輪電機(jī)反轉(zhuǎn),小車就會向后運(yùn)動,如圖9所示;左轉(zhuǎn):前輪電機(jī)逆時針旋轉(zhuǎn)(規(guī)定為正轉(zhuǎn)),后輪電機(jī)正轉(zhuǎn),這時小車就會在前后輪共同作用下朝左側(cè)前進(jìn),如圖10所示;右轉(zhuǎn):前輪電機(jī)反轉(zhuǎn),后輪電機(jī)正轉(zhuǎn),這時小車就是會在前后輪共同作用下朝右側(cè)前進(jìn),如圖11所示。圖8小車直走示意圖圖9小車倒車示意圖圖10小車左轉(zhuǎn)示意圖圖11小車右轉(zhuǎn)示意圖5.2控制板原理圖控制板主要包括:接口電路、電源電路和兩路電機(jī)的驅(qū)動電路,控制板原理圖如圖12所示。圖12控制板原理圖接口電路:接口電路負(fù)責(zé)將61板的I/O接口信號傳送給控制電路板,I/O信號主要為控制電機(jī)需要的IOB8~IOB11這四路信號,同時為了方便后續(xù)的開發(fā)和完善,預(yù)留了IOB12~IOB15以及IOA8~IOA15接口,可以在這些接口上添加一些傳感器。電源部分:整個小車有4個電源信號:電池電源,控制板工作電源,61板工作電源,61板的I/O輸出電源。系統(tǒng)供電由電池提供,控制板直接采用電池供電(VCC),然后經(jīng)二極管D1后產(chǎn)生61板電源(VCC_61),通過61板的Vio跳線產(chǎn)61板的端口電源(V1)。二極管D作用:1、降壓,4節(jié)電池提供的電壓VCC最大可達(dá)到6V,D1可有效地降壓。2、保護(hù),D1可以防止電源接反燒壞61板。5.2.1全橋驅(qū)動原理全橋驅(qū)動又稱H橋驅(qū)動,下面介紹一下H橋的工作原理:H橋一共有四個臂,分別為B1~B4,每個臂由一個開關(guān)控制,示例中為三極管Q1~Q4。如果Q1、Q2導(dǎo)通Q3、Q4關(guān)斷,如圖13所示,此時電流將會流經(jīng)Q1、負(fù)載、Q2組成的回路,電機(jī)正轉(zhuǎn)。如果讓Q1、Q2關(guān)斷Q3、Q導(dǎo)通,如圖14所示,此時電流將會流經(jīng)Q3、負(fù)載、Q4組成的回路,電機(jī)反轉(zhuǎn)。如果讓Q1、Q2關(guān)斷Q3、Q4也關(guān)斷,負(fù)載Load兩端懸空,如圖15所示,此時電機(jī)停轉(zhuǎn)。這樣就實(shí)現(xiàn)了電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)、停止三態(tài)控制。如果讓Q1、Q2導(dǎo)通Q3、Q4也導(dǎo)通,那么電流將會流經(jīng)Q1、Q4組成的回路以及Q2和Q3組成的回路,如圖16所示,這時橋臂上會出現(xiàn)很大的短路電流。在實(shí)際應(yīng)用時注意避免出現(xiàn)橋臂短路的情況,這會給電路帶來很大的危害,嚴(yán)重的會燒毀電路。圖13B1、B2工作時的電路簡圖圖14B3、B4工作時的電路簡圖圖15B1~B4全部停止工作時的電路簡圖圖16B1~B4全部工作時的電路簡圖5.2.2動力電機(jī)驅(qū)動電路動力驅(qū)動由后輪驅(qū)動實(shí)現(xiàn),負(fù)責(zé)小車的直線方向運(yùn)動,包括前進(jìn)和后退,后輪驅(qū)動電路是一個全橋驅(qū)動電路,如圖17所示:Q1、Q2、Q3、Q4四個三極管組成四個橋臂,Q1和Q4組成一組,Q2和Q3組成一組,Q5控制Q2、Q3的導(dǎo)通與關(guān)斷,Q6控制Q1和Q4的導(dǎo)通與關(guān)斷,而Q5、Q6由IOB9和IOB8控制,這樣就可以通過IOB8和IOB9控制四個橋臂的導(dǎo)通與關(guān)斷控制后輪電機(jī)的運(yùn)行狀態(tài),使之正轉(zhuǎn)反轉(zhuǎn)或者停轉(zhuǎn),進(jìn)而控制小車的前進(jìn)和后退。圖17后輪電機(jī)驅(qū)動電路當(dāng)IOB8為高電平、IOB9為低電平時Q1和Q4導(dǎo)通,Q2和Q3截止,后輪電機(jī)正轉(zhuǎn),小車前進(jìn);反之當(dāng)IOB8為低電平、IOB9為高電平時Q1和Q4截止,Q2和Q3導(dǎo)通,后輪電機(jī)反轉(zhuǎn),小車倒退;而當(dāng)IOB8、IOB9同為低電平時Q1、Q2、Q3和Q4都截止,后輪電機(jī)停轉(zhuǎn),小車停止運(yùn)動。注意:IOB8和IOB9不能同時置高電平,這樣會造成后輪驅(qū)動全橋短路現(xiàn)象。5.2.3方向電機(jī)控制電路方向控制由前輪驅(qū)動實(shí)現(xiàn),包括左轉(zhuǎn)和右轉(zhuǎn),前輪驅(qū)動電路也是一個全橋驅(qū)動電路,如圖18所示:Q7、Q8、Q9、Q10四個三極管組成四個橋臂,Q7和Q10組成一組,Q8和Q9組成一組,Q11控制Q8、Q9的導(dǎo)通與關(guān)斷,Q12控制Q7和Q10的導(dǎo)通與關(guān)斷,而Q11、Q12由IOB10和IOB11控制,這樣就可以通過IOB10和IOB11控制前輪電機(jī)的正轉(zhuǎn)和反轉(zhuǎn),進(jìn)而控制小車的左轉(zhuǎn)和右轉(zhuǎn)。圖18前輪電機(jī)驅(qū)動電路當(dāng)IOB10為高電平、IOB11為低電平時Q8和Q9導(dǎo)通,Q7和Q10截止,前輪電機(jī)正轉(zhuǎn),小車前輪朝左偏轉(zhuǎn);反之當(dāng)IOB10為低電平、IOB11為高電平時Q8和Q9截止,Q7和Q10導(dǎo)通,前輪電機(jī)反轉(zhuǎn),小車前輪朝右偏轉(zhuǎn);而當(dāng)IOB10、IOB11同為低電平時Q8和Q9截止,Q7和Q10也截止,前輪電機(jī)停轉(zhuǎn),在彈簧作用下前輪被拉回到中間位置,保持直向。注意:IOB10、IOB11不能同時為高電平,這樣會造成前輪驅(qū)動全橋的橋臂短路。結(jié)合以上對前輪和后輪的狀態(tài)分析,得到小車的運(yùn)行狀態(tài)與輸入的對照表,如表1所示:表1基本的輸入與小車運(yùn)動狀態(tài)對照表IBO11IBO10IBO9IBO8后電機(jī)前電機(jī)小車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é)合以上對前輪和后輪的狀態(tài)分析,其端口對照如表4-2所示:表2輸入與小車運(yùn)動狀態(tài)對照表IBO11IBO10IBO9IBO8后電機(jī)前電機(jī)小車0110正轉(zhuǎn)正轉(zhuǎn)右后轉(zhuǎn)1010正轉(zhuǎn)反轉(zhuǎn)左后轉(zhuǎn)注意:為了小車的安全請不要出現(xiàn)以下兩種組合情況:表3禁止的輸入狀態(tài)列表IBO11IBO10IBO9IBO8后電機(jī)前電機(jī)小車**111停轉(zhuǎn)*停11***停轉(zhuǎn)停6軟件設(shè)計(jì)說明6.1軟件設(shè)計(jì)思想系統(tǒng)軟件設(shè)計(jì)SPCE061A提供了很好的語音播放和錄制機(jī)制以及簡單的API接口編程,大大簡化了小車的軟件設(shè)計(jì)。在此主要闡述,語音辨識(包括:初始化部分、訓(xùn)練部分、識別部分以及重訓(xùn)部分)以及定時中斷控制部分的軟件設(shè)計(jì)。6.2系統(tǒng)的程序流程圖19系統(tǒng)總體程序流程圖語音遙控小車的主程序流程如圖19所示,分為四大部分:初始化部分、訓(xùn)練部分、識別部分、重訓(xùn)操作。初始化部分:初始化操作將IOB8~IOB11設(shè)置為輸出端,用以控制電機(jī)。必要時還要有對應(yīng)的輸入端設(shè)置和PWM端口設(shè)置等。訓(xùn)練部分:訓(xùn)練部分完成的工作就是建立語音模型。程序一開始判斷小車是否被訓(xùn)練過,如果沒有訓(xùn)練過則要求對其進(jìn)行訓(xùn)練,并且會在訓(xùn)練成功之后將訓(xùn)練的模型存儲到FLASH,在以后使用時不需要重新訓(xùn)練;如果已經(jīng)訓(xùn)練過會把存儲在FLASH中的模型調(diào)出來裝載到辨識器中。識別部分:在識別環(huán)節(jié)當(dāng)中,如果辨識結(jié)果是名字,則進(jìn)入自動往返流程狀態(tài)。如果辨識結(jié)果為動作指令小車會語音告知相應(yīng)動作并執(zhí)行該動作。重訓(xùn)操作:考慮到有重新訓(xùn)練的需求,設(shè)置了重新訓(xùn)練的按鍵(61板的KEY3),循環(huán)掃描該按鍵,一旦檢測到此鍵按下,則將擦除訓(xùn)練標(biāo)志位(0xe000單元),并等待復(fù)位。復(fù)位后,程序重新執(zhí)行,當(dāng)檢測到訓(xùn)練標(biāo)志位為0xffff時會要求重新對其進(jìn)行訓(xùn)練。下面詳細(xì)介紹以上提到的子程序。6.2.1語音識別的原理簡介在介紹子程序之前首先介紹一下語音識別的原理。語音識別的具體流程圖如圖20所示:圖20語音識別流程說明框圖語音識別主要分為“訓(xùn)練”和“識別”兩個階段。在訓(xùn)練階段,單片機(jī)對采集到的語音樣本進(jìn)行分析處理,從中提取出語音特征信息,建立一個特征模型;在識別階段,單片機(jī)對采集到的語音樣本也進(jìn)行類似的分析處理,提取出語音的特征信息,然后將這個特征信息模型與已有的特征模型進(jìn)行對比,如果二者達(dá)到了一定的匹配度,則輸入的語音被識別。6.2.2訓(xùn)練子函數(shù)圖21訓(xùn)練流程圖當(dāng)程序檢測到訓(xùn)練標(biāo)志位BS_Flag內(nèi)容為0xffff,就會要求操作者對它進(jìn)行訓(xùn)練操作,訓(xùn)練操作的過程如圖21所示:訓(xùn)練采用兩次訓(xùn)練獲取結(jié)果的方式,以訓(xùn)練名字為例:小車首先會提示:給我取個名字吧,這時你可以告訴它一個名字;然后它會提示:請?jiān)僬f一遍,這時再次告訴它名字,如果兩次的聲音差別不大,小車就能夠成功的建立模型,名稱訓(xùn)練成功;如果沒能夠成功的建立模型,小車會告知失敗的原因并要求重新訓(xùn)練。成功訓(xùn)練名稱后會給出下一條待訓(xùn)練指令提示音:前進(jìn),參照名稱訓(xùn)練方式訓(xùn)練前進(jìn)指令。依次訓(xùn)練小車的名稱—前進(jìn)指令—倒車指令—左轉(zhuǎn)指令—右轉(zhuǎn)指令,全部訓(xùn)練成功子程序返回,訓(xùn)練結(jié)束。下面是訓(xùn)練部分的子程序,在訓(xùn)練時如果訓(xùn)練不成功TrainWord()返回值不為0,要求重復(fù)訓(xùn)練,只有當(dāng)訓(xùn)練成功,TrainWord()返回0,進(jìn)行下一條指令訓(xùn)練。voidTrainSD(){while(TrainWord(NAME_ID,S_NAME)!=0);//訓(xùn)練名稱while(TrainWord(COMMAND_GO_ID,S_ACT1)!=0);//訓(xùn)練第1個動作while(TrainWord(COMMAND_BACK_ID,S_ACT2)!=0);//訓(xùn)練第2個動作while(TrainWord(COMMAND_LEFT_ID,S_ACT3)!=0);//訓(xùn)練第3個動作while(TrainWord(COMMAND_RIGHT_ID,S_ACT4)!=0);//訓(xùn)練第4個動作}6.2.3語音識別子程序圖22語音識別部分流程圖

語音識別流程如圖22所示:首先獲取辨識器的辨識結(jié)果,判斷是否有語音觸發(fā),如果有語音觸發(fā)則會返回識別結(jié)果的ID號,ID號對應(yīng)名稱或者對應(yīng)不同的動作。如果ID號為名稱,則進(jìn)入運(yùn)動自動往返程序流程;如果ID號為動作,則語音告知將要執(zhí)行的動作,并執(zhí)行該動作。

6.2.4動作子程序動作子程序包括:前進(jìn)、倒車、左拐、右拐、自動往返子程序。

前進(jìn):由小車的結(jié)構(gòu)原理和驅(qū)動電路分析知:只要IOB8為高電平,IOB9,IOB10,IOB11全部為低電平即可實(shí)現(xiàn)小車的前進(jìn)。前進(jìn)子程序包括語音提示、置端口數(shù)據(jù)、啟動定時器操作。voidGoAhead()//前進(jìn){PlaySnd(S_ACT1,3);//語音提示*P_IOB_Data=0x0100;//前進(jìn)*P_INT_Mask|=0x0004;//開2Hz中斷__asm("intfiq,irq");uiTimecont=0;//清定時器}

倒車:由小車的結(jié)構(gòu)原理分析和驅(qū)動電路分析知:只要IOB9為高電平,IOB8,IOB10,IOB11全部為低電平即可實(shí)現(xiàn)小車的倒退。倒退子程序包括語音提示、置端口數(shù)據(jù)、啟動定時器操作。voidBackUp()//倒退{(lán)PlaySnd(S_ACT2,3);//語音提示*P_IOB_Data=0x0200;//倒車*P_INT_Mask|=0x0004;//開2Hz中斷__asm("intfiq,irq");uiTimecont=0;//清定時器}

左轉(zhuǎn):由小車的結(jié)構(gòu)原理分析和驅(qū)動電路分析知:小車左轉(zhuǎn)需要兩個條件:1.前輪左偏2.后輪前進(jìn),這時對應(yīng)的I/O狀態(tài)為:IOB8、IOB10為高電平,IOB9、IOB11為低電平。左轉(zhuǎn)子程序包括語音提示、置端口數(shù)據(jù)、啟動定時器操作。voidTurnLeft()//左轉(zhuǎn){PlaySnd(S_GJG,3);//播放提示音*P_IOB_Data=0x0900;//前輪右偏Delay();//延時*P_IOB_Data=0x0500;//前輪左偏*P_INT_Mask|=0x0004;//打開2Hz中斷__asm("intfiq,irq");//允許總中斷uiTimecont=0;//清定時器}注:在左轉(zhuǎn)之前首先讓前輪右偏,然后再讓前輪朝左偏,這樣前輪的擺動范圍更大,慣性更大,擺幅也最大,能更好實(shí)現(xiàn)轉(zhuǎn)彎。

右轉(zhuǎn):由小車的結(jié)構(gòu)原理分析和驅(qū)動電路分析知:小車右轉(zhuǎn)需要兩個條件:1.前輪右偏2.后輪前進(jìn),這時對應(yīng)的I/O狀態(tài)為:IOB8、IOB11為高電平,IOB9、IOB10為低電平。右轉(zhuǎn)子程序包括語音提示、置端口數(shù)據(jù)、啟動定時器操作。

voidTurnLeft()//左轉(zhuǎn){PlaySnd(S_GJG,3);//播放提示音*P_IOB_Data=0x0500;//前輪左偏Delay();//延時*P_IOB_Data=0x0900;//前輪右偏*P_INT_Mask|=0x0004;//打開2Hz中斷__asm("intfiq,irq");//允許總中斷uiTimecont=0;//清定時器}注:在右轉(zhuǎn)之前首先讓前輪左偏,然后再讓前輪朝右偏,這樣前輪的擺動范圍更大,慣性更大,擺幅也最大,能更好實(shí)現(xiàn)轉(zhuǎn)彎。6.2.5中斷控制流程雖然已經(jīng)有了前進(jìn)、后退以(通過直接呼叫小車的名字使其停車)等語音控制指令,但是考慮環(huán)境的干擾因素,小車運(yùn)行時的噪音影響和有效距離的限制,小車運(yùn)行后可能接收不到語音指令而一直運(yùn)行。為了防止出現(xiàn)這種情況,加入了時間控制,在啟動小車運(yùn)行的同時啟動定時器,定時器時間到停止小車的運(yùn)行,該定時器借助于2Hz時基中斷完成,圖23所示為該程序的流程圖??梢栽诔绦蛑行薷膗iTimeset參數(shù)來控制運(yùn)行時間,當(dāng)uiTimeset=2時,運(yùn)行時間為1s,以此類推。圖232Hz中斷子函數(shù)7系統(tǒng)綜合7.1硬件連接調(diào)試過程圖24小車硬件連接圖硬件調(diào)試過程相對順利,實(shí)驗(yàn)第一步就是按照實(shí)驗(yàn)說明書對61板的元件進(jìn)行焊接以及小車車體的連接安裝。由于車體焊接存在的問題,在程序調(diào)試過程中出現(xiàn)了一系列的硬件問題,但經(jīng)過仔細(xì)分析后,這些問題都得到了解決,硬件的調(diào)試改進(jìn)為軟件的實(shí)現(xiàn)調(diào)試打下了基礎(chǔ)。7.2程序調(diào)試過程分析

本次設(shè)計(jì)任務(wù)對軟件編寫調(diào)試的能力要求相對較高,程序調(diào)節(jié)是否順利決定了進(jìn)度。由于初次接觸61的編程,所以在實(shí)習(xí)初期我們主要是學(xué)習(xí)和認(rèn)知61的板以及61編程的基本知識,這是個學(xué)習(xí)深入的過程。

這個方案的確定是在查閱了,61資料“語音控制小車”的實(shí)現(xiàn)程序后得到的思路。基于對現(xiàn)有程序框架的理解,我們加入了自動往返程序流程。當(dāng)然,程序的調(diào)試是不可能一兩次就能成功的。這其中遇到的問題有很多,其中就有硬件的問題以及對61編程的知識的理解的不夠而出現(xiàn)的調(diào)試?yán)щy。7.3總體結(jié)果分析

本設(shè)計(jì)綜合應(yīng)用了SPCE061A豐富的軟硬件資源,成功的實(shí)現(xiàn)了語音控制功能。標(biāo)準(zhǔn)的C語言編程,豐富的語音資源函數(shù)為編程提供了很大的方便。該設(shè)計(jì)方案結(jié)構(gòu)簡單,以單芯片實(shí)現(xiàn)了語音播放與識別以及電機(jī)控制功能,相當(dāng)于“語音識別芯片+普通單片機(jī)”的功能。但是比“語音識別芯片+普通單片機(jī)”。該語音控制小車操作比較簡單,訓(xùn)練和識別成功的幾率也比較高,是一個典型的語音識別方案。參考文獻(xiàn)[1].童詩白,華成英.模擬電子技術(shù)基礎(chǔ)(第三版)[M].高等教育出版社,2000.[2].雷思孝,李伯成等.單片機(jī)原理及實(shí)用技術(shù)--凌陽16位單片機(jī)原理及應(yīng)用[

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論