版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科生畢業(yè)論文(設(shè)計(jì))</p><p> 系(院)物理與電子工程學(xué)院 專(zhuān)業(yè) 電子信息工程 </p><p> 論文題目 公交車(chē)自動(dòng)報(bào)站系統(tǒng)設(shè)計(jì) </p><p><b> 公交車(chē)自動(dòng)報(bào)站系統(tǒng)</b></p><p> [摘要]本設(shè)計(jì)主要解決如何方便、準(zhǔn)確地指示乘客到站的問(wèn)題,具有自
2、動(dòng)檢測(cè)公交站臺(tái),模擬人聲進(jìn)行報(bào)站和預(yù)報(bào)站,對(duì)所報(bào)站數(shù)和站名進(jìn)行文字顯示等功能。系統(tǒng)包括微控制器模塊,語(yǔ)音錄放電路,液晶顯示模塊,鍵盤(pán)接口電路,復(fù)位電路及電源等。系統(tǒng)使用51單片機(jī)來(lái)控制語(yǔ)音合成芯片和液晶顯示模組。站臺(tái)檢測(cè)使用干簧管檢測(cè)。語(yǔ)音合成芯片ISD4004,采用模擬數(shù)據(jù)半導(dǎo)體存儲(chǔ)器直接存儲(chǔ)的專(zhuān)利技術(shù),即將模擬語(yǔ)音數(shù)據(jù)直接寫(xiě)入單個(gè)存儲(chǔ)單元,不需經(jīng)過(guò)A/D、D/A轉(zhuǎn)換,因此能夠較好地真實(shí)再現(xiàn)語(yǔ)音的自然效果,避免了一般固體語(yǔ)音電路因?yàn)榱?/p>
3、化和壓縮造成的量化噪聲和失真現(xiàn)象。配合液晶屏lcd1602顯示,就使得該報(bào)站系統(tǒng)更加實(shí)用。</p><p> [關(guān)鍵字]單片機(jī) 語(yǔ)音提示 液晶顯示 公交報(bào)站</p><p><b> 1 緒論</b></p><p> 隨著現(xiàn)在社會(huì)的發(fā)展,由于公交車(chē)的快速發(fā)展,越來(lái)越多的人選擇乘坐公交車(chē),公交車(chē)吸引人的優(yōu)點(diǎn)除了價(jià)格低廉外,還有一個(gè)就是它的
4、便利,尤其是報(bào)站系統(tǒng),尤其對(duì)于對(duì)路線不熟悉的乘客尤為重要。一般的公交車(chē)報(bào)站系統(tǒng)分為兩種,一種是司機(jī)通過(guò)按鍵來(lái)操作,熟悉路線的司機(jī)在車(chē)輛駛?cè)胝军c(diǎn)一定距離范圍內(nèi)時(shí),按下所對(duì)應(yīng)的按鈕,系統(tǒng)報(bào)站。另一種是通過(guò)全球定位系統(tǒng)(GPS)的用戶終端接收工作衛(wèi)星的導(dǎo)航信息,從而解算出車(chē)輛的經(jīng)緯度信息,進(jìn)而計(jì)算出實(shí)時(shí)坐標(biāo),將其與站點(diǎn)坐標(biāo)相比較,當(dāng)車(chē)輛駛?cè)胝军c(diǎn)一定距離范圍內(nèi)時(shí),不用人工干預(yù),系統(tǒng)自動(dòng)報(bào)站。兩種報(bào)站方法來(lái)說(shuō),第一種不智能,容易出現(xiàn)失誤,第二種花
5、費(fèi)昂貴巨大。所以本設(shè)計(jì)就利用干簧管作為檢測(cè)站牌的傳感器,檢測(cè)既準(zhǔn)確又價(jià)格又低廉。本設(shè)計(jì)的基本思路就是干簧管傳感器檢測(cè)到站牌后,單片機(jī)判斷第幾個(gè)站牌并發(fā)出指令進(jìn)行相應(yīng)的語(yǔ)音報(bào)站,并進(jìn)行液晶顯示。</p><p> 本次設(shè)計(jì)以 Keil C51 開(kāi)發(fā)環(huán)境為編程平臺(tái)進(jìn)行代碼的編譯和運(yùn)行,并在 Proteus 上進(jìn)行仿真。</p><p><b> 2 方案設(shè)計(jì)</b>&
6、lt;/p><p><b> 2.1 原理</b></p><p> 本系統(tǒng)使用八位單片機(jī)作為控制器件。當(dāng)系統(tǒng)進(jìn)行語(yǔ)音再生時(shí),單片機(jī)控制語(yǔ)音合成電路中的語(yǔ)音芯片來(lái)讀取其外接的存儲(chǔ)器內(nèi)部的語(yǔ)音信息,并合成語(yǔ)音信號(hào),再通過(guò)語(yǔ)音輸出電路,進(jìn)行語(yǔ)音報(bào)站和提示。同時(shí),單片機(jī)讀取傳感器返回的站臺(tái)信息,將信息顯示在液晶上。當(dāng)系統(tǒng)進(jìn)行語(yǔ)音錄制時(shí),語(yǔ)音信號(hào)通過(guò)語(yǔ)音錄入電路送給語(yǔ)音合成電
7、路中的語(yǔ)音芯片,由語(yǔ)音芯片進(jìn)行數(shù)據(jù)處理,并將生成的數(shù)字語(yǔ)音信息存儲(chǔ)到語(yǔ)音存儲(chǔ)芯片中,從而建立語(yǔ)音庫(kù)。</p><p><b> 2.2 系統(tǒng)框圖</b></p><p> 圖 2-1 系統(tǒng)框圖</p><p><b> 2.3 簡(jiǎn)介</b></p><p> 主控制器使用單片機(jī)AT89C51
8、,是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8 位單片機(jī)。片內(nèi)含 4k byte的可反復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器(PEROM)和 128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MSC-51 指令系統(tǒng),片內(nèi)置通用 8 位中央處理器和FLASH存儲(chǔ)單元,適合在開(kāi)發(fā)階段的使用。AT89C51 提供以下標(biāo)準(zhǔn)功能:4k字節(jié)FLASH閃存存儲(chǔ)器,128 字節(jié)內(nèi)部RAM,32 個(gè)I
9、/O口線,兩個(gè) 16 位定時(shí)/計(jì)數(shù)器,一個(gè) 5 向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51 可降至 0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位[1]。</p><p> 傳感器使用的是干簧管,
10、價(jià)格便宜,反應(yīng)靈敏。</p><p> 液晶顯示模塊使用的是LCD1602,工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符。</p><p> 語(yǔ)音芯片語(yǔ)音提示模塊選用ISD4004系列語(yǔ)音芯片,外接話筒和音箱組成語(yǔ)音錄制和播放電路。其中,音箱由音頻功率放大器LM386驅(qū)動(dòng)。</p><p> 公交車(chē)使用買(mǎi)的無(wú)驅(qū)動(dòng)的玩具車(chē)。</p><
11、p><b> 3 硬件設(shè)計(jì)</b></p><p><b> 3.1 控制器</b></p><p> 89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS8位微處理器,俗稱(chēng)單片機(jī)。單片機(jī)的可擦除只
12、讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的89C51是一種高效微控制器。</p><p> 89C51單片機(jī)管腳圖</p><p> 圖 3-1 89C51單片機(jī)管腳圖</p><p> 單片機(jī)最小系統(tǒng)及外圍
13、電路接口圖</p><p> 圖 3-2 單片機(jī)最小系統(tǒng)及外圍電路接口圖</p><p><b> 3.2顯示模塊</b></p><p> ?。?)LCD1602液晶顯示屏主要技術(shù)參數(shù)如表3.2.1</p><p><b> 表3.2.1</b></p><p>
14、(2) LCD1602液晶顯示屏引腳說(shuō)明如表3.2.2</p><p><b> 表3.2.2</b></p><p> 1602采用標(biāo)準(zhǔn)的14腳接口,其中:</p><p> 第1腳:VSS為地電源</p><p> 第2腳:VDD接5V正電源</p><p> 第3腳:V0為液晶顯示
15、器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度</p><p> 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。</p><p> 第5腳:RW為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和RW共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平RW為高電平
16、時(shí)可以讀忙信號(hào),當(dāng)RS為高電平RW為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。</p><p> 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。</p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p> 另外引腳"A"和"K"為背光引腳,"A"接正,"K"
17、接負(fù)便會(huì)點(diǎn)亮背光燈。這兩個(gè)管腳可以不接置空。</p><p> ?。?)LCD1602液晶顯示屏指令說(shuō)明如表3.2.3</p><p><b> 表3.2.3</b></p><p> 它的讀寫(xiě)操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)</p><p> 指令1:清顯示,指令碼
18、01H,光標(biāo)復(fù)位到地址00H位置</p><p> 指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H</p><p> 指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效</p><p> 指令4:顯示開(kāi)關(guān)控制。 D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示 C:控制
19、光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍</p><p> 指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)</p><p> 指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符&l
20、t;/p><p> 指令7:字符發(fā)生器RAM地址設(shè)置</p><p> 指令8:DDRAM地址設(shè)置</p><p> 指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。</p><p><b> 指令10:寫(xiě)數(shù)據(jù)</b></p><p&
21、gt;<b> 指令11:讀數(shù)據(jù)</b></p><p> LCD1602液晶顯示屏顯示電路</p><p> 圖 3-2 LCD1602液晶顯示屏顯示電路圖</p><p> 3.3 站牌檢測(cè)模塊</p><p> 在每個(gè)站牌下面都埋著一個(gè)永磁鐵,在車(chē)的右端安有一個(gè)干簧管,當(dāng)車(chē)子靠近站臺(tái)時(shí),干簧管閉合,觸發(fā)單
22、片機(jī)的外部中斷,被單片機(jī)檢測(cè)到從而做出相應(yīng)判斷。</p><p> 干簧管通常由兩個(gè)或三個(gè)軟磁性材料做成的簧片觸點(diǎn),被封裝在充有惰性氣體(如氮、氦等)或真空的玻璃管里,玻璃管內(nèi)平行封裝的簧片端部重疊,并留有一定間隙或相互接觸以構(gòu)成開(kāi)關(guān)的常開(kāi)或常閉觸點(diǎn)。</p><p> 干簧管的工作電路圖:</p><p> 圖3-3 干簧管的工作電路圖</p>
23、<p><b> 3.4 語(yǔ)音模塊</b></p><p> ISD4004系列語(yǔ)音芯片工作電壓為+3V,單片錄放時(shí)間8到16分鐘,音質(zhì)好,適用于移動(dòng)電話及其他便攜式電子產(chǎn)品中。芯片采用CMOS 技術(shù),內(nèi)含振蕩器、防混淆濾波器、平滑濾波器、音頻放大器、自動(dòng)靜噪及高密度多電平閃爍存儲(chǔ)陳列。芯片設(shè)計(jì)是基于所有操作必須由微控制器控制,操作命令可通過(guò)串行通信接口(SPI或Microw
24、ire)送入。芯片采用多電平直接模擬量存儲(chǔ)技術(shù), 每個(gè)采樣值直接存儲(chǔ)在片內(nèi)閃爍存儲(chǔ)器中,因此能夠非常真實(shí)、自然地再現(xiàn)語(yǔ)音、音樂(lè)、音調(diào)和效果聲,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和金屬聲。采樣頻率可以是4.0,5.3,6.4或8.0kHz,頻率越低,錄放時(shí)間越長(zhǎng),而音質(zhì)則有所下降,片內(nèi)信息存于閃爍存儲(chǔ)器中,可在斷電情況下保存一百年(典型值),可反復(fù)錄音十萬(wàn)次。</p><p> 3.4.1 內(nèi)部結(jié)構(gòu)
25、</p><p> 圖3-4 ISD4004的內(nèi)部結(jié)構(gòu)圖</p><p><b> 3.4.2引腳描述</b></p><p> ?。?)電源(VCCD,VCCA) 芯片內(nèi)部數(shù)字電路電源正極引腳和模擬電路電源正極引腳。為使噪聲最小,芯片的數(shù)字電路和模擬電路使用不同的電源供電,并且分別引到外封裝的不同管腳上,數(shù)字和模擬電源端最好分別走線,盡
26、可能在靠近供電端處相連,而去耦電容應(yīng)盡量靠近器件。</p><p> ?。?)地線(VSSD,VSSA) 芯片內(nèi)部數(shù)字電路電源地線和模擬電路電源地線引腳。芯片的數(shù)字電路和模擬電路也要使用不同的地線。</p><p> 圖3-5 ISD4004芯片引腳圖</p><p> ?。?)同相模擬輸入(ANA IN+) 錄音信號(hào)的同相輸入端。輸入放大器可用單端或差分驅(qū)動(dòng)
27、。單端輸入時(shí),信號(hào)由耦合電容輸入,最大幅度為峰-峰值32mV,耦合電容和本端的3KΩ電阻輸入阻抗決定了芯片頻帶的低端截止頻率。差分驅(qū)動(dòng)時(shí),信號(hào)最大幅度為峰-峰值16mV。</p><p> ?。?)反相模擬輸入(ANA IN-) 差分驅(qū)動(dòng)時(shí),這是錄音信號(hào)的反相輸入端。信號(hào)通過(guò)耦合電容輸入,最大幅度為峰-峰值16mV。</p><p> ?。?)音頻輸出(AUD OUT) 提供音頻輸出,
28、可驅(qū)動(dòng)5KΩ的負(fù)載。</p><p> (6)片選() 此端為低,即向ISD4004芯片發(fā)送指令,兩條指令之間為高電平。</p><p> ?。?)串行輸入(MOSI) 此端為串行輸入端,主控制器應(yīng)在串行時(shí)鐘上升沿之前半個(gè)周期將數(shù)據(jù)放到本端,以供輸入。</p><p> ?。?)串行輸出(MISO) 此端為串行輸出端,芯片未被選中時(shí),本端呈高阻態(tài)。</
29、p><p> ?。?)串行時(shí)鐘(SCLK) 時(shí)鐘輸入端,由主控制器產(chǎn)生,用于同步MOSI 和MISO的數(shù)據(jù)傳輸。數(shù)據(jù)在SCLK上升沿鎖存到芯片,在下降沿移出芯片。 </p><p> ?。?0)中斷() 本端為漏極開(kāi)路輸出。芯片在任何操作(包括快進(jìn))中檢測(cè)到EOM或OVF時(shí),本端變低并保持。中斷狀態(tài)在下一個(gè)SPI周期開(kāi)始時(shí)清除。中斷狀態(tài)也可用RINT指令讀?。∣VF標(biāo)志指示芯片的錄/放操作
30、已到達(dá)存儲(chǔ)器的末尾;EOM標(biāo)志只在放音中檢測(cè)到內(nèi)部的EOM標(biāo)志時(shí),此狀態(tài)位才置1)。 </p><p> ?。?1)行地址時(shí)鐘(RAC) 漏極開(kāi)路輸出。每個(gè)RAC周期表示芯片存儲(chǔ)器的操作進(jìn)行了一行(ISD4004系列中的存儲(chǔ)器共2400行)。該信號(hào)保持高電平175ms,低電平25ms??爝M(jìn)模式下,RAC 218.75μs是高電平,31.25μs為低電平。該端可用于存儲(chǔ)管理技術(shù)。</p><p
31、> (12)外部時(shí)鐘(XCLK) 本端內(nèi)部有下拉元件。芯片內(nèi)部的采樣時(shí)鐘在出廠前已調(diào)校,誤差在1%以內(nèi)。商業(yè)級(jí)芯片在整個(gè)溫度和電壓范圍內(nèi), 頻率變化在2.25%以內(nèi)。工業(yè)級(jí)芯片在整個(gè)溫度和電壓范圍內(nèi),頻率變化在4%以內(nèi),此時(shí)建議使用穩(wěn)壓電源。若要求更高精度,可從本端輸入外部時(shí)鐘。由于內(nèi)部的防混淆及平滑濾波器已設(shè)定,故上述推薦的時(shí)鐘頻率不應(yīng)改變。輸入時(shí)鐘的占空比無(wú)關(guān)緊要,因內(nèi)部首先進(jìn)行了分頻。在不外接時(shí)鐘時(shí),此端必須接地。<
32、;/p><p> ?。?3)自動(dòng)靜噪(AM CAP)當(dāng)錄音信號(hào)電平下降到內(nèi)部設(shè)定的某一閾值以下時(shí),自動(dòng)靜噪功能使信號(hào)衰弱,這樣有助于濾除無(wú)信號(hào)(靜音)時(shí)的噪聲。通常本端對(duì)地接1µF的電容,構(gòu)成內(nèi)部信號(hào)電平峰值檢測(cè)電路的一部分。檢出的峰值電平與內(nèi)部設(shè)定的閾值作比較,決定自動(dòng)靜噪功能的翻轉(zhuǎn)點(diǎn)。大信號(hào)時(shí),自動(dòng)靜噪電路不衰減,靜音時(shí)衰減6dB。1µF 的電容也影響自動(dòng)靜噪電路對(duì)信號(hào)幅度的響應(yīng)速度。本端接V
33、CCA則禁止自動(dòng)靜噪。</p><p> 3.4.3 操作規(guī)則</p><p> ?。?)串行外設(shè)接口 ISD4000系列語(yǔ)音芯片工作于SPI串行接口。SPI協(xié)議是一個(gè)同步串行數(shù)據(jù)傳輸協(xié)議,設(shè)定微控制器的SPI移位寄存器在SCLK的下降沿將數(shù)據(jù)送至MISO引腳。以ISD4004為例,協(xié)議的具體內(nèi)容如下:</p><p> ①所有串行數(shù)據(jù)傳輸開(kāi)始于下降沿。<
34、;/p><p> ?、谠趥鬏斊陂g必須保持低電平,在兩條指令之間則保持高電平。</p><p> ?、蹟?shù)據(jù)在時(shí)鐘上升沿移入,在下降沿移出。</p><p> ?、茏兊?,輸入指令和地址后,ISD4004才能開(kāi)始錄/放操作。</p><p> ⑤指令格式是(八位控制碼)加(十六位地址碼)。</p><p> ?、轎SD4004
35、的任何操作如果遇到EOM或OVF,則產(chǎn)生一個(gè)中斷,該中斷狀態(tài)在下一個(gè)SPI周期開(kāi)始時(shí)被清除。</p><p> ?、呤褂谩白x”指令使中斷狀態(tài)位移出ISD4004的MISO引腳時(shí),控制及地址數(shù)據(jù)也應(yīng)同步從MOSI端移入。因此,要注意移入的數(shù)據(jù)是否與器件當(dāng)前進(jìn)行的操作兼容。當(dāng)然,也允許在一個(gè)SPI周期里,同時(shí)執(zhí)行讀狀態(tài)和開(kāi)始新的操作(即新移入的數(shù)據(jù)與器件當(dāng)前的操作可以不兼容)。</p><p>
36、; ?、嗨胁僮髟谶\(yùn)行位(RUN)置1時(shí)開(kāi)始,置0時(shí)結(jié)束。</p><p> ?、崴兄噶疃荚诙松仙亻_(kāi)始執(zhí)行。</p><p> ?。?)信息快進(jìn) 用戶不必知道信息的確切地址就能快進(jìn)跳過(guò)一條信息。信息快進(jìn)只用于放音模式,放音速度是正常的1600倍,遇到EOM后停止,然后內(nèi)部地址計(jì)數(shù)器1,指向下一條信息的開(kāi)始處。</p><p> ?。?)上電順序 器件延時(shí)TP
37、UD(8KHz采樣時(shí),約為25ms)后才能開(kāi)始操作。因此,用戶發(fā)完上電指令后,必須等待TPUD,才能發(fā)出下一條操作指令。</p><p> 例如,從00處放音,應(yīng)遵循如下時(shí)序:</p><p> ?、侔l(fā)POWER UP命令;</p><p> ?、诘却齌PUD(上電延時(shí));</p><p> ?、郯l(fā)地址值為00的SET PLAY命令;<
38、;/p><p><b> ?、馨l(fā)PLAY命令。</b></p><p> 器件會(huì)從00地址開(kāi)始放音,當(dāng)出現(xiàn)EOM時(shí),立即中斷,停止放音。</p><p> 如果從00處錄音,則按以下時(shí)序:</p><p> ①發(fā)POWER UP指令;</p><p> ?、诘却齌PUD(上電延時(shí));</p
39、><p> ?、郯l(fā)POWER UP命令;</p><p> ?、艿却?倍TPUD;</p><p> ⑤發(fā)地址值為00的 SET REC命令;</p><p><b> ?、薨l(fā)REC命令。</b></p><p> 器件便從00地址開(kāi)始錄音,一直到出現(xiàn)OVF(存儲(chǔ)器末尾)時(shí),錄音停止。</p
40、><p><b> ?。?)指令碼</b></p><p> ISD4004的指令碼:</p><p><b> 表3.4.3.1</b></p><p> 注:快進(jìn)只能在放音操作開(kāi)始時(shí)選擇。</p><p> ?。?)SPI端口的控制位</p><p&
41、gt; 圖 3-6 SPI端口的控制位</p><p> ?。?)SPI控制寄存器 SPI控制寄存器控制器件的每個(gè)功能,如錄音、放音、信息檢索(快進(jìn))、上電/掉電、開(kāi)始/停止操作、忽略地址指針等。</p><p> ISD4004的SPI控制寄存器:</p><p><b> 表3.4.3.2</b></p><p&
42、gt; 注:IAB置0時(shí),錄/放操作從A9~A0地址開(kāi)始。</p><p> 為了能連貫地錄/放到后續(xù)的存儲(chǔ)空間,在操作到達(dá)該行末之前,應(yīng)發(fā)出第二個(gè)SPI指令將IAB置1,否則器件會(huì)在同一地址上反復(fù)循環(huán)。這個(gè)特點(diǎn)對(duì)語(yǔ)音提示功能很有用。RAC引腳和IAB位可用于信息管理。SPI端口簡(jiǎn)單框圖如下:</p><p> 圖 3-7 SPI端口簡(jiǎn)單框圖</p><p>
43、 3.4.4 語(yǔ)音放大模塊</p><p> LM386是美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的音頻功率放大器,主要應(yīng)用于低電壓消費(fèi)類(lèi)產(chǎn)品。為使外圍元件最少,電壓增益內(nèi)置為20。但在1腳和8腳之間增加一只外接電阻和電容,便可將電壓增益調(diào)為任意值,直至 200。輸入端以地位參考,同時(shí)輸出端被自動(dòng)偏置到電源電壓的一半,在6V電源電壓下,它的靜態(tài)功耗僅為24mW。</p><p> LM386的外形和引
44、腳的排列如右圖所示。引腳2為反相輸入端,3為同相輸入端;引腳5為輸出端;引腳6和4分別為電源和地;引腳1和8為電壓增益設(shè)定端;使用時(shí)在引腳7和地之間接旁路電容,通常取10μF。</p><p><b> LM386引腳圖:</b></p><p> 圖 3-8 LM386引腳圖</p><p> Lm386電路連接圖:</p>
45、<p> 圖 3-9 Lm386電路連接圖</p><p><b> 4 軟件設(shè)計(jì)</b></p><p><b> 4.1總程序流程圖</b></p><p> 圖 4-1 總程序流程圖</p><p><b> 4.2放音程序 </b></p&
46、gt;<p><b> N</b></p><p><b> Y</b></p><p><b> Y</b></p><p> N N</p><p><b> Y</b></p>
47、<p> 圖 4-2 放音流程圖 </p><p><b> 4.3 錄音程序</b></p><p><b> Y</b></p><p><b> N </b></p><p><b> N</b></p><
48、;p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p> 圖 4-3 錄音流程圖</p><p><b> 4.4電路調(diào)試</b></p><p>
49、電路調(diào)試是指利用基本的檢測(cè)儀器,檢查系統(tǒng)硬件中可能存在的故障??煞譃殪o態(tài)調(diào)試與動(dòng)態(tài)調(diào)試兩步進(jìn)行。</p><p> 靜態(tài)調(diào)試是指在系統(tǒng)未工作時(shí)進(jìn)行硬件檢測(cè)。</p><p> 第一步:觀測(cè)。檢查電路板上的各種元件或者是電路焊接問(wèn)題。</p><p> 第二步:萬(wàn)用表測(cè)試。先用萬(wàn)用表測(cè)試目測(cè)中發(fā)現(xiàn)的可能有疑問(wèn)的連接點(diǎn),再檢測(cè)各種電源與地線之間是否有短路現(xiàn)象。&l
50、t;/p><p> 第三步:加電檢測(cè)。給電路板板加電,檢測(cè)所有的插座或是器件的電源端是否為符合要求的值。</p><p><b> 4.5軟件調(diào)試</b></p><p> 軟件調(diào)試是指在對(duì)程序的C編程、連接、執(zhí)行過(guò)程中發(fā)現(xiàn)程序中存在的語(yǔ)法錯(cuò)誤與邏輯錯(cuò)誤并加以排除糾正的過(guò)程[8]。</p><p><b>
51、 5 總結(jié)</b></p><p> 我畢業(yè)設(shè)計(jì)的題目是公交車(chē)自動(dòng)報(bào)站器的設(shè)計(jì),經(jīng)過(guò)幾個(gè)月的奮斗,終于完成了設(shè)計(jì),使系統(tǒng)實(shí)現(xiàn)了自動(dòng)報(bào)站功能。本系統(tǒng)功能強(qiáng)大,成本低,系統(tǒng)穩(wěn)定,無(wú)需人工介入,語(yǔ)音音質(zhì)好,很好的實(shí)現(xiàn)了車(chē)輛報(bào)站的自動(dòng)化,具有很強(qiáng)的實(shí)用性。系統(tǒng)選用ISD4004語(yǔ)音芯片,它的錄音數(shù)據(jù)被存放方法是通過(guò)ISD多級(jí)存儲(chǔ)專(zhuān)利技術(shù)實(shí)現(xiàn)的,用聲音和聲頻信號(hào)的自然形式直接存放在故態(tài)存儲(chǔ)器,從而提供高質(zhì)量回
52、放語(yǔ)音的保真度,使得該系統(tǒng)與其他語(yǔ)音報(bào)站系統(tǒng)相比較,語(yǔ)音質(zhì)量較好。另外,本設(shè)計(jì)仍然存在的許多的不足之處,比如它在報(bào)站時(shí)刻上不能十分的精確,存在一定的誤差。這些問(wèn)題都需要在今后的研究工作中加以改進(jìn),使系統(tǒng)更完善,更好的為人們服務(wù)。</p><p> 最后還要感謝xx指導(dǎo)老師在我進(jìn)行畢業(yè)設(shè)計(jì)過(guò)程中對(duì)我的悉心指導(dǎo)以及同學(xué)們對(duì)我的幫助,正是有了大家的幫助,我才能順利的完成畢業(yè)設(shè)計(jì)。在這里我衷心的對(duì)幫助過(guò)我的人表示感謝。
53、</p><p><b> [參考文獻(xiàn)]</b></p><p> [1]《電子系統(tǒng)設(shè)計(jì)(第三版)》何小艇.浙江大學(xué)出版社.2004</p><p> [2]《單片機(jī)原理與實(shí)踐指導(dǎo)》 鄧興成.機(jī)械工業(yè)出版社.2006</p><p> [3]《模擬電子技術(shù)基礎(chǔ)》 華成英,童詩(shī)白.高等教育出版社.2004&
54、lt;/p><p> [4]網(wǎng)站參考: protues仿真論壇</p><p> [5] 李正浩.單片機(jī)在 LED 數(shù)碼管顯示中的應(yīng)用[J].試驗(yàn)科學(xué)與技術(shù).2006. 12</p><p> [6] 鄧興成.單片機(jī)原理與實(shí)踐指導(dǎo)[M].機(jī)械工業(yè)出版社.2010.2</p><p> [7] 余成波.單片機(jī)實(shí)用技術(shù)與應(yīng)用[M].清華大學(xué)出
55、版社.2010.7</p><p> [8] 王平.單片機(jī)應(yīng)用設(shè)計(jì)與制作:基于Keil和Proteus開(kāi)發(fā)仿真平臺(tái) .清華大學(xué)出版社.2012.1</p><p> The bus stops automatic system </p><p> [abstract] This design is mainly to solve how convenient
56、and accurate instructions approaching passengers, with automatic detection bus station, simulation and forecast station stops on vocals, the number of stops and the name of the text display function. System including mic
57、ro controller module, voice recording circuit, liquid crystal display module, the keyboard interface circuit, reset circuit and power supply. Systems use 51 SCM to control speech synthesis chip and LCD module. Platform d
58、ete</p><p> [Key words] Single-chip microcomputer,Voice prompt,Liquid crystal display,Bus stops </p><p><b> 附錄:源程序</b></p><p><b> 液晶初始化:</b></p>&l
59、t;p> #include"reg52.h"</p><p> #include"intrins.h"</p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> #define de
60、laynop() {_nop_();_nop_();_nop_();_nop_();}</p><p> sbit RS=P2^0;</p><p> sbit RW=P2^1;</p><p> sbit EN=P2^2;</p><p> bit LCD_busy_check();</p><p>
61、 void LCD_init();</p><p> void LCD_set_pos(uchar);</p><p> void LCD_Write_Command(uchar);</p><p> void LCD_write_data(uchar);</p><p> void delayms(uint ms)</p>
62、;<p><b> {</b></p><p><b> uchar t;</b></p><p> while(ms--) for(t=0;t<120;t++); </p><p><b> }</b></p><p> bit LCD_bus
63、y_check()</p><p><b> {</b></p><p> bit result;</p><p><b> RS=0;</b></p><p><b> RW=1;</b></p><p><b> EN=1;<
64、;/b></p><p> delaynop();</p><p> result=(bit)(P0 & 0x80);</p><p><b> EN=0;</b></p><p> return result;</p><p><b> }</b>
65、</p><p> void LCD_Write_Command(uchar cmd)</p><p><b> {</b></p><p> while(LCD_busy_check());</p><p><b> RS=0;</b></p><p><b&
66、gt; RW=0;</b></p><p><b> EN=0;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> P0=cmd;</b><
67、/p><p> delaynop();</p><p><b> EN=1;</b></p><p> delaynop();</p><p><b> EN=0;</b></p><p><b> }</b></p><p&g
68、t; void LCD_write_data(uchar str)</p><p><b> {</b></p><p> while(LCD_busy_check());</p><p><b> RS=1;</b></p><p><b> RW=0;</b>&l
69、t;/p><p><b> EN=0;</b></p><p><b> P0=str;</b></p><p> delaynop();</p><p><b> EN=1;</b></p><p> delaynop();</p>
70、<p><b> EN=0;</b></p><p><b> }</b></p><p> void LCD_init()</p><p><b> {</b></p><p> delayms(5); LCD_Write_Command(0x38);&
71、lt;/p><p> delayms(5); LCD_Write_Command(0x0c);</p><p> delayms(5); LCD_Write_Command(0x06);</p><p> delayms(5); LCD_Write_Command(0x01);</p><p> delayms(5); </p>
72、;<p><b> }</b></p><p> void LCD_set_pos(uchar position)</p><p><b> {</b></p><p> LCD_Write_Command(position | 0x80);</p><p><b>
73、 }</b></p><p> ISD4004主程序:</p><p> #include <reg52.h> </p><p> sbit SS =P1^0; //片選 </p><p> sbit MOSI=P1^1; //數(shù)據(jù)輸入 </p><p> sbit MI
74、SO=P1^2; //數(shù)據(jù)輸出 </p><p> sbit SCLK=P1^3; //ISD4004時(shí)鐘 </p><p> sbit INT =P1^4; //中斷 </p><p> sbit LED =P1^7; //指示燈 </p><p> sbit LED1=P1^6; //指示燈:亮是錄音/不亮是放音
75、 </p><p> sbit PR =P3^3; //錄音和放音選擇開(kāi)關(guān) </p><p> sbit STOP=P3^4; //復(fù)位 </p><p> sbit AN =P3^5; //執(zhí)行 </p><p> void delay(unsigned int time) //延遲n微秒 </p>
76、<p><b> { </b></p><p> while(time!=0) </p><p><b> { </b></p><p><b> time--; </b></p><p><b> } </b></
77、p><p><b> } </b></p><p> void delayms(unsigned int time) //延遲n毫秒 </p><p><b> { </b></p><p> TMOD=0x01; </p><p> for(time;t
78、ime>0;time--) </p><p><b> { </b></p><p> TH0=0xfc; </p><p> TL0=0x18; </p><p><b> TR0=1; </b></p><p> while(TF0!=
79、1) </p><p><b> {;} </b></p><p><b> TF0=0; </b></p><p><b> TR0=0; </b></p><p><b> } </b></p><p&g
80、t;<b> } </b></p><p> void isd_send(unsigned char isdx)//spi串行發(fā)送子程序,8位數(shù)據(jù) </p><p><b> { </b></p><p> unsigned char isx_counter; </p><p&g
81、t; SS=0;//ss=0,打開(kāi)spi通信端</p><p> SCLK=0; </p><p> for(isx_counter=0;isx_counter<8;isx_counter++)//先發(fā)低位再發(fā)高位,依次發(fā)送。 </p><p><b> { </b></p><p> if(
82、(isdx&0x01)==1) </p><p> MOSI=1; </p><p><b> else </b></p><p> MOSI=0; </p><p> isdx=isdx>>1; </p><p> SCLK=1; </
83、p><p> delay(2); </p><p> SCLK=0; </p><p> delay(2); </p><p><b> } </b></p><p><b> } </b></p><p> void is
84、d_stop()//stop指令(停止當(dāng)前操作) </p><p><b> { </b></p><p> delay(10); </p><p> isd_send(0x30); </p><p><b> SS=1; </b></p><p>
85、; delayms(50); </p><p><b> } </b></p><p> void isd_powerup()//發(fā)送上電指令 </p><p><b> { </b></p><p> delay(10); </p><p>&
86、lt;b> SS=0; </b></p><p> isd_send(0x20); </p><p><b> SS=1; </b></p><p> delayms(50); </p><p><b> } </b></p><p
87、> void isd_stopwrdn()//發(fā)送掉電指令 </p><p><b> { </b></p><p> delay(10); </p><p> isd_send(0x10); </p><p><b> SS=1; </b></p>
88、<p> delayms(50); </p><p><b> } </b></p><p> void isd_play()//發(fā)送play指令 </p><p><b> { </b></p><p><b> LED=0; </b>
89、;</p><p> isd_send(0xf0); </p><p><b> SS=1; </b></p><p><b> } </b></p><p> void isd_rec()//發(fā)送rec指令 </p><p><b> {
90、 </b></p><p><b> LED=0; </b></p><p> isd_send(0xb0); </p><p><b> SS=1; </b></p><p><b> } </b></p><p&g
91、t; void isd_setplay(unsigned char adl,unsigned char adh)//發(fā)送setplay指令 </p><p><b> { </b></p><p> delayms(1); </p><p> isd_send(adl); //發(fā)送放音起始地址低位 </p>
92、<p> delay(2); </p><p> isd_send(adh); //發(fā)送放音起始地址高位 </p><p> delay(2); </p><p> isd_send(0xe0); //發(fā)送setplay指令字節(jié) </p><p><b> SS=1; </b>&
93、lt;/p><p><b> } </b></p><p> void isd_setrec(unsigned char adl,unsigned char adh)//發(fā)送setrec指令 </p><p><b> { </b></p><p> delayms(1); &l
94、t;/p><p> isd_send(adl); //發(fā)送放音起始地址低位 </p><p> delay(2); </p><p> isd_send(adh); //發(fā)送放音起始地址高位 </p><p> delay(2); </p><p> isd_send(0xa0); //發(fā)送set
95、play指令字節(jié) </p><p><b> SS=1; </b></p><p><b> } </b></p><p> void isd_overflow()//芯片溢出,LED閃爍提醒停止錄音 </p><p><b> { </b><
96、/p><p> while(AN==0) </p><p><b> { </b></p><p><b> LED=1; </b></p><p> delayms(300); </p><p><b> LED=0; </b>
97、;</p><p> delayms(300); </p><p><b> } </b></p><p><b> } </b></p><p> unsigned char chk_isdovf()//檢查芯片是否溢出(讀OVF,并返回OVF值) </p>
98、<p><b> { </b></p><p><b> SS=0; </b></p><p> delay(2); </p><p> SCLK=0; </p><p> delay(2); </p><p> SCLK=1;
99、</p><p> SCLK=0; </p><p> delay(2); </p><p> if(MISO==1) </p><p><b> { </b></p><p> SCLK=0; </p><p> SS=1; //關(guān)閉spi
100、通信端 </p><p> isd_stop(); //發(fā)送stop指令 </p><p> return 1; //OVF為1,返回1 </p><p><b> } </b></p><p><b> else </b></p><p><
101、;b> { </b></p><p> SCLK=0; </p><p> SS=1; //關(guān)閉spi通信端 </p><p> isd_stop(); //發(fā)送stop指令 </p><p> return 0; //OVF為0,返回0 </p><p><b&g
102、t; } </b></p><p><b> } </b></p><p> void main(void) </p><p><b> { </b></p><p><b> unsigned </b></p><p&
103、gt; char ovflog; </p><p> while(1) </p><p><b> { </b></p><p> if(PR==0) {delayms(8);LED1=~LED1;while(PR==0);} </p><p> if(LED1==0)//如果PR=0則轉(zhuǎn)入錄音
104、部分 </p><p><b> { </b></p><p> if(AN==0) </p><p><b> { </b></p><p> isd_powerup(); //AN鍵按下,ISD上電并延遲50ms </p><p> isd_
105、stopwrdn(); </p><p> isd_powerup(); </p><p> LED1=0;//表示錄音模式 </p><p> delayms(500); //延遲500ms錄音 </p><p> isd_setrec(0x00,0x00); //發(fā)送0x0000h地址的setplay指令 &l
106、t;/p><p><b> do </b></p><p><b> { </b></p><p> isd_rec(); //發(fā)送rec指令 </p><p> while(AN==0) //等待錄音完畢 </p><p><b> {
107、</b></p><p> if(INT==0) //如果芯片溢出,進(jìn)行LED閃爍提示, </p><p> isd_overflow(); //如果取消錄音(松開(kāi)AN鍵)則停止錄音,芯片復(fù)位 </p><p><b> } </b></p><p> if(INT==0) </
108、p><p><b> break; </b></p><p> LED=1; //錄音完畢,LED熄滅 </p><p> isd_stop(); //發(fā)送停止命令 </p><p> while(AN==1) //如果AN再次按下,開(kāi)始錄制下一段語(yǔ)音 </p><p><
109、;b> { </b></p><p> if(isd_stop==0) //如果按下STOP按鍵,則芯片復(fù)位 </p><p><b> break; </b></p><p> if(AN==0) </p><p> delayms(500); </p>&
110、lt;p><b> } </b></p><p><b> } </b></p><p> while(AN==0); </p><p><b> } </b></p><p><b> } </b></p>
111、<p> if(LED1==1)//如果PR=0則轉(zhuǎn)入放音部分 //如果PR==1則轉(zhuǎn)入放音部分 </p><p><b> { </b></p><p> if(AN==0) </p><p><b> { </b></p><p> isd_powerup
112、(); //AN鍵按下,ISD上電并延遲50ms </p><p> isd_stopwrdn(); </p><p> isd_powerup(); </p><p> LED1=1;//表示錄音模式 </p><p> while(AN==0) </p><p><b> {
113、;} </b></p><p> isd_setplay(0x00,0x00); //發(fā)送setplay指令,從0x0000地址開(kāi)始放音 </p><p><b> do </b></p><p><b> { </b></p><p> isd_play(); /
114、/發(fā)送放音指令 </p><p> delay(20); </p><p> while(INT==1) //等待放音完畢的EOM中斷信號(hào) </p><p><b> {;} </b></p><p><b> LED=1; </b></p><p&g
115、t; isd_stop(); //放音完畢,發(fā)送stop指令 </p><p> if (ovflog=chk_isdovf()) //檢查芯片是否溢出 ,如溢出則停止放音,芯片復(fù)位 </p><p><b> break; </b></p><p> while(AN==1) //等待AN鍵再次按下 </p>
116、;<p><b> { </b></p><p> if(isd_stop==0) </p><p><b> break; </b></p><p> if(AN==0) </p><p> delayms(20); </p><p&
117、gt;<b> } </b></p><p><b> } </b></p><p> while(AN==0); // AN鍵再次按下,播放下一段語(yǔ)音 </p><p> // isd_stop(); </p><p> // isd_stopwrdn(); <
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公交車(chē)自動(dòng)報(bào)站系統(tǒng)畢業(yè)設(shè)計(jì)
- 公交車(chē)自動(dòng)報(bào)站的系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---公交車(chē)自動(dòng)報(bào)站系統(tǒng)的設(shè)計(jì)
- 公交車(chē)自動(dòng)報(bào)站系統(tǒng)的設(shè)計(jì)-畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--公交車(chē)智能報(bào)站
- 畢業(yè)設(shè)計(jì)---公交車(chē)報(bào)站系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--公交車(chē)自動(dòng)報(bào)站系統(tǒng)的硬件設(shè)計(jì)原理
- 公交車(chē)自動(dòng)報(bào)站系統(tǒng)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的公交車(chē)自動(dòng)報(bào)站系統(tǒng)
- 公交車(chē)自動(dòng)報(bào)站系統(tǒng)開(kāi)題報(bào)告
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的公交車(chē)自動(dòng)報(bào)站系統(tǒng)
- 畢業(yè)設(shè)計(jì)基于單片機(jī)的公交車(chē)自動(dòng)報(bào)站系統(tǒng)
- 外文翻譯--公交車(chē)自動(dòng)報(bào)站系統(tǒng)
- 基于單片機(jī)的公交車(chē)自動(dòng)報(bào)站系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 公交車(chē)語(yǔ)音報(bào)站器的設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 公交車(chē)站自動(dòng)報(bào)站器 畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的公交車(chē)報(bào)站系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-基于單片機(jī)的公交車(chē)報(bào)站系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的公交車(chē)報(bào)站系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)公交車(chē)語(yǔ)音報(bào)站系統(tǒng)畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論