【文章內(nèi)容簡(jiǎn)介】
,復(fù)位鍵(k5=)。當(dāng)按下k1鍵時(shí),語(yǔ)音模塊就從0X05開始錄音,錄好一段音后,按下k3鍵,停止錄音。按下k2鍵,開始播放之前所錄的聲音。按下k4鍵,錄音地址往后移100,此時(shí)再按下k1鍵,開始第二段錄音。如此,便可實(shí)現(xiàn)多段錄音,而且每段錄音所存放的地址都通過計(jì)算得出。若是不滿意當(dāng)前的錄音,可以按下k5鍵,重新錄音。圖 錄音程序流程圖圖 放音程序流程圖 LCD1602系統(tǒng)上電后,液晶顯示模塊進(jìn)行初始化。同時(shí)液晶顯示部分按照數(shù)組序號(hào)顯示字符程序,程序中table為要顯示的數(shù)組序號(hào),按照數(shù)組的次序依次顯示每站的站名。圖 LCD1602程序流程圖 按鍵部分按鍵部分采用掃描法,當(dāng)檢測(cè)到按鍵按下時(shí),進(jìn)行鍵值判斷,并進(jìn)行相應(yīng)的顯示程序以及語(yǔ)音播放程序的跳轉(zhuǎn),實(shí)現(xiàn)公交車語(yǔ)音報(bào)站功能。圖 按鍵程序流程圖 仿真過程、結(jié)果分析本次單片機(jī)軟件仿真系統(tǒng)我選擇了Proteus。在整個(gè)系統(tǒng)軟件設(shè)計(jì)中,依舊從語(yǔ)音,液晶顯示以及按鍵這三大部分進(jìn)行綜合考慮。由于Proteus軟件的限制,無(wú)法對(duì)ISD4004語(yǔ)音芯片進(jìn)行仿真,從而在此處我選用了LED燈來(lái)代替語(yǔ)音芯片,當(dāng)按鍵按下時(shí),相對(duì)應(yīng)的LED燈點(diǎn)亮。在仿真時(shí),由于語(yǔ)音模塊不能進(jìn)行仿真,為了增加點(diǎn)難度,在液晶顯示模塊方面我選擇了可以顯示漢字的1602模塊。下面主要介紹一下1602的工作原理[12]。LCD1602液晶顯示的原理是利用液晶的物理特性,通過電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。其實(shí)用LCD顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋€(gè)字符由68或88點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對(duì)應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來(lái)就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的控制器來(lái)說(shuō),顯示字符就比較簡(jiǎn)單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號(hào)及每行的列數(shù)找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對(duì)應(yīng)的代碼即可。在本次設(shè)計(jì)中,LCD1602液晶顯示模塊的rs,rw,e分別與51單片機(jī)的P3^5,P3^6,P3^7端口連接,進(jìn)行程序的讀寫數(shù)據(jù),字符操作。而D0~D7分別與51單片機(jī)的P0口進(jìn)行連接,用來(lái)輸出數(shù)據(jù)與字符,這樣就可以在液晶上顯示出自己想要的字符[13]。在此次仿真過程中,總共設(shè)計(jì)了4個(gè)按鍵,k1:歡迎乘坐,k2:上一站,k3:下一站,k4:謝謝乘坐。當(dāng)按下k1鍵時(shí),LCD上顯示“Huan Ying Cheng Zuo”,同時(shí)LED1亮;如果當(dāng)前的站是Wanglixueyuan Dao Le”,當(dāng)按下k2鍵時(shí),LCD上顯示“Ningboligong Dao Le”,此時(shí)LED2亮,LED3滅;當(dāng)按下k3鍵時(shí),LCD上顯示“Yiyaoxuexiao Dao Le”,此時(shí)LED4亮,LED3滅。當(dāng)按下k4時(shí),LCD上顯示“Xie Xie Cheng Zuo”。,,,按下k1鍵 LCD1602液晶顯示“Huan Ying Cheng Zuo”,同時(shí)LED1亮。圖 “Huan Ying Cheng Zuo”按下k2或者k3鍵顯示,k2鍵逆向顯示,k3鍵順向顯示Num=1 LCD1602液晶顯示“Ningboligong Dao Le”,同時(shí)LED2亮。圖 “Ningboligong Dao Le”Num=2 LCD1602液晶顯示“Wanglixueyuan Dao Le”,LED3亮。圖 “Wanglixueyuan Dao Le”Num=3 LCD1602液晶顯示“Yiyaoxuexiao Dao Le”,同時(shí)LED4亮。圖 “Yiyaoxuexiao Dao Le” Num=4 LCD1602液晶顯示“Yinzhoueryuan Dao Le”,同時(shí)LED5亮。圖 “Yinzhoueryuan Dao Le”按下k4鍵 LCD1602液晶顯示“Xie Xie Cheng Zuo”,同時(shí)LED5亮。圖 “Xie Xie Cheng Zuo”第5章 系統(tǒng)調(diào)試 硬件調(diào)試在整一個(gè)硬件調(diào)試過程中,我主要分為三部分進(jìn)行調(diào)試,第一部分是按鍵調(diào)試。,第二部分是LCD液晶顯示調(diào)試,第三部分是ISD4004語(yǔ)音模塊錄放調(diào)試。首先,我進(jìn)行了按鍵調(diào)試。對(duì)于按鍵和LED調(diào)試,我所采用的工具是萬(wàn)用表,因?yàn)榘存I原理是松開狀態(tài),電路斷開;按下按鍵,電路短路,以此來(lái)檢測(cè)它們的好壞。其次,第二部分就是LCD1602液晶顯示的調(diào)試。第一步,將LCD1602正確的連接到51單片機(jī)上,在連接時(shí)要注意液晶屏的日rs,rw,e這三個(gè)口的位置,一旦接錯(cuò)LCD就有可能被燒壞。,,而數(shù)據(jù)輸入口接在P0口上,因此只要將其連接上即可。第二步,將已編譯正確的LCD液晶顯示程序下載到51單片機(jī),查看LCD1602上是否能夠顯示你想得到的內(nèi)容。這一部分,因?yàn)榭戳撕芏嘞嚓P(guān)的視頻,所以基本沒有遇到問題。例如顯示“Huan Ying Cheng Zuo”。圖 LCD1602液晶顯示調(diào)試模塊示例最后,進(jìn)行ISD4004錄放音的調(diào)試。在這次設(shè)計(jì)中,如何正確的將ISD4004與51連接成了我最大的問題。經(jīng)過咨詢好多人后,才得以成功連接,并能播放示例音樂。此外,將另外一段一錄一放的程序下載到51,檢測(cè)ISD4004的錄放音功能。若程序燒錄成功后,按下錄音鍵,喇叭出現(xiàn)“滴滴滴滴”連續(xù)的響聲,說(shuō)明錄音開始,可以進(jìn)行錄音。復(fù)位鍵錄完后,按下放音鍵,檢測(cè)是否能夠正確放音。檢測(cè)完語(yǔ)音芯片后,接下來(lái)就是實(shí)現(xiàn)多段語(yǔ)音錄放。在本次設(shè)計(jì)中,我設(shè)置了一個(gè)移位變量add,每錄完一個(gè)音,移位100,開始錄下一段語(yǔ)音。移位的目的就是將不同的語(yǔ)音段保存在指定的位置,這樣以便地址的查詢。錄音鍵暫停鍵放音鍵移位鍵圖 ISD4004語(yǔ)音調(diào)試模塊 軟件調(diào)試與硬件調(diào)試類似,在本次軟件調(diào)試中,主要分為三部分進(jìn)行調(diào)試,按鍵與LCD1602結(jié)合程序的調(diào)試,ISD4004與按鍵結(jié)合程序的調(diào)試,以及ISD400LCD1602與按鍵的調(diào)試。首先,按鍵與LCD1602的調(diào)試。由于在使用LCD1602之前,翻閱了很多相關(guān)的資料以及視頻,因此LCD1602液晶顯示程序已經(jīng)調(diào)試好,沒有問題。主要的問題是如何將按鍵加入到程序中,對(duì)LCD1602顯示的內(nèi)容進(jìn)行控制。一開始,我先讓按鍵控制LCD1602顯示內(nèi)容中的其中一條。在程序中設(shè)置了void key(),通過調(diào)用void write(uchar )這個(gè)函數(shù),顯示出LCD1602的第一條內(nèi)容“Huan Ying Cheng Zuo”。因此想要顯示其他內(nèi)容,原理也一樣。圖 “Huan Ying Cheng Zuo”示例圖其次,按鍵與ISD4004的調(diào)試。由于之前查閱的很多資料中有一段一錄一放的程序,了解他的原理后,發(fā)現(xiàn)與我需要的多段錄放效果原理相同。因此在原有的基礎(chǔ)上,我設(shè)置了一個(gè)k4,k4所需要實(shí)現(xiàn)的功能是移位,每錄好一次,按下k4移位100,然后再按下錄音鍵,這樣就實(shí)現(xiàn)了多段錄放音。其中,在調(diào)試錄放音時(shí),還添加了LED模塊,主要功能是檢測(cè)按鍵是否有效。初始狀態(tài),系統(tǒng)上電,所有LED燈亮,有鍵按下時(shí)LED1滅。如果再有按鍵按下LED1亮,如此來(lái)判別錄音鍵,放音鍵,移位鍵,復(fù)位鍵以及停止鍵是否有效。放音鍵停止鍵錄音鍵復(fù)位鍵移位鍵LED燈圖 ISD4004與按鍵的實(shí)物連接圖最后,按鍵、LCD1602與ISD4004三者的結(jié)合。在這三者結(jié)合時(shí),對(duì)于ISD4004語(yǔ)音模塊,我只需要一段放音程序,只要將之前存放在地址位置里面的錄音片段通過放音程序放出來(lái)就好。在這一測(cè)試中,按鍵要控制兩項(xiàng)LCD1602的液晶顯示以及ISD4004語(yǔ)音的播放,而且兩個(gè)要同時(shí)。這時(shí)候,通過設(shè)置void write(uchar )中的值以及將語(yǔ)音播放play()函數(shù)添加到void key()中,通過void key()中按鍵按下后多種條件的核對(duì),從而確定按鍵按下后要顯示的內(nèi)容以及語(yǔ)音播放的內(nèi)容。以“Ningboligong Dao Le” 一站為例。圖 “Ningboligong Dao Le”總體示例圖 綜合調(diào)試1) 根據(jù)給出ISD4004的電路原理圖,正確連接電路;2) 調(diào)試已編譯的程序,將程序下載到51單片機(jī)中;3) 按下錄音鍵進(jìn)行錄音,連續(xù)錄完一段后,按下停止鍵停止。然后按下移位鍵再次按下錄音鍵開始錄另外一段音,按停止鍵停止;如此反復(fù)6次,將需要的錄音片段錄好并存放到單元位置;4) 錄完音后,按放音鍵放音,按一次鍵就播放一段錄音;5) 將語(yǔ)音模塊正確連接到AT89C51最小系統(tǒng)。最后,將整個(gè)程序合并,進(jìn)行最后的調(diào)試,公交車語(yǔ)音報(bào)站系統(tǒng)完成。 測(cè)試結(jié)果為了使本設(shè)計(jì)的結(jié)果更加客觀與可靠,我隨機(jī)調(diào)查了一下身邊同學(xué)試用情況。本次調(diào)查中,我主要將試驗(yàn)者分為6組,第一組——“Huanyingchengzuo”組,如表51所示,第二組——“Ningboligon Dao Le”組,如表52所示,第三組——“Wanlixueyuan Dao Le”組,如表53所示,第四組——“Yiyaoxuexiao Dao Le”組,如表54所示,第五組——“Yinzhoueryuan Dao Le”組,如表55所示,第六組——“Xiexiechengzuo”組,如表56所示,每組抽查5個(gè)人,其中上一站/下一站一起進(jìn)行檢測(cè)。,A2,A3,A4,A5按下k1鍵時(shí)的反饋情況。此時(shí)num=1,如果LCD1602上顯示“Huanyingchengzuo”,同時(shí)語(yǔ)音ISD4004中播放“歡迎乘坐363路公交車”,則說(shuō)明正確,五名隨機(jī)者回答“是”即可。表 “Huanyinchenzuo”編號(hào)按鍵(num=1)LCD上顯示“Huanyingchengzuo”語(yǔ)音播放同一站名A1k1是是A2k1是是A3k1是是A4k1是是A5k1是是=2時(shí)的反饋情況,其中A1—A5是對(duì)k2鍵的試用,A6—A10對(duì)k3鍵的試用。如果此時(shí)LCD1602上顯示“Ningboligong Dao Le”,同時(shí)語(yǔ)音ISD4004中播放“寧波理工到了,請(qǐng)從后門下車,下車請(qǐng)當(dāng)心。車輛起步,請(qǐng)拉好扶手,前方??浚f(wàn)里學(xué)院”,則說(shuō)明正確,十名隨機(jī)者回答“是”即可。表 “Ningboligong Dao Le”編號(hào)按鍵(num=2)LCD上顯示“Ningboligong Dao Le”語(yǔ)音播放同一站名A1k2是是A2k2是是A3k2是是A4k2是是A5k2是是A6k3是是A7k3是是A8k3是是A9k3是是A10k3是是=3時(shí)候的反饋情況,其中A1—A5是對(duì)k2鍵的試用,A6—A10對(duì)k3鍵的試用。如果此時(shí)LCD1602上顯示“Wanlixueyuan Dao Le”,同時(shí)語(yǔ)音ISD4004中播放“萬(wàn)里學(xué)院到了,請(qǐng)從后門下車,下車請(qǐng)當(dāng)心。車輛起步,請(qǐng)拉好扶手,前方???,醫(yī)藥學(xué)校”,則說(shuō)明正確,十名隨機(jī)者回答“是”即可。表 “Wanlixueyuan Dao Le”編號(hào)按鍵(num=3)LCD上顯示“Wanlixueyuan Dao Le”語(yǔ)音播放同一站名A1k2是是A2k2是是A3k2是是A4k2是是A5k2是是A6k3是是A7k3是是A8k3是是A9k3是是A10k3是是=4時(shí)候的反饋情況,其中A1—A5是對(duì)k2鍵的試用,A6—A10對(duì)k3鍵的試用。如果此時(shí)LCD1602上顯示“Yiyaoxuexiao Dao Le”,同時(shí)語(yǔ)音ISD4004中播放“醫(yī)藥學(xué)校到了,請(qǐng)從后門下車,下車請(qǐng)當(dāng)心。車輛起步,請(qǐng)拉好扶手,前方???,鄞州二院”,則說(shuō)明正確,十名隨機(jī)者回答“是”即可。表 “Yiyaoxuexiao Dao Le”編號(hào)按鍵(num=4)LCD上顯示“Yiyaoxuexiao Dao Le”語(yǔ)音播放同一站名A1k2是是A2k2是是A3k2是是A4k2是是A5k2是是A6k3是是A7k3是是編號(hào)按鍵(num=4)LCD上顯示“Yiyaoxuexiao Dao Le”語(yǔ)音播放同一站名A8k3是是A9k3是是A10k3是是=5時(shí)候的反饋情況,其中A1—A5是對(duì)k2鍵的試用,A6—A10對(duì)k3鍵的試用。如果此時(shí)LCD1602上顯示“Yinzhoueryuan Dao Le”,同時(shí)語(yǔ)音ISD4004中播放“鄞州二院到了,請(qǐng)從后門下車,下車請(qǐng)當(dāng)心”,則說(shuō)明正確,十名隨機(jī)者回答“是”即可。表 “Yinzhoueryuan Dao Le”編號(hào)按鍵(num=5)LCD上顯示“Yinzhoueryuan Dao Le”語(yǔ)音播放同一站名A1k2是是A2k2是是A3k2是是A4k2是是A5k2是是A6k3是是A7k3是是A8k3是是A9k3是是A10k3是是=6時(shí)候的反饋情況,其中A1—A5是對(duì)k2鍵的試用,A6—A10對(duì)k3鍵的試用。如果此時(shí)LCD1602上顯示“Xiexiechengzuo”,同時(shí)語(yǔ)音ISD4004中播放“謝謝乘坐本次公交車”,則說(shuō)明正確,十名隨機(jī)者回答“是”即可。表 “Xiexiechengzuo”編號(hào)按鍵(num=6)LCD上