基于凌陽(yáng)61單片機(jī)的語(yǔ)音控制小車(chē)的設(shè)計(jì)_第1頁(yè)
基于凌陽(yáng)61單片機(jī)的語(yǔ)音控制小車(chē)的設(shè)計(jì)_第2頁(yè)
基于凌陽(yáng)61單片機(jī)的語(yǔ)音控制小車(chē)的設(shè)計(jì)_第3頁(yè)
基于凌陽(yáng)61單片機(jī)的語(yǔ)音控制小車(chē)的設(shè)計(jì)_第4頁(yè)
基于凌陽(yáng)61單片機(jī)的語(yǔ)音控制小車(chē)的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于凌陽(yáng)61單片機(jī)的語(yǔ)音控制小車(chē)的設(shè)計(jì) - 墻的日志 - 網(wǎng)易博客網(wǎng)易首頁(yè) 網(wǎng)易博客 博客首頁(yè)博客拍拍精美風(fēng)格博客圈子博客活動(dòng)娛樂(lè)中心博客話(huà)題找 朋 友博客復(fù)制 博客短信寫(xiě)博意見(jiàn)反應(yīng)更多>>搜 索 登錄 | 注冊(cè) !SAY LOVE YOU!是誰(shuí),在山長(zhǎng)水闊的年華里徘徊?是誰(shuí),做了黑夜中洞穿遙遠(yuǎn)的燈盞?是妳導(dǎo)航首頁(yè) 日志 相冊(cè) 音樂(lè) 收藏 博友 關(guān)于我 日志 墻 我喜歡我喜歡的,我想我想的,我做我該做的,我就是我!加博友 關(guān)注他 最新日志真的平靜了下來(lái)達(dá)賴(lài)、班禪的由來(lái)及其轉(zhuǎn)世 80后的我們?yōu)槭裁床唤Y(jié)婚!經(jīng)典愛(ài)情“愛(ài)這東西狙擊手推薦日志相關(guān)日志 戒指的戴法 我的她基于凌陽(yáng)61單片機(jī)的

2、語(yǔ)音控制小車(chē)的設(shè)計(jì)自己做的東西 2007-08-19 18:19:39 閱讀3133 評(píng)論18 字號(hào):大中小 1. 實(shí)習(xí)目的與意義1.1 實(shí)習(xí)任務(wù)設(shè)計(jì)并制作一個(gè)能自動(dòng)往返于起跑線(xiàn)與終點(diǎn)線(xiàn)間的智能小車(chē),并具備人工遙控的功能,其跑道俯視圖如圖1所示。跑道說(shuō)明:跑道寬度0.5m,外表貼有白紙,兩,外表貼有白紙,兩側(cè)有擋板,擋板與地面垂直。在跑道的B、C、D、E、F、G各點(diǎn)處畫(huà)有2cm寬的黑線(xiàn),各段的長(zhǎng)度如圖1所示。1.2 根本要求1、智能小車(chē)主控芯片任選一款單片機(jī):AT89S52或SPCE061A;2、人工遙控小車(chē)發(fā)車(chē)語(yǔ)音遙控或無(wú)線(xiàn)遙控任選;3、智能小車(chē)從起跑線(xiàn)出發(fā)出發(fā)前,車(chē)體不得超過(guò)起跑線(xiàn),到達(dá)終

3、點(diǎn)后停留10秒,然后自動(dòng)返回起跑線(xiàn)允許倒車(chē)返回,往返一次的時(shí)間應(yīng)力求最短從小車(chē)起跑開(kāi)始計(jì)時(shí);4、到達(dá)終點(diǎn)線(xiàn)和返回起跑線(xiàn),停車(chē)位置離終點(diǎn)線(xiàn)和起跑線(xiàn)偏差應(yīng)最小,且小車(chē)與跑道中心線(xiàn)的偏差也應(yīng)為最??;5、DE間為限速區(qū),車(chē)輛往返均要求以低速通過(guò),通過(guò)時(shí)間不得少于8秒,但不允許在限速區(qū)內(nèi)停車(chē);6、如采用語(yǔ)音遙控,那么小車(chē)回到起跑線(xiàn)后需語(yǔ)音播報(bào)“旅行結(jié)束。13 實(shí)習(xí)意義通過(guò)智能小車(chē)的設(shè)計(jì)及制作,穩(wěn)固并掌握IDE2.0的編程方法,學(xué)會(huì)利用單片機(jī)進(jìn)行程序設(shè)計(jì)并實(shí)現(xiàn)功能。通過(guò)在小車(chē)的設(shè)計(jì)與制作,將所學(xué)的知識(shí)表達(dá)出來(lái),并應(yīng)用于實(shí)際生活中,在設(shè)計(jì)過(guò)程中對(duì)小車(chē)功能的創(chuàng)新和改進(jìn),增強(qiáng)學(xué)生的創(chuàng)新意識(shí)和邏輯思維能力,提高學(xué)

4、生的動(dòng)手能力和研究主動(dòng)性。2. 實(shí)驗(yàn)內(nèi)容和步驟2.1車(chē)體設(shè)計(jì)2.1.1 61板簡(jiǎn)介61板是SPCE061A EMU BOARD的簡(jiǎn)稱(chēng),是以凌陽(yáng)16位單片機(jī)SPCE061A為核心的精簡(jiǎn)開(kāi)發(fā)仿真實(shí)驗(yàn)板,大小相當(dāng)于一張撲克牌,是“凌陽(yáng)大學(xué)方案專(zhuān)為電子愛(ài)好者和高校大學(xué)生進(jìn)行課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)及電子競(jìng)賽所設(shè)計(jì)的,也可作為單片機(jī)工程初期研發(fā)使用。61板除了具備單片機(jī)最小系統(tǒng)電路外,還包括電源電路、音頻電路含MIC輸入局部和DAC音頻輸出局部、復(fù)位電路等,使學(xué)生在掌握軟件設(shè)計(jì)的同時(shí),熟悉單片機(jī)硬件的設(shè)計(jì)制作,鍛煉動(dòng)手能力,也為單片機(jī)學(xué)習(xí)者和開(kāi)發(fā)者創(chuàng)造了一個(gè)良好的學(xué)習(xí)條件和開(kāi)發(fā)新產(chǎn)品的時(shí)機(jī)!2.1.2 SPC

5、E061A單片機(jī)簡(jiǎn)介SPCE061A是一款16位結(jié)構(gòu)的微控制器,下列圖是它的結(jié)構(gòu)概覽:SPCE061A主要包括輸入/輸出端口、定時(shí)器/計(jì)數(shù)器、數(shù)/模轉(zhuǎn)換、模/數(shù)轉(zhuǎn)換、串行設(shè)備輸入輸出、通用異步串行接口、低電壓監(jiān)測(cè)和復(fù)位等局部,并且內(nèi)置在線(xiàn)仿真電路ICE接口,較高的處理速度使其能夠快速的處理復(fù)雜的數(shù)字信號(hào)。SPCE061A單片機(jī)應(yīng)用領(lǐng)域廣泛,例如應(yīng)用在家用電器控制器、工業(yè)控制、通信產(chǎn)品、醫(yī)療設(shè)備以及電子書(shū)籍等諸多方面。2.1.3 電源61板采用3節(jié)5號(hào)電池進(jìn)行供電,由J10接入。其中的前后兩組電容用來(lái)去耦濾波,使其供應(yīng)芯片的電源更加干凈平滑。為了獲得標(biāo)準(zhǔn)的3.3V電壓,在扳子上參加SPY0029

6、A三端穩(wěn)壓器。兩個(gè)二極管,是為了防止誤將電源接反造成不必要損失而設(shè)置的,在操作過(guò)程中千萬(wàn)不要將電源接反,因?yàn)榉聪螂妷撼^(guò)一定的值,二極管將會(huì)被損壞,達(dá)不到保護(hù)的目的。后面的零電阻及其電源、地分成不同的幾路是為了減少電磁干擾設(shè)置的。2.1.4程序下載區(qū)ICE根本運(yùn)作方式是通過(guò)控制CLOCK及通過(guò)ICE喂入指令方式,來(lái)控制CPU的運(yùn)行及緩存器資料和內(nèi)存資料的存取,因此必須透過(guò)控制緩存器值的設(shè)定來(lái)控制目前CPU的動(dòng)作。每個(gè)相連接的不同ICE模塊都擁有自己獨(dú)特的3bitID,當(dāng)PC在傳送control信號(hào)時(shí)都會(huì)先傳送該3bitID,只有ICE本身的ID和control信號(hào)的ID相同時(shí)才會(huì)執(zhí)行該命令或回

7、傳資料。61板上的74HC244主要在我們選用下載線(xiàn)的時(shí)候起作用,主要奇緩存的作用和完成SDA是作為數(shù)據(jù)回送還是數(shù)據(jù)下傳的選擇。2.1.5傳感器模塊用光敏電阻組成光敏探測(cè)器。光敏電阻的阻值可以跟隨周?chē)h(huán)境光線(xiàn)的變化而變化。當(dāng)光線(xiàn)照射到白線(xiàn)上面時(shí),光線(xiàn)發(fā)射強(qiáng)烈,光線(xiàn)照射到黑線(xiàn)上面時(shí),光線(xiàn)發(fā)射較弱。因此光敏電阻在白線(xiàn)和黑線(xiàn)上方時(shí),阻值會(huì)發(fā)生明顯的變化。將阻值的變化值經(jīng)過(guò)比擬器就可以輸出上下電平。22 語(yǔ)音控制小車(chē)概述2.2.1功能要求語(yǔ)音控制小車(chē)是凌陽(yáng)大學(xué)方案推出的基于SPCE061A的代表性興趣產(chǎn)品,它配合61板推出,綜合應(yīng)用了SPCE061A的眾多資源,打破了傳統(tǒng)教學(xué)中單片機(jī)學(xué)習(xí)枯燥和低效的現(xiàn)

8、狀。小車(chē)采用語(yǔ)音識(shí)別技術(shù),可通過(guò)語(yǔ)音命令對(duì)其行駛狀態(tài)進(jìn)行控制。語(yǔ)音控制小車(chē)的主要功能:可以通過(guò)簡(jiǎn)單的I/O操作實(shí)現(xiàn)小車(chē)的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)功能;配合SPCE061A的語(yǔ)音特色,利用系統(tǒng)的語(yǔ)音播放和語(yǔ)音識(shí)別資源,實(shí)現(xiàn)語(yǔ)音控制的功能;可以在行走過(guò)程中聲控改變小車(chē)的運(yùn)動(dòng)狀態(tài);2.2.2車(chē)體結(jié)構(gòu)車(chē)體結(jié)構(gòu)圖圖3、4所示。語(yǔ)音控制小車(chē)為四輪結(jié)構(gòu),車(chē)的結(jié)構(gòu)示意圖如下列圖所示。其中前面兩個(gè)車(chē)輪由前輪電機(jī)控制,在連桿和支點(diǎn)作用下控制前輪左右擺動(dòng),來(lái)調(diào)節(jié)小車(chē)的前進(jìn)方向。在自然狀態(tài)下,前輪在彈簧作用下保持中間位置。后面兩個(gè)車(chē)輪又后輪電機(jī)驅(qū)動(dòng),為整個(gè)小車(chē)提供動(dòng)力,所以又稱(chēng)前面的輪子為方向鄭竺嫻牧礁雎腫游?/FON

9、T>整個(gè)小車(chē)分為三大局部:車(chē)體局部、61板、控制板。車(chē)體局部:小車(chē)車(chē)體主要為兩個(gè)電機(jī)驅(qū)動(dòng)裝置,分前輪方向驅(qū)動(dòng)和后輪動(dòng)力驅(qū)動(dòng)。在車(chē)體的下面有一個(gè)可以安裝3節(jié)AA電池的電池盒,整個(gè)小車(chē)的電源就是由它來(lái)提供的。在小車(chē)的底部有一個(gè)紅色的小開(kāi)關(guān),它負(fù)責(zé)控制整個(gè)小車(chē)的電源開(kāi)通與關(guān)斷。61板:61板是小車(chē)的核心局部,它負(fù)責(zé)整個(gè)小車(chē)控制信號(hào)的產(chǎn)生,以及語(yǔ)音的播放和識(shí)別功能實(shí)現(xiàn)的。在不使用小車(chē)時(shí)可以將61板從小車(chē)上拆下來(lái),61板仍然是完整的,可以用它來(lái)做其它的實(shí)驗(yàn)或開(kāi)發(fā)。控制板:控制板負(fù)責(zé)將來(lái)自61板的控制信號(hào)轉(zhuǎn)化為能夠驅(qū)動(dòng)電動(dòng)機(jī)的信號(hào)。2.2.4 硬件框圖小車(chē)控制系統(tǒng)硬件結(jié)構(gòu)比擬簡(jiǎn)單,主要分為兩個(gè)局部:

10、一個(gè)是SPCE061A精簡(jiǎn)開(kāi)發(fā)板即“61板如圖5所示,另外一個(gè)是電機(jī)控制板如圖6所示。電機(jī)控制板的工作就是根據(jù)61板的輸出新高去啟動(dòng)和停止相應(yīng)的電機(jī),以及調(diào)整電機(jī)的正反轉(zhuǎn)方向。正是通過(guò)開(kāi)啟和關(guān)閉相應(yīng)的電機(jī),使電機(jī)在不同的組合狀態(tài)運(yùn)轉(zhuǎn),最終來(lái)實(shí)現(xiàn)小車(chē)的前進(jìn),倒退等功能。2.3小車(chē)方案及程序分析2.3.1小車(chē)方案可以通過(guò)簡(jiǎn)單的I/O操作實(shí)現(xiàn)小車(chē)的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)功能;配合SPCE061A的語(yǔ)音特色,利用系統(tǒng)的語(yǔ)音播放和語(yǔ)音識(shí)別資源,實(shí)現(xiàn)語(yǔ)音控制的功能;可以在行走過(guò)程中聲控改變小車(chē)的運(yùn)動(dòng)狀態(tài);實(shí)現(xiàn)能自動(dòng)往返于起跑線(xiàn)與終點(diǎn)線(xiàn)間的智能流程,并具備人工遙控我們選用語(yǔ)音控制的功能。2.3.2程序流程圖

11、1、語(yǔ)音識(shí)別總流程圖語(yǔ)音識(shí)別小車(chē)的主程序流程如圖7所示,分為四大局部:初始化局部、訓(xùn)練局部、識(shí)別局部、重訓(xùn)操作。初始化局部:初始化操作將IOB8IOB11設(shè)置為輸出端,用以控制電機(jī)。必要時(shí)還要有對(duì)應(yīng)的輸入端設(shè)置和PWM端口設(shè)置等。訓(xùn)練局部:訓(xùn)練局部完成的工作就是建立語(yǔ)音模型。程序一開(kāi)始判斷小車(chē)是否被訓(xùn)練過(guò),如果沒(méi)有訓(xùn)練過(guò)那么要求對(duì)其進(jìn)行訓(xùn)練,并且會(huì)在訓(xùn)練成功之后將訓(xùn)練的模型存儲(chǔ)到FLASH,在以后使用時(shí)不需要重新訓(xùn)練;如果已經(jīng)訓(xùn)練過(guò)會(huì)把存儲(chǔ)在FLASH中的模型調(diào)出來(lái)裝載到辨識(shí)器中。識(shí)別局部:在識(shí)別環(huán)節(jié)當(dāng)中,如果辨識(shí)結(jié)果是名字,那么進(jìn)入自動(dòng)往返流程狀態(tài)。如果辨識(shí)結(jié)果為動(dòng)作指令小車(chē)會(huì)語(yǔ)音告知相應(yīng)動(dòng)

12、作并執(zhí)行該動(dòng)作。重訓(xùn)操作:考慮到有重新訓(xùn)練的需求,設(shè)置了重新訓(xùn)練的按鍵61板的KEY3,循環(huán)掃描該按鍵,一旦檢測(cè)到此鍵按下,那么將擦除訓(xùn)練標(biāo)志位0xe000單元,并等待復(fù)位。復(fù)位后,程序重新執(zhí)行,當(dāng)檢測(cè)到訓(xùn)練標(biāo)志位為0xffff時(shí)會(huì)要求重新對(duì)其進(jìn)行訓(xùn)練。下面詳細(xì)介紹以上提到的子程序。2、訓(xùn)練函數(shù)流程圖當(dāng)程序檢測(cè)到訓(xùn)練標(biāo)志位BS_Flag內(nèi)容為0xffff,就會(huì)要求操作者對(duì)它進(jìn)行訓(xùn)練操作,訓(xùn)練操作的過(guò)程如圖8所示:訓(xùn)練采用兩次訓(xùn)練獲取結(jié)果的方式,以訓(xùn)練名字為例:小車(chē)首先會(huì)提示:給我取個(gè)名字吧,這時(shí)你可以告訴它一個(gè)名字;然后它會(huì)提示:請(qǐng)?jiān)僬f(shuō)一遍,這時(shí)再次告訴它名字,如果兩次的聲音差異不大,小車(chē)就能

13、夠成功的建立模型,名稱(chēng)訓(xùn)練成功;如果沒(méi)能夠成功的建立模型,小車(chē)會(huì)告知失敗的原因并要求重新訓(xùn)練。成功訓(xùn)練名稱(chēng)后會(huì)給出下一條待訓(xùn)練指令提示音:前進(jìn),參照名稱(chēng)訓(xùn)練方式訓(xùn)練前進(jìn)指令。依次訓(xùn)練小車(chē)的名稱(chēng)前進(jìn)指令倒車(chē)指令左轉(zhuǎn)指令右轉(zhuǎn)指令,全部訓(xùn)練成功子程序返回,訓(xùn)練結(jié)束。 3、語(yǔ)音識(shí)別函數(shù)流程圖語(yǔ)音識(shí)別流程如圖9所示:首先獲取辨識(shí)器的辨識(shí)結(jié)果,判斷是否有語(yǔ)音觸發(fā),如果有語(yǔ)音觸發(fā)那么會(huì)返回識(shí)別結(jié)果的ID號(hào),ID號(hào)對(duì)應(yīng)名稱(chēng)或者對(duì)應(yīng)不同的動(dòng)作。如果ID號(hào)為名稱(chēng),那么進(jìn)入運(yùn)動(dòng)自動(dòng)往返程序流程;如果ID號(hào)為動(dòng)作,那么語(yǔ)音告知將要執(zhí)行的動(dòng)作,并執(zhí)行該動(dòng)作。 動(dòng)作子程序: 動(dòng)作子程序包括:前進(jìn)、倒車(chē)、左拐、右拐、自動(dòng)往

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

15、。 右轉(zhuǎn):由小車(chē)的結(jié)構(gòu)原理分析和驅(qū)動(dòng)電路分析知:小車(chē)右轉(zhuǎn)需要兩個(gè)條件:1.前輪右偏2.后輪前進(jìn),這時(shí)對(duì)應(yīng)的I/O狀態(tài)為:IOB8、IOB11為高電平,IOB9、IOB10為低電平。右轉(zhuǎn)子程序包括語(yǔ)音提示、置端口數(shù)據(jù)、啟動(dòng)定時(shí)器操作。4、自動(dòng)往返如圖10所示:由語(yǔ)音識(shí)別子函數(shù)的名字命令來(lái)觸發(fā)的自動(dòng)往返魚(yú)如圖1所示的跑道的上的子程序。該程序流程實(shí)現(xiàn)小車(chē)對(duì)各黑線(xiàn)的識(shí)別并在識(shí)別后執(zhí)行相應(yīng)的動(dòng)作,識(shí)別黑線(xiàn)流程實(shí)質(zhì)上是在檢測(cè)到黑線(xiàn)并又黑線(xiàn)到白線(xiàn)的上升原為下降,為實(shí)現(xiàn)檢測(cè)信號(hào)的靈敏度加反向器后為上升沿沿脈沖觸發(fā)下依次開(kāi)外部中斷 Ext2 IRQ3 13次的過(guò)程。在從起點(diǎn)到終點(diǎn)過(guò)程中當(dāng)檢測(cè)到D線(xiàn)以及在從終點(diǎn)返

16、回起點(diǎn)檢測(cè)到E線(xiàn)時(shí)小車(chē)步進(jìn)減速并開(kāi)啟IRQ6-4HZ中斷定時(shí)8 s后自動(dòng)加速前進(jìn)繼續(xù)檢測(cè)后續(xù)黑線(xiàn)并執(zhí)行相應(yīng)動(dòng)作流程。同時(shí)為實(shí)現(xiàn)在終點(diǎn)線(xiàn)H過(guò)后停留10 s的要求,需要在檢測(cè)到H線(xiàn)后開(kāi)啟IRQ5-4HZ中斷實(shí)現(xiàn)定時(shí)10;A、B、C、D、E、F、G線(xiàn)時(shí)開(kāi)外不中斷2,分別在去城和回程 檢測(cè)到D、E線(xiàn)時(shí)開(kāi)IRQ6-2HZ,在第一次檢測(cè)到G線(xiàn)時(shí)小車(chē)停10S。5、中斷控制流程。雖然已經(jīng)有了前進(jìn)、后退以通過(guò)直接呼叫小車(chē)的名字使其停車(chē)等語(yǔ)音控制指令,但是考慮環(huán)境的干擾因素,小車(chē)運(yùn)行時(shí)的噪音影響和有效距離的限制,小車(chē)運(yùn)行后可能接收不到語(yǔ)音指令而一直運(yùn)行。為了防止出現(xiàn)這種情況,參加了時(shí)間控制,在啟動(dòng)小車(chē)運(yùn)行的同時(shí)啟

17、動(dòng)定時(shí)器,定時(shí)器時(shí)間到停止小車(chē)的運(yùn)行,該定時(shí)器借助于2Hz時(shí)基中斷完成,圖12.14所示為該程序的流程圖??梢栽诔绦蛑行薷膗iTimeset參數(shù)來(lái)控制運(yùn)行時(shí)間,當(dāng)uiTimeset=2時(shí),運(yùn)行時(shí)間為1s,以此類(lèi)推。 3.1硬件連接調(diào)試過(guò)程硬件調(diào)試過(guò)程相對(duì)順利,實(shí)驗(yàn)第一步就是按照實(shí)驗(yàn)說(shuō)明書(shū)對(duì)61板的元件進(jìn)行焊接以及小車(chē)車(chē)體的連接安裝;在對(duì)實(shí)習(xí)要求理解的根底上確立了實(shí)現(xiàn)方案后,硬件的連接有了明確的要求:為了實(shí)現(xiàn)對(duì)黑線(xiàn)的檢測(cè)需要連接黑白傳感器,由于黑白線(xiàn)的識(shí)別是基于外部黑白傳感信號(hào)的輸入進(jìn)而開(kāi)外不中斷實(shí)現(xiàn)的在本次方案中采用外部中斷2 IPQ3,所以將IOB3口外接黑白傳感器,以實(shí)現(xiàn)對(duì)黑白信號(hào)的檢測(cè)。

18、由于光線(xiàn)的關(guān)系,在實(shí)際調(diào)程序時(shí)傳感器的靈敏度不是很高,多數(shù)情況下很難檢測(cè)到信號(hào)?;谏鲜霈F(xiàn)象,我們給傳感器附加白光燈,用以解決光線(xiàn)不穩(wěn)定給程序調(diào)試帶來(lái)的影響。經(jīng)過(guò)上面步驟的硬件改進(jìn)后,雖然黑白線(xiàn)的識(shí)別以明顯改善,在光線(xiàn)條件良好的情況下黑白線(xiàn)識(shí)別信號(hào)檢測(cè)根本正常,但在相對(duì)較暗情況下,傳感器并不靈敏。為了改進(jìn)這個(gè)缺陷,通過(guò)對(duì)傳感器的輸出信號(hào)的檢測(cè)發(fā)現(xiàn),在有白線(xiàn)到黑線(xiàn)時(shí)信號(hào)更為靈敏,于是就有有了在黑白傳感器輸出口加反向器的設(shè)計(jì)。由于車(chē)體焊接存在的問(wèn)題,在程序調(diào)試過(guò)程中出現(xiàn)了一系列的硬件問(wèn)題,但經(jīng)過(guò)仔細(xì)分析后,這些問(wèn)題都得到了解決,硬件的調(diào)試改進(jìn)為軟件的實(shí)現(xiàn)調(diào)試打下了根底。3.2程序調(diào)試過(guò)程分析本次設(shè)

19、計(jì)任務(wù)對(duì)軟件編寫(xiě)調(diào)試的能力要求相對(duì)較高,程序調(diào)節(jié)是否順利決定了實(shí)習(xí)進(jìn)度。 由于初次接觸61的編程,所以在實(shí)習(xí)初期我們主要是學(xué)習(xí)和認(rèn)知61的板以及61編程的根本知識(shí),這是個(gè)學(xué)習(xí)深入的過(guò)程。在對(duì)編程根底知識(shí)了解后,基于對(duì)題目要求的理解和思考,我們確定實(shí)現(xiàn)方案??梢酝ㄟ^(guò)簡(jiǎn)單的I/O操作實(shí)現(xiàn)小車(chē)的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)功能;配合SPCE061A的語(yǔ)音特色,利用系統(tǒng)的語(yǔ)音播放和語(yǔ)音識(shí)別資源,實(shí)現(xiàn)語(yǔ)音控制的功能;可以在行走過(guò)程中聲控改變小車(chē)的運(yùn)動(dòng)狀態(tài);實(shí)現(xiàn)能自動(dòng)往返于起跑線(xiàn)與終點(diǎn)線(xiàn)間的智能流程,并具備人工遙控我們選用語(yǔ)音控制的功能。這個(gè)方案確實(shí)定是在查閱了,61資料“語(yǔ)音控制小車(chē)的實(shí)現(xiàn)程序后得到的思路?;?/p>

20、于對(duì)現(xiàn)有程序框架的理解,我們參加了自動(dòng)往返程序流程。當(dāng)然,程序的調(diào)試是不可能一兩次就能成功的。這其中遇到的問(wèn)題有很多,其中就有硬件的問(wèn)題以及對(duì)61編程的知識(shí)的理解的不夠而出現(xiàn)的調(diào)試?yán)щy。3.3總體結(jié)果分析本設(shè)計(jì)綜合應(yīng)用了SPCE061A豐富的軟硬件資源,成功的實(shí)現(xiàn)了語(yǔ)音控制功能。標(biāo)準(zhǔn)的C語(yǔ)言編程,豐富的語(yǔ)音資源函數(shù)為編程提供了很大的方便。 該設(shè)計(jì)方案結(jié)構(gòu)簡(jiǎn)單,以單芯片實(shí)現(xiàn)了語(yǔ)音播放與識(shí)別以及電機(jī)控制功能,相當(dāng)于“語(yǔ)音識(shí)別芯片+普通單片機(jī)的功能。但是比“語(yǔ)音識(shí)別芯片+普通單片機(jī)。 該語(yǔ)音控制小車(chē)操作比擬簡(jiǎn)單,訓(xùn)練和識(shí)別成功的幾率也比擬高,是一個(gè)典型的語(yǔ)音識(shí)別方案。由于時(shí)間和精力有限,我們實(shí)現(xiàn)了實(shí)

21、習(xí)要求的根本內(nèi)容和發(fā)揮局部的大局部?jī)?nèi)容,但未能實(shí)現(xiàn)自動(dòng)語(yǔ)音播報(bào)行駛距離的設(shè)計(jì)要求,這主要是我們對(duì)硬件的設(shè)計(jì)還不夠熟練和精通,以及對(duì)61編程也未到達(dá)純熟的地步。對(duì)以實(shí)現(xiàn)的功能要求來(lái)說(shuō),我們的設(shè)計(jì)相對(duì)理想,為了實(shí)現(xiàn)小車(chē)從起跑線(xiàn)出發(fā),到達(dá)終點(diǎn)后停留10秒后,然后自動(dòng)返回起跑線(xiàn)容許倒車(chē)返回,DE減速區(qū)車(chē)輛減速通過(guò)不得少于8s但又不容許停車(chē),往返一次的時(shí)間力求最短的要求。我們?cè)跈z測(cè)黑線(xiàn)程序流程中的相應(yīng)操作中引用了三次定時(shí)中斷,分別為從DE的減速區(qū)用到IRQ6-2HZ中斷定時(shí)8s;到終點(diǎn)線(xiàn)后的停車(chē)10s定時(shí)引用IRQ5-4HZ中斷;以及從ED的倒車(chē)減速區(qū)用到了IRQ6-2HZ中斷。這幾個(gè)定時(shí)中斷確保了往返

22、時(shí)間的精確和緊湊性。但有一點(diǎn)不理想的是:在減速區(qū)小車(chē)步進(jìn)過(guò)程過(guò)慢,造成在限速區(qū)車(chē)體如遇到些許障礙時(shí)甚至發(fā)生停車(chē)現(xiàn)象,還好我們?cè)谠O(shè)計(jì)中參加了8s的定時(shí)操做,防止了車(chē)體在DE區(qū)間由于過(guò)慢的步進(jìn)而長(zhǎng)時(shí)間停留。源代碼:/=/ 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 prior written permissi

23、on./ (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO./ ALL RIGHTS RESERVED/ The entire notice above must be reproduced on all authorized copies./=/=/ 工程名稱(chēng): Car_Demo/ 功能描述: 實(shí)現(xiàn)小車(chē)的語(yǔ)音控制/ 涉及的庫(kù): CMacro1016.lib/ bsrv222SDL.lib/ sacmv26e.lib/ 組成文件: main.c/ Flash.asm, hardware.asm,ISR.asm / hardware.h,s480.h, hard

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

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

26、 (volatile unsigned int *)0x700C #define P_TimerB_Ctrl (volatile unsigned int *)0x700D #define P_Watchdog_Clear (volatile unsigned int *)0x7012 #define P_INT_Mask (volatile unsigned int *)0x702D #define P_INT_Clear (volatile unsigned int *)0x7011 #define P_INT_Ctrl (volatile unsigned int *)0x7010 #d

27、efine P_SystemClock (volatile unsigned int *)0x7013 #define NAME_ID 0x100#define COMMAND_GO_ID 0x101#define COMMAND_BACK_ID 0x102#define COMMAND_LEFT_ID 0x103#define COMMAND_RIGHT_ID 0x104#define S_NAME 0 /給我取個(gè)名字吧#define S_ACT1 1 /前進(jìn)#define S_ACT2 2 /倒車(chē),請(qǐng)注意#define S_ACT3 3 /左拐#define S_ACT4 4 /右拐 #d

28、efine S_RDY 5 /Yeah#define S_AGAIN 6 /請(qǐng)?jiān)僬f(shuō)一遍#define S_NOVOICE 7 /沒(méi)有聽(tīng)到任何聲音#define S_CMDDIFF 8 /說(shuō)什么暗語(yǔ)呀#define S_NOISY 8 /說(shuō)什么暗語(yǔ)呀#define S_START 9 /準(zhǔn)備就緒,開(kāi)始辨識(shí) #define S_GJG 10 /拐就拐#define S_DCZY 11 /倒車(chē),請(qǐng)注意extern unsigned int BSR_SDModel100; /外部變量BSR_SDModel100,辨識(shí)器自帶extern void F_FlashWrite1Word(unsigned i

29、nt addr,unsigned int Value);extern void F_FlashErase(unsigned int sector);unsigned int uiTimeset = 3; /運(yùn)行時(shí)間定時(shí),調(diào)整該參數(shù)控制運(yùn)行時(shí)間unsigned int uiTimecont; /運(yùn)行時(shí)間計(jì)時(shí)unsigned int time_10s,time,tem,h,temp,m,c,y,t;/=/ 語(yǔ)法格式: void Delay();/ 實(shí)現(xiàn)功能: 延時(shí)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=void Delay() unsigned int i;for(i=0;i*P_Watchdog_Cl

30、ear=0x0001;/=/ 語(yǔ)法格式: void PlaySnd(unsigned SndIndex,unsigned DAC_Channel);/ 實(shí)現(xiàn)功能: 語(yǔ)音播放函數(shù)/ 參數(shù): SndIndex-播放語(yǔ)音資源索引號(hào)/ DAC_Channel-播放聲道選擇/ 返回值: 無(wú)/=void PlaySnd(unsigned SndIndex,unsigned DAC_Channel)BSR_StopRecognizer(); /停止識(shí)別器SACM_S480_Initial(1); /初始化為自動(dòng)播放SACM_S480_Play(SndIndex, DAC_Channel, 3); /開(kāi)始播放

31、一段語(yǔ)音while(SACM_S480_Status()&0x0001)!= 0) /是否播放完畢?SACM_S480_ServiceLoop(); /解碼并填充隊(duì)列*P_Watchdog_Clear=0x0001; /清看門(mén)狗SACM_S480_Stop(); /停止播放BSR_InitRecognizer(BSR_MIC); /初始化識(shí)別器/=/ 語(yǔ)法格式: int TrainWord(int WordID,int SndID);/ 實(shí)現(xiàn)功能: 訓(xùn)練一條指令/ 參數(shù): WordID-指令編碼/ SndID-指令提示音索引號(hào)/ 返回值: 無(wú)/=int TrainWord(unsign

32、ed int WordID,unsigned int SndID)int Result;PlaySnd(SndID,3); /引導(dǎo)訓(xùn)練,播放指令對(duì)應(yīng)動(dòng)作while(1)Result = BSR_Train(WordID,BSR_TRAIN_TWICE); /訓(xùn)練兩次,獲得訓(xùn)練結(jié)果if(Result=0)break;switch(Result)case -1: /沒(méi)有檢測(cè)出聲音PlaySnd(S_NOVOICE,3);return -1;case -2: /需要訓(xùn)練第二次PlaySnd(S_AGAIN,3);break;case -3: /環(huán)境太吵PlaySnd(S_NOISY,3);retur

33、n -3; case -4: /數(shù)據(jù)庫(kù)滿(mǎn)return -4; case -5: /檢測(cè)出聲音不同PlaySnd(S_CMDDIFF,3);return -5;case -6: /序號(hào)錯(cuò)誤return -6;default:break;return 0;/=/ 語(yǔ)法格式: void TrainSD();/ 實(shí)現(xiàn)功能: 訓(xùn)練函數(shù)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=void TrainSD()while(TrainWord(NAME_ID,S_NAME) != 0) ; /訓(xùn)練名稱(chēng)while(TrainWord(COMMAND_GO_ID,S_ACT1) != 0) ; /訓(xùn)練第1個(gè)動(dòng)作while(T

34、rainWord(COMMAND_BACK_ID,S_ACT2) != 0) ; /訓(xùn)練第2個(gè)動(dòng)作while(TrainWord(COMMAND_LEFT_ID,S_ACT3) != 0) ; /訓(xùn)練第3個(gè)動(dòng)作while(TrainWord(COMMAND_RIGHT_ID,S_ACT4) != 0) ; /訓(xùn)練第4個(gè)動(dòng)作/=/ 語(yǔ)法格式: void StoreSD();/ 實(shí)現(xiàn)功能: 存儲(chǔ)語(yǔ)音模型函數(shù)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=void StoreSD() unsigned int ulAddr,i,commandID,g_Ret;F_FlashWrite1Word(0xef00,0x

35、aaaa);F_FlashErase(0xe000);F_FlashErase(0xe100);F_FlashErase(0xe200);ulAddr=0xe000;/*for(commandID=0x100;commandIDg_Ret=BSR_ExportSDWord(commandID); while(g_Ret!=0) /模型導(dǎo)出成功?g_Ret=BSR_ExportSDWord(commandID); for(i=0;iF_FlashWrite1Word(ulAddr,BSR_SDModeli);ulAddr+=1; /=/ 語(yǔ)法格式: void StoreSD();/ 實(shí)現(xiàn)功能:

36、裝載語(yǔ)音模型函數(shù)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=void LoadSD() unsigned int *p,k,jk,Ret,g_Ret;p=(int *)0xe000; for(jk=0;jkfor(k=0;kRet=*p; BSR_SDModelk=Ret; /裝載語(yǔ)音模型 p+=1; g_Ret=BSR_ImportSDWord(); while(g_Ret!=0) /模型裝載成功?g_Ret=BSR_ImportSDWord(); /=/ 語(yǔ)法格式: void GoAhead();/ 實(shí)現(xiàn)功能: 前進(jìn)子函數(shù)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=void GoAhead() /前進(jìn) Pla

37、ySnd(S_ACT1,3); /提示*P_IOB_Data=0x0100; /前進(jìn)*P_INT_Mask |= 0x0004; /以下為中斷定時(shí)操作_asm("int fiq,irq");uiTimecont = 0;/=/ 語(yǔ)法格式: void BackUp();/ 實(shí)現(xiàn)功能: 后退子函數(shù)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=void BackUp() /倒退 PlaySnd(S_DCZY,3); /提示*P_IOB_Data=0x0200; /倒退*P_INT_Mask |= 0x0004; /以下為中斷定時(shí)操作_asm("int fiq,irq");

38、uiTimecont = 0;/=/ 語(yǔ)法格式: void TurnLeft();/ 實(shí)現(xiàn)功能: 左轉(zhuǎn)子函數(shù)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=void TurnLeft() /左轉(zhuǎn)PlaySnd(S_GJG,3); *P_IOB_Data=0x0900; /右轉(zhuǎn)Delay(); /延時(shí)*P_IOB_Data=0x0500; /左轉(zhuǎn)*P_INT_Mask |= 0x0004; /以下為中斷定時(shí)操作_asm("int fiq,irq");uiTimecont = 0;/=/ 語(yǔ)法格式: void TurnRight();/ 實(shí)現(xiàn)功能: 右轉(zhuǎn)子函數(shù)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/

39、=void TurnRight() /右轉(zhuǎn)PlaySnd(S_GJG,3); /語(yǔ)音提示*P_IOB_Data=0x0500; /左轉(zhuǎn)Delay(); /延時(shí)*P_IOB_Data=0x0900; /右轉(zhuǎn)*P_INT_Mask |= 0x0004; /以下為中斷定時(shí)操作_asm("int fiq,irq");uiTimecont = 0;/=/ 語(yǔ)法格式: void Stop();/ 實(shí)現(xiàn)功能: 停車(chē)子函數(shù)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=void Stop() /停車(chē)*P_IOB_Data=0x0000; /停車(chē)PlaySnd(S_RDY,3); /語(yǔ)音提示/=/ 語(yǔ)法格

40、式: void BSR(void);/ 實(shí)現(xiàn)功能: 辨識(shí)子函數(shù)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=void BSR(void) int Result; /辨識(shí)結(jié)果存放Result = BSR_GetResult(); /獲得識(shí)別結(jié)果if(Result>0) /有語(yǔ)音觸發(fā)? *P_IOB_Data=0x0000; /臨時(shí)停車(chē)switch(Result)case NAME_ID:c=1;BSR_StopRecognizer();*P_SystemClock=0x0003; *P_INT_Mask=0x0200; /識(shí)別知名稱(chēng)命令break;case COMMAND_GO_ID: /識(shí)別出第一條

41、命令GoAhead(); /執(zhí)行動(dòng)作一:直走break;case COMMAND_BACK_ID: /識(shí)別出第二條命令BackUp(); /執(zhí)行動(dòng)作二:倒車(chē)break;case COMMAND_LEFT_ID: /識(shí)別出第三條命令TurnLeft(); /執(zhí)行動(dòng)作三:左轉(zhuǎn) break;case COMMAND_RIGHT_ID: /識(shí)別出第四條命令TurnRight(); /執(zhí)行動(dòng)作四:右轉(zhuǎn) break;default:break;/=/ 語(yǔ)法格式: void IRQ5(void);/ 實(shí)現(xiàn)功能: 中斷效勞子函數(shù)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=void Delay0() unsigned i

42、nt i;for(i=0;i*P_Watchdog_Clear=0x0001;void Delay11(unsigned int m) unsigned int i;for(i=0;i*P_Watchdog_Clear=0x0001;void Delay_h() unsigned int i;for(i=0;i*P_Watchdog_Clear=0x0001;void Delay1() unsigned int i;for(i=0;i*P_Watchdog_Clear=0x0001;void Delay2() unsigned int i;for(i=0;i*P_Watchdog_Clear=

43、0x0001;void Delay3() unsigned int i;for(i=0;i*P_Watchdog_Clear=0x0001;void IRQ3(void) _attribute_ (ISR);void IRQ3(void)if(*P_INT_Ctrl&0x0200) while(!(*P_IOB_Data&0x0008)Delay_h();if(*P_IOB_Data)&0x0008)h+;*P_INT_Clear =0x0200; else if(*P_INT_Ctrl&0x0100)m=m+1;*P_INT_Clear=0x0100;void

44、 IRQ5(void) _attribute_ (ISR);void IRQ5(void) if (c=0)if(uiTimecont+ = uiTimeset)*P_IOB_Data = 0x0000;*P_INT_Clear = 0x0004;else if(c=1) if(*P_INT_Ctrl&0x0004) time+; *P_INT_Clear =0x0004; if(*P_INT_Ctrl&0x0008) *P_INT_Clear =0x0008;time_10s+;if(time_10s=40)h=h+1;*P_INT_Mask=0x0000; /=/ 語(yǔ)法格式

45、: void play();/ 實(shí)現(xiàn)功能: 全程計(jì)時(shí)播放/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=void play(void)unsigned int s0,s1,s2,s3;double x;int length;PlaySnd(26,3);PlaySnd(30,3);if(time%2=0)s0=(time/2)%10;s1=(time/2)/10;else s0=(time+1)/2)%10;s1=(time+1)/2)/10;PlaySnd(s1+13,3);PlaySnd(23,3);PlaySnd(s0+13,3);PlaySnd(28,3);PlaySnd(25,3);x=m*8.8;

46、s0=(int)(x/1000);s1=(int)(x/100)-s0*10;s2=(int)(x/10)-s0*100-s1*10;s3=(int)x-s0*1000-s1*100-s2*10;PlaySnd(s0+13,3);PlaySnd(23,3);PlaySnd(s1+13,3);PlaySnd(24,3);PlaySnd(s2+13,3);PlaySnd(s3+13,3);PlaySnd(27,3);PlaySnd(12,3);x=x/time;s0=(x/100);s1=(int)(x/10)-s0*10;s2=(int)(x)-s0*100-s1*10;PlaySnd(s0+1

47、3,3);PlaySnd(24,3); PlaySnd(s1+13,3);PlaySnd(s2+13,3);PlaySnd(29,3);/=/ 語(yǔ)法格式: int main(void);/ 實(shí)現(xiàn)功能: 主函數(shù)/ 參數(shù): 無(wú)/ 返回值: 無(wú)/=int main(void) unsigned int BS_Flag; /Train標(biāo)志位unsigned int a,b; *P_IOA_Dir=0xff00; /初始化IOA,IOA07下拉輸入*P_IOA_Attrib=0xff00;*P_IOA_Data=0x0000;*P_IOB_Dir=0x0f00; /初始化IOB,IOB811同向輸出/*

48、P_IOB_Attrib=0x0f08;*P_IOB_Data=0x000C;h=0;time=0;time_10s=0;m=0;b=0;a=0;c=0;y=0;t=0;BSR_DeleteSDGroup(0); /初始化存儲(chǔ)器RAMBS_Flag=*(unsigned int *)0xe000; /讀存儲(chǔ)單元0xe000if(BS_Flag=0xffff) /沒(méi)有經(jīng)過(guò)訓(xùn)練0xe000內(nèi)容為0xffffTrainSD(); /訓(xùn)練StoreSD(); /存儲(chǔ)訓(xùn)練結(jié)果語(yǔ)音模型else /經(jīng)過(guò)訓(xùn)練0xe000內(nèi)容為0x0055LoadSD(); /語(yǔ)音模型載入識(shí)別器PlaySnd(S_START,3); /開(kāi)始識(shí)別提示BSR_InitRecognizer(BSR_MIC); /初始化識(shí)別器while(1) *P_Watchdog_Clear = 0x0001;if (c=0)BSR();if(*P_IOA_Data)&0x0004) /是否重新訓(xùn)練 F_FlashErase(0xe000);while(1); else if (c=1)switch(h)case 0:tem=*P_IOB_Data&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論