版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p> 1 系統(tǒng)總體方案3</p><p> 1.1 公交車報(bào)站器可選方案3</p><p> 1.2 設(shè)計(jì)方案的可行性分析和選擇5</p><p> 1.3 公交車報(bào)站器的硬件框圖5</p><p> 2 系統(tǒng)硬件設(shè)計(jì)6&
2、lt;/p><p> 2.1 SPCE061A簡(jiǎn)介6</p><p> 2.2 系統(tǒng)電源設(shè)計(jì)10</p><p> 2.3 語(yǔ)音存儲(chǔ)電路設(shè)計(jì)10</p><p> 2.4 音頻輸出電路設(shè)計(jì)12</p><p> 2.5 顯示電路設(shè)計(jì)13</p><p> 2.6 鍵盤電路設(shè)計(jì)
3、14</p><p> 3 系統(tǒng)軟件設(shè)計(jì)15</p><p> 3.1 語(yǔ)音處理15</p><p> 3.2 主函數(shù)流程圖17</p><p> 3.3 初始化函數(shù)24</p><p> 3.4 語(yǔ)音播放的實(shí)現(xiàn)29</p><p> 3.5 更新時(shí)間32</p&g
4、t;<p> 3.6 設(shè)置時(shí)間33</p><p><b> 參考文獻(xiàn)46</b></p><p><b> 謝辭47</b></p><p> 附錄一 公交車報(bào)站器電路圖49</p><p> 附錄二 公交車報(bào)站器程序50</p><p>
5、 在當(dāng)今社會(huì),即使在私家車越來(lái)越多的今天,公交車仍然是人們出行的首選,因?yàn)楣卉嚲哂蟹奖恪⒖旖?、車票便宜等?yōu)點(diǎn)。傳統(tǒng)的公交車報(bào)站主要由售票員報(bào)站,但是有些售票員有著濃重的地方口音,給外地人乘坐公交車造成了困難,另外,隨著無(wú)人售票車逐漸增多,公交車報(bào)站器就越顯得重要了。 </p><p> 目前我國(guó)公交車輛己從原有的人工語(yǔ)音報(bào)站發(fā)展到現(xiàn)在的自動(dòng)語(yǔ)音報(bào)站。就報(bào)站語(yǔ)音而論,絕大多數(shù)報(bào)站裝置都采用IsD系列的語(yǔ)音芯片
6、,部分報(bào)站產(chǎn)品也有采用最新的數(shù)字語(yǔ)音處理合成技術(shù),兩者各有優(yōu)缺點(diǎn)。前者成本低,但音質(zhì)較差,且更改報(bào)站信息不靈活,當(dāng)公交車輛臨時(shí)改道時(shí)必須重新對(duì)語(yǔ)音芯片編程;后者受信息容量、語(yǔ)音音質(zhì)的限制,且更換信息仍需專業(yè)設(shè)備。因此設(shè)計(jì)一款能夠方便地更換報(bào)站信息、播放高音質(zhì)語(yǔ)音信息的公交車報(bào)站器愈顯重要。</p><p> 本方案利用單片機(jī)的語(yǔ)音處理功能,以及其強(qiáng)大的處理能力,完成語(yǔ)音的合成技術(shù),再配合存儲(chǔ)器 ,擴(kuò)大存儲(chǔ)容量,
7、很容就可以實(shí)現(xiàn)公交車報(bào)站器,從而為市民提供了更加人性化的服務(wù)。這些優(yōu)點(diǎn)使得本方案成為制作公交報(bào)站器一種最經(jīng)濟(jì)實(shí)用的選擇。</p><p><b> 1 系統(tǒng)總體方案</b></p><p> 公交報(bào)站系統(tǒng)的設(shè)計(jì)要求報(bào)站系統(tǒng)可以完整地播放一條公交線路的站名??梢栽陲@示屏上顯示當(dāng)前的時(shí)間,具有時(shí)間日期的設(shè)置功能,還可以播放音樂(lè)或廣告。經(jīng)過(guò)查閱資料,可選方案有基于MP3
8、/U盤的公交車報(bào)站設(shè)計(jì),基于GPS的公交車報(bào)站器系統(tǒng)設(shè)計(jì)和基于SPCE061A的公交車報(bào)站系統(tǒng)設(shè)計(jì)等.</p><p> 1.1 公交車報(bào)站器可選方案</p><p> 1.1.1 基于MP3/U盤的公交車報(bào)站設(shè)計(jì)方案</p><p> 采用AT89C51SND1C單片機(jī)(內(nèi)部集成MP3解碼器)作為主控CPU及解碼MP3數(shù)據(jù),實(shí)現(xiàn)對(duì)報(bào)站信息播放、點(diǎn)陣字符顯
9、示、文件存儲(chǔ)以及用作優(yōu)盤功能時(shí)USB與PC機(jī)聯(lián)機(jī)的控制。利用FAT16在K9F1208上實(shí)現(xiàn)文件系統(tǒng),形成一個(gè)Windows可識(shí)別訪問(wèn)的64MB尋址區(qū)域。結(jié)合USB控制器,系統(tǒng)可作為優(yōu)盤在Windows下使用,從而實(shí)現(xiàn)在Windows下對(duì)文件的管理以及數(shù)據(jù)存儲(chǔ)功能。這樣通過(guò)程序的設(shè)定,公交車可通過(guò)鍵盤實(shí)現(xiàn)MP3格式聲音信號(hào)的報(bào)站以及各種信息的廣播。列表文件在系統(tǒng)對(duì)閃存初始化時(shí)生成,系統(tǒng)在對(duì)閃存進(jìn)行格式化的同時(shí)生成該名為SCHED-ULE
10、.LST的列表文件。該列表文件可在Windows下利用記事本打開,編輯所需播放的MP3名稱。播放報(bào)站信息的同時(shí)通過(guò)16個(gè)16×16的LED點(diǎn)陣顯示相應(yīng)的播放內(nèi)容。系統(tǒng)框圖如圖1.1所示。</p><p> 圖1.1 方案一系統(tǒng)框圖</p><p> 1.1.2 基于GPS的公交車自動(dòng)報(bào)站系統(tǒng)設(shè)計(jì)方案</p><p> GPS的公交車自動(dòng)報(bào)站系統(tǒng)利用G
11、PS,通過(guò)GPS接收單元接收衛(wèi)星發(fā)送的信號(hào)確認(rèn)車輛的動(dòng)態(tài)位置(經(jīng)度、緯度)、時(shí)間、狀態(tài)等信息,與公交線路信息庫(kù)中存儲(chǔ)的車站的位置進(jìn)行比較,根據(jù)預(yù)先設(shè)定的距離和規(guī)則向乘客通報(bào)車站和線路的語(yǔ)音信息;并且能把車輛運(yùn)行的詳細(xì)情況記錄下來(lái),對(duì)公共汽車的運(yùn)營(yíng)狀況進(jìn)行全程監(jiān)控并記錄。系統(tǒng)的組成見(jiàn)圖1.2。</p><p><b> 天線</b></p><p> 圖1.2 方案
12、二系統(tǒng)框圖</p><p> 1.1.3 基于SPCE061A的公交車報(bào)站系統(tǒng)設(shè)計(jì)方案</p><p> 系統(tǒng)以 SPCE061A 為核心,可以劃分為鍵盤輸入、數(shù)碼管顯示、SPR4096資源存儲(chǔ)與語(yǔ)音播放等部分,如圖1.3所示。SPCE061A作為整個(gè)系統(tǒng)的核心控制,并且負(fù)責(zé)語(yǔ)音的輸出。SPR4096 作為語(yǔ)音資源的存儲(chǔ)介質(zhì)。LED鍵盤顯示模組作為時(shí)間顯示與用戶輸出設(shè)備.使用SPCE0
13、61A可以非常方便靈活的實(shí)現(xiàn)語(yǔ)音的錄放。兩路10位精度的DAC,只需要外接功放(SPY0030A)即可完成語(yǔ)音的播放。</p><p> 圖 1.3 方案三系統(tǒng)框圖 </p><p> 1.2 設(shè)計(jì)方案的可行性分析和選擇</p><p> 這三種方案各有各的優(yōu)勢(shì)。基于MP3/U盤的公交報(bào)站系統(tǒng)能夠作為U盤與電腦連接,可自行下載報(bào)站器的播放內(nèi)容,也可方便地更改播
14、放內(nèi)容,播放高品質(zhì)的音樂(lè),無(wú)報(bào)站播放時(shí)可作為MP3播放器,提高公交車服務(wù)質(zhì)量。但是MP3操作頁(yè)面對(duì)于司機(jī)來(lái)說(shuō)太小,分散過(guò)多的注意力,實(shí)用性不夠?;贕PS的公交報(bào)站系統(tǒng)用先進(jìn)的衛(wèi)星定位,進(jìn)站、出站自動(dòng)播報(bào)站名及服務(wù)用語(yǔ),準(zhǔn)確、及時(shí)、完全不需要人工介入,實(shí)現(xiàn)了公交車報(bào)站器的完全智能化。國(guó)內(nèi)GPS語(yǔ)音自動(dòng)報(bào)站系統(tǒng)處于試驗(yàn)階段,可行性太小。基于SPCE061A公交報(bào)站系統(tǒng),SPCE061A芯片有語(yǔ)音處理能力使得系統(tǒng)設(shè)計(jì)簡(jiǎn)化,外圍電路較少;另外
15、具有一套指令系統(tǒng)和集成開發(fā)環(huán)境易學(xué)易用效率較高。SPR4096能夠存儲(chǔ)大量語(yǔ)音數(shù)據(jù),符合任務(wù)書所給要求。</p><p> 1.3 公交車報(bào)站器的硬件框圖</p><p> 查閱各種相關(guān)資料,設(shè)計(jì)出公交報(bào)站系統(tǒng)。系統(tǒng)電路原理圖見(jiàn)附錄一。</p><p><b> 2 系統(tǒng)硬件設(shè)計(jì)</b></p><p> 硬件電
16、路設(shè)計(jì)可以分為單片機(jī)控制系統(tǒng)設(shè)計(jì);語(yǔ)音存儲(chǔ)電路設(shè)計(jì);音頻輸出電路設(shè)計(jì);顯示電路設(shè)計(jì)。</p><p> 2.1 SPCE061A簡(jiǎn)介 </p><p> SPCE061A型單片機(jī)是凌陽(yáng)科技公司推出的一款16位微處理器,具有體積小、集成度高、易擴(kuò)展、可靠性高、功耗低、結(jié)構(gòu)簡(jiǎn)單、中斷處理能力強(qiáng)等特點(diǎn),內(nèi)嵌32K字閃存FLASH,處理速度高,能夠很方便的完成普通單片機(jī)的功能,尤其適應(yīng)于數(shù)字語(yǔ)
17、音播報(bào)和識(shí)別等應(yīng)用領(lǐng)域,是數(shù)字語(yǔ)音識(shí)別與語(yǔ)音信號(hào)處理的理想產(chǎn)品,得到廣泛的應(yīng)用。</p><p> SPCE061A單片機(jī)的主要性能有:</p><p> ??16位 u’nSP 微處理器 </p><p> ??工作電壓(CPU)VDD 為 3.0~3.6V,(I/O)VDDH為 3.0~5.5V </p><p> ??CPU時(shí)鐘
18、:0.32~49.152MHz </p><p> ??內(nèi)置 2K字 SRAM </p><p> ??內(nèi)置 32K字FLASH </p><p> ??可編程音頻處理 </p><p><b> ??晶體振蕩器 </b></p><p> ??系統(tǒng)處于備用狀態(tài)下(時(shí)鐘處于停止?fàn)顟B(tài)),耗
19、電僅為 2uA/3.6V </p><p> ??2 個(gè)16 位可編程定時(shí)器/計(jì)數(shù)器(可自動(dòng)預(yù)置初始計(jì)數(shù)值) </p><p> ??2 個(gè)10位 DAC(數(shù)/模轉(zhuǎn)換)輸出通道 </p><p> ??32 位通用可編程輸入/輸出通道 </p><p> ??14 個(gè)中斷源可來(lái)自定時(shí)器 A/B、時(shí)基、2 個(gè)外部時(shí)鐘源輸入和鍵喚醒 &l
20、t;/p><p> ??具備觸鍵喚醒的功能 </p><p> ??使用凌陽(yáng)音頻編碼 SACM_S480 可以播放壓縮的語(yǔ)音資源 </p><p> ??鎖相環(huán) PLL 振蕩器提供系統(tǒng)時(shí)鐘信號(hào) </p><p> ??32768Hz 實(shí)時(shí)時(shí)鐘 </p><p> ??7 通道10 位電壓模/數(shù)轉(zhuǎn)換器(ADC)和單
21、通道聲音模/數(shù)轉(zhuǎn)換器 </p><p> ??聲音模/數(shù)轉(zhuǎn)換器輸入通道內(nèi)置麥克風(fēng)放大器,并具有自動(dòng)增益控制(AGC)功能 </p><p> ??具備串行設(shè)備接口 </p><p> ??具備低電壓復(fù)位功能和低電壓檢測(cè)功能 </p><p> ??內(nèi)置在線仿真電路接口 </p><p> ??具有 Watch
22、Dog 功能 </p><p> 圖2.1為 SPCE061A單片機(jī)的內(nèi)部結(jié)構(gòu)框圖: </p><p> 圖 2.1 SPCE061A 內(nèi)部結(jié)構(gòu)圖 </p><p> SPCE061A引腳排列如圖2.2所示,引腳功能如表2.1所示</p><p> 圖2.2 SPCE061A引腳圖</p><p> 表 2.
23、1 SPCE061A引腳功能表</p><p> 2.2 系統(tǒng)電源設(shè)計(jì) </p><p> 圖2.3是電源部分的電路,61單片機(jī)的內(nèi)核工作電壓是3.3V,而IO口電壓可以是3.3V也可以是5V。公交蓄電池12V直流電壓經(jīng)過(guò)7805產(chǎn)生5V電壓,再經(jīng)過(guò)SPY0029后產(chǎn)生3.3V電壓分別給系統(tǒng)供電。</p><p> LM7805是常用的三端正電源穩(wěn)壓電路,使用
24、的是TO-220封裝,能提供直流電源5V的輸出電壓,內(nèi)含短路和熱過(guò)載保護(hù)電路,應(yīng)用范圍非常廣泛。帶散熱片時(shí)能持續(xù)提供1A的電流,如果使用外圍器件,它還能提供不同的電壓和電流。它有三個(gè)引腳,引腳1為輸入電壓,引腳2為+5V輸出電壓,引腳3接地。</p><p> SPY0029是凌陽(yáng)公司設(shè)計(jì)的電壓調(diào)整IC,采用CMOS工藝,具有靜態(tài)電流低,驅(qū)動(dòng)能力強(qiáng),線性調(diào)整出色等特點(diǎn)。它有三個(gè)引腳,引腳1接地,引腳2為輸入電壓
25、,引腳3為輸出電壓。</p><p> 圖2.3 單片機(jī)電源電路</p><p> 2.3 語(yǔ)音存儲(chǔ)電路設(shè)計(jì) </p><p> 因?yàn)镾PCE061A的FLASH只有32K字,要存放大量的語(yǔ)音資源,就要外擴(kuò)存儲(chǔ)器。本次設(shè)計(jì)選用SPR4096芯片。</p><p> 2.3.1 SPR4096芯片簡(jiǎn)介 </p><
26、p> SPR4096是一個(gè)高性能的4M-bit(512K×8-bit)FLASH,分為256個(gè)扇區(qū)(Sector),每個(gè)扇區(qū)為2KB。SPR4096還內(nèi)置了一個(gè)4K×8bit的SRAM。</p><p> SPR4096內(nèi)置了一個(gè)總線存儲(chǔ)器接口和一個(gè)串行接口,它允許單片機(jī)通過(guò)8bit并行模式或者1bit串行模式訪問(wèn)FLASH/SRAM存儲(chǔ)區(qū)。本設(shè)計(jì)使用品行模式,串行接口的工作頻率可達(dá)
27、5MHz.有兩個(gè)電源輸入端VDDI和VDDQ.VDDI是給內(nèi)部FLASH和控制邏輯供電的;VDDQ是專門為I/O供電的。最大讀電流為2mA。</p><p> SPR4096按串行接口模式工作,要把CF2~CF0 均接高電平。CF7為低電平時(shí)選中FLASH,高電平時(shí)選中SRAM.</p><p> 3.3.2 語(yǔ)音存儲(chǔ)電路 </p><p> 圖2.4是SPR
28、4096與單片機(jī)的硬件連接圖。SPR4096 的SCK接SPCE061A的IOB0,SDA接 SPCE061A的IOB1。CF0~CF2 接高電平,CF7 接低電平,選中FLASH。 </p><p> 圖2.4 SPR4096電路圖</p><p> 2.4 音頻輸出電路設(shè)計(jì)</p><p> SPCE061A內(nèi)置2路10位精度的 DAC,芯片輸出的音頻信號(hào)
29、功率較小,在報(bào)站時(shí)要求比較大的聲音,就要對(duì)芯片輸出的聲音信號(hào)進(jìn)行功率放大,因此電路選用了SPY0030音頻功率放大電路。</p><p> 圖2.5為音頻輸出電路。SPCE061A的音頻輸出采用雙通道數(shù)/模轉(zhuǎn)換DAC方式,即數(shù)字信號(hào)通過(guò)10位DAC轉(zhuǎn)換成3mA驅(qū)動(dòng)的電流模擬信號(hào)輸出。語(yǔ)音提示輸出直接采用DAC通道,經(jīng)信號(hào)放大后,由SPEAKER(揚(yáng)聲器)輸出。</p><p> 圖2.
30、5 音頻輸出電路</p><p> SPY0030芯片是一個(gè)音頻驅(qū)動(dòng),其增益可以通過(guò)外部電阻(最長(zhǎng)增益調(diào)整為20)。它的輸出功率約700mW,電壓可調(diào)范圍很廣(2.4V-6.8V),具有雙端輸出模式,低失真,低待機(jī)電流等特點(diǎn)。簡(jiǎn)單易用,僅需2.4V(兩顆電池)即可工作。圖2.6為SPY0030芯片的引腳圖。表2.2為引腳功能表。</p><p> 圖 2.6 SPY0030芯片引腳圖&
31、lt;/p><p> 表2.2 SPY0030芯片引腳功能表</p><p> 2.5 顯示電路設(shè)計(jì) </p><p> 圖2.7為顯示電路圖。整個(gè)顯示過(guò)程中采用動(dòng)態(tài)顯示,即六位顯示器逐一輪流顯示,每位持續(xù) 1ms,10ms或 20ms之內(nèi)循環(huán)一遍,刷新速度不要小于每秒三十楨。由于視覺(jué)暫留,我們看到的便是6只顯示器同時(shí)在顯示。</p><p&g
32、t; 圖2.7 顯示電路圖 </p><p> 顯示電路中只要有ULN2003A、WD0521CX和WD05643CX等元器件組成。</p><p> ULN2003A:其內(nèi)部為三極管陣列,它的IN 腳相當(dāng)于三極管的B極,OUT較相當(dāng)于三極管的C極。若IN腳輸入高電平,對(duì)應(yīng)的OUT腳接地;IN腳輸入低電平,對(duì)應(yīng)的OUT腳截止輸出。 </p><p>
33、WD0521CX:共陰極2位數(shù)碼管.a~dp為數(shù)碼管的段信號(hào),G1、G2為2位數(shù)碼管的位信號(hào)。段信號(hào)高有效,位信號(hào)低有效。</p><p> WD05643CX:共陰極4位數(shù)碼管.a~dp為數(shù)碼管的段信號(hào),d1、d2為時(shí)鐘冒號(hào)的段信號(hào);G1~G4 為4位數(shù)碼管的位信號(hào),G5為時(shí)鐘冒號(hào)的位信號(hào)。段信號(hào)高有效,位信號(hào)低有效。</p><p> 2.6 鍵盤電路設(shè)計(jì)</p>&
34、lt;p> 鍵盤輸入電路如圖2.8所示。各按鍵功能不同,根據(jù)各按鍵功能列出表2.3.</p><p> 圖 2.8 鍵盤輸入電路 </p><p> 表2.3 鍵盤各按鍵功能表</p><p><b> 3 系統(tǒng)軟件設(shè)計(jì) </b></p><p><b> 3.1 語(yǔ)音處理</b>&
35、lt;/p><p> 語(yǔ)音處理是建立在語(yǔ)言學(xué)和數(shù)字信號(hào)處理基礎(chǔ)之上的綜合學(xué)科。語(yǔ)音處理大致可以分為 A/D 采樣輸入、編碼處理、存儲(chǔ)、解碼處理以及 D/A 等。</p><p> SPCE061A 是16位單片機(jī),有2個(gè)16位定時(shí)/計(jì)數(shù)器;CPU 時(shí)鐘最高達(dá)49MHz ,16 位乘法器和內(nèi)積運(yùn)算,有能力執(zhí)行復(fù)雜壓縮算法,有完善的語(yǔ)音處理函數(shù)庫(kù)支持等。這些都無(wú)疑為語(yǔ)音的播放、錄放、合成及識(shí)別
36、提供了條件。</p><p> 3.1.1 壓縮存儲(chǔ)</p><p> 采樣輸入是指音頻采樣和量化,將模擬的(連續(xù)的)聲音波形數(shù)字化(離散化);語(yǔ)音信號(hào)的時(shí)域分析,直接利用語(yǔ)音信號(hào)的時(shí)域波形進(jìn)行分析;語(yǔ)音信號(hào)的頻域分析,對(duì)語(yǔ)音信號(hào)的頻譜、功率譜等進(jìn)行分析;語(yǔ)音信號(hào)的線性預(yù)測(cè)分析,把語(yǔ)音信號(hào)用一個(gè)模型來(lái)表示,利用模型的參數(shù)來(lái)描述語(yǔ)音信號(hào)的波形和頻譜特性。</p><p
37、> 編碼處理采用壓縮編碼,它具有高效存儲(chǔ)和高速傳輸?shù)忍攸c(diǎn)。壓縮編碼可分為三類:</p><p> 1. 波形編碼:sub-band即SACM_A2000。特點(diǎn):高質(zhì)量、高碼率,適于高保真語(yǔ)音/音樂(lè)。 </p><p> 2. 參數(shù)編碼:聲碼器(vocoder)模型表達(dá),抽取參數(shù)與激勵(lì)信號(hào)進(jìn)行編碼。如:SACM_S240。特點(diǎn):壓縮比大,計(jì)算量大,音質(zhì)不高,廉價(jià)! </
38、p><p> 3. 混合編碼:CELP即SACM_S480。特點(diǎn):綜合參數(shù)和波形編碼之優(yōu)點(diǎn)。 </p><p> 本次系統(tǒng)設(shè)計(jì)方案采用混合編碼方式。</p><p> 壓縮分無(wú)損壓縮和有損壓縮。無(wú)損壓縮一般指:磁盤文件,壓縮比低:2:1~4:1。而有損壓縮則是指:音/視頻文件,壓縮比可高達(dá) 100:1。 </p><p> 凌陽(yáng)音頻
39、壓縮算法根據(jù)不同的壓縮比分為以下幾種: </p><p> SACM_A2000:壓縮比為8:1,8:1.25,8:1.5 </p><p> SACM_S480: 壓縮比為80:3,80:4.5 </p><p> SACM_S240: 壓縮比為80:1.5 </p><p> 按音質(zhì)排序:A2000>S480>
40、;S240 </p><p> 壓縮算法中SACM_A2000、 SACM_S480、 SACM_S240 主要是用來(lái)放音,可用于語(yǔ)音提示,而DVR則用來(lái)錄放音。</p><p> 3.1.2 語(yǔ)音識(shí)別 </p><p> 語(yǔ)音的識(shí)別可分為下列幾個(gè)部分:預(yù)處理,語(yǔ)音信號(hào)數(shù)字化;特征提取,抽取反應(yīng)語(yǔ)音本質(zhì)的特征參數(shù),形成特征矢量序列;語(yǔ)音模型庫(kù),從一個(gè)或多個(gè)
41、講話者多次重復(fù)講話中提取的語(yǔ)音參數(shù)模板;模式匹配,把輸入語(yǔ)音的特征參數(shù)與語(yǔ)音模型庫(kù)進(jìn)行比較分析,得到識(shí)別結(jié)果。識(shí)別的過(guò)程可用圖3.1表示。</p><p> 圖3.1 語(yǔ)音的識(shí)別</p><p> 3.1.3 語(yǔ)音合成</p><p> 語(yǔ)音合成是將以其他方式表示或存儲(chǔ)的信息轉(zhuǎn)換成語(yǔ)音。最常見(jiàn)的語(yǔ)音合成技術(shù)是將文本轉(zhuǎn)換為語(yǔ)音(TTS)。文本轉(zhuǎn)換成語(yǔ)音如圖3.2
42、所示。</p><p> 圖3.2 文本轉(zhuǎn)換成語(yǔ)音圖</p><p> 3.2 主函數(shù)流程圖</p><p> 在主函數(shù)中完成SPR4096 的初始化、鍵盤、顯示的初始化,并且進(jìn)行顯示時(shí)間與播報(bào)公交車報(bào)站的站點(diǎn),然后進(jìn)入循環(huán)根據(jù)鍵盤的值執(zhí)行相關(guān)的操作。</p><p> 主函數(shù)流程圖如圖3.3所示。</p><p&
43、gt; 圖3.3 主函數(shù)流程圖 </p><p><b> 主函數(shù)程序:</b></p><p> int main(void)</p><p><b> {</b></p><p> unsigned int uiKey;//鍵盤值</p><p> u
44、nsigned int uiOn_Off;//數(shù)碼管顯示或不顯示標(biāo)志</p><p> unsigned int uiKey1_Count;//key1按下次數(shù)</p><p> unsigned int uiKey2_Count;//key2按下次數(shù)</p><p> unsigned int uiflag;//按鍵key1、key2的奇
45、偶標(biāo)志</p><p> unsigned int uiTemp;//臨時(shí)變量</p><p> uiOn_Off = 0;//局部變量初始化</p><p> uiKey1_Count = 0;//</p><p> uiKey2_Count = 16;//</p><p> uifla
46、g = 0;</p><p> SP_SIOInitial();//初始化SPR模組,SPR4096</p><p> DIG_Init();//初始化數(shù)碼管</p><p> Key_Init();//初始化鍵盤</p><p> Time_Init();//初始化顯示時(shí)間</p><p
47、> DIG_Set(1,0);</p><p> DIG_Set(2,0);</p><p> DIG_Set(3,Data[uiHour_H]);</p><p> DIG_Set(4,Data[uiHour_L]);</p><p> DIG_Set(5,Data[uiMinite_H]);</p><
48、p> DIG_Set(6,Data[uiMinite_L]);</p><p> Broadcast(52);//播放站點(diǎn)</p><p><b> while(1)</b></p><p><b> {</b></p><p> if(uiDisp == 0)//顯示時(shí)
49、間</p><p><b> {</b></p><p> DIG_Set(1,0);</p><p> DIG_Set(2,0);</p><p> DIG_Set(3,Data[uiHour_H]);</p><p> DIG_Set(4,Data[uiHour_L]);</p
50、><p> DIG_Set(5,Data[uiMinite_H]);</p><p> DIG_Set(6,Data[uiMinite_L]);</p><p><b> }</b></p><p> if(uiDisp == 1)//顯示月日</p><p><b> {&l
51、t;/b></p><p> DIG_Set(1,Data[uiMonth_H]);</p><p> DIG_Set(2,Data[uiMonth_L]);</p><p> DIG_Set(3,0x0077);</p><p> DIG_Set(4,Data[uiDay_H]);</p><p>
52、DIG_Set(5,Data[uiDay_L]);</p><p> DIG_Set(6,0x007f);</p><p><b> }</b></p><p> if(uiDisp == 2)//顯示年</p><p><b> {</b></p><p>
53、DIG_Set(1,0x0040);</p><p> DIG_Set(2,Data[uiYear_H]);</p><p> DIG_Set(3,Data[uiYear_MH]);</p><p> DIG_Set(4,Data[uiYear_ML]);</p><p> DIG_Set(5,Data[uiYear_L]);<
54、/p><p> DIG_Set(6,0x0040);</p><p><b> }</b></p><p> uiKey = Key_Get();//得到鍵值,掃建程序在128Hz中斷中調(diào)用</p><p> switch(uiKey)</p><p><b> {</
55、b></p><p> case KEY1:</p><p> uiA2000_S480 = 0;//選擇S480放音,在中斷FIQ</p><p> uiKey = 0;</p><p> if(uiflag < 1)</p><p><b> {</b></
56、p><p> uiKey1_Count++;</p><p> NextStation(uiKey1_Count);//播放提示下一站***</p><p> uiflag = 1;</p><p><b> }</b></p><p><b> else</b>&l
57、t;/p><p><b> {</b></p><p> uiflag = 0;</p><p> ComingStation(uiKey1_Count);//****站到了***</p><p><b> }</b></p><p> if(uiKey1_Count
58、== 16)</p><p><b> {</b></p><p> uiKey1_Count = 0;//如果是終點(diǎn)站,重新初始化</p><p><b> }</b></p><p><b> break;</b></p><p>
59、case KEY2:</p><p> uiA2000_S480 = 0;</p><p> if(uiflag == 0)</p><p><b> {</b></p><p> uiKey2_Count--;</p><p> NextStation(uiKey2_Count);&l
60、t;/p><p> uiflag = 1;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> uiflag = 0;</p><p>
61、 ComingStation(uiKey2_Count);</p><p><b> }</b></p><p> if(uiKey2_Count == 0)</p><p><b> {</b></p><p> uiKey2_Count = 16;</p><p>
62、;<b> }</b></p><p><b> break;</b></p><p> case KEY3:</p><p> uiA2000_S480 = 0;</p><p> PlaySnd_S480(65,3);//播放提示語(yǔ),車在運(yùn)行中,請(qǐng)做好扶穩(wěn)</p>&
63、lt;p><b> break;</b></p><p> case KEY4:</p><p> uiA2000_S480 = 0;</p><p> PlaySnd_S480(67,3);//請(qǐng)讓座</p><p><b> break;</b></p>&
64、lt;p> case KEY5:</p><p><b> //廣告或娛樂(lè)</b></p><p> uiA2000_S480 = 1;</p><p> PlaySnd_A2000(70,3);</p><p><b> break;</b></p><p>
65、; case KEY6:</p><p> g_4Hz_On = 1;//進(jìn)入4Hz中斷代碼,實(shí)現(xiàn)閃爍效果</p><p> uiSetflag++;</p><p> Set_Time();//設(shè)置時(shí)間</p><p><b> break;</b></p><p>
66、 case KEY7:</p><p> uiKey = 0;</p><p> uiDisp++;//切換顯示時(shí)間/月日/年</p><p> if(uiDisp == 3)</p><p> uiDisp = 0;</p><p> if(uiDisp == 0)</p>&l
67、t;p><b> {</b></p><p> uiTemp = *P_INT_Ctrl_New;//打開2Hz中斷,顯示秒針</p><p> uiTemp |= C_IRQ5_2Hz;</p><p> *P_INT_Ctrl_New = uiTemp;</p><p><b> }<
68、;/b></p><p><b> else</b></p><p><b> {</b></p><p> uiTemp = *P_INT_Ctrl_New;//關(guān)閉2Hz中斷,不顯示秒針</p><p> uiTemp &= 0xfffb;</p><
69、p> *P_INT_Ctrl_New = uiTemp;</p><p> uiTemp = *P_IOB_Buffer;</p><p> uiTemp &= 0xfffb;</p><p> *P_IOB_Data = uiTemp;</p><p><b> }</b></p>
70、<p><b> break;</b></p><p> case KEY8:</p><p> if(uiOn_Off == 0)</p><p><b> {</b></p><p> DIG_Off();//關(guān)閉數(shù)碼管</p><p>
71、 uiOn_Off = 1;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> DIG_On();//打開數(shù)碼管</p><p> uiOn_Of
72、f = 0;</p><p><b> }</b></p><p><b> break;</b></p><p><b> default:</b></p><p><b> break;</b></p><p>&l
73、t;b> }</b></p><p> *P_Watchdog_Clear = 0x0001;//清看門狗</p><p><b> }</b></p><p><b> }</b></p><p> 3.3 初始化函數(shù) </p><p>
74、 系統(tǒng)要對(duì) SPR4096、鍵盤、顯示、時(shí)間初始化。</p><p> SPR4096初始化流程圖如圖3.4所示。</p><p> 圖3.4 spr4096 初始化 </p><p> SPR4096初始化程序如下:</p><p> .PUBLIC_SP_SIOInitial</p><p>
75、 _SP_SIOInitial:.PROC</p><p><b> //系統(tǒng)時(shí)鐘設(shè)定</b></p><p> r1 = 0x0098; //Fosc=49mHz </p><p> [P_SystemClock] = r1;</p><p> r1 = [P_IOB_Dir];</p&
76、gt;<p> r1 |= 1;//set bit0 output for sck</p><p> [P_IOB_Dir] = r1;</p><p> r1 = [P_IOB_Attrib];</p><p> r1 |= 1;//buffer output</p><p> [P_IOB_
77、Attrib] = r1;</p><p> r1 = [P_IOB_Buffer];</p><p> r1 |= 1;//output high</p><p> [P_IOB_Data] = r1;</p><p><b> retf</b></p><p><b&
78、gt; .ENDP</b></p><p> 鍵盤初始化流程圖如圖3.5所示,</p><p> 圖3.5 鍵盤初始化 </p><p> 鍵盤初始化程序如下: </p><p> F_Key_Init:</p><p> _Key_Init:</p><p> pus
79、h r1 to [sp]</p><p><b> INT Off</b></p><p> r1 = [P_Key_Dir]// 初始化IO為下拉輸入</p><p> r1 &= ~Key_ALL</p><p> [P_Key_Dir] = r1</p><p>
80、r1 = [P_Key_Attrib]</p><p> r1 &= ~Key_ALL</p><p> [P_Key_Attrib] = r1</p><p><b> r1 = 0</b></p><p> [ScanCnt] = r1// 初始化變量</p><p>
81、; [KeyCode] = r1</p><p> [KeyUp] = r1</p><p> r1 = C_TMB2_128Hz// 開啟IRQ6_TMB2(128Hz)中斷</p><p> [P_TimeBase_Setup] = r1</p><p> r1 = [P_INT_Mask]</p><
82、;p> r1 |= C_IRQ6_TMB2</p><p> [P_INT_Mask] = r1</p><p> INT FIQ,IRQ</p><p> pop r1 from [sp]</p><p><b> Retf</b></p><p><b> .END
83、P</b></p><p> 數(shù)碼管初始化流程圖如圖3.6所示,</p><p> 圖3.6 數(shù)碼管初始化 </p><p> 數(shù)碼管初始化程序如下:</p><p> _DIG_Init:</p><p> F_DIG_Init:</p><p> push r
84、1,bp to [sp]</p><p><b> INT Off</b></p><p> r1 = DIG_Count</p><p> r2 = 0x0000</p><p> bp = R_DIG_Buf</p><p> ?DIG_InitBuf://Clear Dis
85、play Buffer</p><p> [bp++] = r2</p><p><b> r1 -= 1</b></p><p> jnz ?DIG_InitBuf</p><p> [R_CurDIG] = r2//Reset Dig Pointer</p><p> r1 =
86、 [P_SEG_Attrib]//Initial IO Ports for Seg</p><p> r1 |= PIN_SEG_ALL</p><p> [P_SEG_Attrib] = r1</p><p> r1 = [P_SEG_Buf]</p><p> r1 &= ~PIN_SEG_ALL</p>
87、<p> [P_SEG_Data] = r1</p><p> r1 = [P_SEG_Dir]</p><p> r1 |= PIN_SEG_ALL</p><p> [P_SEG_Dir] = r1</p><p> r1 = [P_DIG_Attrib]//Initial IO Ports for Dig<
88、;/p><p> r1 |= PIN_DIG_ALL</p><p> [P_DIG_Attrib] = r1</p><p> r1 = [P_DIG_Buf]</p><p> r1 &= ~PIN_DIG_ALL</p><p> [P_DIG_Buf] = r1</p><p&
89、gt; r1 = [P_DIG_Dir]</p><p> r1 |= PIN_DIG_ALL</p><p> [P_DIG_Dir] = r1</p><p> r1 = [P_INT_Mask]//Enable IRQ4_4KHz Int</p><p> r1 |= C_IRQ4_4KHz</p><
90、p> [P_INT_Mask] = r1</p><p> INT FIQ,IRQ</p><p> pop r1,bp from [sp]</p><p><b> retf</b></p><p><b> .ENDP</b></p><p> 時(shí)間初始
91、化流程圖如圖3.7所示。</p><p> 圖3.7 時(shí)間初始化</p><p><b> 時(shí)間初始化程序:</b></p><p> void Time_Init(void)</p><p><b> {</b></p><p> unsigned int uiT
92、emp;</p><p> uiTemp = *P_IOB_Dir;//設(shè)置IOB2為高電平輸出</p><p> uiTemp |= 0x0004;</p><p> *P_IOB_Dir = uiTemp;</p><p> uiTemp = *P_IOB_Attrib;</p><p> uiTem
93、p |= 0x0004;</p><p> *P_IOB_Attrib = uiTemp;</p><p> uiTemp = *P_IOB_Data;</p><p> uiTemp |= 0x0004;</p><p> *P_IOB_Data = uiTemp;</p><p> uiTemp = *P
94、_INT_Ctrl_New;//開2Hz、4Hz中斷</p><p> uiTemp |= C_IRQ5_2Hz;</p><p> uiTemp |= C_IRQ5_4Hz;</p><p> *P_INT_Ctrl_New = uiTemp;</p><p><b> }</b></p>&l
95、t;p> 3.4 語(yǔ)音播放的實(shí)現(xiàn) </p><p> 由于語(yǔ)音資源存儲(chǔ)在外廓的存儲(chǔ)器 SPR4096 上面,要實(shí)現(xiàn)語(yǔ)音播放必須采用手動(dòng)方式。需要獲得語(yǔ)音資源,關(guān)鍵解決語(yǔ)音資源的起始地址,然后通過(guò)讀取函數(shù)獲得語(yǔ)音資源。函數(shù)流程圖如圖3.8所示。 </p><p> 圖3.8 手動(dòng)方式播放流程圖 </p><p><b> 手動(dòng)方式播放程序:&l
96、t;/b></p><p> void PlaySnd_A2000(unsigned int SndIndex,unsigned int DAC_Channal)</p><p><b> {</b></p><p> unsigned int uiStatus;// 語(yǔ)音播放狀態(tài)</p><p>
97、 unsigned int uiRet;// 存儲(chǔ)語(yǔ)音資源</p><p> unsigned long ulCon_AddrHighest;// 語(yǔ)音資源的最高字節(jié)地址</p><p> unsigned long ulCon_AddrHigh;// 語(yǔ)音資源的高字節(jié)地址</p><p> unsigned long ulCon_AddrLo
98、w;// 語(yǔ)音資源的低字節(jié)地址</p><p> unsigned long ulCon_AddrLowest;// 語(yǔ)音資源的最低字節(jié)地址</p><p> unsigned long ulCon_EndAddr;// 語(yǔ)音資源的末地址</p><p> unsigned long ulCon_StartAddr;</p><
99、p> unsigned int uiKey;</p><p> ulCon_AddrHighest = SP_SIOReadAByte(BASE_START_ADDRESS + SndIndex*12);// 第一個(gè)播放文件地址</p><p> ulCon_AddrHighest = ulCon_AddrHighest << 24;</p><
100、;p> ulCon_AddrHigh = SP_SIOReadAByte(BASE_START_ADDRESS + SndIndex*12+1);</p><p> ulCon_AddrHigh = ulCon_AddrHigh << 16;</p><p> ulCon_AddrLow = SP_SIOReadAByte(BASE_START_ADDRESS +
101、SndIndex*12+2);</p><p> ulCon_AddrLow = ulCon_AddrLow << 8;</p><p> ulCon_AddrLowest = SP_SIOReadAByte(BASE_START_ADDRESS + SndIndex*12+3);</p><p> ulCon_StartAddr = ulCon_
102、AddrHighest | ulCon_AddrHigh// 開始地址</p><p> | ulCon_AddrLow | ulCon_AddrLowest;</p><p> ulCon_AddrHighest = SP_SIOReadAByte(BASE_END_ADDRESS + SndIndex*12);ulCon_AddrHighest = ulCon_Addr
103、Highest << 24;</p><p> ulCon_AddrHigh = SP_SIOReadAByte(BASE_END_ADDRESS + SndIndex*12+1);</p><p> ulCon_AddrHigh = ulCon_AddrHigh << 16;</p><p> ulCon_AddrLow = SP_S
104、IOReadAByte(BASE_END_ADDRESS + SndIndex*12+2);</p><p> ulCon_AddrLow = ulCon_AddrLow << 8;</p><p> ulCon_AddrLowest = SP_SIOReadAByte(BASE_END_ADDRESS + SndIndex*12+3);</p><p&
105、gt; ulCon_EndAddr = ulCon_AddrHighest | ulCon_AddrHigh// 結(jié)束地址</p><p> | ulCon_AddrLow | ulCon_AddrLowest;</p><p> SACM_A2000_Initial(0);//初始化放音</p><p> SACM_A2000_I
106、nitQueue();//初始化隊(duì)列</p><p> SACM_A2000_InitDecoder(DAC_Channal);//初始化解碼</p><p> uiStatus = 1;//初始化放音狀態(tài)</p><p> while(uiStatus)</p><p><b> {&
107、lt;/b></p><p> while(SACM_A2000_TestQueue() != 1)//解碼隊(duì)列是否為空</p><p><b> {</b></p><p> if(ulCon_StartAddr >= ulCon_EndAddr)//文件結(jié)束?</p><p><b&g
108、t; {</b></p><p> uiStatus = 0;//如果文件結(jié)束,結(jié)束放音</p><p><b> break;</b></p><p><b> }</b></p><p> uiRet = SP_SIOReadAWord(ulCon_Start
109、Addr);//取得語(yǔ)音資源</p><p> SACM_A2000_FillQueue(uiRet);//填充解碼隊(duì)列</p><p> ulCon_StartAddr++;//移動(dòng)資源指針</p><p> ulCon_StartAddr++;</p><p><b> }</b></
110、p><p> if(uiStatus)//解碼</p><p><b> {</b></p><p> SACM_A2000_Decoder();</p><p><b> }</b></p><p> else//停止放音</
111、p><p><b> {</b></p><p> SACM_A2000_Stop();</p><p><b> }</b></p><p> uiKey = Key_Get();</p><p> if(uiKey != 0)</p><p>
112、; uiStatus = 0;</p><p> *(unsigned int *)0x7012 = 0x0001;</p><p><b> }</b></p><p><b> }</b></p><p><b> 3.5 更新時(shí)間 </b></p>
113、<p> 可以使用SPCE061A單片機(jī)的2Hz時(shí)基中斷,在 2Hz 時(shí)基中斷中調(diào)用更新函數(shù),函數(shù)要作的就是換算好進(jìn)位的關(guān)系。比如 60 秒進(jìn)位 1 分鐘,然后秒清零。</p><p><b> 更新時(shí)間程序如下:</b></p><p> void Time_Run(void)</p><p><b> {<
114、;/b></p><p><b> //更新時(shí)分</b></p><p> if(g_uiSecond_half == 120)</p><p><b> {</b></p><p> g_uiSecond_half = 0;</p><p> uiMinit
115、e_L++;</p><p><b> }</b></p><p> if(uiMinite_L == 10)</p><p><b> {</b></p><p> uiMinite_L = 0;</p><p> uiMinite_H++;</p>
116、<p><b> }</b></p><p> if(uiMinite_H == 6)</p><p><b> {</b></p><p> uiMinite_H = 0;</p><p> uiHour_L++;</p><p><b>
117、 }</b></p><p> if((uiHour_H == 2)&&(uiHour_L == 4))</p><p><b> {</b></p><p> uiHour_H = 0;</p><p> uiHour_L = 0;</p><p> uiD
118、ay_L++;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(uiHour_L == 10)</p><p><b> {</b&
119、gt;</p><p> uiHour_L = 0;</p><p> uiHour_H++;</p><p><b> }</b></p><p><b> }</b></p><p><b> 3.6 設(shè)置時(shí)間 </b></p>
120、<p> 在設(shè)置時(shí)間時(shí)出現(xiàn)動(dòng)態(tài)閃爍效果,這個(gè)問(wèn)題使用 4Hz 的時(shí)基中斷改變標(biāo)志位,在設(shè)置時(shí)間函數(shù)中根據(jù)這個(gè)標(biāo)志位顯示或關(guān)閉數(shù)碼管,出現(xiàn)閃爍效果。時(shí)間設(shè)置流程圖如圖3.9所示.</p><p> 圖 3.9 時(shí)間設(shè)置流程圖</p><p><b> 時(shí)間設(shè)置程序如下:</b></p><p> void Set_Time(
121、void)</p><p><b> {</b></p><p> unsigned int uiKey;</p><p> unsigned int uiTemp;</p><p><b> while(1)</b></p><p><b> {<
122、;/b></p><p> uiKey = Key_Get();</p><p> *P_Watchdog_Clear = 0x0001;</p><p><b> //調(diào)整分鐘</b></p><p> if(uiSetflag == 1)</p><p><b> {
123、</b></p><p> if(g_Light == 1)</p><p><b> {</b></p><p> DIG_Set(3,Data[uiHour_H]);</p><p> DIG_Set(4,Data[uiHour_L]);</p><p> DIG_Set
124、(5,Data[uiMinite_H]);</p><p> DIG_Set(6,Data[uiMinite_L]);</p><p><b> }</b></p><p> if(g_Light == 0)</p><p><b> {</b></p><p>
125、DIG_Set(3,Data[uiHour_H]);</p><p> DIG_Set(4,Data[uiHour_L]);</p><p> DIG_Set(5,0);</p><p> DIG_Set(6,0);</p><p><b> }</b></p><p> switch(
126、uiKey)</p><p><b> {</b></p><p> case KEY6:</p><p> uiSetflag = 2;</p><p> uiKey = 0;</p><p><b> break;</b></p><p>
127、; case KEY7:</p><p> uiMinite_L++;</p><p> if(uiMinite_L == 10)</p><p><b> {</b></p><p> uiMinite_L = 0;</p><p> uiMinite_H++;</p>
128、<p> if(uiMinite_H == 6)</p><p> uiMinite_H = 0;</p><p><b> }</b></p><p><b> break;</b></p><p> case KEY8:</p><p> uiMi
129、nite_L--;</p><p> if(uiMinite_L == 0xffff)</p><p><b> {</b></p><p> uiMinite_L = 9;</p><p> uiMinite_H--;</p><p> if(uiMinite_H == 0xffff)
130、</p><p> uiMinite_H = 5;</p><p> }</p><p><b> break;</b></p><p><b> default:</b></p><p><b> break;</b><
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公交車報(bào)站課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---公交車自動(dòng)報(bào)站系統(tǒng)
- 課程設(shè)計(jì)-單片機(jī)原理公交車語(yǔ)音報(bào)站系統(tǒng)設(shè)計(jì)
- 嵌入式課程設(shè)計(jì)--公交車語(yǔ)音報(bào)站系統(tǒng)
- 課程設(shè)計(jì)——基于單片機(jī)的公交車報(bào)站器設(shè)計(jì)
- GPS公交自動(dòng)報(bào)站系統(tǒng)設(shè)計(jì).pdf
- 畢業(yè)設(shè)計(jì)---公交車報(bào)站系統(tǒng)的設(shè)計(jì)
- 公交報(bào)站畢業(yè)設(shè)計(jì)
- 城市公交自動(dòng)報(bào)站系統(tǒng)設(shè)計(jì)開題報(bào)告
- 畢業(yè)設(shè)計(jì)---公交車自動(dòng)報(bào)站系統(tǒng)的設(shè)計(jì)
- 智能公交車報(bào)站系統(tǒng)設(shè)計(jì)【開題報(bào)告】
- 公交車自動(dòng)報(bào)站系統(tǒng)的設(shè)計(jì)-畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的公交報(bào)站系統(tǒng)設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 公交車自動(dòng)報(bào)站系統(tǒng)畢業(yè)設(shè)計(jì)
- 公交車自動(dòng)報(bào)站系統(tǒng)畢業(yè)設(shè)計(jì)
- 公交車自動(dòng)報(bào)站的系統(tǒng)畢業(yè)設(shè)計(jì)
- 模擬公交車報(bào)站系統(tǒng)設(shè)計(jì)【文獻(xiàn)綜述】
- 公交車載報(bào)站顯示系統(tǒng)的設(shè)計(jì)和開發(fā).pdf
- 基于STM32的公交語(yǔ)音報(bào)站系統(tǒng)設(shè)計(jì).doc
- 畢業(yè)設(shè)計(jì)--公交車自動(dòng)報(bào)站系統(tǒng)的硬件設(shè)計(jì)原理
評(píng)論
0/150
提交評(píng)論