版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p> 基于單片機的公交車報站系統(tǒng)設(shè)計</p><p><b> 誠信聲明</b></p><p> 本人鄭重聲明:本論文及其研究工作是本人在指導(dǎo)教師的指導(dǎo)下
2、獨立完成的,在完成論文時所利用的一切資料均已在參考文獻中列出。</p><p> 本人簽名: 年 月 日</p><p><b> 畢業(yè)設(shè)計任務(wù)書</b></p><p> 設(shè)計題目: 基于單片機的公交車報站系統(tǒng)設(shè)計
3、 </p><p><b> 1.課題意義及目標(biāo)</b></p><p> 學(xué)習(xí)并掌握單片機及相關(guān)知識;實現(xiàn)公交車語音報站并有誤報糾錯功能,能播報語音提示信息及服務(wù)用語;在查閱資料的基礎(chǔ)上,完成系統(tǒng)整體方案設(shè)計;完成系統(tǒng)硬件設(shè)計,完成控制、顯示及語音部分的設(shè)計,完成系統(tǒng)元器件的選型,在掌握電子線路圖繪制工具軟件的基礎(chǔ)上,完成系統(tǒng)組成框圖的繪制、完成相關(guān)
4、電路圖及系統(tǒng)原理圖的繪制;完成系統(tǒng)軟件設(shè)計包括軟件流程圖的繪制及程序的編制及調(diào)試。</p><p><b> 2.主要內(nèi)容</b></p><p> (1)、認(rèn)真閱讀任務(wù)書,通過查閱相關(guān)文獻資料,在了解課題研究目的意義及現(xiàn)狀</p><p> 等基礎(chǔ)上,構(gòu)建設(shè)計方案并進行充分論證,并撰寫開題報告;</p><p>
5、 (2)、進行系統(tǒng)總體設(shè)計,熟悉開發(fā)環(huán)境;</p><p> (3)、系統(tǒng)硬件設(shè)計,系統(tǒng)軟件設(shè)計;</p><p> (4)、畢業(yè)設(shè)計說明書;</p><p><b> 3.主要參考資料</b></p><p> [1]李曉林.單片機原理與接口技術(shù)[M] . 北京:電子工業(yè)出版社, 2013</p>
6、<p> [2]徐沐龍.單片機原理及應(yīng)用[M] . 北京:機械工業(yè)出版社, 2013</p><p><b> 4.進度安排</b></p><p> 審核人: 年 月 日</p><p> 基于單片機的公交車報站系統(tǒng)設(shè)計</p><p>
7、; 摘 要:公交車作為常用的交通工具為人們的出行提供了方便快捷的服務(wù),公交車的報站則直接影響服務(wù)的質(zhì)量。針對當(dāng)前普遍使用的公交報站器,本課題在其基礎(chǔ)上進行了改進,設(shè)計了一款基于單片機的手動公交報站系統(tǒng)。 </p><p> 該系統(tǒng)以AT89C51單片機為核心控制部分集合了LCD顯示,ISD4004語音播放,按鍵控制等多個模塊。主要實現(xiàn)的功能為:進站和出站時,通過鍵盤手動控制報站,同時可將信息及服務(wù)用語
8、在顯示屏上顯示,使得乘客能及時了解所需信息,為市民提供更人性化,更完善的服務(wù)。與此同時,還增加了誤報糾錯功能使系統(tǒng)更加完善。</p><p> 關(guān)鍵詞:公交報站,LCD,AT89C51單片機</p><p> Design of bus station system based on MCU</p><p> Abstract:Bus as the commo
9、nly used transport for people to travel to provide a convenient and fast service.The newspaper station directly affects the quality of service. Aiming at the bus stop which is used widely today.This thesis has carried on
10、 the improvement, designs a manual public transportation station system based on SCM. </p><p> The system takes single-chip microcomputer as the core control part of the collection of LCD display, ISD4
11、004 voice playback, buttons control and other modules. The main function is: The driver can control the report station through the keyboard manual when inbound and outbound.At the same time, the information of station w
12、ill be displayed on the LCD screen so that the passengers can understand the required information in time. This will provide the public with more humane and more perfect serv</p><p> Keywords: bus station,
13、LCD, AT89c51 microcontroller</p><p><b> 目錄</b></p><p><b> 1 前言1</b></p><p> 1.1 選題的背景及意義1</p><p> 1.2 公交報站系統(tǒng)的研究現(xiàn)狀與發(fā)展方向2</p><
14、;p> 2系統(tǒng)的方案設(shè)計4</p><p> 2.1系統(tǒng)的工作原理4</p><p> 2.2方案比較與選擇4</p><p><b> 3 硬件設(shè)計6</b></p><p> 3.1 主控電路設(shè)計6</p><p> 3.1.1 單片機選型6</p>
15、<p> 3.1.2 振蕩電路6</p><p> 3.1.3 復(fù)位電路8</p><p> 3.2語音電路設(shè)計10</p><p> 3.3顯示電路設(shè)計14</p><p> 3.4按鍵電路設(shè)計14</p><p> 3.4.1按鍵的確認(rèn)16</p><p>
16、; 3.4.2按鍵防抖動技術(shù)16</p><p> 3.4.3按鍵保護16</p><p><b> 4 軟件設(shè)計17</b></p><p> 4.1主程序流程圖17</p><p> 4.2模塊程序設(shè)計18</p><p> 4.2.1語音播放流程圖18</p&g
17、t;<p> 4.2.2顯示模塊流程圖20</p><p> 4.2.3按鍵模塊21</p><p><b> 5 總結(jié)22</b></p><p><b> 參考文獻24</b></p><p><b> 致 謝25</b></p&g
18、t;<p><b> 附 錄26</b></p><p><b> 1 前言</b></p><p> 1.1 選題的背景及意義</p><p> 當(dāng)今社會在伴隨著經(jīng)濟快速發(fā)展,城市化進程提高的同時,對于交通出行的要求也越來越高。而作為一個人口大國,這一問題尤為明顯。近年來人們的個人收入都有了很大
19、的提高,因此越來越多的人都有了私家車,但這最直接的后果就是增大了城市交通的壓力。公交車的存在極大的緩解了城市交通的壓力,公交線路遍布整個城市,完全能夠滿足人們?nèi)粘5某鲂?,不僅方便快捷而且經(jīng)濟實惠,與此同時更減少了汽車尾氣排放,發(fā)展公共交通事業(yè)是城市發(fā)展建設(shè)中非常重要的一環(huán)。想要吸引市民乘坐公交車出行,首要的方法就是提高公交車運營服務(wù)水平。</p><p> 作為市民出行的主要交通工具之一,公交車的服務(wù)系統(tǒng)配置將
20、直接影響乘客的出行體驗。對于公交車大家都是非常熟悉的,在工作日出行最避免不了的就是擠公交了,過去,公交車上通常是由司機或者售票員在到站時報站,由于各地的方言口音等都存在或多或少的差異,很容易給乘客造成困擾,導(dǎo)致坐錯或坐過站,有時需要售票員喊好幾遍,這種方式既費時費力又有很多弊端,這點在過去本人也深有體會。</p><p> 隨著科技進步,現(xiàn)在大多數(shù)城市中公交車都已經(jīng)實現(xiàn)了無人售票方式,而微機技術(shù)和語音芯片等技術(shù)
21、的發(fā)展使得公交報站器誕生了,手動公交報站即由司機手動操作,通過操作系統(tǒng)的按鍵,當(dāng)汽車進站時,按下按鍵,系統(tǒng)調(diào)用程序中當(dāng)前站點的信息通過語音芯片由擴音設(shè)備播放給乘客;出站時同理,提醒乘客下一站的站名?,F(xiàn)在的報站系統(tǒng)除了基本的報站功能外還添加了許多服務(wù)用語,例如:在上車時提醒乘客給老人、孕婦讓座,下車時注意安全等。這些功能使得公交系統(tǒng)更加完善同時也為乘客提供了更加人性化的服務(wù)。</p><p> 手動公交報站雖然操
22、作簡便但也存在一些弊端,司機在開車的同時,還要分出精力操作報站器,容易分散注意力也增加了工作量,尤其是上下班高峰期,車輛擁堵、路況復(fù)雜,這種情況下會存在很大的安全隱患,這就是為什么大家有時在乘車時會發(fā)現(xiàn)司機沒有報站。另一方面,由于是人工操作,出現(xiàn)差錯是必不可少的,如錯報、漏報等在所難免,有時沒有報站,下一站又連報了好幾站的情況相信大家也是遇到過的。</p><p> 針對上述情況,本課題模擬設(shè)計了一款手動公交報
23、站系統(tǒng),具有基本的報站功能。同時增加了改錯功能,即出現(xiàn)錯報、漏報時,司機可以通過按鍵選擇上一站或下一站重新報站,減少了報站出錯帶來的影響;另外,系統(tǒng)配備了液晶顯示屏,能夠顯示當(dāng)前站及下一站站名。因為就本人所見的公交車上都是在車內(nèi)一側(cè)設(shè)有公交線路站牌,到一站后該站紅燈亮,由于方位問題很多乘客不容易看到,對于不熟悉線路的乘客如果沒聽清報站很容易坐過站,而通過車載液晶屏可以及時獲取站臺信息,很好的避免了上述情況發(fā)生。</p>&
24、lt;p> 1.2 公交報站系統(tǒng)的研究現(xiàn)狀與發(fā)展方向</p><p> 公交車自誕生以來一直伴隨著城市交通事業(yè)的變化發(fā)展。在不同的城市,受到人口、環(huán)境、人均收入等各種因素影響公交系統(tǒng)稍有差別。根據(jù)公交車報站的方式可以將起分為:人工報站、手動語音報站、自動報站。過去在鄉(xiāng)鎮(zhèn)中乘車人數(shù)很少,地域也小,到目的地時只要乘務(wù)人員提醒一下即可;在城市中人口流動大,交通線路復(fù)雜只靠乘務(wù)人員很難承擔(dān)這樣的工作量,因此一套
25、智能公交報站系統(tǒng)是必不可少的,而手動報站器造價低廉,操作簡單,低成本即可實現(xiàn)所需的各種功能。在交通線路繁多的城市是首選方案;在較為發(fā)達的大城市中人流量極大,經(jīng)濟科技條件完全可以建立自動報站系統(tǒng)設(shè)施,可以達到報站零錯誤的同時也減輕了司機的工作量。 </p><p> 公交車報站系統(tǒng)的研究不論是在國內(nèi)還是國外都經(jīng)歷了很久的歷史:</p><p><b> 國內(nèi)研究現(xiàn)狀</
26、b></p><p> 我國由于經(jīng)濟起步較晚,所以從事該方面研究的時間較短。城市公共交通設(shè)施的建設(shè)和發(fā)展一直都落后于其他國家,公交車在其中的作用也一直沒有受到過重視。直到近些年來隨著車輛的急劇增加導(dǎo)致的交通擁擠、尾氣污染、環(huán)境惡化等一系列問題引起了人們的重視,政府認(rèn)識到了公交車在其中的重要性,開始加大對公交設(shè)施建設(shè)的投資。由此產(chǎn)生的公交車報站系統(tǒng)也有了很大進步,到目前為止全國大多城市已基本普及了智能報站系
27、統(tǒng),而部分發(fā)達城市已經(jīng)建立了完整的自動報站設(shè)施,由總站統(tǒng)一調(diào)度,能讓資源得到充分的利用。</p><p><b> 國外研究現(xiàn)狀</b></p><p> 在國外對于這方面的研究要比國內(nèi)早幾十年,而其中較早的則是日本,大約是在</p><p> 20世紀(jì)70年代研制出了公共汽車定位系統(tǒng),這一研究就是智能公交系統(tǒng)的雛形。而后來人們所知道的C
28、TCS系統(tǒng)也是由日本設(shè)計開發(fā)的;之后稍晚一些從事該方面研究的是美國。與日本不同,美國的側(cè)重點在對出行者性息、電子收費、車隊管理以及交通需求管理等方面的研究,而其中也包括了車輛自動定位系統(tǒng);歐洲各國家城市都有著悠久的歷史,基于街道較為狹窄的特點,其研究重點在于建設(shè)公交專用道和公交信號優(yōu)先。</p><p> 無論是何種的研究方向,其最終目的都是為人們提供更加方便快捷更加舒適的出行體驗。通過這些我們不難看出公交報站
29、器將逐漸由人工手動向自動化、智能化發(fā)展,實現(xiàn)完全自動化是其必然的發(fā)展方向。 </p><p> 2 系統(tǒng)的方案設(shè)計 </p><p> 2.1 系統(tǒng)的工作原理</p><p> 根據(jù)公交報站器的功能要求,設(shè)計了如圖2.1的結(jié)構(gòu)圖,其中包括單片機核心控制部
30、分、單片機最小系統(tǒng)(電源、振蕩、復(fù)位電路等)、按鍵電路、顯示模塊、語音模塊。</p><p> 本系統(tǒng)使用八位單片機作為控制器。當(dāng)系統(tǒng)接收到報站按鍵指令時,單片機通過語音芯片調(diào)用語音模塊錄制好的語音信息,再通過語音輸出電路進行語音報站。同時,單片機通過程序讀取站點信息,送入液晶顯示模塊,將站名、站數(shù)等信息顯示在屏幕上。當(dāng)汽車到達某站時,司機或乘務(wù)人員通過鍵盤來控制系統(tǒng)進行工作。</p><p
31、> 圖2.1 系統(tǒng)結(jié)構(gòu)圖</p><p> 2.2 方案比較與選擇</p><p> 方案一:公交車自動報站器</p><p> 就目前來說,常見的自動報站方式有如下幾種:一種是基于GPS的公交報站系統(tǒng),</p><p> 其原理是通過GPS定位系統(tǒng)確定汽車當(dāng)前所在位置的坐標(biāo),當(dāng)公交車到達預(yù)設(shè)站點一</p>&l
32、t;p> 定范圍內(nèi)時即自動播報站臺信息以及服務(wù)用語等等,同樣離開該范圍后,亦會播放出站語音;另一種是無線射頻識別技術(shù),在各個站臺建設(shè)一個無線信號發(fā)射裝置,而車上配備有接收裝置,到達站點范圍內(nèi),解碼接收到的信號,調(diào)用程序,對站臺信息進行播報;除此之外 還有一種是通過對車輪軸的轉(zhuǎn)角脈沖進行計數(shù),將計數(shù)值和預(yù)置值對比,即可確定報站時刻,達到準(zhǔn)確報站的目的。還有一些使用很少的方式,這里就不一一列舉了。</p><p&
33、gt; 這種報站方式最顯著的優(yōu)點就是節(jié)約勞動力,全程自動實現(xiàn),無需人工操作而且準(zhǔn)確快捷。但其最大的前提是要花費大量人力物力進行系統(tǒng)的建設(shè),一旦建成所帶來的效益也是不容忽視的。</p><p><b> 方案二:手動報站</b></p><p> 在公交車上配有控制器,到站時司機只需按下按鍵,即可調(diào)用程序控制輸出模塊進行報站。</p><p&g
34、t; 與自動報站的方式相比較,手動報站功能雖然落后很多,但其最大的優(yōu)勢在于造價低廉,系統(tǒng)簡單,易于實現(xiàn)。雖然在一定程度上增加了司機的工作,但由于低付出高回報,只需少量操作即可達到接近自動報站的效果,使得手動報站在很多地區(qū)仍占有較大的比例。</p><p> 對上述方案進行比較,自動報站系統(tǒng)普遍造價較高,定位精度能否符合要求,有待研究;站臺裝置建設(shè)不僅費時費力,同時不同線路的信號干擾問題也須要考慮。而且一旦公交
35、線路發(fā)生變化,增減站臺等都會造成系統(tǒng)無法正常運行。由此也可以看出自動報站系統(tǒng)尚處于研究發(fā)展階段,還存在一些缺陷。</p><p> 自動報站與手動報站在輸出部分基本上相同,區(qū)別在于輸入信號是來源于手動還是其他方式。綜合上述分析結(jié)合單片機系統(tǒng)設(shè)計的原則,本設(shè)計選用手動報站系統(tǒng)。與自動報站相比可靠性和性價比較高同時操作簡單,更重要的是設(shè)計周期短,易于實現(xiàn)和檢測,發(fā)現(xiàn)問題也能夠及時修正。</p><
36、;p><b> 3 硬件設(shè)計</b></p><p> 3.1 主控電路設(shè)計</p><p> 3.1.1 單片機選型</p><p> 單片機的選擇對于后續(xù)的電路設(shè)計和軟件編程的工作量和復(fù)雜程度都有著很大的影響,在選型時應(yīng)遵循基本原則,功能最低要求要能夠達到設(shè)計要求,在此基礎(chǔ)上考慮可靠性以及性價比等。同時在設(shè)計時還要盡量用芯片完
37、成,少用外圍器件,因為過多的外接電路不僅會增加成本還會增加系統(tǒng)復(fù)雜性出錯率也會相應(yīng)提高,因此要簡化外圍電路,盡可能用軟件功能取代硬件功能。綜合上述原則,本人選用了AT89C51單片機。</p><p> AT89C51是一種帶4K字節(jié)FLASH存儲器的低電壓、高性能CMOS 8位微處理器。選擇該型號是基于以下幾點:指令簡單,易學(xué)易懂;外圍電路簡單,硬件設(shè)計方便;IO口操作簡單,無方向寄存器;資源豐富,一般設(shè)計足
38、夠用了,要實現(xiàn)本設(shè)計的功能完全足夠了;價格便宜、容易購買,資料豐富容易查到,程序燒寫簡單等多種優(yōu)點。同時在單片機的學(xué)習(xí)中我們教學(xué)使用的也是該型號,因此對其功能和指令都較為熟悉,在設(shè)計時也方便很多。</p><p> 3.1.2 振蕩電路</p><p> 單片機系統(tǒng)內(nèi)都有晶體振蕩器,它通過與單片機內(nèi)部電路結(jié)合產(chǎn)生系統(tǒng)所需的時鐘頻率,而晶振頻率的高低直接決定了單片機運行的快慢。主要由一個
39、單級反相器組成。XTAL1為反相器的輸入,XTAL2為反相器的輸出??梢岳盟鼉?nèi)部的振蕩器產(chǎn)生時鐘,只要在XTAL1和XTAL2引腳上外接一個晶體及電容組成的并聯(lián)諧振電路,便構(gòu)成一個自激振蕩器,此方法稱為內(nèi)部方式。 </p><p> 另一種方法為外部時鐘方式,外部振蕩信號通過XTAL2端直接接至內(nèi)部時鐘電路內(nèi)部反相放大器的輸入端XTAL1端接地。</p><p> 上述兩種方式作用都
40、是一樣的,即向系統(tǒng)提供時鐘,其區(qū)別是外部方式頻率穩(wěn)定且精度高而內(nèi)部方式一般不夠準(zhǔn)確,存在一定誤差。在應(yīng)用時如果對準(zhǔn)確性要求不高的話可以選用內(nèi)部時鐘方式。</p><p> 本設(shè)計采用內(nèi)部時鐘方式,這種方式的結(jié)構(gòu)緊湊,成本低廉,可靠性高。 振蕩器的電路中包括外接的反饋元件,即片外晶體振蕩器及電容C1,C2,它們組成的并聯(lián)諧振回路構(gòu)成了一個自激振蕩器,向內(nèi)部時鐘電路提供振蕩時鐘。電容的大小取決于片外晶體的振蕩頻率。
41、振蕩器的電路如圖3.1所示。</p><p> 圖3.1 振蕩電路圖</p><p> 在單片機中對所使用的振蕩晶體的參數(shù)要求如下: </p><p> ESR(等效串聯(lián)電阻):根據(jù)所需頻率按圖3.2選取。 </p><p> C0(并聯(lián)電容):最大7.0pF。 </p><p> CL(負(fù)載電容):30pF
42、+3pF。 </p><p> 其誤差及溫度變化的范圍要按系統(tǒng)的要求來確定。</p><p> 圖3.2 ESR與頻率的關(guān)系曲線 </p><p> 在本設(shè)計中,在XTAL1和XTAL2引腳上外接一個12MHZ的晶振及兩個20nF的電容。</p><p> 3.1.3 復(fù)位電路</p><p> 所有單片
43、機在啟動的時候都需要復(fù)位,使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開始工作。AT89C51單片機的復(fù)位信號是從RST引腳輸入到芯片內(nèi)的施密特觸發(fā)器中的。當(dāng)時鐘電路工作后,持續(xù)給出2個機器周期的高電平即可完成復(fù)位操作。復(fù)位方式分為手動復(fù)位和上電復(fù)位: </p><p><b> 手動復(fù)位</b></p><p> 手動復(fù)位需要人為在復(fù)位輸入端RST上加入
44、高電平。通常采取的辦法是在RST端和正電源VCC之間接一個按鈕。按下按鈕后電源端的高電平就會直接加到RST端。由于人的動作即使很快也能使按鈕保持接通數(shù)十毫秒,保證能滿足復(fù)位的時間要求。</p><p><b> 2、 上電復(fù)位</b></p><p> AT89C51的上電復(fù)位電路,只要在RST復(fù)位輸入引腳上接一電容至VCC端,下接一個電阻到地即可。上電復(fù)位的過程
45、是在加電時,復(fù)位電路通過電容加給RST端一個短暫的高電平信號,此高電平信號隨著VCC對電容的充電過程而逐漸回落,即RST端的高電平信號必須維持足夠長的時間。</p><p> 上電復(fù)位適用于較為成熟的產(chǎn)品中,而手動按鍵復(fù)位比較適合樣本制作或?qū)嶒炚{(diào)試等場合,因此本設(shè)計中采用手動復(fù)位方式,電路圖如圖3.3所示</p><p><b> 圖3.3 復(fù)位電路</b><
46、;/p><p> 3、 復(fù)位后寄存器的狀態(tài)</p><p> 當(dāng)系統(tǒng)復(fù)位后,內(nèi)部寄存器的狀態(tài)如表3.1所列,即在SFRS中,除了端口鎖存器、堆棧指針SP和串行口的SBUF外,其余的寄存器全部清0,端口鎖存器的復(fù)位值為0FFH,堆棧指針值為07H,SBUF內(nèi)為不定值。內(nèi)部RAM的狀態(tài)不受復(fù)位的影響,在系統(tǒng)上電時,RAM的內(nèi)容是不定的。</p><p> 表3.1 復(fù)
47、位后寄存器狀態(tài)</p><p> 3.2 語音電路設(shè)計</p><p> 報站系統(tǒng)中語音部分也是重要的一塊,隨著科技產(chǎn)品集成化提高,語音芯片的研究和應(yīng)用也越來越廣泛,因此也造成了芯片的種類繁多,功能各異,要從眾多芯片中做出合適的選擇,要考慮多方面的因素。</p><p> 在選擇時首先要考慮設(shè)計的功能要求,本設(shè)計為公交報站器,因此芯片要以放音功能為主,但同時考
48、慮到站點變更等因素,也需要具有錄音功能;由于報站器的使用時間會很久,因此語音內(nèi)容保存的時間要久。通常有錄音功能的芯片也具有放音功能。</p><p> 就目前市場上常見的一些語音芯片中WTN3、WT5S、WTH等系列是一次性語音的,不作考慮;排除其它音質(zhì)不好的,語音長度不合適的芯片后,我選擇了ISD4004系列語音芯片。</p><p> 首先該系列語音芯片采用多電平直接模擬量存儲技術(shù)
49、, 每個采樣值直接存貯在片內(nèi)閃爍存貯器中,因此能夠非常真實、自然地再現(xiàn)語音、音樂、音調(diào)和效果聲,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和"金屬聲"。在音質(zhì)上完全可以滿足報站的要求;同時芯片單片錄放時間為8到16分鐘,非常適用于移動電話及其他便攜式電子產(chǎn)品中。語音信息存存放在閃爍存儲器中,可在斷電情況下保存一百年(典型值),可反復(fù)錄音十萬次。</p><p><b> 表3
50、.2 管腳功能</b></p><p> ISD4004與外圍設(shè)備的連接:</p><p> 語音芯片ISD4004主要與三部分外圍設(shè)備連接,即單片機控制電路、語音錄入電路和語音播放電路。電路圖如圖3.4所示:</p><p> 圖3.4 ISD4004外圍電路連接圖</p><p> 3.3 顯示電路設(shè)計</p&
51、gt;<p> 顯示屏共分為電子顯示屏(LED)和液晶顯示屏(LCD)兩種。兩種顯示器各有特點,并不能簡單的作比較。由于液晶顯示器LCD(Liquid Crystal Display)廣泛應(yīng)用于微型計算機系統(tǒng)中,具有體積小、功耗低、顯示內(nèi)容豐富等特點,LCD在大小和形狀上更加靈活,接口簡單,不但可以顯示數(shù)字、字符,還可以顯示文字和圖形。而且現(xiàn)在LCD已經(jīng)是單片機應(yīng)用設(shè)計中最常用的信息顯示器件了。因此本設(shè)計選用的是LCD1
52、602液晶顯示屏。</p><p> 該顯示屏能同時顯示16列2行即32個字符,是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。1602采用14腳接口,與單片機的連接電路如圖3.5所示:</p><p> 圖3.5 LCD1602與單片機連接電路圖</p><p> 3.4 按鍵電路設(shè)計</p><p> 最后是輸入部分的設(shè)計
53、,本設(shè)計使用最簡單的鍵盤輸入。鍵盤是由一些按鍵或開關(guān)組合而成的輸入設(shè)備,它是單片機系統(tǒng)中最常用的人機聯(lián)系的設(shè)備。操作人員可以向系統(tǒng)輸入一些簡單的數(shù)據(jù)或指令。</p><p> 鍵盤按其結(jié)構(gòu)形式可分為編碼式鍵盤和非編碼式鍵盤兩種類型。編碼式鍵盤通過其內(nèi)部的硬件電路自動產(chǎn)生被按鍵的編碼。這種鍵盤使用方便但是價格較為昂貴;非編碼式鍵盤則通過軟件程序來識別按鍵及鍵值;這種方式結(jié)構(gòu)簡單,但是不如編碼式的使用起來方便,按鍵
54、識別程序的編制也比較麻煩。</p><p> 此外鍵盤還可分為獨立式鍵盤和矩陣式鍵盤。當(dāng)所用按鍵較少時可選用獨立式按鍵;矩陣式則用于按鍵較多的地方。本設(shè)計中需要實現(xiàn)的功能有進站及出站語音報站還有在報錯時,可以調(diào)節(jié)到上一站和下一站,因此一共需要四個按鍵,所以選擇獨立式按鍵,即各個按鍵單獨使用一根接口。按鍵電路圖如圖3.6所示</p><p><b> 圖3.6 按鍵電路<
55、/b></p><p> 在選定鍵盤后還必須要解決以下問題: </p><p> 3.4.1 按鍵的確認(rèn)</p><p> 每一個按鍵即是一個機械開關(guān),按下按鍵后,首先要判斷按鍵是否按下,而鍵的閉合與否則取決于口線的高低電平上。由于是機械開關(guān),考慮到機械觸點的彈性及電壓突跳的因素,往往在觸電閉合或斷開的瞬間會出現(xiàn)電壓抖動,很容易造成按鍵確認(rèn)失誤,因此就需
56、要按鍵防抖動技術(shù)。</p><p> 3.4.2 按鍵防抖動技術(shù)</p><p> 為了使系統(tǒng)對一次按鍵動作只確認(rèn)一次鍵值,必須排除抖動的影響,主要有硬件及軟件兩種解決手段。</p><p> 硬件方法就是在按鍵電路中加入與非門電路,這樣即使按鍵時反生抖動也不會影響系統(tǒng)判斷鍵值;其特點是在每個按鈕上都要加消抖電路,對于按鍵較多的地方并不適用;</p>
57、;<p> 本設(shè)計中選用軟件消抖方式,即采用時間延遲的方法避開抖動,當(dāng)程序第一次檢測到按鍵信號后延遲約10到20毫秒,再次檢測,如果按鍵處的電平狀態(tài)仍然保持不變,則判定為按鍵按下,在按鍵釋放時同理。</p><p> 3.4.3 按鍵保護</p><p> 除上述問題外,還有另外一種情況即有時會有同時按下雙鍵或多個鍵。這種情況是不在原先考慮情況中的,因此我們要通過嚴(yán)格的
58、邏輯處理。每次只處理一個按鍵,期間對任何按鍵的操作不作處理,且不論一次按鍵時間有多長,系統(tǒng)僅執(zhí)行一次的按鍵程序。</p><p><b> 4 軟件設(shè)計</b></p><p><b> 4.1主程序流程圖</b></p><p> 圖4.1 主程序流程圖</p><p> 打開系統(tǒng)后,進行
59、初始化設(shè)置,使系統(tǒng)各部分恢復(fù)到初始狀態(tài),本系統(tǒng)旨在模擬實現(xiàn)報站功能,所以預(yù)設(shè)5個站點。起始時默認(rèn)為上行線,系統(tǒng)開始執(zhí)行按鍵掃描程序,如有按鍵按下則判斷鍵值,并按照指令調(diào)用程序給語音模塊和顯示模塊執(zhí)行報站功能,期間程序會不斷檢測是否到達終點站,如果到達終點站則會自動切換到下行線,重復(fù)上述過程。</p><p> 軟件設(shè)計過程采用模塊化設(shè)計,本系統(tǒng)共分為以下幾個模塊:主程序、語音模塊、顯示模塊、按鍵模塊。</
60、p><p> 4.2 模塊程序設(shè)計</p><p> 4.2.1 語音播放流程圖</p><p> 語音部分較為簡單,系統(tǒng)運行后執(zhí)行上電操作,并進行上電延遲直至上電結(jié)束后開始執(zhí)行指令,調(diào)用預(yù)設(shè)地址中的內(nèi)容,進行語音播放。</p><p> 圖4.2 語音播放流程圖</p><p> 4.2.2 顯示模塊流程圖&l
61、t;/p><p> 系統(tǒng)上電后,顯示模塊初始化,當(dāng)接收到鍵盤指令后,調(diào)用預(yù)存的字符代碼,解碼并通過液晶屏幕顯示出來。</p><p> 圖4.3 顯示模塊流程圖4.2.3 按鍵模塊</p><p> 在按鍵控制部分,本設(shè)計采取的是軟件處理的方式。系統(tǒng)運行后,開始掃描按鍵當(dāng)有按鍵按下,程序判斷按鍵電平狀態(tài),若為低電平,則延時100MS,之后再次檢測按鍵信號,若按鍵仍
62、為低電平,則認(rèn)為此時為按下狀態(tài),之后再判斷鍵值,根據(jù)按鍵執(zhí)行指令,跳轉(zhuǎn)執(zhí)行語音和顯示程序。否則判定按鍵沒有按下,重新進行掃描。模塊軟件控制流程如圖所示</p><p> 圖4.4 按鍵部分流程圖</p><p><b> 5 總結(jié)</b></p><p> 經(jīng)過幾個月的努力,本次設(shè)計已接近尾聲。通過后期的調(diào)試、修改,系統(tǒng)已經(jīng)基本實現(xiàn)了公交
63、報站的功能。</p><p> 本設(shè)計應(yīng)用了單片機的多種功能,從輸入信號采集,到數(shù)據(jù)處理,再到輸出控制綜合了硬件軟件等手段。首先,本系統(tǒng)成本低,系統(tǒng)簡單穩(wěn)定,只需簡單的操作即可完成完整的公交報站功能。系統(tǒng)運行時默認(rèn)為上行線,到達站點時,按下按鍵即開始報站,同時在液晶屏上顯示站點信息及服務(wù)用語;出站時提示下一站,到達終點站自動切換到下行線。本系統(tǒng)的創(chuàng)新點在于增加了誤報糾錯功能,即出現(xiàn)錯誤時可通過上調(diào)和下調(diào)按鍵選擇
64、站點重新報站。就目前的報站系統(tǒng)來說,當(dāng)司機漏報一兩站時,下一站就會連按幾下,所以會出現(xiàn)連報數(shù)站的情況,這會對乘客造成一定困擾。因此本系統(tǒng)對此作出了一些改進。</p><p> 在調(diào)試階段,本人也發(fā)現(xiàn)了系統(tǒng)存在的許多不足。相比來說,自動報站還是要優(yōu)于手動報站的,但是由于實現(xiàn)有難度而且能力有限,所以退而求其次選擇了手動報站。另外本次所用LCD顯示屏只能顯示字符而無法顯示文字,因為文字顯示涉及到了字模提取等軟件,所以
65、沒有實現(xiàn)。此外語音部分只有原理設(shè)計也是不足之處。</p><p> 總體來說,本次設(shè)計還是讓我受益匪淺,由最初拿到課題時的茫然無措,再到查閱資料,方案篩選直到一步步實現(xiàn),使我不僅僅對所學(xué)的知識鞏固和加強,更重要的是讓我學(xué)會了研究問題的方法,只要認(rèn)準(zhǔn)目標(biāo),知道自己要做什么,剩下的就是一點點去付諸行動。</p><p><b> 參考文獻</b></p>
66、<p> [1] 李曉林.《單片機原理與接口技術(shù)》(第2版)[M]. 電子工業(yè)出版社, 2013</p><p> [2] 徐沐龍.《單片機原理及應(yīng)用》[M]. 機械工業(yè)出版社 , 2013</p><p><b> (3)窗體頂端</b></p><p><b> 窗體底端</b></p&g
67、t;<p> [3] 陳洪軍,陳和平.《語音錄放芯片ISD4003及其應(yīng)用》[M]. 電子技術(shù), 2000-03-12</p><p> [4] 李華.MCS-51系列單片機實用接口技術(shù)[M] .北京航空航天大學(xué)出版社,2003 </p><p> [5] 李建榮,錢松.Protel軟件在電路設(shè)計中的應(yīng)用[M].電子技術(shù), 2010-12-25</p>&
68、lt;p> [6] 唐正.Proteus在單片機教學(xué)中的應(yīng)用[M].華中科技大學(xué), 2008-06-01</p><p> [7] 何立民.MCS-51系列單片機應(yīng)用系統(tǒng)設(shè)計[M]. 北京航天出版社,1990 </p><p> [8] 郭天祥.新概念51單片機C語言教程——入門、提高、開發(fā)、拓展[M] . 電子工業(yè)出版社</p><p> [9] 郭
69、金影. 基于單片機的LED顯示屏系統(tǒng)設(shè)計與PROTEUS仿真[M]. 大連交通大學(xué), 2010</p><p> [10] 周波.公交車自動報站系統(tǒng)的設(shè)計[J]. 四川理工學(xué)院學(xué)報:自然科學(xué)版,2008.</p><p> [11] 許連華,李學(xué)慶. 基于GPS的公交車自動報站系統(tǒng)[J].計算工程程 ,2005.</p><p> [12] 潘新民、王燕芳.微
70、型計算機控制技術(shù).北京:電子工業(yè)出版社,2006.</p><p> [13] V. Yu. Teplov,A. V. Anisimov. Thermostatting System Using a Single-Chip Microcomputer and Thermoelectric Modules Based on the Peltier Effect[J] ,2002 </p><
71、p> [14] Yeager Brent.How to troubleshoot your electronic scale[J].. Powder and Bulk Engineering. 1995 </p><p> [15] Meehan Joanne,Muir Lindsey.SCM in Merseyside SMEs:Benefits and barriers[J].. TQM Journ
72、al. 2008 </p><p><b> 致 謝</b></p><p> 畢業(yè)設(shè)計終于在老師的悉心指導(dǎo)下完成了。作為一名即將離開大學(xué)校門的學(xué)生,我把本次設(shè)計看作是大學(xué)中的最后一門功課,投入了巨大的時間和精力。設(shè)計題目是用單片機實現(xiàn)公交車報站。由于在大學(xué)中重點學(xué)習(xí)的是機械方面的知識,僅靠自己的力量完成設(shè)計任務(wù)的難度是相當(dāng)大的。在制作設(shè)計的過程中,我確實遇到了
73、許多棘手的問題,碰到了很多的困難。但是,這些問題和困難在和同學(xué)們的幫助下都被一一解決。在這段時間里張老師也給予了我很大的幫助,她的一些建議和指導(dǎo)讓我少走了很多彎路。在本次設(shè)計中,我不僅學(xué)到了很多科學(xué)知識和工作方法,而且學(xué)到了作為一個研究人員應(yīng)有的治學(xué)態(tài)度和為人處世的道理,這一切都將使我終身受益。謹(jǐn)在此向致以崇高的敬意!對給予我支持和幫助的所有同學(xué)們表示衷心的感謝!</p><p><b> 附 錄&
74、lt;/b></p><p> 附錄一: 系統(tǒng)原理圖</p><p> 附錄二:LCD1602頭文件程序</p><p> #include <AT89X52.h></p><p> #include <intrins.h></p><p> sbit LcdRs=P2^0;&l
75、t;/p><p> sbit LcdRw=P2^1;</p><p> sbit LcdEn=P2^2;</p><p> sfr DBPort= 0x80; </p><p> unsigned char LCD_Wait(void)</p><p><b> {</b></p
76、><p><b> LcdRs=0;</b></p><p> LcdRw=1;_nop_();</p><p> LcdEn=1;_nop_();</p><p><b> LcdEn=0;</b></p><p> return DBPort;</p&
77、gt;<p> } </p><p> #define LCD_COMMAND0 </p><p> #define LCD_DATA1 </p><p> #define LCD_CLEAR_SCREEN0x01 </p><p> #
78、define LCD_HOMING 0x02 </p><p> void LCD_Write(bit style,unsigned char input)</p><p><b> {</b></p><p><b> LcdEn=0;</b></p><p> LcdRs
79、=style;</p><p> LcdRw=0; </p><p><b> _nop_();</b></p><p> DBPort=input; </p><p> _nop_(); </p><p> LcdEn=1; </p&
80、gt;<p> _nop_(); </p><p> LcdEn=0; </p><p><b> _nop_();</b></p><p> LCD_Wait();</p><p> } </p><p> #define
81、LCD_SHOW 0x04 </p><p> #define LCD_HIDE 0x00 </p><p> #define LCD_CURSOR0x02 </p><p> #define LCD_NO_CURSOR0x00 </p><p> #define
82、 LCD_FLASH0x01 </p><p> #define LCD_NO_FLASH0x00 </p><p> void LCD_SetDisplay(unsigned char DisplayMode)</p><p><b> {</b></p><p> LCD_Write(L
83、CD_COMMAND,0x08|DisplayMode); </p><p> } </p><p> #define LCD_AC_UP 0x02</p><p> #define LCD_AC_DOWN0x00 </p><p> #define
84、LCD_MOVE0x01 </p><p> #define LCD_NO_MOVE0x00 </p><p> void LCD_SetInput(unsigned char InputMode)</p><p><b> {</b></p><p> LCD_Write(
85、LCD_COMMAND,0x04|InputMode);</p><p><b> }</b></p><p> void LCD_Initial()</p><p><b> {LcdEn=0;</b></p><p> LCD_Write(LCD_COMMAND,0x38); &l
86、t;/p><p> LCD_Write(LCD_COMMAND,0x38);</p><p> LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); </p><p> LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);</p><p> LCD_SetInput(LCD_AC
87、_UP|LCD_NO_MOVE); </p><p><b> }</b></p><p> void GotoXY(unsigned char x,unsigned char y)</p><p><b> {</b></p><p><b> if(y==0)<
88、;/b></p><p> LCD_Write(LCD_COMMAND,0x80|x); </p><p><b> if(y==1)</b></p><p> LCD_Write(LCD_COMMAND,0x80|(x-0x40));</p><p><b> }</
89、b></p><p> void Print(unsigned char*str)</p><p><b> {</b></p><p> while(*str!='\0')</p><p><b> {</b></p><p> LCD_Wr
90、ite(LCD_DATA,*str);</p><p><b> str++; </b></p><p><b> }</b></p><p><b> }</b></p><p><b> 附錄三:主程序清單</b></p>&l
91、t;p> #include"AT89C51.H"</p><p> #include"LCD1602.h"</p><p> #define uchar unsigned char</p><p> sbit beep=P3^4;</p><p> sbit P31=P3^1;
92、 </p><p> sbit P24=P2^4; </p><p> sbit P25=P2^5; </p><p> sbit led=P1^0; </p><p> sbit re=P3^0; </p&
93、gt;<p> //sbit reset=P3^4; </p><p><b> char i;</b></p><p> uchar code dis0[]="busstation";</p><p> uchar code dis1[]="A zhan &
94、quot;; </p><p> uchar code dis2[]="B zhan ";</p><p> uchar code dis3[]="C zhan ";</p><p> uchar code dis4[]="D zhan ";</p><p>
95、; uchar code dis5[]="E z han ";</p><p><b> uchar *p;</b></p><p> uchar *p0;</p><p> void Delay1ms(unsigned int count) </p><p><b> {&
96、lt;/b></p><p> unsigned int i,j;</p><p> for(i=0;i<count;i++)</p><p> for(j=0;j<120;j++);</p><p><b> }</b></p><p> void delay()&l
97、t;/p><p><b> {</b></p><p><b> int i,j;</b></p><p> for(i=0;i<255;i++)</p><p> for(j=0;j<120;j++);</p><p><b> }</b&
98、gt;</p><p> void send() </p><p><b> {</b></p><p><b> re=0;</b></p><p> TMOD=0x02;</p><p><b> EA=1;</b></p>
99、<p><b> TH0=0xf3;</b></p><p><b> TL0=0xf3;</b></p><p><b> ET0=1;</b></p><p><b> }</b></p><p><b> main(
100、)</b></p><p><b> {</b></p><p> LCD_Initial(); </p><p> GotoXY(0,0);</p><p> Print("Now:");</p><p> GotoXY(0,1);</p>
101、<p> Print("Next:");</p><p><b> i=0;</b></p><p> GotoXY(5,0); </p><p> Print(dis0); </p><p> p=dis1; </p><p> Go
102、toXY(6,1); </p><p> Print(dis1); </p><p><b> delay();</b></p><p> beep=1; </p><p><b> delay();</b></p><p><b> d
103、elay();</b></p><p><b> delay();</b></p><p><b> beep=0; </b></p><p><b> P31=1;</b></p><p> send(); </p><p&
104、gt; TR0=1; </p><p><b> while(1)</b></p><p><b> {</b></p><p> Delay1ms(300);</p><p> while(P31); </p><p><b> d
105、elay();</b></p><p> P24=0; </p><p><b> delay();</b></p><p><b> P24=1;</b></p><p><b> delay();</b></p><
106、p><b> P25=0;</b></p><p><b> delay();</b></p><p><b> P25=1;</b></p><p><b> if(i==5)</b></p><p><b> {i=0;}&l
107、t;/b></p><p><b> else</b></p><p><b> {i++;}</b></p><p><b> switch(i)</b></p><p><b> {</b></p><p> c
108、ase 0:{p0=dis0;p=dis1;}break;</p><p> case 1:{p0=dis1;p=dis2;}break;</p><p> case 2:{p0=dis2;p=dis3;}break;</p><p> case 3:{p0=dis3;p=dis4;}break;</p><p> case 4:{p
109、0=dis4;p=dis5;}break;</p><p><b> };</b></p><p> GotoXY(5,0); </p><p> Print(p0); </p><p> GotoXY(6,1); </p><p> Print(p); <
110、/p><p><b> delay();</b></p><p> beep=1; </p><p><b> delay();</b></p><p><b> delay();</b></p><p><b> delay()
111、;</b></p><p><b> beep=0; </b></p><p> while(!P31) </p><p><b> {</b></p><p><b> delay();</b></p><p><b
112、> led=0;</b></p><p><b> }</b></p><p><b> led=1;</b></p><p><b> delay();</b></p><p><b> }</b></p>&l
113、t;p><b> }</b></p><p> void ttl(void)interrupt 1</p><p><b> {</b></p><p><b> re=~re;</b></p><p><b> }</b></p&g
114、t;<p> 附錄四:鍵盤接口參考程序:</p><p> #include<reg51.h> </p><p> void delay() //用于鍵盤消除抖動的延時函數(shù) </p><p><b> { </b></p><p> unsigned char; for{i
115、=400;i>0;i--}; </p><p><b> } </b></p><p> void main() //主函數(shù)main() </p><p><b> { </b></p><p> unsigned char key; </p><p
116、> while(1) </p><p><b> { </b></p><p> P1=0xff; //從P1口讀數(shù)據(jù)必須先給P1口寫1 </p><p> key=P1; //讀入P1口的數(shù)據(jù)必須先給P1口寫1 </p><p> if(key!=0x00) //判斷是否有鍵按下,
117、當(dāng)沒有鍵按下時,P1口的 數(shù)據(jù)為0x00 </p><p><b> { </b></p><p> delay(); //延時,去抖動 </p><p> key=P1; //再次讀入P1口的數(shù)據(jù),賦值給變量key </p><p> if(key!=0x00) //再次
118、判斷是否有鍵按下 </p><p> switch(key) </p><p><b> { </b></p><p> case 0x01:key0();break; //按鍵0功能函數(shù) </p><p> case 0x02:key1();break; //按
119、鍵1功能函數(shù) </p><p> case 0x04:key2();break; //按鍵2功能函數(shù) </p><p> default:break; </p><p><b> } </b></p><p><b> } </b>&l
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子與信息工程畢業(yè)論文單片機公交車報站器設(shè)計
- 基于單片機的公交車報站系統(tǒng)設(shè)計論文
- 基于單片機的公交車自動報站器畢業(yè)論文
- 基于單片機的公交車報站系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--基于單片機的公交車報站系統(tǒng)設(shè)計
- 畢業(yè)設(shè)計-基于單片機的公交車報站系統(tǒng)設(shè)計
- 畢業(yè)論文(設(shè)計)基于單片機的公交車自動報站器的設(shè)計
- 畢業(yè)設(shè)計---基于單片機的公交車報站系統(tǒng)設(shè)計
- 基于單片機公交車語音報站系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--基于單片機的公交車自動報站系統(tǒng)
- 畢業(yè)設(shè)計--基于單片機的公交車自動報站系統(tǒng)
- 畢業(yè)設(shè)計基于單片機的公交車自動報站系統(tǒng)
- 基于51單片機的公交車報站系統(tǒng)設(shè)計
- 基于單片機的公交車自動報站系統(tǒng)設(shè)計畢業(yè)設(shè)計
- 基于單片機的語音及顯示公交車自動報站器畢業(yè)論文
- 畢業(yè)論文--基于單片機的公交報站系統(tǒng)
- 單片機課程設(shè)計---公交車自動報站系統(tǒng)
- 通信工程畢業(yè)論文_基于單片機的公交報站系統(tǒng)設(shè)計
- 公交車自動報站系統(tǒng)畢業(yè)論文
- 單片機公交車報站器設(shè)計【開題報告】
評論
0/150
提交評論