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

正文內(nèi)容

基于語音技術(shù)的智能家居系統(tǒng)的設(shè)計(jì)畢業(yè)論文(編輯修改稿)

2025-07-24 20:51 本頁面
 

【文章內(nèi)容簡介】 的采集和對(duì)比分析,同時(shí)將對(duì)比得出的一個(gè)最優(yōu)結(jié)果以串口中斷的方式傳回給單片機(jī)。最后通過紅外遙控模塊傳送給另一個(gè)單片,使繼電器的指示燈亮或者滅。語音識(shí)別模塊與主控單片機(jī)的硬件連接如圖 36 所示。唐 山 學(xué) 院 畢 業(yè) 設(shè) 計(jì)11圖 36 語音識(shí)別模塊的硬件連接圖 紅外遙控模塊紅外遙控模塊主要有兩部分構(gòu)成,紅外發(fā)送部分和紅外接收部分,現(xiàn)在一一介紹這兩部分。這個(gè)模塊最大的優(yōu)點(diǎn)就是,不會(huì)干擾其他的信號(hào),不影響其他設(shè)備的正常工作,而自己本身也不受其他信號(hào)的影響。 紅外發(fā)光二極管的介紹紅外發(fā)射部分的主要元件為紅外發(fā)光二極管,實(shí)際上是一只特殊的發(fā)光二極管,由于其內(nèi)部材料不同于普通發(fā)光二極管,因而在其兩端施加一定電壓時(shí),它便發(fā)出的是紅外線而不是可見光 [9]。在其實(shí)際應(yīng)用中要加上反向電壓,才可以正常工作,它發(fā)出的紅外線的波長在 940 毫米左右。在這需要注意的是:在調(diào)試時(shí),如果不知道紅外發(fā)光二極管是好是壞,能否正常工作,可以用萬用表的電阻檔量他的正反向電阻。 紅外發(fā)射部分的介紹單片機(jī)在空閑時(shí)候,功耗比較低,比較節(jié)能。當(dāng)出現(xiàn)語音命令時(shí),語音識(shí)別模塊會(huì)在觸發(fā)狀態(tài)下采集語音命令進(jìn)行分析,并將結(jié)果傳給單片機(jī),產(chǎn)生串口中斷,這時(shí)單片機(jī)會(huì)調(diào)用命令函數(shù)關(guān)閉串口中斷,同時(shí)開啟定時(shí)器中斷,定時(shí)器 T0 作為紅外線發(fā)射頻率控制器,當(dāng) T0 定時(shí)溢出時(shí)中斷程序使紅外管接口電平反轉(zhuǎn)一次,寫入定時(shí)器的初值不同,在輸出端口就得到不同的發(fā)射頻率 [14]。在語音識(shí)別模塊的論述中講到,語音芯片會(huì)將采集到的語音信號(hào)與放好的關(guān)鍵詞列表進(jìn)行匹配得到最優(yōu)結(jié)果,這個(gè)結(jié)果會(huì)以串口的方式發(fā)送給單片。單片機(jī)唐 山 學(xué) 院 畢 業(yè) 設(shè) 計(jì)12接收到這個(gè)最優(yōu)結(jié)果以后,會(huì)打開定時(shí)器,產(chǎn)生一個(gè)個(gè)的高低電平。即完成了發(fā)送信號(hào)的編碼,產(chǎn)生了一個(gè)脈沖串信號(hào)。這個(gè)脈沖串信號(hào)載有相應(yīng)的信息,通過紅外發(fā)光二極管發(fā)射出去。 紅外發(fā)射部分硬件連接這一部分由 51 單片機(jī)和紅外發(fā)光二極管構(gòu)成。用來發(fā)送二進(jìn)制信號(hào)經(jīng)過編碼以后的脈沖串信號(hào)。它與單片機(jī)的連接方式如下圖 37 所示。圖 37 紅外發(fā)射部分的電路圖 HS0038 的介紹紅外接收部分采用一體化接收器 HS0038。HS0038 黑色環(huán)氧樹脂封裝。一共有三個(gè)管腳:地端、電源端和信號(hào)輸出端。它可以不受其他光源的干擾,功耗低,而且靈敏度高。HS0038 的抗干擾能力較強(qiáng),成本低,完成對(duì)信號(hào)進(jìn)行放大、檢波、整形得到 TTL 電平的編碼信號(hào),不需要其他外圍電路,最后將編碼信號(hào)傳送給單片機(jī),經(jīng)單片機(jī)解碼并執(zhí)行去控制相關(guān)對(duì)象 [15]。它的引腳及功能如下圖 38 所示。圖 38 HS0038 的引腳及功能圖在此需要注意,判斷 HS0038 是否可以正常工作時(shí),需要在把上圖的第二唐 山 學(xué) 院 畢 業(yè) 設(shè) 計(jì)13和第三引腳之間連接一個(gè)二極管和一個(gè)發(fā)光二極管,手拿遙控器對(duì)著接收頭按下任意鍵,如果發(fā)光二極管閃爍,可以證明 HS0038 可以正常工作。 紅外接收過程及硬件連接紅外接收就是對(duì)紅外信號(hào)的接收、放大、檢波、整形,之后解調(diào)出紅外遙控編碼脈沖的一種過程 [16]。注意的是接收的波長為 750~1150 納米之間。它的具體實(shí)現(xiàn)過程如下圖 39 所示。單片機(jī) 紅外發(fā)射電路 一體化紅外接收頭單片機(jī)輸出調(diào)制 發(fā)送接收解調(diào)圖 39 紅外遙控的實(shí)現(xiàn)過程圖紅外接收部分只需要 HS0038 就可以完成所需要的功能,不需要外加其他設(shè)備,HS0038 與單片機(jī)的連接方式如下圖 310 所示。圖 310 紅外接收電路圖 整體實(shí)物圖模擬智能家居系統(tǒng)的實(shí)物連接如下圖 311 所示。解碼唐 山 學(xué) 院 畢 業(yè) 設(shè) 計(jì)14圖 311 整體實(shí)物圖4 智能家居系統(tǒng)軟件設(shè)計(jì) 語音識(shí)別模塊語音識(shí)別模塊的整體的流程圖如圖 41 所示。唐 山 學(xué) 院 畢 業(yè) 設(shè) 計(jì)15N 開始 是否為觸發(fā)狀態(tài) 采集語音命令 識(shí)別語音命令 傳送相應(yīng)的語音命令 系統(tǒng)是否繼續(xù)識(shí)別 結(jié)束YNY 串口初始化 芯片通用初始化 語音識(shí)別初始化寫列表 等待語音輸入圖 41 語音模塊流程圖由圖 35 可以知道,語音芯片通過 與 51 單片機(jī)相連接。在送入語音命令之前,所要做的準(zhǔn)備工作如下:把所連接的串口、語音芯片以及一些寄存器初始化;把所需要的關(guān)鍵詞列表寫入到語音芯片中;等待語音信號(hào)的輸入。當(dāng)麥克風(fēng)收集到語音命令時(shí),在語音芯片內(nèi)部會(huì)以一定的算法將關(guān)鍵詞列唐 山 學(xué) 院 畢 業(yè) 設(shè) 計(jì)16表與該語音信號(hào)進(jìn)行對(duì)比匹配。將最終的結(jié)果通過 送入單片機(jī)。要注意的是:對(duì)語音芯片、所連接的串口的各種操作都必須通過寄存器的操作來完成,包括設(shè)置標(biāo)志位、讀取狀態(tài)、向 FIF0 寫入數(shù)據(jù)等 [16]。 通用初始化讓芯片還原最初的方式和狀態(tài),等待語音命令的輸入,這樣會(huì)更好的識(shí)別信息,完成操作。參考程序如下:Void LD_init_Common( ){bMp3play=0。LD_ReadReg(0x06)。/*soft reset.*/LD_WriteReg(0x1F,0x0)。Delay(10)。LD_WriteReg(0x89,0x03)。 LD_WriteReg(0xCF,0x43)。LD_WriteReg(0xCB,0x02)。/*PLL setting*/LD_WriteReg(0x11,LD_PLL_11)。If (nLD_Mode==LD_MODEMP3) {LD_WriteReg(0x1E,0x00)。LD_WriteReg(0x19,LD_PLL_19)。LD_WriteReg(0x1B,LD_PLL_1B)。LD_WriteReg(0x1D,LD_PLL_1D)。LD_WriteReg(0x79,LD_LEDMTR_FREQ)。 } ELSE { LD_WriteReg(0x1E,0x00)。 LD_WriteReg(0x19,0x3f)。 LD_WriteReg(0x1D,0x1f)。 LD_WriteReg(0x1B,0x08)。 } LD_WriteReg(0xCD,0x04)。唐 山 學(xué) 院 畢 業(yè) 設(shè) 計(jì)17 LD_WriteReg(0x17,0x4c)。 LD_WriteReg(0xB9,0x00) LD_WriteReg(0xCF,0x4f)。LD_WriteReg(0x6F,0xff)。 } 寄存器的初始化語音識(shí)別模塊中,寄存器有著很重要的作用,可以說大部分的操作是根據(jù)它來完成的。對(duì)寄存器設(shè)置的程序如下:Void LD_init_ASR(){nld_Mode=LD_MODE_ASR_RUN。LD_Init_Common()。LD_WriteReg(0xBD,0x00)。LD_WriteReg(0x17,0x48)。 Delay(10)。LD_WriteReg(0x3C,0x80)。LD_WriteReg(0x3E,0x07)。 LD_WriteReg(0x38,0xff)LD_WriteReg(0x3A,0x07)。LD_WriteReg(0x40,0x08)。LD_WriteReg(0x42,0x00)。 LD_WriteReg(0x44,0x08)LD_WriteReg(0x46,0x08)。LD_WriteReg(0x1b,0x48)。Delay(1)。 } 寫入識(shí)別列表LD3320 最多支持 50 個(gè)識(shí)別條目,每個(gè)識(shí)別條目可以是單字、詞組或短句,長度為不超過 10 個(gè)漢字或者 79 個(gè)字節(jié)拼音串。每個(gè)識(shí)別條目是標(biāo)準(zhǔn)普聽話的漢語拼音(小寫),每兩個(gè)字(漢語拼音)之間用一個(gè)空格間隔,編號(hào)可以相同,可以不連續(xù),但數(shù)值要小于 256(00HFFH) [17]。在寫入識(shí)別列表時(shí),每一個(gè)待識(shí)別的語句需要一個(gè)編號(hào)。這個(gè)編號(hào)是識(shí)別出以后,通過串口返回單片唐 山 學(xué) 院 畢 業(yè) 設(shè) 計(jì)18機(jī)的值。值得注意的是,這個(gè)編號(hào)是要一字節(jié)的。同時(shí)列表中不同的待識(shí)別語句的編號(hào)可以相同。也可以不同??梢赃B續(xù),也可以不連續(xù)。如表 41 所示。 表41 編寫的語音識(shí)別列表把關(guān)鍵詞列表寫入到語音芯片的代碼如下:uint8 LD_AsrAddFixed( ) { uint8 k, flag。 uint8 nAsrAddLength。 const char sRecog[10][15] = {da kai deng, guan bi deng, da kai dian shi, guan bi dian shi, da kai kong tiao,guan bi kong tiao,”da kai re shui qi”,”guan bi re shui qi””quan bu da kai”quan bu guan bi}。const unit8 pcode[10]={code_dakaideng, code_guanbideng, code_dakaidianshi, code_guanbidianshi, code_dakaikongtiao, code_guanbikongtiao, code_dakaireshuiqi, code_guanbireshuiqi, code_quanbudakai, code_quanbuguanbi}。flag = 1。for (k=0。 k10。 k++) { if(LD_Check_AsrBusyFlag_b2() = = 0) { flag = 0。 break。 編號(hào) 字符串0x01 da kai deng0x02 guan bi deng0x03 da kai kong tiao 0x04 guan bi kong tiao 0x05 da kai dian shi0x06 guan bi dian shi0x07 da kai re shui qi0x08 guan bi re shui qi0x09 quan bu da kai0x0a quan bu guan bi唐 山 學(xué) 院 畢 業(yè) 設(shè) 計(jì)19} LD_WriteReg(0xc1, pCode[k] )。 LD_WriteReg(0xc3, 0 )。 LD_WriteReg(0x08, 0x04)。 Delay(1)。 LD_WriteReg(0x08, 0x00)。 Delay(1)。 for (nAsrAddLength=0。 nAsrAddLength20。 nAsrAddLength++) { if (sRecog[k][nAsrAddLength] == 0) break。 LD_WriteReg(0x5, sRecog[k][nAsrAddLength } LD_WriteReg(0xb9, nAsrAddLength)。 LD_WriteReg(0xb2, 0xff)。 LD_WriteReg(0x37, 0x04)。 } return flag。 } 開始識(shí)別完成各初始化,并且將關(guān)鍵詞列表寫入芯片以后,就可以等待語音命令的輸入。當(dāng)有信號(hào)輸入時(shí),語音芯片會(huì)調(diào)用識(shí)別程序。單片機(jī)程序中,一般會(huì)用一個(gè)全局變量控制當(dāng)前狀態(tài),在編程時(shí)把對(duì)該狀態(tài)的設(shè)置放在 LD3320 芯片開始識(shí)別以前 [18]。uint8 LD_AsrRun() { nAsrStatus=LD_ASR_RUNING。 LD_WriteReg(0x35,MIC_VOL)。 LD_WriteReg(0x1C,0x09)。 LD_WriteReg(0xBD,0x20)。 LD_WriteReg(0x08,0x01)。 delay( 1 )。 LD_WriteReg(0x08,0x00)。 delay( 1 )。唐 山 學(xué) 院 畢 業(yè) 設(shè) 計(jì)20}將識(shí)別到的結(jié)果存放到 C5 寄存器。如果麥克風(fēng)采集到聲音,不管是否是正常結(jié)果,都會(huì)產(chǎn)生一個(gè)中斷信號(hào),而中斷程序要根據(jù)寄存器的值分析結(jié)果。讀取 BA 寄存器的值,可以知道有幾個(gè)候選答案,而 C5 寄存器里的答案是得分最高、最可能正確的答案 [18]。麥克風(fēng)采集到語音信號(hào)以后,送入到 LD3320 的內(nèi)部。與寫入的關(guān)鍵詞列表進(jìn)行對(duì)比與匹配,會(huì)得到一個(gè)最優(yōu)結(jié)果。將該結(jié)果所對(duì)應(yīng)的序號(hào)傳遞給單片機(jī)。此時(shí)單片機(jī)會(huì)把該信號(hào)進(jìn)行調(diào)制然后通過紅外發(fā)光二極管發(fā)射出去。語音控制指令所對(duì)應(yīng)的返回值如下表 42 所示。表 42 語音控制指令對(duì)應(yīng)的串口返回值buff=USART_Receive()。 switch (buff){case 00:clrbit( PortA, PA0 )。 //對(duì) PA0 寫 0break。case 01:setbit( PortA, PA0 )。 //對(duì) PA0 寫 1break。case 02:clrbit( PortA, PA2 )。 //對(duì) PA2 寫 0break。 case 03: setbit( PortA,
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1