2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  本科生畢業(yè)論文(設(shè)計)</p><p>  系(院)物理與電子工程學(xué)院  專業(yè) 電子信息工程 </p><p>  論文題目 公交車自動報站系統(tǒng)設(shè)計 </p><p><b>  公交車自動報站系統(tǒng)</b></p><p>  [摘要]本設(shè)計主要解決如何方便、準(zhǔn)確地指示乘客到站的問題,具有自

2、動檢測公交站臺,模擬人聲進(jìn)行報站和預(yù)報站,對所報站數(shù)和站名進(jìn)行文字顯示等功能。系統(tǒng)包括微控制器模塊,語音錄放電路,液晶顯示模塊,鍵盤接口電路,復(fù)位電路及電源等。系統(tǒng)使用51單片機來控制語音合成芯片和液晶顯示模組。站臺檢測使用干簧管檢測。語音合成芯片ISD4004,采用模擬數(shù)據(jù)半導(dǎo)體存儲器直接存儲的專利技術(shù),即將模擬語音數(shù)據(jù)直接寫入單個存儲單元,不需經(jīng)過A/D、D/A轉(zhuǎn)換,因此能夠較好地真實再現(xiàn)語音的自然效果,避免了一般固體語音電路因為量

3、化和壓縮造成的量化噪聲和失真現(xiàn)象。配合液晶屏lcd1602顯示,就使得該報站系統(tǒng)更加實用。</p><p>  [關(guān)鍵字]單片機 語音提示 液晶顯示 公交報站</p><p><b>  1 緒論</b></p><p>  隨著現(xiàn)在社會的發(fā)展,由于公交車的快速發(fā)展,越來越多的人選擇乘坐公交車,公交車吸引人的優(yōu)點除了價格低廉外,還有一個就是它的

4、便利,尤其是報站系統(tǒng),尤其對于對路線不熟悉的乘客尤為重要。一般的公交車報站系統(tǒng)分為兩種,一種是司機通過按鍵來操作,熟悉路線的司機在車輛駛?cè)胝军c一定距離范圍內(nèi)時,按下所對應(yīng)的按鈕,系統(tǒng)報站。另一種是通過全球定位系統(tǒng)(GPS)的用戶終端接收工作衛(wèi)星的導(dǎo)航信息,從而解算出車輛的經(jīng)緯度信息,進(jìn)而計算出實時坐標(biāo),將其與站點坐標(biāo)相比較,當(dāng)車輛駛?cè)胝军c一定距離范圍內(nèi)時,不用人工干預(yù),系統(tǒng)自動報站。兩種報站方法來說,第一種不智能,容易出現(xiàn)失誤,第二種花

5、費昂貴巨大。所以本設(shè)計就利用干簧管作為檢測站牌的傳感器,檢測既準(zhǔn)確又價格又低廉。本設(shè)計的基本思路就是干簧管傳感器檢測到站牌后,單片機判斷第幾個站牌并發(fā)出指令進(jìn)行相應(yīng)的語音報站,并進(jìn)行液晶顯示。</p><p>  本次設(shè)計以 Keil C51 開發(fā)環(huán)境為編程平臺進(jìn)行代碼的編譯和運行,并在 Proteus 上進(jìn)行仿真。</p><p><b>  2 方案設(shè)計</b>&

6、lt;/p><p><b>  2.1 原理</b></p><p>  本系統(tǒng)使用八位單片機作為控制器件。當(dāng)系統(tǒng)進(jìn)行語音再生時,單片機控制語音合成電路中的語音芯片來讀取其外接的存儲器內(nèi)部的語音信息,并合成語音信號,再通過語音輸出電路,進(jìn)行語音報站和提示。同時,單片機讀取傳感器返回的站臺信息,將信息顯示在液晶上。當(dāng)系統(tǒng)進(jìn)行語音錄制時,語音信號通過語音錄入電路送給語音合成電

7、路中的語音芯片,由語音芯片進(jìn)行數(shù)據(jù)處理,并將生成的數(shù)字語音信息存儲到語音存儲芯片中,從而建立語音庫。</p><p><b>  2.2 系統(tǒng)框圖</b></p><p>  圖 2-1 系統(tǒng)框圖</p><p><b>  2.3 簡介</b></p><p>  主控制器使用單片機AT89C51

8、,是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8 位單片機。片內(nèi)含 4k byte的可反復(fù)擦寫的只讀程序存儲器(PEROM)和 128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MSC-51 指令系統(tǒng),片內(nèi)置通用 8 位中央處理器和FLASH存儲單元,適合在開發(fā)階段的使用。AT89C51 提供以下標(biāo)準(zhǔn)功能:4k字節(jié)FLASH閃存存儲器,128 字節(jié)內(nèi)部RAM,32 個I

9、/O口線,兩個 16 位定時/計數(shù)器,一個 5 向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。同時,AT89C51 可降至 0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位[1]。</p><p>  傳感器使用的是干簧管,

10、價格便宜,反應(yīng)靈敏。</p><p>  液晶顯示模塊使用的是LCD1602,工業(yè)字符型液晶,能夠同時顯示16x02即32個字符。</p><p>  語音芯片語音提示模塊選用ISD4004系列語音芯片,外接話筒和音箱組成語音錄制和播放電路。其中,音箱由音頻功率放大器LM386驅(qū)動。</p><p>  公交車使用買的無驅(qū)動的玩具車。</p><

11、p><b>  3 硬件設(shè)計</b></p><p><b>  3.1 控制器</b></p><p>  89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS8位微處理器,俗稱單片機。單片機的可擦除只

12、讀存儲器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器。</p><p>  89C51單片機管腳圖</p><p>  圖 3-1 89C51單片機管腳圖</p><p>  單片機最小系統(tǒng)及外圍

13、電路接口圖</p><p>  圖 3-2 單片機最小系統(tǒng)及外圍電路接口圖</p><p><b>  3.2顯示模塊</b></p><p>  (1)LCD1602液晶顯示屏主要技術(shù)參數(shù)如表3.2.1</p><p><b>  表3.2.1</b></p><p>  

14、(2) LCD1602液晶顯示屏引腳說明如表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、器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度</p><p>  第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。</p><p>  第5腳:RW為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和RW共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平

16、時可以讀忙信號,當(dāng)RS為高電平RW為低電平時可以寫入數(shù)據(jù)。</p><p>  第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。</p><p>  第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p>  另外引腳"A"和"K"為背光引腳,"A"接正,"K"

17、接負(fù)便會點亮背光燈。這兩個管腳可以不接置空。</p><p> ?。?)LCD1602液晶顯示屏指令說明如表3.2.3</p><p><b>  表3.2.3</b></p><p>  它的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。(說明: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)移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效</p><p>  指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制

19、光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍</p><p>  指令5:光標(biāo)或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標(biāo)</p><p>  指令6:功能設(shè)置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符&l

20、t;/p><p>  指令7:字符發(fā)生器RAM地址設(shè)置</p><p>  指令8:DDRAM地址設(shè)置</p><p>  指令9:讀忙信號和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。</p><p><b>  指令10:寫數(shù)據(jù)</b></p><p&

21、gt;<b>  指令11:讀數(shù)據(jù)</b></p><p>  LCD1602液晶顯示屏顯示電路</p><p>  圖 3-2 LCD1602液晶顯示屏顯示電路圖</p><p>  3.3 站牌檢測模塊</p><p>  在每個站牌下面都埋著一個永磁鐵,在車的右端安有一個干簧管,當(dāng)車子靠近站臺時,干簧管閉合,觸發(fā)單

22、片機的外部中斷,被單片機檢測到從而做出相應(yīng)判斷。</p><p>  干簧管通常由兩個或三個軟磁性材料做成的簧片觸點,被封裝在充有惰性氣體(如氮、氦等)或真空的玻璃管里,玻璃管內(nèi)平行封裝的簧片端部重疊,并留有一定間隙或相互接觸以構(gòu)成開關(guān)的常開或常閉觸點。</p><p>  干簧管的工作電路圖:</p><p>  圖3-3 干簧管的工作電路圖</p>

23、<p><b>  3.4 語音模塊</b></p><p>  ISD4004系列語音芯片工作電壓為+3V,單片錄放時間8到16分鐘,音質(zhì)好,適用于移動電話及其他便攜式電子產(chǎn)品中。芯片采用CMOS 技術(shù),內(nèi)含振蕩器、防混淆濾波器、平滑濾波器、音頻放大器、自動靜噪及高密度多電平閃爍存儲陳列。芯片設(shè)計是基于所有操作必須由微控制器控制,操作命令可通過串行通信接口(SPI或Microw

24、ire)送入。芯片采用多電平直接模擬量存儲技術(shù), 每個采樣值直接存儲在片內(nèi)閃爍存儲器中,因此能夠非常真實、自然地再現(xiàn)語音、音樂、音調(diào)和效果聲,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和金屬聲。采樣頻率可以是4.0,5.3,6.4或8.0kHz,頻率越低,錄放時間越長,而音質(zhì)則有所下降,片內(nèi)信息存于閃爍存儲器中,可在斷電情況下保存一百年(典型值),可反復(fù)錄音十萬次。</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>  (2)地線(VSSD,VSSA) 芯片內(nèi)部數(shù)字電路電源地線和模擬電路電源地線引腳。芯片的數(shù)字電路和模擬電路也要使用不同的地線。</p><p>  圖3-5 ISD4004芯片引腳圖</p><p> ?。?)同相模擬輸入(ANA IN+) 錄音信號的同相輸入端。輸入放大器可用單端或差分驅(qū)動

27、。單端輸入時,信號由耦合電容輸入,最大幅度為峰-峰值32mV,耦合電容和本端的3KΩ電阻輸入阻抗決定了芯片頻帶的低端截止頻率。差分驅(qū)動時,信號最大幅度為峰-峰值16mV。</p><p>  (4)反相模擬輸入(ANA IN-) 差分驅(qū)動時,這是錄音信號的反相輸入端。信號通過耦合電容輸入,最大幅度為峰-峰值16mV。</p><p> ?。?)音頻輸出(AUD OUT) 提供音頻輸出,

28、可驅(qū)動5KΩ的負(fù)載。</p><p> ?。?)片選() 此端為低,即向ISD4004芯片發(fā)送指令,兩條指令之間為高電平。</p><p> ?。?)串行輸入(MOSI) 此端為串行輸入端,主控制器應(yīng)在串行時鐘上升沿之前半個周期將數(shù)據(jù)放到本端,以供輸入。</p><p>  (8)串行輸出(MISO) 此端為串行輸出端,芯片未被選中時,本端呈高阻態(tài)。</

29、p><p>  (9)串行時鐘(SCLK) 時鐘輸入端,由主控制器產(chǎn)生,用于同步MOSI 和MISO的數(shù)據(jù)傳輸。數(shù)據(jù)在SCLK上升沿鎖存到芯片,在下降沿移出芯片。 </p><p>  (10)中斷() 本端為漏極開路輸出。芯片在任何操作(包括快進(jìn))中檢測到EOM或OVF時,本端變低并保持。中斷狀態(tài)在下一個SPI周期開始時清除。中斷狀態(tài)也可用RINT指令讀?。∣VF標(biāo)志指示芯片的錄/放操作

30、已到達(dá)存儲器的末尾;EOM標(biāo)志只在放音中檢測到內(nèi)部的EOM標(biāo)志時,此狀態(tài)位才置1)。 </p><p> ?。?1)行地址時鐘(RAC) 漏極開路輸出。每個RAC周期表示芯片存儲器的操作進(jìn)行了一行(ISD4004系列中的存儲器共2400行)。該信號保持高電平175ms,低電平25ms??爝M(jìn)模式下,RAC 218.75μs是高電平,31.25μs為低電平。該端可用于存儲管理技術(shù)。</p><p

31、> ?。?2)外部時鐘(XCLK) 本端內(nèi)部有下拉元件。芯片內(nèi)部的采樣時鐘在出廠前已調(diào)校,誤差在1%以內(nèi)。商業(yè)級芯片在整個溫度和電壓范圍內(nèi), 頻率變化在2.25%以內(nèi)。工業(yè)級芯片在整個溫度和電壓范圍內(nèi),頻率變化在4%以內(nèi),此時建議使用穩(wěn)壓電源。若要求更高精度,可從本端輸入外部時鐘。由于內(nèi)部的防混淆及平滑濾波器已設(shè)定,故上述推薦的時鐘頻率不應(yīng)改變。輸入時鐘的占空比無關(guān)緊要,因內(nèi)部首先進(jìn)行了分頻。在不外接時鐘時,此端必須接地。<

32、;/p><p> ?。?3)自動靜噪(AM CAP)當(dāng)錄音信號電平下降到內(nèi)部設(shè)定的某一閾值以下時,自動靜噪功能使信號衰弱,這樣有助于濾除無信號(靜音)時的噪聲。通常本端對地接1µF的電容,構(gòu)成內(nèi)部信號電平峰值檢測電路的一部分。檢出的峰值電平與內(nèi)部設(shè)定的閾值作比較,決定自動靜噪功能的翻轉(zhuǎn)點。大信號時,自動靜噪電路不衰減,靜音時衰減6dB。1µF 的電容也影響自動靜噪電路對信號幅度的響應(yīng)速度。本端接V

33、CCA則禁止自動靜噪。</p><p>  3.4.3 操作規(guī)則</p><p> ?。?)串行外設(shè)接口 ISD4000系列語音芯片工作于SPI串行接口。SPI協(xié)議是一個同步串行數(shù)據(jù)傳輸協(xié)議,設(shè)定微控制器的SPI移位寄存器在SCLK的下降沿將數(shù)據(jù)送至MISO引腳。以ISD4004為例,協(xié)議的具體內(nèi)容如下:</p><p> ?、偎写袛?shù)據(jù)傳輸開始于下降沿。<

34、;/p><p>  ②在傳輸期間必須保持低電平,在兩條指令之間則保持高電平。</p><p> ?、蹟?shù)據(jù)在時鐘上升沿移入,在下降沿移出。</p><p> ?、茏兊?,輸入指令和地址后,ISD4004才能開始錄/放操作。</p><p> ?、葜噶罡袷绞?八位控制碼)加(十六位地址碼)。</p><p> ?、轎SD4004

35、的任何操作如果遇到EOM或OVF,則產(chǎn)生一個中斷,該中斷狀態(tài)在下一個SPI周期開始時被清除。</p><p> ?、呤褂谩白x”指令使中斷狀態(tài)位移出ISD4004的MISO引腳時,控制及地址數(shù)據(jù)也應(yīng)同步從MOSI端移入。因此,要注意移入的數(shù)據(jù)是否與器件當(dāng)前進(jìn)行的操作兼容。當(dāng)然,也允許在一個SPI周期里,同時執(zhí)行讀狀態(tài)和開始新的操作(即新移入的數(shù)據(jù)與器件當(dāng)前的操作可以不兼容)。</p><p>

36、; ?、嗨胁僮髟谶\行位(RUN)置1時開始,置0時結(jié)束。</p><p> ?、崴兄噶疃荚诙松仙亻_始執(zhí)行。</p><p> ?。?)信息快進(jìn) 用戶不必知道信息的確切地址就能快進(jìn)跳過一條信息。信息快進(jìn)只用于放音模式,放音速度是正常的1600倍,遇到EOM后停止,然后內(nèi)部地址計數(shù)器1,指向下一條信息的開始處。</p><p>  (3)上電順序 器件延時TP

37、UD(8KHz采樣時,約為25ms)后才能開始操作。因此,用戶發(fā)完上電指令后,必須等待TPUD,才能發(fā)出下一條操作指令。</p><p>  例如,從00處放音,應(yīng)遵循如下時序:</p><p> ?、侔l(fā)POWER UP命令;</p><p> ?、诘却齌PUD(上電延時);</p><p>  ③發(fā)地址值為00的SET PLAY命令;<

38、;/p><p><b>  ④發(fā)PLAY命令。</b></p><p>  器件會從00地址開始放音,當(dāng)出現(xiàn)EOM時,立即中斷,停止放音。</p><p>  如果從00處錄音,則按以下時序:</p><p> ?、侔l(fā)POWER UP指令;</p><p>  ②等待TPUD(上電延時);</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地址開始錄音,一直到出現(xiàn)OVF(存儲器末尾)時,錄音停止。</p

40、><p><b> ?。?)指令碼</b></p><p>  ISD4004的指令碼:</p><p><b>  表3.4.3.1</b></p><p>  注:快進(jìn)只能在放音操作開始時選擇。</p><p> ?。?)SPI端口的控制位</p><p&

41、gt;  圖 3-6 SPI端口的控制位</p><p> ?。?)SPI控制寄存器 SPI控制寄存器控制器件的每個功能,如錄音、放音、信息檢索(快進(jìn))、上電/掉電、開始/停止操作、忽略地址指針等。</p><p>  ISD4004的SPI控制寄存器:</p><p><b>  表3.4.3.2</b></p><p&

42、gt;  注:IAB置0時,錄/放操作從A9~A0地址開始。</p><p>  為了能連貫地錄/放到后續(xù)的存儲空間,在操作到達(dá)該行末之前,應(yīng)發(fā)出第二個SPI指令將IAB置1,否則器件會在同一地址上反復(fù)循環(huán)。這個特點對語音提示功能很有用。RAC引腳和IAB位可用于信息管理。SPI端口簡單框圖如下:</p><p>  圖 3-7 SPI端口簡單框圖</p><p>

43、  3.4.4 語音放大模塊</p><p>  LM386是美國國家半導(dǎo)體公司生產(chǎn)的音頻功率放大器,主要應(yīng)用于低電壓消費類產(chǎn)品。為使外圍元件最少,電壓增益內(nèi)置為20。但在1腳和8腳之間增加一只外接電阻和電容,便可將電壓增益調(diào)為任意值,直至 200。輸入端以地位參考,同時輸出端被自動偏置到電源電壓的一半,在6V電源電壓下,它的靜態(tài)功耗僅為24mW。</p><p>  LM386的外形和引

44、腳的排列如右圖所示。引腳2為反相輸入端,3為同相輸入端;引腳5為輸出端;引腳6和4分別為電源和地;引腳1和8為電壓增益設(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è)計</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)試是指利用基本的檢測儀器,檢查系統(tǒng)硬件中可能存在的故障??煞譃殪o態(tài)調(diào)試與動態(tài)調(diào)試兩步進(jìn)行。</p><p>  靜態(tài)調(diào)試是指在系統(tǒng)未工作時進(jìn)行硬件檢測。</p><p>  第一步:觀測。檢查電路板上的各種元件或者是電路焊接問題。</p><p>  第二步:萬用表測試。先用萬用表測試目測中發(fā)現(xiàn)的可能有疑問的連接點,再檢測各種電源與地線之間是否有短路現(xiàn)象。&l

50、t;/p><p>  第三步:加電檢測。給電路板板加電,檢測所有的插座或是器件的電源端是否為符合要求的值。</p><p><b>  4.5軟件調(diào)試</b></p><p>  軟件調(diào)試是指在對程序的C編程、連接、執(zhí)行過程中發(fā)現(xiàn)程序中存在的語法錯誤與邏輯錯誤并加以排除糾正的過程[8]。</p><p><b> 

51、 5 總結(jié)</b></p><p>  我畢業(yè)設(shè)計的題目是公交車自動報站器的設(shè)計,經(jīng)過幾個月的奮斗,終于完成了設(shè)計,使系統(tǒng)實現(xiàn)了自動報站功能。本系統(tǒng)功能強大,成本低,系統(tǒng)穩(wěn)定,無需人工介入,語音音質(zhì)好,很好的實現(xiàn)了車輛報站的自動化,具有很強的實用性。系統(tǒng)選用ISD4004語音芯片,它的錄音數(shù)據(jù)被存放方法是通過ISD多級存儲專利技術(shù)實現(xiàn)的,用聲音和聲頻信號的自然形式直接存放在故態(tài)存儲器,從而提供高質(zhì)量回

52、放語音的保真度,使得該系統(tǒng)與其他語音報站系統(tǒng)相比較,語音質(zhì)量較好。另外,本設(shè)計仍然存在的許多的不足之處,比如它在報站時刻上不能十分的精確,存在一定的誤差。這些問題都需要在今后的研究工作中加以改進(jìn),使系統(tǒng)更完善,更好的為人們服務(wù)。</p><p>  最后還要感謝xx指導(dǎo)老師在我進(jìn)行畢業(yè)設(shè)計過程中對我的悉心指導(dǎo)以及同學(xué)們對我的幫助,正是有了大家的幫助,我才能順利的完成畢業(yè)設(shè)計。在這里我衷心的對幫助過我的人表示感謝。

53、</p><p><b>  [參考文獻(xiàn)]</b></p><p>  [1]《電子系統(tǒng)設(shè)計(第三版)》何小艇.浙江大學(xué)出版社.2004</p><p>  [2]《單片機原理與實踐指導(dǎo)》 鄧興成.機械工業(yè)出版社.2006</p><p>  [3]《模擬電子技術(shù)基礎(chǔ)》 華成英,童詩白.高等教育出版社.2004&

54、lt;/p><p>  [4]網(wǎng)站參考: protues仿真論壇</p><p>  [5] 李正浩.單片機在 LED 數(shù)碼管顯示中的應(yīng)用[J].試驗科學(xué)與技術(shù).2006. 12</p><p>  [6] 鄧興成.單片機原理與實踐指導(dǎo)[M].機械工業(yè)出版社.2010.2</p><p>  [7] 余成波.單片機實用技術(shù)與應(yīng)用[M].清華大學(xué)出

55、版社.2010.7</p><p>  [8] 王平.單片機應(yīng)用設(shè)計與制作:基于Keil和Proteus開發(fā)仿真平臺 .清華大學(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時鐘   </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; //錄音和放音選擇開關(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,打開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(); //如果取消錄音(松開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再次按下,開始錄制下一段語音   </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地址開始放音   </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中斷信號   </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鍵再次按下,播放下一段語音   </p><p>  // isd_stop();   </p><p>  // isd_stopwrdn();   <

溫馨提示

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

評論

0/150

提交評論