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

下載本文檔

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

文檔簡介

1、 . 1 / 36摘摘 要要隨著電子、信息技術(shù)的飛速發(fā)展,語音識別被廣泛的應(yīng)用在各個領(lǐng)域。常見的應(yīng)用領(lǐng)域有:語音輸入系統(tǒng),如于鍵盤輸入方法;語音控制系統(tǒng),如工業(yè)控制、語音撥號系統(tǒng)、智能家電、聲控智能玩具等;智能對話查詢系統(tǒng),銀行服務(wù)、股票查詢服務(wù)等等。當(dāng)然這些應(yīng)用都要建立在對語音的準(zhǔn)確識別的基礎(chǔ)上。本項目主要采用凌陽科技公司的一款 SPCE061A 單片機(jī)進(jìn)行設(shè)計,主要利用它特有的語音識別功能來實現(xiàn)對小車行駛狀態(tài)的控制。比如輸入預(yù)先訓(xùn)練好的語音命令“前進(jìn)” ,小車根據(jù)命令向前行駛一段距離,輸入“左轉(zhuǎn)” ,小車向左轉(zhuǎn)彎。利用語音命令代替了傳統(tǒng)的遙控手動控制。小車接收命令的同時,向外界發(fā)出語音信號

2、,從而實現(xiàn)人車之間的簡單的交互。為減小聲音信號衰減,以與外部聲音信號的干擾對語音命令的干擾造成的誤差,本設(shè)計采用無線高頻信號發(fā)送的模式,來實現(xiàn)語音命令的傳送,即設(shè)計中采用兩個SPCE061A 單片機(jī)控制系統(tǒng),第一個專門負(fù)責(zé)語音信號的采集,然后發(fā)送語音命令的編碼。另外一個根據(jù)接收的語音命令編碼,來控制小車的行駛狀態(tài)。采用固定碼 PT2262無線發(fā)射模塊和 PT2272 接收模塊。關(guān)鍵詞關(guān)鍵詞 SPCE061A PT2262 PT2272 語音控制 智能小車 目目 錄錄摘要摘要 I IABSTRACTABSTRACT1 1 引言引言 1 12 2 背景介紹背景介紹 1 12.1 選題背景 12.2

3、 研究的目的與意義 23 3 設(shè)計要求設(shè)計要求 2 23.1 系統(tǒng)功能 23.2 基本參數(shù) 24 4 方案論證方案論證 2 24.1 方案一 24.2 方案二 3 . 2 / 364.3 方案三 34.4 方案比較 45 5 系統(tǒng)硬件設(shè)計系統(tǒng)硬件設(shè)計 4 45.1 系統(tǒng)總體方案介紹 45.2SPCE061A 單片機(jī) 55.3SPCE061A 最小系統(tǒng) 65.4 電源 75.5 無線發(fā)射接收模塊 PT2262 PT227285.6 小車控制板 95.7 小車車體架構(gòu) 125.8 SPCE061A 精簡開發(fā)板 135.9 系統(tǒng)實物圖 136 6 系統(tǒng)軟件設(shè)計系統(tǒng)軟件設(shè)計 15156.1 軟件結(jié)構(gòu)

4、156.2 語音識別原理簡介 166.3 訓(xùn)練子程序 176.4 語音識別子程序 186.5 動作子程序 196.6 中斷子程序 207 7 操作步驟操作步驟 21217.1 硬件連接 217.2 代碼下載 218 8 測試測試 21219 9 結(jié)論結(jié)論 2222參考文獻(xiàn)參考文獻(xiàn) 2222致致 2323附錄附錄 2424 . 1 / 36基于 SPCE061A 單片機(jī)的語音遙控小車的設(shè)計1 引言隨著電子、信息技術(shù)的飛速發(fā)展,語音識別被廣泛的應(yīng)用在各個領(lǐng)域。常見的應(yīng)用領(lǐng)域有:語音輸入系統(tǒng),相對于鍵盤輸入方法,它更符合人的日常習(xí)慣,也更自然、更高效;語音控制系統(tǒng),即用語音來控制設(shè)備的運(yùn)行,相對于手

5、動控制來說更加快捷、方便,可以用在諸如工業(yè)控制、語音撥號系統(tǒng)、智能家電、聲控智能玩具等許多領(lǐng)域;智能對話查詢系統(tǒng),根據(jù)客戶的語音進(jìn)行操作,為用戶提供自然、友好的數(shù)據(jù)庫檢索服務(wù)。例如家庭服務(wù)、賓館服務(wù)、旅行社服務(wù)系統(tǒng)、訂票系統(tǒng)、醫(yī)療服務(wù)、銀行服務(wù)、股票查詢服務(wù)等等。當(dāng)然這些應(yīng)用都要建立在對語音的準(zhǔn)確識別的基礎(chǔ)上。要實現(xiàn)小車行駛狀態(tài)的語音控制,關(guān)鍵點在于語音命令的識別。因此選擇具有語音識別功能的 SPCE061A 做為控制器,考慮到聲音信號的衰減、干擾,所以把語音信號的識別,和小車的控制隔離開來,采用兩組 SPCE061A 最小系統(tǒng),一組用于語音識別,然后通過編碼,把識別出的語音命令通過 PT22

6、62 發(fā)射模塊作為固定碼發(fā)射出去,然后另一組通過 PT2272 接收的固定碼來實現(xiàn)對小車的控制。主要容如下:(1)熟悉 SPCE061A 單片機(jī)與其開發(fā)環(huán)境;(2)編寫程序,用 H 橋電路驅(qū)動電機(jī),觀察電機(jī)轉(zhuǎn)速;(3)編寫程序,測試無線發(fā)射接收模塊 PT22622272;(4)編寫程序,檢測語音識別功能;(5)編寫綜合程序,調(diào)試各個模塊的協(xié)同工作;(6)反復(fù)試跑,調(diào)試程序細(xì)節(jié)。利用凌陽公司提供的 SPCE061A 單片機(jī)開發(fā)板和越野型車模,預(yù)計可以按時實現(xiàn)語音命令對小車行駛狀態(tài)的控制。2 背景介紹2.12.1 選題背景選題背景20 世紀(jì) 50 年代 AT&T 貝爾實驗室的 Audry

7、系統(tǒng),它是第一個可以識別十個英文數(shù)字的語音識別系統(tǒng)。20 世紀(jì) 60 年代,人工神經(jīng)網(wǎng)絡(luò)被引入了語音識別。20 世紀(jì) 80 年代末,人們終于在實驗室突破了大詞匯量、連續(xù)語音和非特定人這三大障礙,第一次把這三個特性都集成在一個系統(tǒng)中,比較典型的是卡耐基梅隆大學(xué) (CarnegieMellonUniversity)的 Sphinx 系統(tǒng),它是第一個高性能的非特定人、大詞匯量連續(xù)語音識別系統(tǒng)。1997 年,IBM 公司開發(fā)出漢語 ViaVoice 語音識別系統(tǒng),次年又開發(fā)出可以識別話、話和話等地方口音的語音識別系統(tǒng) ViaVoice98。2002 年,中科院自動化所與其所屬模式科技(Pattek)發(fā)

8、布了“天語”中文系列產(chǎn)品。我國語音識別研究工作起步于五十年代,但近年來發(fā)展很快。2002 年,中科院自動化所與其所屬模式科技(Pattek)發(fā)布了他們共同推出的面向不同計算平臺和應(yīng)用的“天語”中文語音系列產(chǎn)品PattekASR,結(jié)束了中文語音識別產(chǎn)品自 1998 年以來一直由國外公司壟斷的歷史。當(dāng)前語音識別技術(shù)飛速發(fā)展的過程中,不可避免的遇到很多問題,總結(jié)起來主要 . 2 / 36有以下幾點:(1)連續(xù)的語音分解為詞,音素等單位,建立理解語意的規(guī)則;(2)大量的語音信息。語音模式不僅因人而異,對同一個人來說,不同時間,同一句話的語音信息是不一樣的;(3)語音的模糊性。在漢語與英語中都很常見,同

9、樣發(fā)音的詞卻有著不同的意思;(4)語音的上下文影響,以致改變了重音、音調(diào)、音量、音速等,進(jìn)而影響了語音信息;(5)環(huán)境噪聲對語音信息的干擾不可避免。2.22.2 研究的目的與意義研究的目的與意義前面我們提到,語音識別是一門交叉科學(xué),涉與多門學(xué)科,包括信號處理、模式識別、概率論和信息論、發(fā)聲機(jī)理和聽覺機(jī)理等等。研究語音識別首先要對以上各個方面都要有系統(tǒng)的了解,而以上各個學(xué)科都可以是一門獨(dú)立的學(xué)科,對各個學(xué)科的綜合利用,其研究理論意義是顯而易見的。3 設(shè)計要求利用單片機(jī),實現(xiàn)小車的語音控制。3.13.1 系統(tǒng)功能系統(tǒng)功能(1)利用系統(tǒng)的語音播放和識別資源來實現(xiàn)語音控制功能;(2)通過 I/O 操作

10、,實現(xiàn)小車的前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退等功能;(3)能在行駛的過程中改變小車的行駛狀態(tài);(4)超出語音控制圍以后可以自動停車。3.23.2 基本參數(shù)基本參數(shù)(1)開發(fā)板工作電壓:DC(CPU)VDD為2.4-3.6V,(I/O)VDDH為2.4-5.5V;(2)開發(fā)板工作頻率:0.32M-49.152MHz;(3)H橋工作電壓:DC5V;(2)無線發(fā)射、接收模塊工作電壓:DC 3V12V(發(fā)射),DC 5V(接收);(3)無線發(fā)射發(fā)射頻率:天線長度 24cm(315MHz), 18cm(433.92MHz);(4)無線模塊發(fā)射距離:50-1000 米(開闊地);(5)車體:雙電機(jī)(舵機(jī),動力電機(jī))

11、,兩輪驅(qū)動。4 方案論證本課題有三種方案可提供參考:第一種是使用 MCS-51 系列單片機(jī)中的 AT89C51 設(shè)計本課題;第二種是使用 SPCE061A 單片機(jī)來設(shè)計,語音識別和小車控制用一塊SPCE061A 開發(fā)板控制;第三種是使用兩塊 SPCE061A 開發(fā)板把語音信號識別和小車控制隔離開。MCS-51 單片機(jī)被廣泛應(yīng)用在各個方面,編程簡單;SPCE061A 單片機(jī)是凌陽科技公司一款基于 unsp 核的單片機(jī),具有一定的數(shù)字信號處理功能,有專用的聲音 ADC輸入通道,置麥克風(fēng)放大器,并具有自動增益控制(AGC)功能具有凌陽特有的SACM_S240 聲音編碼方式。4.14.1 方案一方案一

12、采用 8051 系列單片機(jī)中的 AT89C51 做為控制核心,語音信號經(jīng)由聲音傳感器采集,然后經(jīng) AD 轉(zhuǎn)換與專用的語音芯片對聲音編碼,并儲存聲音模型到外擴(kuò)的 flash 芯片中。當(dāng)外界語音命令輸入時,單片機(jī)判斷經(jīng) AD 轉(zhuǎn)換后的數(shù)字信號與 flash 芯片中存儲的語音模型的相似度,以此來識別外界語音命令。根據(jù)不同的聲音命令驅(qū)動 H 橋,由 H 橋來控制電機(jī),從而達(dá)到控制小車行駛狀態(tài)的目的。此類語音處理芯片有 ISD 系列, . 3 / 36PM50 系列等。AT89C51 是 8 位單片機(jī),應(yīng)用廣泛,易于編程,且價格便宜。因為AT89C51 只有 4Kflash,且沒有置 ADC 電路,所以

13、必須有外圍擴(kuò)展電路。作為一門新興的技術(shù),語音識別需要對聲音進(jìn)行一定格式的壓縮、編碼、解碼、比較。這些都需要大量計算。設(shè)計框圖如圖 4-1 所示。圖 4-1 基于 AT89C51 單片機(jī)的語音遙控小車設(shè)計框圖4.24.2 方案二方案二采用凌陽科技公司的 SPCE061A 單片機(jī)做為控制核心,采用 MIC 輸入模塊,把聲音信號轉(zhuǎn)換為電信號,輸入到該單片機(jī)專用于聲音的 ADC 通道,經(jīng)自動增益 AGC 放大,幾次語音命令訓(xùn)練,把由 A/D 轉(zhuǎn)換后的數(shù)字信號即聲音模型存儲到 32K 的 Flash 中。外界輸入語音命令時,聲音信號經(jīng)由專用 ADC 通道轉(zhuǎn)換,和已經(jīng)存儲的聲音模型比較,當(dāng)達(dá)到一定的相似度

14、時,即判斷為識別出語音命令,返回相應(yīng)的函數(shù)值,以此來判斷語音命令,根據(jù)此返回的命令值來驅(qū)動小車的、舵機(jī)和動力電機(jī)來實現(xiàn)小車的行駛狀態(tài)的控制。此過程中根據(jù)語音命令的識別結(jié)果,SPCE061A 輸出相應(yīng)的語音提示,具有一定的人機(jī)交互功能。設(shè)計框圖如圖 4-2 所示。圖 4-2 基于 SPCE061A 單片機(jī)語音遙控小車的設(shè)計框圖4.34.3 方案三方案三同樣采用凌陽科技公司的 SPCE061A 單片機(jī),與方案二不同的地方就是方案二聲音接口總線接口模塊語音接收模塊語音播放電機(jī)驅(qū)動IOMCS-51IOMIC 輸入模塊語音輸出模塊 SPCE061A動力電機(jī)模塊A/D 轉(zhuǎn)換編碼解碼處理存儲D/A 轉(zhuǎn)換IO

15、 口舵機(jī)驅(qū)動模塊IO 口 . 4 / 36采集、電機(jī)驅(qū)動都基于一塊 SPCE061A 單片機(jī)開發(fā)板,本方案把聲音采集,電機(jī)驅(qū)動隔離開來。這里第一塊 SPCE061A 開發(fā)板用于采集聲音信號,如方案二判斷出語音命令,然后把語音命令轉(zhuǎn)換為固定碼通過 PT2262 無線發(fā)射模塊發(fā)射出去。第二塊 SPCE061A單片機(jī)開發(fā)板根據(jù) PT2272 無線接收模塊接收到的固定碼值,來判斷第一塊 SPCE061A單片機(jī)開發(fā)板接收到的語音命令是“前進(jìn)”命令,還是其他語音命令。比如預(yù)先約定的“0001”固定碼代表“左拐”命令,當(dāng)接收到的固定碼為“0001”時,小車執(zhí)行左拐動作。設(shè)計框圖如圖 4-3 所示。圖 4-3

16、 基于兩塊 SPCE061A 單片機(jī)的語音遙控小車的設(shè)計4.44.4 方案比較方案比較根據(jù)設(shè)計要求,若采用方案一即使用 AT89C51 單片機(jī),需要額外添加語音模塊、擴(kuò)展存儲器,外圍器件,尤其語音芯片,擴(kuò)展存儲器等總線器件,占用大量 IO 口,所以還需要進(jìn)行端口擴(kuò)展等其他操作;外接模塊擴(kuò)展接口會提高成本,電路也將變的復(fù)雜,從而造成性能不穩(wěn)定,降低運(yùn)算速度。相對 AT89C51 單片機(jī),SPCE061A 單片機(jī)無需添加語音模塊、AD/DA 轉(zhuǎn)換模塊,且本身有 32K 的 Flash,足夠存儲簡單的語音命令,并且其運(yùn)算速度也更勝一籌。所以采用凌陽 SPCE061A 單片機(jī)來設(shè)計語音遙控小車的設(shè)計。

17、對于方案二和方案三,主要區(qū)別是方案二采用一塊 SPCE061A 單片機(jī)來實現(xiàn)聲音識別和小車電機(jī)驅(qū)動,方案三采用兩塊 SPCE061A 單片機(jī)來實現(xiàn)小車的語音控制,將聲音識別和電機(jī)控制驅(qū)動分離開來,然后通過無線信號又將兩者聯(lián)系起來。方案三相對方案二的優(yōu)點是減小小車行駛過程中電機(jī)噪聲的干擾,確保聲音識別的準(zhǔn)確性。除此之外,無線信號控制相對直接語音控制能有效延長遙控距離。出于這兩方面的考慮,此設(shè)計采用第三種方案,即采用兩塊 SPCE061A 單片機(jī)開發(fā)板,將聲音采集,和小車電機(jī)控制,分離開來,然后通過無線信號連接起來。動力電機(jī)模塊SPCE061A(第二塊)編碼解碼處理存儲D/A 轉(zhuǎn)換IO 口舵機(jī)模塊

18、PT2272接收模塊聲音播放模塊MIC 輸入模塊SPCE061A(第一塊)A/D 轉(zhuǎn)換編碼解碼處理存儲IO 口PT2262發(fā)射模塊 . 5 / 365 5 系統(tǒng)硬件設(shè)計系統(tǒng)硬件設(shè)計5.15.1 系統(tǒng)總體方案介紹系統(tǒng)總體方案介紹本系統(tǒng)基于凌陽科技公司開發(fā)的 SPCE061A 精簡開發(fā)板,實物圖如圖 5-1 所示,將語音命令識別和電機(jī)驅(qū)動分別對待,其中一塊專用于聲音識別,對于不同的命令,通過無線發(fā)射模塊(實物如圖 5-2 所示)發(fā)射不同的固定碼。接收模塊根據(jù)接收的不同的固定碼來判斷語音命令的真正意圖,通過 IO 口管腳操作來實現(xiàn)對小車的行駛狀態(tài)的。圖 5-1 凌陽 SPCE061A 開發(fā)板圖 5-

19、2 無線發(fā)射接收模塊5.25.2 SPCE061ASPCE061A 單片機(jī)單片機(jī)SPCE061A 單片機(jī)是凌陽科技開發(fā)的一款基于 nSP 核的 16 位單片機(jī),具有一定的數(shù)字信號處理功能,該芯片擁有 8 路 10 位精度的 ADC,其中一路為音頻信號專用轉(zhuǎn)換通道,并且置有自動增益電路。這為實現(xiàn)語音錄入提供了方便的硬件條件,能方便靈活的實現(xiàn)聲音的錄放。兩路 10 位精度的 DAC,只需要外接功放(SPY0030A)即可完成語音的播放。(1)16 位 nSP 微處理器;(2)工作電壓:核工作電壓 VDD 為 3.03.6V(CPU),I/O 口工作電壓 VDDH 為VDD5.5V(I/O);(3)

20、CPU 時鐘:0.32MHz49.152MHz;(4)置 2K 字 SRAM; . 6 / 36(5)置 32K 閃存 ROM;(6)可編程音頻處理;(7)晶體振蕩器;(8)系統(tǒng)處于備用狀態(tài)下(時鐘處于停止?fàn)顟B(tài));(9)2 個 16 位可編程定時器/計數(shù)器(可自動預(yù)置初始計數(shù)值);(10)2 個 10 位 DAC(數(shù)-模轉(zhuǎn)換)輸出通道;(11)32位通用可編程輸入/輸出端口;(12)14 個中斷源可來自定時器 A/B,時基,2 個外部時鐘源輸入,鍵喚醒;(13)具備觸鍵喚醒的功能;(14) 使用凌陽音頻編碼 SACM_S240 方式(2.4K 位/秒),能容納 210 秒的語音數(shù)據(jù);(15)

21、鎖相環(huán) PLL 振蕩器提供系統(tǒng)時鐘信號;(16) 32768Hz 實時時鐘;(17) 7 通道 10 位電壓模-數(shù)轉(zhuǎn)換器(ADC)和單通道聲音模-數(shù)轉(zhuǎn)換器;(18) 聲音模-數(shù)轉(zhuǎn)換器輸入通道置麥克風(fēng)放大器和自動增益控制(AGC)功能;(19) 具備串行設(shè)備接口;(20) 低電壓復(fù)位(LVR)功和低電壓監(jiān)測(LVD)功能;(21) 置在線仿真板(ICE,In- Circuit Emulator)。圖 5-3 凌陽 SPCE061A 單片機(jī)部結(jié)構(gòu)5.3SPCE061A5.3SPCE061A 最小系統(tǒng)最小系統(tǒng)SPCE061A 最小系統(tǒng)包括 SPCE061A 芯片與其外圍的基本工作電路,包括晶振震蕩電

22、路(OSC) 、鎖相環(huán)外圍電路(PLL) 、復(fù)位電路(RESET) 、電源指示指示電路等等,如圖 5-4 所示。 . 7 / 36圖 5-4 凌陽 SPCE061A 單片機(jī)最小系統(tǒng)5.4 電源電源SPCE061A 板采用 3 節(jié) 5 號電池進(jìn)行供電,由 J10 接入,其中前后兩組電容用來去耦濾波,使其供給電源更加穩(wěn)定。因為 CPU 工作電壓一般為 3.3 伏電壓,在電路上加入凌陽科技公司的 SPY0029 三端穩(wěn)壓芯片,此芯片能輸出穩(wěn)定的 3.3V 電壓。兩個二極管,是為了防止誤將電源接反而設(shè)置的。在操作過程中不要將電源接反,因為反向電壓超過一定值,二極管將會被損壞,達(dá)不到保護(hù)的目的。后面的零

23、電阻與其電源分成不同的幾路是為了減少電磁干擾設(shè)置的。圖 8 是電源部分的電路,4.5V 直流電壓經(jīng)過SPY0029 后產(chǎn)生 3.3V 給整個系統(tǒng)供電。 . 8 / 36SPY0029 是凌陽公司設(shè)計的電壓調(diào)整 IC,采用 CMOS 工藝。SPY0029 具有靜態(tài)電流低、驅(qū)動能力強(qiáng)、線性調(diào)整出色等特點。VDDH3 為 SPCE061A 單片機(jī)的 I/O 電平參考,接 SPCE061A 單片機(jī)的 51 腳,這種接法使得 I/O 輸出高電平為 3.3V;VDDP 為 PLL 鎖相環(huán)電源,接 SPCE061A 單片機(jī)的 7 腳;VDD 和 VDDA 分別為數(shù)字電源與模擬電源,分別接SPCE061A 單

24、片機(jī)的 15 腳和 36 腳;AVSS1 是模擬地,接 SPCE061A 單片機(jī)的 24 腳;VSS是數(shù)字地,接 SPCE061A 單片機(jī)的 38 腳; AVSS2 接音頻輸出電路的 AVSS2。61 板電源模塊電路如圖 5-5 所示,SPCE061A 單片機(jī)的核供電為 3.3V,而 I/O 端口可接 3.3V5V,所以在電源模塊(61 板上)中有一個端口電平選擇跳線,如圖 5-5 中的 J5。如果系統(tǒng)需要的端口高電平為 3.3V,所以圖中的 J5 跳線需要跳到 2 和 3 上。圖 5-5 凌陽 SPCE061A 開發(fā)板電源模塊5.55.5 無線發(fā)射接收模塊無線發(fā)射接收模塊 PT2262PT2

25、262、PT2272PT2272無線發(fā)射接收模塊是基于 PT2262/PT2272 芯片的無線發(fā)射接收模塊,PT2262/PT2272 是普城公司生產(chǎn)的一種 CMOS 工藝制造的低功耗低價位通用編解碼電路,PT2262/PT2272 最多可有 12 位(A0-A11)三態(tài)地址端管腳(懸空,接高電平,接低電平),任意組合可提供 531441 地址碼,PT2262 最多可有 6 位(D0-D5)數(shù)據(jù)端管腳,設(shè)定的地址碼和數(shù)據(jù)碼從 17 腳串行輸出,可用于無線遙控發(fā)射電路。編碼芯片 PT2262 發(fā)出的編碼信號由:地址碼、數(shù)據(jù)碼、同步碼組成一個完整的碼字,解碼芯片 PT2272 接收到信號后,其地址

26、碼經(jīng)過兩次比較核對后,VT 腳才輸出高電平,與此同時相應(yīng)的數(shù)據(jù)腳也輸出高電平,如果發(fā)送端一直按住按鍵,編碼芯片也會連續(xù)發(fā)射。當(dāng)發(fā)射機(jī)沒有按鍵按下時,PT2262 不接通電源,其 17 腳為低電平,所以 315MHz 的高頻發(fā)射電路不工作,當(dāng)有按鍵按下時,PT2262 得電工作,其第 17 腳輸出經(jīng)調(diào)制的串行數(shù)據(jù)信號,當(dāng) 17 腳為高電平期間 315MHz 的高頻發(fā)射電路起振并發(fā)射等幅高頻信號, 當(dāng) 17 腳為低平期間 315MHz 的高頻發(fā)射電路停止振蕩,所以高頻發(fā)射電路完全收控于 PT2262 的 17 腳輸出的數(shù)字信號,從而對高頻電路完成幅度鍵控(ASK 調(diào)制)相當(dāng)于調(diào)制度為 100的調(diào)幅

27、。圖 5-6 無線發(fā)射模塊 圖 5-7 無線接收模塊因為無線發(fā)射模塊考慮到發(fā)射距離采用 12V 供電,這里我們采用光電隔離。無線發(fā)射模塊電路連接如圖 5-8 所示。當(dāng)語音識別后,IO 口電平變?yōu)榕c之對應(yīng)的數(shù)據(jù)碼D0、D1、D2、D3 四位,當(dāng)某一位為“1” ,光電三極管導(dǎo)通,則在該位上 PT2262 輸入“1” ,否則該位 PT2262 數(shù)據(jù)輸入“0” 。通過這種方法獲取并發(fā)送 SPCE061A 單片機(jī)識別語音命令對應(yīng)的數(shù)據(jù)碼。無線接收模塊通過天線接收到數(shù)據(jù)碼,通過 D0、D1、D2、D3 輸出。SPCE061A 單片機(jī)通過對 IO 的掃描來判斷是否有數(shù)據(jù)碼接收,IO 口對應(yīng) D00、D01、

28、D02、D03 四位。當(dāng)有數(shù)據(jù)碼接收時,根據(jù)不同的數(shù)據(jù)碼對 H 橋驅(qū)動 IO 口進(jìn)行不同的電平轉(zhuǎn)換,從而實現(xiàn)對電機(jī)的驅(qū)動,改變小車的行駛狀態(tài)。無線接收模塊電路如圖 5-9 所示。 . 9 / 36圖 5-8 無線發(fā)射模塊電路連接圖 5-9 無線接收模塊電路連接5.65.6 小車控制板小車控制板控制板主要包括:接口電路、電源電路和兩路電機(jī)的驅(qū)動電路,電路連接如圖 5-10。接口電路:接口電路負(fù)責(zé)將 SPCE061A 開發(fā)板的 I/O 接口信號傳送給控制電路板,I/O 信號主要為控制電機(jī)需要的 IOB8IOB11 這四路信號,同時為了方便后續(xù)的開發(fā)和完善,預(yù)留了 IOB12IOB15 以與 IOA

29、8IOA15 接口,可以在這些接口上添加一些傳感器。電源部分:整個小車有 4 個電源信號:電池電源,控制板工作電源,SPCE061A 開發(fā)板工作電源,SPCE061A 開發(fā)板的 I/O 輸出電源。系統(tǒng)供電由電池提供,控制板直接采用電池供電(VCC) ,然后經(jīng)二極管 D1 后產(chǎn)生 SPCE061A 開發(fā)板電源(VCC_61) ,通過 SPCE061A 開發(fā)板的 Vio 跳線產(chǎn)生 SPCE061A 開發(fā)板的端口電源(V1) 。 二極管 D1 作用: (1)降壓,4 節(jié)電池提供的電壓 VCC 最大可達(dá)到 6V,D1 可有效地降壓。 . 10 / 36(2)保護(hù),D1 可以防止電源接反燒壞 SPCE0

30、61A 開發(fā)板。電機(jī)驅(qū)動部分:分為舵機(jī)驅(qū)動和動力電機(jī)驅(qū)動,所以采用雙 H 橋驅(qū)動。圖 5-10 小車控制板電路圖H 橋驅(qū)動原理:H 橋一共有四個臂,分別為 B1B4,每個臂由一個開關(guān)控制,示例中為三極管 Q1Q4。 如果讓 Q1、Q2 導(dǎo)通 Q3、Q4 關(guān)斷,如圖 5-11 所示,此時電流將會流經(jīng) Q1、負(fù)載、Q2 組成的回路,電機(jī)正轉(zhuǎn)。圖 5-11 Q1、Q2 導(dǎo)通時 H 橋工作狀態(tài) . 11 / 36圖 5-12 Q3、Q4 導(dǎo)通時電橋工作狀態(tài)如果讓 Q1、Q2 關(guān)斷 Q3、Q4 導(dǎo)通,如圖 5-12 所示,此時電流將會流經(jīng) Q3、負(fù)載、Q4 組成的回路,電機(jī)反轉(zhuǎn)。如果讓 Q1、Q2 關(guān)斷

31、 Q3、Q4 也關(guān)斷,負(fù)載 Load 兩端懸空,此時電機(jī)停轉(zhuǎn),如圖 5-14。這樣就實現(xiàn)了電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)、停止三態(tài)控制。 如果讓Q1、Q2 導(dǎo)通 Q3、Q4 也導(dǎo)通,那么電流將會流經(jīng) Q1、Q4 組成的回路以與 Q2 和 Q3 組成的回路,如圖 5-13 所示,這時橋臂上會出現(xiàn)很大的短路電流。在實際應(yīng)用時注意避免出現(xiàn)橋臂短路的情況,這會給電路帶來很大的危害,嚴(yán)重的會燒毀電路。圖 5-13 Q1、Q2、Q3、Q4 都導(dǎo)通時電機(jī)停轉(zhuǎn) . 12 / 36圖 5-14 Q1、Q2、Q3、Q4 都不導(dǎo)通時電機(jī)停轉(zhuǎn)5.75.7 小車車體架構(gòu)小車車體架構(gòu)語音控制小車為四輪結(jié)構(gòu),前面兩個車輪由前輪電機(jī)控制,

32、來調(diào)節(jié)小車的前進(jìn)方向。在自然狀態(tài)下,前輪在彈簧作用下保持中間位置,如果前輪方向有偏差,可調(diào)節(jié)方向旋鈕。后面兩個車輪由后輪電機(jī)驅(qū)動,為整個小車提供前行動力。圖 5-15 所示側(cè)視圖。前輪電機(jī)反向轉(zhuǎn)動,后輪電機(jī)正向轉(zhuǎn)動,這時小車就是會在前后輪共同作用下朝右側(cè)前行,如圖 5-16 所示。同理實現(xiàn)小車的向前直行,向后倒車,向左轉(zhuǎn)等動作。圖 5-15 車體側(cè)視圖后輪前輪 . 13 / 36圖 5-16 小車頂視右轉(zhuǎn)圖5.85.8 SPCE061ASPCE061A 精簡開發(fā)板精簡開發(fā)板SPCE061A 精簡開發(fā)板(簡稱 61 板) ,是以凌陽 16 位單片機(jī) SPCE061A 為核心的精簡開發(fā)仿真實驗板,

33、除具備單片機(jī)最小系統(tǒng)電路外,還包括有電源電路、音頻電路(含 MIC 輸入電路和 DAC 音頻輸出部分) 、復(fù)位電路。61 板上有調(diào)試器接口(Probe接口)以與下載線(EZ_Probe)接口,分別可接凌陽科技的在線調(diào)試器、簡易下載線,配合 unSPIDE,可方便地在板上實現(xiàn)程序的下載、在線仿真調(diào)試。61 板上的主要功能模塊如下:(1)SPCE061A 單片機(jī)最小系統(tǒng)外圍電路模塊;(2)電源輸入模塊;(3)音頻電路(包含 Mic 輸入、DAC 音頻功放輸出)模塊;(4)按鍵模塊;(5)I/O 端口接口模塊;(6)調(diào)試、下載接口模塊。5.95.9 系統(tǒng)實物圖系統(tǒng)實物圖實物圖分兩部分,圖 5-17

34、為小車實物圖;圖 5-18 為語音遙控部分實物圖。 . 14 / 36圖 5-17 小車實物圖圖 5-18 語音遙控部分實物圖 . 15 / 366 系統(tǒng)軟件設(shè)計6.16.1 軟件結(jié)構(gòu)軟件結(jié)構(gòu)本系統(tǒng)主要包括以下程序:小車訓(xùn)練子程序,語音識別子程序,無線信號發(fā)射子程序,電機(jī)驅(qū)動子程序,中斷子程序。第一塊開發(fā)板主程序流程圖如圖 6-1 所示,第二塊開發(fā)板主程序流程圖如圖 6-2 所示。圖 6-1 第一塊開發(fā)板主程序流程圖YNYN初始化訓(xùn)練小車保存訓(xùn)練結(jié)果進(jìn)入識別模式語音識別清模型存儲區(qū)等待復(fù)位重新訓(xùn)練發(fā)射語音識別對應(yīng)數(shù)據(jù)碼已訓(xùn)練過開始裝載語音模型 . 16 / 36圖 6-2 第二塊開發(fā)板主流程圖

35、系統(tǒng)的主程序流程如圖 6-1 所示,分為四大部分:初始化部分、訓(xùn)練部分、識別部分、重訓(xùn)操作。初始化部分:初始化操作將 IOB8IOB11 設(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é)果是名字,通過無線發(fā)射模塊通知到第二塊開發(fā)板,停止當(dāng)前的動作并進(jìn)入待命狀態(tài),然后等

36、待動作命令。如果辨識結(jié)果為動作指令小車會語音告知相應(yīng)動作并執(zhí)行該動作,在運(yùn)動過程中可以通過呼叫小車的名字使小車停下來。重訓(xùn)操作:考慮到有重新訓(xùn)練的需求,設(shè)置了重新訓(xùn)練的按鍵(61 板的 KEY3) ,循環(huán)掃描該按鍵,一旦檢測到此鍵按下,則將擦除訓(xùn)練標(biāo)志位(0 xe000 單元) ,并等待復(fù)位。復(fù)位后,程序重新執(zhí)行,當(dāng)檢測到訓(xùn)練標(biāo)志位為 0 xffff 時會要求重新對其進(jìn)行訓(xùn)練。6.26.2 語音識別原理簡介語音識別原理簡介語音識別主要分為“訓(xùn)練”和“識別”兩個階段。在訓(xùn)練階段,單片機(jī)對采集到的語音樣本進(jìn)行分析處理,從中提取出語音特征信息,建立一個特征模型;在識別階段,單片機(jī)對采集到的語音樣本也

37、進(jìn)行類似的分析處理,提取出語音的特征信息,然后將這個特征信息模型與已有的特征模型進(jìn)行對比,如果二者達(dá)到了一定的匹配度,則輸入的語音被識別。具體語音識別流程圖如圖 6-3 所示。N播放相應(yīng)交互語音執(zhí)行相應(yīng)電機(jī)操作Y接收到數(shù)據(jù)碼初始化開始掃描鍵盤 . 17 / 36圖 6-3 語音識別流程圖6.36.3 訓(xùn)練子程序訓(xùn)練子程序當(dāng)程序檢測到訓(xùn)練標(biāo)志位 BS_Flag 容為 0 xffff,就會要求操作者對它進(jìn)行訓(xùn)練操作,訓(xùn)練操作的過程如圖 6-4 所示:訓(xùn)練采用兩次訓(xùn)練獲取結(jié)果的方式,以訓(xùn)練名字為例:小車首先會提示:給我取個名字吧,這時你可以告訴它一個名字(比如小強(qiáng)) ;然后它會提示:請再說一遍,這時

38、再次告訴它名字(小強(qiáng)) ,如果兩次的聲音差別不大,小車就能夠成功的建立模型,名稱訓(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é)束。 . 18 / 36圖 6-4 小車訓(xùn)練流程圖下面是訓(xùn)練部分的子程序,在訓(xùn)練時如果訓(xùn)練不成功 TrainWord()返回值不為 0,要求重復(fù)訓(xùn)練,只有當(dāng)訓(xùn)練成功,TrainWord()返回 0,進(jìn)行下一條指令訓(xùn)練。void TrainSD() while(TrainWord(NAM

39、E_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.46.4 語音識別子程序語音識別子程序語音識別流程如圖 6-5 所示:首

40、先獲取辨識器的辨識結(jié)果,判斷是否有語音觸發(fā),如果有語音觸發(fā)則會返回識別結(jié)果的 ID 號,ID 號對應(yīng)名稱或者對應(yīng)不同的動作。如果ID 號為名稱,則結(jié)束運(yùn)動(如果當(dāng)前在運(yùn)動狀態(tài)) ,進(jìn)入待命狀態(tài),等待下一次的指令觸發(fā);如果 ID 號為動作,則語音告知將要執(zhí)行的動作,并執(zhí)行該動作。 . 19 / 36圖 6-5 語音識別流程圖6.56.5 動作子程序動作子程序動作子程序包括:前進(jìn)、倒車、左拐、右拐、停車子程序; 前進(jìn):由小車的結(jié)構(gòu)原理和驅(qū)動電路分析知:只要 IOB8 為高電平,IOB9,IOB10,IOB11 全部為低電平即可實現(xiàn)小車的前進(jìn)。前進(jìn)子程序包括語音提示、置端口數(shù)據(jù)、啟動定時器操作,該部

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

42、Data=0 x0200; /倒車 *P_INT_Mask |= 0 x0004; /開 2Hz 中斷 _asm(int fiq,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)子程序包括語音提示、置 . 20 / 36端口數(shù)據(jù)、啟動定時器操作,該部分程序如下: void TurnLeft() /左轉(zhuǎn) PlaySnd(S_GJG,3); /播放提示音 *P_IOB_Data=0 x0900; /前輪

43、右偏 Delay(); /延時 *P_IOB_Data=0 x0500; /前輪左偏 *P_INT_Mask |= 0 x0004; /打開 2Hz 中斷 _asm(int fiq,irq); /允許總中斷 uiTimecont = 0; /清定時器 右轉(zhuǎn):由小車的結(jié)構(gòu)原理分析和驅(qū)動電路分析知:小車右轉(zhuǎn)需要兩個條件:1.前輪右偏 2.后輪前這時對應(yīng)的 I/O 狀態(tài)為:IOB8、IOB11 為高電平,IOB9、IOB10 為低電平。右轉(zhuǎn)子程序包括語音提示端口數(shù)據(jù)、啟動定時器操作,該部分程序如下:void TurnLeft() /左轉(zhuǎn) PlaySnd(S_GJG,3); /播放提示音 *P_IOB

44、_Data=0 x0500; /前輪左偏 Delay(); /延時 *P_IOB_Data=0 x0900; /前輪右偏 *P_INT_Mask |= 0 x0004; /打開 2Hz 中斷 _asm(int fiq,irq); /允許總中斷 uiTimecont = 0; /清定時器 6.66.6 中斷子程序中斷子程序雖然已經(jīng)有了前進(jìn)、后退以與停車(通過直接呼叫小車的名字使其停車)等語音控制指令,但是考慮環(huán)境的干擾因素,小車運(yùn)行時的噪音影響和有效距離的限制,小車運(yùn)行后可能接收不到語音指令而一直運(yùn)行。為了防止出現(xiàn)這種情況,加入了時間控制,在啟動小車運(yùn)行的同時啟動定時器,定時器時間到停止小車的運(yùn)

45、行,該定時器借助于 2Hz 時基中斷完成, 圖 6-6 所示為該程序的流程圖。可以在程序中修改uiTimeset 參數(shù)來控制運(yùn)行時間,當(dāng) uiTimeset=2 時,運(yùn)行時間為 1s,以此類推。 . 21 / 36圖 6-6 中斷子程序流程7 操作步驟7.17.1 硬件連接硬件連接語音控制小車電路包括兩大部分:SPCE061A 開發(fā)板部分和控制板部分,硬件部分的連接主要用到 SPCE061A 的 IOB8IOB11 來控制小車的狀態(tài)。 電源部分連接:電池電源直接接控制板電源接口 J1, J2 接 61 板的電源,連接時注意電源極性。7.27.2 代碼下載代碼下載硬件連接完成之后,檢查無誤,接下

46、來就可以下載程序了。具體的步驟為: 第一步:打開集成開發(fā)環(huán)境,打開“CarDemo.spj”文件,編譯。 第二步:點擊菜單 ProjectSelect Body,或者直接點擊 圖標(biāo)打開如圖 7-1所示的對話框:圖 7-1 Select Body 對話框第三步:在彈出的對話框中選擇 Body Name 為 SPCE061A,選擇 Probe 為 EZ_Probe,點擊 OK 按鈕確定。 第四步:點擊 IDE 工具欄上的 圖標(biāo),選擇 Use ICE 模式。 第五步:按 F8 快捷下載按鈕,下載代碼。8 測試 . 22 / 36成功下載程序以后,去掉下載線并復(fù)位系統(tǒng)(如果使用 EZ-Probe 還應(yīng)

47、將 Probe 選擇跳線 S5 拔去) ,小車就會提示對它進(jìn)行訓(xùn)練。訓(xùn)練采用應(yīng)答式訓(xùn)練,每條指令的訓(xùn)練次數(shù)為兩次,每一條命令的訓(xùn)練過程都是一樣的,以“前進(jìn)”為例說明: 步驟一:小車提示“前進(jìn)” ; 步驟二:告訴小車“前進(jìn)” ; 步驟三:小車提示“請再說一遍” (重復(fù)訓(xùn)練提示音) ; 步驟四:再次告訴小車“前進(jìn)” (重復(fù)訓(xùn)練一次) 。這是一個完整的訓(xùn)練過程,如果訓(xùn)練成功,小車會自動進(jìn)入下一條指令的訓(xùn)練,并會提示下一條指令對應(yīng)的動作;如果沒有訓(xùn)練成功,小車會提示“說什么暗語呀”或者“沒有聽到任何聲音”等信息,這樣的話就要重復(fù)剛才所說的四個步驟,直到成功為止。整個的訓(xùn)練過程共有 5 次這樣的訓(xùn)練,依

48、次為:名稱前進(jìn)后退左拐右拐。完成訓(xùn)練后,輸入語音命令“前進(jìn)” ,觀察小車是否前行。9 結(jié)論凌陽 SPCE061A 單片機(jī)的數(shù)字信號處理能力,獨(dú)有的語音識別能力為本系統(tǒng)的設(shè)計提供了便利條件;32 個可編程 I/O 口,使得擴(kuò)展外圍設(shè)備非常方便;CPU 可工作在0.32MHz49MHz 的主頻圍,并且擁有豐富的時基、定時器,以與中斷功能,實現(xiàn)了小車的語音控制功能。本課題在最初設(shè)計的過程中,由于語音命令受外界的干擾大,語音命令發(fā)出后,很容易受到外界干擾,導(dǎo)致施令者一旦和小車距離過遠(yuǎn),小車將接受不到命令。這種情況下,催生了方案三的提出,并得以實踐。實驗結(jié)果證明,采用無線語音遙控,大大增加小車的聲控距離

49、,降低了命令錯誤幾率。參考文獻(xiàn)參考文獻(xiàn): :1譚浩強(qiáng).C 語言程序設(shè)計.:清華大學(xué),20052譚浩強(qiáng),基溫.C 語言程序設(shè)計教程.:高等教育,19913偉.單片機(jī)程序設(shè)計 100 例.:電子工業(yè),2009 年4馬忠梅.單片機(jī) C 語言應(yīng)用程序設(shè)計.:航空航天大學(xué),20075郭天祥.新概念 51 單片機(jī) C 語言教程.:電子工業(yè),20096鯤,春亮.單片機(jī) C 語言入門(修訂版).:人民郵電,20107超.C 語言常用函數(shù)速查手冊.:化學(xué)工業(yè),20109晶皎.嵌入式語音技術(shù)與凌陽 16 位單片機(jī)應(yīng)用.:北航,200310黃菊生.單片機(jī)原理與接口技術(shù).:國防工業(yè),200711羅亞非.凌陽 16 位

50、單片機(jī)應(yīng)用基礎(chǔ).:航空航天大學(xué),200512美明,溫冬蟬.IBM-PC 匯編語言程序設(shè)計.:清華大學(xué),2001 19汪敏.凌陽 16 位單片機(jī)實驗與實踐.:航空航天大學(xué),200720雷思孝.單片機(jī)原理與實用技術(shù).:電子科技大學(xué),20038薛鈞義,彥斌,虞鶴松,樊波.凌陽十六位單片機(jī)原理與應(yīng)用.:航空航天,2003.213汪敏.凌陽 16 位單片機(jī)實驗與實踐.:航空航天大學(xué),200714齊向東,立群.單片機(jī)控制技術(shù)實踐.:中國電力,200915傳正,林春景.凌陽單片機(jī)原理與實踐.:航天航空大學(xué),200616杜剛.16 位單片機(jī)原理與應(yīng)用.:中國電力,200717凌陽科技.凌陽單片機(jī)在大學(xué)生電子競

51、賽中的應(yīng)用.:航天航空大學(xué),200518樊尚春.傳感器技術(shù)與應(yīng)用.:航空航天大學(xué),2004 . 23 / 36致 本論文是在王旭輝老師的悉心指導(dǎo)下完成的。王旭輝老師淵博的專業(yè)知識,嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,精益求精的工作作風(fēng),誨人不倦的高尚師德,嚴(yán)以律己、寬以待人的崇高風(fēng),樸實無華、平易近人的人格魅力對我影響深遠(yuǎn)。不僅使我樹立了遠(yuǎn)大的學(xué)術(shù)目標(biāo)、掌握了基本的研究方法,還使我明白了許多待人接物與為人處世的道理。在本論文的寫作過程中,我的導(dǎo)師王旭輝老師傾注了大量的心血,從選題到開題報告,從寫作提綱,到一遍又一遍地指出每稿中的具體問題,嚴(yán)格把關(guān),循循善誘。在此,謹(jǐn)向王旭輝老師表示崇高的敬意和衷心的感!感指導(dǎo)教師

52、王旭輝的關(guān)心、指導(dǎo)和教誨。寫作畢業(yè)論文是一次再系統(tǒng)學(xué)習(xí)的過程,畢業(yè)論文的完成,同樣也意味著新的學(xué)習(xí)生活的開始。同時我還要感在我學(xué)習(xí)期間給我極大關(guān)心和支持的各位老師以與關(guān)心我的同學(xué)和朋友。 . 24 / 36附 錄第一塊 SPCE061A 開發(fā)板程序如下:/=/ The information contained herein is the exclusive property of/ Sunnnorth Technology Co. And shall not be distributed, reproduced,/ or disclosed in whole in part without

53、prior written permission./ (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO./ ALL RIGHTS RESERVED/ The entire notice above must be reproduced on all authorized copies./=/=/ 工程名稱:Car_Demo/ 功能描述:實現(xiàn)小車的語音控制/ 涉與的庫:CMacro1016.lib/ bsrv222SDL.lib/sacmv26e.lib/ 組成文件:main.c/Flash.asm, hardware.asm,ISR.asm / hardwar

54、e.h,s480.h, hardware.inc/ 硬件連接: IOA0-KEY1/IOA1-KEY2/IOA2-KEY3/IOB8-前進(jìn)/IOB9-倒車/IOB10-左拐/IOB11-右拐/ 維護(hù)記錄: 2005-12-12 v1.0/=#include s480.h#include bsrsd.h#defineP_IOA_Data (volatile unsigned int *)0 x7000 #define P_IOA_Dir (volatile unsigned int *)0 x7002#define P_IOA_Attrib (volatile unsigned int *)0

55、x7003#define P_IOB_Data(volatile unsigned int *)0 x7005 #define P_IOB_Dir(volatile unsigned int *)0 x7007 #define P_IOB_Attrib(volatile unsigned int *)0 x7008 #define P_TimerA_Data(volatile unsigned int *)0 x700A#define P_TimerA_Ctrl(volatile unsigned int *)0 x700B #define P_TimerB_Data(volatile uns

56、igned int *)0 x700C#define P_TimerB_Ctrl(volatile unsigned int *)0 x700D #define P_Watchdog_Clear (volatile unsigned int *)0 x7012 #define P_INT_Mask(volatile unsigned int *)0 x702D . 25 / 36#define P_INT_Clear(volatile unsigned int *)0 x7011 #define NAME_ID 0 x100#define COMMAND_GO_ID 0 x101#define

57、 COMMAND_BACK_ID 0 x102#define COMMAND_LEFT_ID 0 x103#define COMMAND_RIGHT_ID 0 x104#define S_NAME0/給我取個名字吧#define S_ACT11/前進(jìn)#define S_ACT22/倒車,請注意#define S_ACT33/左拐#define S_ACT44/右拐#define S_RDY5/Yeah#define S_AGAIN6/請再說一遍#define S_NOVOICE7/沒有聽到任何聲音#define S_CMDDIFF8/說什么暗語呀#define S_NOISY8/說什么暗語呀#

58、define S_START9/準(zhǔn)備就緒,開始辨識#define S_GJG10/拐就拐#define S_DCZY11/倒車,請注意extern unsigned int BSR_SDModel100;/外部變量BSR_SDModel100,辨識器自帶extern void F_FlashWrite1Word(unsigned int addr,unsigned int Value);extern void F_FlashErase(unsigned int sector);unsigned int uiTimeset = 3;/運(yùn)行時間定時,調(diào)整該參數(shù)控制運(yùn)行時間unsigned int

59、uiTimecont; /運(yùn)行時間計時/=/ 語法格式: void Delay();/ 實現(xiàn)功能: 延時/ 參數(shù):無/ 返回值:無/=void Delay()unsigned int i;for(i=0;i0 xffff;i+)*P_Watchdog_Clear=0 x0001;/= . 26 / 36/ 語法格式: void PlaySnd(unsigned SndIndex,unsigned DAC_Channel);/ 實現(xiàn)功能: 語音播放函數(shù)/ 參數(shù):SndIndex-播放語音資源索引號/DAC_Channel-播放聲道選擇/ 返回值:無/=void PlaySnd(unsigned

60、SndIndex,unsigned DAC_Channel)BSR_StopRecognizer();/停止識別器SACM_S480_Initial(1);/初始化為自動播放SACM_S480_Play(SndIndex, DAC_Channel, 3);/開始播放一段語音while(SACM_S480_Status()&0 x0001)!= 0)/是否播放完畢?SACM_S480_ServiceLoop();/解碼并填充隊列*P_Watchdog_Clear=0 x0001;/清看門狗SACM_S480_Stop();/停止播放BSR_InitRecognizer(BSR_MIC);/初始化識別器/

溫馨提示

  • 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

提交評論