機械電子工程畢業(yè)論文-基于單片機的公交車報站系統(tǒng)設計_第1頁
已閱讀1頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p>  基于單片機的公交車報站系統(tǒng)設計</p><p><b>  誠信聲明</b></p><p>  本人鄭重聲明:本論文及其研究工作是本人在指導教師的指導下

2、獨立完成的,在完成論文時所利用的一切資料均已在參考文獻中列出。</p><p>  本人簽名: 年 月 日</p><p><b>  畢業(yè)設計任務書</b></p><p>  設計題目: 基于單片機的公交車報站系統(tǒng)設計

3、 </p><p><b>  1.課題意義及目標</b></p><p>  學習并掌握單片機及相關知識;實現(xiàn)公交車語音報站并有誤報糾錯功能,能播報語音提示信息及服務用語;在查閱資料的基礎上,完成系統(tǒng)整體方案設計;完成系統(tǒng)硬件設計,完成控制、顯示及語音部分的設計,完成系統(tǒng)元器件的選型,在掌握電子線路圖繪制工具軟件的基礎上,完成系統(tǒng)組成框圖的繪制、完成相關

4、電路圖及系統(tǒng)原理圖的繪制;完成系統(tǒng)軟件設計包括軟件流程圖的繪制及程序的編制及調試。</p><p><b>  2.主要內容</b></p><p>  (1)、認真閱讀任務書,通過查閱相關文獻資料,在了解課題研究目的意義及現(xiàn)狀</p><p>  等基礎上,構建設計方案并進行充分論證,并撰寫開題報告;</p><p>

5、  (2)、進行系統(tǒng)總體設計,熟悉開發(fā)環(huán)境;</p><p>  (3)、系統(tǒng)硬件設計,系統(tǒng)軟件設計;</p><p>  (4)、畢業(yè)設計說明書;</p><p><b>  3.主要參考資料</b></p><p>  [1]李曉林.單片機原理與接口技術[M] . 北京:電子工業(yè)出版社, 2013</p>

6、<p>  [2]徐沐龍.單片機原理及應用[M] . 北京:機械工業(yè)出版社, 2013</p><p><b>  4.進度安排</b></p><p>  審核人: 年 月 日</p><p>  基于單片機的公交車報站系統(tǒng)設計</p><p>

7、;  摘 要:公交車作為常用的交通工具為人們的出行提供了方便快捷的服務,公交車的報站則直接影響服務的質量。針對當前普遍使用的公交報站器,本課題在其基礎上進行了改進,設計了一款基于單片機的手動公交報站系統(tǒng)。 </p><p>  該系統(tǒng)以AT89C51單片機為核心控制部分集合了LCD顯示,ISD4004語音播放,按鍵控制等多個模塊。主要實現(xiàn)的功能為:進站和出站時,通過鍵盤手動控制報站,同時可將信息及服務用語

8、在顯示屏上顯示,使得乘客能及時了解所需信息,為市民提供更人性化,更完善的服務。與此同時,還增加了誤報糾錯功能使系統(tǒng)更加完善。</p><p>  關鍵詞:公交報站,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)的方案設計4</p><p>  2.1系統(tǒng)的工作原理4</p><p>  2.2方案比較與選擇4</p><p><b>  3 硬件設計6</b></p><p>  3.1 主控電路設計6</p><p>  3.1.1 單片機選型6</p>

15、<p>  3.1.2 振蕩電路6</p><p>  3.1.3 復位電路8</p><p>  3.2語音電路設計10</p><p>  3.3顯示電路設計14</p><p>  3.4按鍵電路設計14</p><p>  3.4.1按鍵的確認16</p><p>

16、;  3.4.2按鍵防抖動技術16</p><p>  3.4.3按鍵保護16</p><p><b>  4 軟件設計17</b></p><p>  4.1主程序流程圖17</p><p>  4.2模塊程序設計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 總結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>  當今社會在伴隨著經(jīng)濟快速發(fā)展,城市化進程提高的同時,對于交通出行的要求也越來越高。而作為一個人口大國,這一問題尤為明顯。近年來人們的個人收入都有了很大

19、的提高,因此越來越多的人都有了私家車,但這最直接的后果就是增大了城市交通的壓力。公交車的存在極大的緩解了城市交通的壓力,公交線路遍布整個城市,完全能夠滿足人們日常的出行,不僅方便快捷而且經(jīng)濟實惠,與此同時更減少了汽車尾氣排放,發(fā)展公共交通事業(yè)是城市發(fā)展建設中非常重要的一環(huán)。想要吸引市民乘坐公交車出行,首要的方法就是提高公交車運營服務水平。</p><p>  作為市民出行的主要交通工具之一,公交車的服務系統(tǒng)配置將

20、直接影響乘客的出行體驗。對于公交車大家都是非常熟悉的,在工作日出行最避免不了的就是擠公交了,過去,公交車上通常是由司機或者售票員在到站時報站,由于各地的方言口音等都存在或多或少的差異,很容易給乘客造成困擾,導致坐錯或坐過站,有時需要售票員喊好幾遍,這種方式既費時費力又有很多弊端,這點在過去本人也深有體會。</p><p>  隨著科技進步,現(xiàn)在大多數(shù)城市中公交車都已經(jīng)實現(xiàn)了無人售票方式,而微機技術和語音芯片等技術

21、的發(fā)展使得公交報站器誕生了,手動公交報站即由司機手動操作,通過操作系統(tǒng)的按鍵,當汽車進站時,按下按鍵,系統(tǒng)調用程序中當前站點的信息通過語音芯片由擴音設備播放給乘客;出站時同理,提醒乘客下一站的站名?,F(xiàn)在的報站系統(tǒng)除了基本的報站功能外還添加了許多服務用語,例如:在上車時提醒乘客給老人、孕婦讓座,下車時注意安全等。這些功能使得公交系統(tǒng)更加完善同時也為乘客提供了更加人性化的服務。</p><p>  手動公交報站雖然操

22、作簡便但也存在一些弊端,司機在開車的同時,還要分出精力操作報站器,容易分散注意力也增加了工作量,尤其是上下班高峰期,車輛擁堵、路況復雜,這種情況下會存在很大的安全隱患,這就是為什么大家有時在乘車時會發(fā)現(xiàn)司機沒有報站。另一方面,由于是人工操作,出現(xiàn)差錯是必不可少的,如錯報、漏報等在所難免,有時沒有報站,下一站又連報了好幾站的情況相信大家也是遇到過的。</p><p>  針對上述情況,本課題模擬設計了一款手動公交報

23、站系統(tǒng),具有基本的報站功能。同時增加了改錯功能,即出現(xiàn)錯報、漏報時,司機可以通過按鍵選擇上一站或下一站重新報站,減少了報站出錯帶來的影響;另外,系統(tǒng)配備了液晶顯示屏,能夠顯示當前站及下一站站名。因為就本人所見的公交車上都是在車內一側設有公交線路站牌,到一站后該站紅燈亮,由于方位問題很多乘客不容易看到,對于不熟悉線路的乘客如果沒聽清報站很容易坐過站,而通過車載液晶屏可以及時獲取站臺信息,很好的避免了上述情況發(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ù)很少,地域也小,到目的地時只要乘務人員提醒一下即可;在城市中人口流動大,交通線路復雜只靠乘務人員很難承擔這樣的工作量,因此一套

25、智能公交報站系統(tǒng)是必不可少的,而手動報站器造價低廉,操作簡單,低成本即可實現(xiàn)所需的各種功能。在交通線路繁多的城市是首選方案;在較為發(fā)達的大城市中人流量極大,經(jīng)濟科技條件完全可以建立自動報站系統(tǒng)設施,可以達到報站零錯誤的同時也減輕了司機的工作量。 </p><p>  公交車報站系統(tǒng)的研究不論是在國內還是國外都經(jīng)歷了很久的歷史:</p><p><b>  國內研究現(xiàn)狀</

26、b></p><p>  我國由于經(jīng)濟起步較晚,所以從事該方面研究的時間較短。城市公共交通設施的建設和發(fā)展一直都落后于其他國家,公交車在其中的作用也一直沒有受到過重視。直到近些年來隨著車輛的急劇增加導致的交通擁擠、尾氣污染、環(huán)境惡化等一系列問題引起了人們的重視,政府認識到了公交車在其中的重要性,開始加大對公交設施建設的投資。由此產(chǎn)生的公交車報站系統(tǒng)也有了很大進步,到目前為止全國大多城市已基本普及了智能報站系

27、統(tǒng),而部分發(fā)達城市已經(jīng)建立了完整的自動報站設施,由總站統(tǒng)一調度,能讓資源得到充分的利用。</p><p><b>  國外研究現(xiàn)狀</b></p><p>  在國外對于這方面的研究要比國內早幾十年,而其中較早的則是日本,大約是在</p><p>  20世紀70年代研制出了公共汽車定位系統(tǒng),這一研究就是智能公交系統(tǒng)的雛形。而后來人們所知道的C

28、TCS系統(tǒng)也是由日本設計開發(fā)的;之后稍晚一些從事該方面研究的是美國。與日本不同,美國的側重點在對出行者性息、電子收費、車隊管理以及交通需求管理等方面的研究,而其中也包括了車輛自動定位系統(tǒng);歐洲各國家城市都有著悠久的歷史,基于街道較為狹窄的特點,其研究重點在于建設公交專用道和公交信號優(yōu)先。</p><p>  無論是何種的研究方向,其最終目的都是為人們提供更加方便快捷更加舒適的出行體驗。通過這些我們不難看出公交報站

29、器將逐漸由人工手動向自動化、智能化發(fā)展,實現(xiàn)完全自動化是其必然的發(fā)展方向。 </p><p>  2 系統(tǒng)的方案設計 </p><p>  2.1 系統(tǒng)的工作原理</p><p>  根據(jù)公交報站器的功能要求,設計了如圖2.1的結構圖,其中包括單片機核心控制部

30、分、單片機最小系統(tǒng)(電源、振蕩、復位電路等)、按鍵電路、顯示模塊、語音模塊。</p><p>  本系統(tǒng)使用八位單片機作為控制器。當系統(tǒng)接收到報站按鍵指令時,單片機通過語音芯片調用語音模塊錄制好的語音信息,再通過語音輸出電路進行語音報站。同時,單片機通過程序讀取站點信息,送入液晶顯示模塊,將站名、站數(shù)等信息顯示在屏幕上。當汽車到達某站時,司機或乘務人員通過鍵盤來控制系統(tǒng)進行工作。</p><p

31、>  圖2.1 系統(tǒng)結構圖</p><p>  2.2 方案比較與選擇</p><p>  方案一:公交車自動報站器</p><p>  就目前來說,常見的自動報站方式有如下幾種:一種是基于GPS的公交報站系統(tǒng),</p><p>  其原理是通過GPS定位系統(tǒng)確定汽車當前所在位置的坐標,當公交車到達預設站點一</p>&l

32、t;p>  定范圍內時即自動播報站臺信息以及服務用語等等,同樣離開該范圍后,亦會播放出站語音;另一種是無線射頻識別技術,在各個站臺建設一個無線信號發(fā)射裝置,而車上配備有接收裝置,到達站點范圍內,解碼接收到的信號,調用程序,對站臺信息進行播報;除此之外 還有一種是通過對車輪軸的轉角脈沖進行計數(shù),將計數(shù)值和預置值對比,即可確定報站時刻,達到準確報站的目的。還有一些使用很少的方式,這里就不一一列舉了。</p><p&

33、gt;  這種報站方式最顯著的優(yōu)點就是節(jié)約勞動力,全程自動實現(xiàn),無需人工操作而且準確快捷。但其最大的前提是要花費大量人力物力進行系統(tǒng)的建設,一旦建成所帶來的效益也是不容忽視的。</p><p><b>  方案二:手動報站</b></p><p>  在公交車上配有控制器,到站時司機只需按下按鍵,即可調用程序控制輸出模塊進行報站。</p><p&g

34、t;  與自動報站的方式相比較,手動報站功能雖然落后很多,但其最大的優(yōu)勢在于造價低廉,系統(tǒng)簡單,易于實現(xiàn)。雖然在一定程度上增加了司機的工作,但由于低付出高回報,只需少量操作即可達到接近自動報站的效果,使得手動報站在很多地區(qū)仍占有較大的比例。</p><p>  對上述方案進行比較,自動報站系統(tǒng)普遍造價較高,定位精度能否符合要求,有待研究;站臺裝置建設不僅費時費力,同時不同線路的信號干擾問題也須要考慮。而且一旦公交

35、線路發(fā)生變化,增減站臺等都會造成系統(tǒng)無法正常運行。由此也可以看出自動報站系統(tǒng)尚處于研究發(fā)展階段,還存在一些缺陷。</p><p>  自動報站與手動報站在輸出部分基本上相同,區(qū)別在于輸入信號是來源于手動還是其他方式。綜合上述分析結合單片機系統(tǒng)設計的原則,本設計選用手動報站系統(tǒng)。與自動報站相比可靠性和性價比較高同時操作簡單,更重要的是設計周期短,易于實現(xiàn)和檢測,發(fā)現(xiàn)問題也能夠及時修正。</p><

36、;p><b>  3 硬件設計</b></p><p>  3.1 主控電路設計</p><p>  3.1.1 單片機選型</p><p>  單片機的選擇對于后續(xù)的電路設計和軟件編程的工作量和復雜程度都有著很大的影響,在選型時應遵循基本原則,功能最低要求要能夠達到設計要求,在此基礎上考慮可靠性以及性價比等。同時在設計時還要盡量用芯片完

37、成,少用外圍器件,因為過多的外接電路不僅會增加成本還會增加系統(tǒng)復雜性出錯率也會相應提高,因此要簡化外圍電路,盡可能用軟件功能取代硬件功能。綜合上述原則,本人選用了AT89C51單片機。</p><p>  AT89C51是一種帶4K字節(jié)FLASH存儲器的低電壓、高性能CMOS 8位微處理器。選擇該型號是基于以下幾點:指令簡單,易學易懂;外圍電路簡單,硬件設計方便;IO口操作簡單,無方向寄存器;資源豐富,一般設計足

38、夠用了,要實現(xiàn)本設計的功能完全足夠了;價格便宜、容易購買,資料豐富容易查到,程序燒寫簡單等多種優(yōu)點。同時在單片機的學習中我們教學使用的也是該型號,因此對其功能和指令都較為熟悉,在設計時也方便很多。</p><p>  3.1.2 振蕩電路</p><p>  單片機系統(tǒng)內都有晶體振蕩器,它通過與單片機內部電路結合產(chǎn)生系統(tǒng)所需的時鐘頻率,而晶振頻率的高低直接決定了單片機運行的快慢。主要由一個

39、單級反相器組成。XTAL1為反相器的輸入,XTAL2為反相器的輸出??梢岳盟鼉炔康恼袷幤鳟a(chǎn)生時鐘,只要在XTAL1和XTAL2引腳上外接一個晶體及電容組成的并聯(lián)諧振電路,便構成一個自激振蕩器,此方法稱為內部方式。 </p><p>  另一種方法為外部時鐘方式,外部振蕩信號通過XTAL2端直接接至內部時鐘電路內部反相放大器的輸入端XTAL1端接地。</p><p>  上述兩種方式作用都

40、是一樣的,即向系統(tǒng)提供時鐘,其區(qū)別是外部方式頻率穩(wěn)定且精度高而內部方式一般不夠準確,存在一定誤差。在應用時如果對準確性要求不高的話可以選用內部時鐘方式。</p><p>  本設計采用內部時鐘方式,這種方式的結構緊湊,成本低廉,可靠性高。 振蕩器的電路中包括外接的反饋元件,即片外晶體振蕩器及電容C1,C2,它們組成的并聯(lián)諧振回路構成了一個自激振蕩器,向內部時鐘電路提供振蕩時鐘。電容的大小取決于片外晶體的振蕩頻率。

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(負載電容):30pF

42、+3pF。 </p><p>  其誤差及溫度變化的范圍要按系統(tǒng)的要求來確定。</p><p>  圖3.2 ESR與頻率的關系曲線 </p><p>  在本設計中,在XTAL1和XTAL2引腳上外接一個12MHZ的晶振及兩個20nF的電容。</p><p>  3.1.3 復位電路</p><p>  所有單片

43、機在啟動的時候都需要復位,使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開始工作。AT89C51單片機的復位信號是從RST引腳輸入到芯片內的施密特觸發(fā)器中的。當時鐘電路工作后,持續(xù)給出2個機器周期的高電平即可完成復位操作。復位方式分為手動復位和上電復位: </p><p><b>  手動復位</b></p><p>  手動復位需要人為在復位輸入端RST上加入

44、高電平。通常采取的辦法是在RST端和正電源VCC之間接一個按鈕。按下按鈕后電源端的高電平就會直接加到RST端。由于人的動作即使很快也能使按鈕保持接通數(shù)十毫秒,保證能滿足復位的時間要求。</p><p><b>  2、 上電復位</b></p><p>  AT89C51的上電復位電路,只要在RST復位輸入引腳上接一電容至VCC端,下接一個電阻到地即可。上電復位的過程

45、是在加電時,復位電路通過電容加給RST端一個短暫的高電平信號,此高電平信號隨著VCC對電容的充電過程而逐漸回落,即RST端的高電平信號必須維持足夠長的時間。</p><p>  上電復位適用于較為成熟的產(chǎn)品中,而手動按鍵復位比較適合樣本制作或實驗調試等場合,因此本設計中采用手動復位方式,電路圖如圖3.3所示</p><p><b>  圖3.3 復位電路</b><

46、;/p><p>  3、 復位后寄存器的狀態(tài)</p><p>  當系統(tǒng)復位后,內部寄存器的狀態(tài)如表3.1所列,即在SFRS中,除了端口鎖存器、堆棧指針SP和串行口的SBUF外,其余的寄存器全部清0,端口鎖存器的復位值為0FFH,堆棧指針值為07H,SBUF內為不定值。內部RAM的狀態(tài)不受復位的影響,在系統(tǒng)上電時,RAM的內容是不定的。</p><p>  表3.1 復

47、位后寄存器狀態(tài)</p><p>  3.2 語音電路設計</p><p>  報站系統(tǒng)中語音部分也是重要的一塊,隨著科技產(chǎn)品集成化提高,語音芯片的研究和應用也越來越廣泛,因此也造成了芯片的種類繁多,功能各異,要從眾多芯片中做出合適的選擇,要考慮多方面的因素。</p><p>  在選擇時首先要考慮設計的功能要求,本設計為公交報站器,因此芯片要以放音功能為主,但同時考

48、慮到站點變更等因素,也需要具有錄音功能;由于報站器的使用時間會很久,因此語音內容保存的時間要久。通常有錄音功能的芯片也具有放音功能。</p><p>  就目前市場上常見的一些語音芯片中WTN3、WT5S、WTH等系列是一次性語音的,不作考慮;排除其它音質不好的,語音長度不合適的芯片后,我選擇了ISD4004系列語音芯片。</p><p>  首先該系列語音芯片采用多電平直接模擬量存儲技術

49、, 每個采樣值直接存貯在片內閃爍存貯器中,因此能夠非常真實、自然地再現(xiàn)語音、音樂、音調和效果聲,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和"金屬聲"。在音質上完全可以滿足報站的要求;同時芯片單片錄放時間為8到16分鐘,非常適用于移動電話及其他便攜式電子產(chǎn)品中。語音信息存存放在閃爍存儲器中,可在斷電情況下保存一百年(典型值),可反復錄音十萬次。</p><p><b>  表3

50、.2 管腳功能</b></p><p>  ISD4004與外圍設備的連接:</p><p>  語音芯片ISD4004主要與三部分外圍設備連接,即單片機控制電路、語音錄入電路和語音播放電路。電路圖如圖3.4所示:</p><p>  圖3.4 ISD4004外圍電路連接圖</p><p>  3.3 顯示電路設計</p&

51、gt;<p>  顯示屏共分為電子顯示屏(LED)和液晶顯示屏(LCD)兩種。兩種顯示器各有特點,并不能簡單的作比較。由于液晶顯示器LCD(Liquid Crystal Display)廣泛應用于微型計算機系統(tǒng)中,具有體積小、功耗低、顯示內容豐富等特點,LCD在大小和形狀上更加靈活,接口簡單,不但可以顯示數(shù)字、字符,還可以顯示文字和圖形。而且現(xiàn)在LCD已經(jīng)是單片機應用設計中最常用的信息顯示器件了。因此本設計選用的是LCD1

52、602液晶顯示屏。</p><p>  該顯示屏能同時顯示16列2行即32個字符,是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。1602采用14腳接口,與單片機的連接電路如圖3.5所示:</p><p>  圖3.5 LCD1602與單片機連接電路圖</p><p>  3.4 按鍵電路設計</p><p>  最后是輸入部分的設計

53、,本設計使用最簡單的鍵盤輸入。鍵盤是由一些按鍵或開關組合而成的輸入設備,它是單片機系統(tǒng)中最常用的人機聯(lián)系的設備。操作人員可以向系統(tǒng)輸入一些簡單的數(shù)據(jù)或指令。</p><p>  鍵盤按其結構形式可分為編碼式鍵盤和非編碼式鍵盤兩種類型。編碼式鍵盤通過其內部的硬件電路自動產(chǎn)生被按鍵的編碼。這種鍵盤使用方便但是價格較為昂貴;非編碼式鍵盤則通過軟件程序來識別按鍵及鍵值;這種方式結構簡單,但是不如編碼式的使用起來方便,按鍵

54、識別程序的編制也比較麻煩。</p><p>  此外鍵盤還可分為獨立式鍵盤和矩陣式鍵盤。當所用按鍵較少時可選用獨立式按鍵;矩陣式則用于按鍵較多的地方。本設計中需要實現(xiàn)的功能有進站及出站語音報站還有在報錯時,可以調節(jié)到上一站和下一站,因此一共需要四個按鍵,所以選擇獨立式按鍵,即各個按鍵單獨使用一根接口。按鍵電路圖如圖3.6所示</p><p><b>  圖3.6 按鍵電路<

55、/b></p><p>  在選定鍵盤后還必須要解決以下問題: </p><p>  3.4.1 按鍵的確認</p><p>  每一個按鍵即是一個機械開關,按下按鍵后,首先要判斷按鍵是否按下,而鍵的閉合與否則取決于口線的高低電平上。由于是機械開關,考慮到機械觸點的彈性及電壓突跳的因素,往往在觸電閉合或斷開的瞬間會出現(xiàn)電壓抖動,很容易造成按鍵確認失誤,因此就需

56、要按鍵防抖動技術。</p><p>  3.4.2 按鍵防抖動技術</p><p>  為了使系統(tǒng)對一次按鍵動作只確認一次鍵值,必須排除抖動的影響,主要有硬件及軟件兩種解決手段。</p><p>  硬件方法就是在按鍵電路中加入與非門電路,這樣即使按鍵時反生抖動也不會影響系統(tǒng)判斷鍵值;其特點是在每個按鈕上都要加消抖電路,對于按鍵較多的地方并不適用;</p>

57、;<p>  本設計中選用軟件消抖方式,即采用時間延遲的方法避開抖動,當程序第一次檢測到按鍵信號后延遲約10到20毫秒,再次檢測,如果按鍵處的電平狀態(tài)仍然保持不變,則判定為按鍵按下,在按鍵釋放時同理。</p><p>  3.4.3 按鍵保護</p><p>  除上述問題外,還有另外一種情況即有時會有同時按下雙鍵或多個鍵。這種情況是不在原先考慮情況中的,因此我們要通過嚴格的

58、邏輯處理。每次只處理一個按鍵,期間對任何按鍵的操作不作處理,且不論一次按鍵時間有多長,系統(tǒng)僅執(zhí)行一次的按鍵程序。</p><p><b>  4 軟件設計</b></p><p><b>  4.1主程序流程圖</b></p><p>  圖4.1 主程序流程圖</p><p>  打開系統(tǒng)后,進行

59、初始化設置,使系統(tǒng)各部分恢復到初始狀態(tài),本系統(tǒng)旨在模擬實現(xiàn)報站功能,所以預設5個站點。起始時默認為上行線,系統(tǒng)開始執(zhí)行按鍵掃描程序,如有按鍵按下則判斷鍵值,并按照指令調用程序給語音模塊和顯示模塊執(zhí)行報站功能,期間程序會不斷檢測是否到達終點站,如果到達終點站則會自動切換到下行線,重復上述過程。</p><p>  軟件設計過程采用模塊化設計,本系統(tǒng)共分為以下幾個模塊:主程序、語音模塊、顯示模塊、按鍵模塊。</

60、p><p>  4.2 模塊程序設計</p><p>  4.2.1 語音播放流程圖</p><p>  語音部分較為簡單,系統(tǒng)運行后執(zhí)行上電操作,并進行上電延遲直至上電結束后開始執(zhí)行指令,調用預設地址中的內容,進行語音播放。</p><p>  圖4.2 語音播放流程圖</p><p>  4.2.2 顯示模塊流程圖&l

61、t;/p><p>  系統(tǒng)上電后,顯示模塊初始化,當接收到鍵盤指令后,調用預存的字符代碼,解碼并通過液晶屏幕顯示出來。</p><p>  圖4.3 顯示模塊流程圖4.2.3 按鍵模塊</p><p>  在按鍵控制部分,本設計采取的是軟件處理的方式。系統(tǒng)運行后,開始掃描按鍵當有按鍵按下,程序判斷按鍵電平狀態(tài),若為低電平,則延時100MS,之后再次檢測按鍵信號,若按鍵仍

62、為低電平,則認為此時為按下狀態(tài),之后再判斷鍵值,根據(jù)按鍵執(zhí)行指令,跳轉執(zhí)行語音和顯示程序。否則判定按鍵沒有按下,重新進行掃描。模塊軟件控制流程如圖所示</p><p>  圖4.4 按鍵部分流程圖</p><p><b>  5 總結</b></p><p>  經(jīng)過幾個月的努力,本次設計已接近尾聲。通過后期的調試、修改,系統(tǒng)已經(jīng)基本實現(xiàn)了公交

63、報站的功能。</p><p>  本設計應用了單片機的多種功能,從輸入信號采集,到數(shù)據(jù)處理,再到輸出控制綜合了硬件軟件等手段。首先,本系統(tǒng)成本低,系統(tǒng)簡單穩(wěn)定,只需簡單的操作即可完成完整的公交報站功能。系統(tǒng)運行時默認為上行線,到達站點時,按下按鍵即開始報站,同時在液晶屏上顯示站點信息及服務用語;出站時提示下一站,到達終點站自動切換到下行線。本系統(tǒng)的創(chuàng)新點在于增加了誤報糾錯功能,即出現(xiàn)錯誤時可通過上調和下調按鍵選擇

64、站點重新報站。就目前的報站系統(tǒng)來說,當司機漏報一兩站時,下一站就會連按幾下,所以會出現(xiàn)連報數(shù)站的情況,這會對乘客造成一定困擾。因此本系統(tǒng)對此作出了一些改進。</p><p>  在調試階段,本人也發(fā)現(xiàn)了系統(tǒng)存在的許多不足。相比來說,自動報站還是要優(yōu)于手動報站的,但是由于實現(xiàn)有難度而且能力有限,所以退而求其次選擇了手動報站。另外本次所用LCD顯示屏只能顯示字符而無法顯示文字,因為文字顯示涉及到了字模提取等軟件,所以

65、沒有實現(xiàn)。此外語音部分只有原理設計也是不足之處。</p><p>  總體來說,本次設計還是讓我受益匪淺,由最初拿到課題時的茫然無措,再到查閱資料,方案篩選直到一步步實現(xiàn),使我不僅僅對所學的知識鞏固和加強,更重要的是讓我學會了研究問題的方法,只要認準目標,知道自己要做什么,剩下的就是一點點去付諸行動。</p><p><b>  參考文獻</b></p>

66、<p>  [1] 李曉林.《單片機原理與接口技術》(第2版)[M]. 電子工業(yè)出版社, 2013</p><p>  [2] 徐沐龍.《單片機原理及應用》[M]. 機械工業(yè)出版社 , 2013</p><p><b>  (3)窗體頂端</b></p><p><b>  窗體底端</b></p&g

67、t;<p>  [3] 陳洪軍,陳和平.《語音錄放芯片ISD4003及其應用》[M]. 電子技術, 2000-03-12</p><p>  [4] 李華.MCS-51系列單片機實用接口技術[M] .北京航空航天大學出版社,2003 </p><p>  [5] 李建榮,錢松.Protel軟件在電路設計中的應用[M].電子技術, 2010-12-25</p>&

68、lt;p>  [6] 唐正.Proteus在單片機教學中的應用[M].華中科技大學, 2008-06-01</p><p>  [7] 何立民.MCS-51系列單片機應用系統(tǒng)設計[M]. 北京航天出版社,1990 </p><p>  [8] 郭天祥.新概念51單片機C語言教程——入門、提高、開發(fā)、拓展[M] . 電子工業(yè)出版社</p><p>  [9] 郭

69、金影. 基于單片機的LED顯示屏系統(tǒng)設計與PROTEUS仿真[M]. 大連交通大學, 2010</p><p>  [10] 周波.公交車自動報站系統(tǒng)的設計[J]. 四川理工學院學報:自然科學版,2008.</p><p>  [11] 許連華,李學慶. 基于GPS的公交車自動報站系統(tǒng)[J].計算工程程 ,2005.</p><p>  [12] 潘新民、王燕芳.微

70、型計算機控制技術.北京:電子工業(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è)設計終于在老師的悉心指導下完成了。作為一名即將離開大學校門的學生,我把本次設計看作是大學中的最后一門功課,投入了巨大的時間和精力。設計題目是用單片機實現(xiàn)公交車報站。由于在大學中重點學習的是機械方面的知識,僅靠自己的力量完成設計任務的難度是相當大的。在制作設計的過程中,我確實遇到了

73、許多棘手的問題,碰到了很多的困難。但是,這些問題和困難在和同學們的幫助下都被一一解決。在這段時間里張老師也給予了我很大的幫助,她的一些建議和指導讓我少走了很多彎路。在本次設計中,我不僅學到了很多科學知識和工作方法,而且學到了作為一個研究人員應有的治學態(tài)度和為人處世的道理,這一切都將使我終身受益。謹在此向致以崇高的敬意!對給予我支持和幫助的所有同學們表示衷心的感謝!</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、當沒有鍵按下時,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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論