基于單片機的公交報站系統(tǒng)設計【畢業(yè)設計】_第1頁
已閱讀1頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  本科畢業(yè)設計(論文)</p><p><b> ?。ǘ?屆)</b></p><p>  基于單片機的公交報站系統(tǒng)設計</p><p>  所在學院 </p><p>  專業(yè)班級 電子信息工程 </p&

2、gt;<p>  學生姓名 學號 </p><p>  指導教師 職稱 </p><p>  完成日期 年 月 </p><p><b>  摘 要</b></p><p> 

3、 隨著科技的進步,技術的發(fā)展,人們越來越提倡智能化,簡單化,用科技來改變原有的生活方式。作為一個城市的公交企業(yè),它既要代表政府體現(xiàn)當?shù)爻鞘械男蜗?,又要盡一切力量減少政府投資,創(chuàng)造良好的社會效益和經(jīng)濟效益。而傳統(tǒng)的公交運營系統(tǒng)的裝備和管理模式較難達到這兩者的完美結合。 為了改變這種狀況,本文利用單片機來設計一種適合在公交車上用的智能報站系統(tǒng)。采用AT89C51作為CPU進行總體控制,根據(jù)鍵盤信息,對語音和液晶顯示進行控制。由語音芯

4、片ISD4003構成的語音電路實現(xiàn)錄音和回放,LCD進行漢字顯示,從而實現(xiàn)公交車語音報站和液晶顯示雙重功能。</p><p>  由于該系統(tǒng)在工作中可降低司機的工作強度,可以提高車輛的運行安全,所以具有廣泛的適用性和推廣性。</p><p>  關鍵詞:公交報站,語音芯片ISD4003,液晶顯示</p><p>  Design of a bus-stop Repo

5、rting System Based on MCU</p><p><b>  Abstract</b></p><p>  With the development of science technology, people increasingly advocate the intelligence and simplification. As a city bu

6、s companies, not it only represent city imagine , but also make every effort to reduce government investment and create a good social and economic benefits. Traditional bus system can not satisfy the need of the moderniz

7、ed system development.</p><p>  In order to change the situation, This paper researched a kind of Deisgn method of intelligent bus_stop system. This design is mainly to use 89S51 microcontroller as CPU to ca

8、rry out over all controls .Through the program reads characters into the LCD liquid circuit character prompt.</p><p>  As the system can reduce the drivers’work intensity and improve the safty of vehicles

9、,so it can be applied and spred. </p><p>  Keywords: bus-stop Reporting, AT89C51,voice chip ISD4003, LCD display </p><p><b>  目錄</b></p><p><b>  摘 要I</b>

10、</p><p>  AbstractII</p><p><b>  目錄III</b></p><p><b>  1 緒論1</b></p><p>  1.1課題來源及意義1</p><p>  1.2發(fā)展現(xiàn)狀及趨勢1</p><p>

11、;  1.3課題研究的主要內(nèi)容2</p><p>  2方案分析與總體設計3</p><p><b>  2.1方案對比3</b></p><p><b>  2.2方案總結3</b></p><p>  2.3方案總體設計4</p><p>  3公交報站系統(tǒng)硬件

12、設計5</p><p>  3.1主體控制(AT89C51)5</p><p><b>  3.2語音模塊7</b></p><p>  3.2.1語音芯片ISD40038</p><p>  3.2.2音頻小功率放大電路LM3869</p><p>  3.3 液晶顯示模塊10<

13、;/p><p>  3.3.1 液晶顯示-12864系列與MCU的接口11</p><p>  3.3.2 12864系列內(nèi)置硬件說明11</p><p>  3.4 時間顯示模塊12</p><p>  3.5 鍵控模塊14</p><p>  4公交報站系統(tǒng)軟件設計15</p><p>

14、;  4.1主程序流程圖及程序15</p><p>  4.2鍵盤子程序模塊流程圖及程序17</p><p>  4.3語音子程序模塊流程圖及程序18</p><p>  4.4顯示子程序模塊流程圖及程序20</p><p><b>  總結24</b></p><p><b>

15、;  參考文獻25</b></p><p>  致 謝錯誤!未定義書簽。</p><p><b>  附錄26</b></p><p>  附錄圖1 電路原理圖26</p><p>  附錄圖2 PCB版圖27</p><p>  附錄圖3 實物圖27</p>

16、<p><b>  1 緒論</b></p><p>  1.1課題來源及意義</p><p>  隨著社會信息化的加快,人們的工作,生活和通訊,信息的關系日益緊密。信息化社會在改變?nèi)藗兩罘绞脚c工作習慣的同時,也對傳統(tǒng)的公交提出了挑戰(zhàn):人們對公交的要求早已不只是簡單的交通運輸工具,更為關注的是一個安全,方便,舒適的智能交通車[1]。作為一個城市的公交企業(yè)

17、,它不僅代表社會體現(xiàn)當?shù)爻鞘械男蜗?,又要盡一切力量減少投資,創(chuàng)造良好的經(jīng)濟效益及社會效益;而傳統(tǒng)公交由于人工售票,人工報站等一些人為因素影響,難以滿足現(xiàn)代城市公交發(fā)展需求[2]。</p><p>  現(xiàn)在是一個高科技的電子時代,提倡的是智能電子系統(tǒng)。現(xiàn)代電子系統(tǒng)的基本核心是嵌入式計算機系統(tǒng)(簡稱嵌入式系統(tǒng)),而單片機是最典型、最廣泛、最普及的嵌入式系統(tǒng),發(fā)展到現(xiàn)在技術已相當成熟,應用十分廣泛。單片機體積小,重量輕

18、,價格便宜且具有很強的靈活性,這為智能公交的發(fā)展提供了十分有利的條件,并且具有很強的市場適用性。公共交通智能化系統(tǒng)是公交信息化系統(tǒng)的重要組成部分,是提高公共交通服務水平、吸引出行量的必要手段,體現(xiàn)了一個城市的現(xiàn)代化交通管理水平,是中國解決交通問題的重要措施之一。</p><p>  1.2發(fā)展現(xiàn)狀及趨勢</p><p>  單片機生于20世紀70年代末,經(jīng)歷了SCM、MCU、SoC三大階段

19、,F(xiàn)LASH的使用使MCU技術進入第四代,發(fā)展到現(xiàn)在技術已相當成熟。目前,國內(nèi)外單片機最新的技術包括:數(shù)字單片機技術,以單片機為核心的嵌入式系統(tǒng)技術以及單片機的可靠性技術。</p><p>  智能公交最新發(fā)展現(xiàn)狀可由智能汽車作為代表,它是一個集環(huán)境感知、規(guī)劃決策、多等級輔助駕駛等功能于一體的綜合系統(tǒng),它集中運用了計算機、現(xiàn)代傳感、信息融合、通訊、人工智能及自動控制等技術,是典型的高新技術綜合體[3]。在目前的汽

20、車駕駛中,駕駛員的人為因素占了很大的比重,一旦出現(xiàn)駕駛員長時間駕車、疲勞駕車、判斷失誤的情況,很容易造成交通事故。通過對車輛智能化技術的研究和開發(fā),可以提高車輛的控制與駕駛水平,保障車輛行駛的安全暢通、高效。智能車輛的主要特點是以技術彌補人為因素的缺陷,使得即便在很復雜的道路情況下,也能自動地操縱和駕駛車輛繞開障礙物,沿著預定的道路軌跡行駛。</p><p>  隨著最新技術的發(fā)展,車載信息系統(tǒng)成為未來發(fā)展趨勢。

21、從計算機領域看,汽車車載信息系統(tǒng)是一個移動的計算平臺。車載信息系統(tǒng)除了能夠幫助安全駕駛外,另一方面還能幫助消費者將車上的設備都接入互聯(lián)網(wǎng),和其他車輛連接,和云計算連接,和交通流量、天氣等各種實時數(shù)據(jù)連接[4]。</p><p>  1.3課題研究的主要內(nèi)容</p><p>  本論文設計一種自動播報公交站名的智能系統(tǒng),采用單片機AT89S51作為主控制中心,ISD4003語音芯片控制報站,

22、LCD顯示電路控制站名顯示。</p><p>  本次設計以Keil C51開發(fā)環(huán)境為編程平臺進行代碼的編譯和運行,在Protel 99進行仿真。該報站系統(tǒng)具有如下的基本功能:</p><p>  1)按鍵輸入控制:1.復位鍵:初始化狀態(tài);2.時間設置鍵:對時間進行設置;3.提示鍵:語音提示;4.報站鍵:車站提醒。</p><p>  2)語音播報:對車站名語音播報

23、,并有溫馨提醒。</p><p>  3)液晶顯示:站名漢字顯示和時間顯示。</p><p>  4)芯片控制:以AT89C51芯片作為主控制核心。</p><p>  本論文總體設計的主要內(nèi)容有:</p><p><b>  1)總體布置設計;</b></p><p>  2)繪制總體設計電路圖

24、;</p><p>  3)確定總體主要參數(shù);</p><p>  4)編寫設計程序及技術說明書等。</p><p>  2方案分析與總體設計</p><p><b>  2.1方案對比</b></p><p>  一、基于單片機AT89S51設計</p><p>  優(yōu)點

25、:51是8位單片機,內(nèi)部的硬件到軟件有一套完整的按位操作系統(tǒng),易于編程;它體積小,功耗低,性價比低,網(wǎng)上學習資源豐富,十分適合初學者;采用C語言編程,程序易懂。</p><p>  缺點:運行速度慢(采用CISC(集中指令));所有I/O口都是準雙向口,I/O口驅(qū)動能力弱。</p><p>  二、基于TMS320C5X系列的DSP設計</p><p>  優(yōu)點:D

26、SP芯片采用哈佛結構,運行速度快,精度高;有自己完整的指令系統(tǒng)和一些特殊的DSP指令,有強大的數(shù)據(jù)處理能力。</p><p>  缺點:適用范圍窄,DSP系統(tǒng)是不同于模擬電路和數(shù)字邏輯電路系統(tǒng),所需處理的是數(shù)字信號;一般適用于信號處理和圖形、圖像處理。</p><p>  三、基于UC/OS_Ⅱ操作系統(tǒng)的ARM設計</p><p>  優(yōu)點:ARM是32位RISC微

27、處理器,具有極高的性價比、代碼密度,以及出色的實時中斷響應和極低的功耗;UC/OS_Ⅱ具有可移植,可固化,可裁剪,多任務管理的特點,代碼執(zhí)行效率高、占用空間少、實時性能優(yōu)良,適合高端應用領域。</p><p>  缺點:ARM相對于51而言,成本較高,且ARM在接口設計和編程方面較復雜,適合專業(yè)設計人員;</p><p>  四、基于FPGA的VHDL語言設計</p><

28、;p>  優(yōu)點:FPGA是一種現(xiàn)場可編程門陣列,集成度高,具有更復雜的布線結構和邏輯實現(xiàn);FPGA器件修改方便,設計周期短,使系統(tǒng)研制開發(fā)成本降低;用VHDL編程,靈活性強,可進行編程、除錯、再編程重復操作,可進行充分地設計開發(fā)和驗證。</p><p>  缺點:VHDL語言編程難以符合該課題,仿真環(huán)境難以體現(xiàn)功能優(yōu)越性;專業(yè)性太強,研發(fā)工作普通用戶難以完成。</p><p><

29、;b>  2.2方案總結</b></p><p>  本課題設計的系統(tǒng)屬于小型項目,信息處理量不大,對速度、功耗要求不高,故選用8位的AT89S51就能滿足系統(tǒng)的設計需求;通用廉價的AT89S51,作為控制芯片,不僅控制方便,成本低,而且設計簡單?;谏鲜觯x用1號基于單片機AT89S51設計方案。</p><p><b>  2.3方案總體設計</b&g

30、t;</p><p><b>  基本原理:</b></p><p>  本系統(tǒng)采用89C51作為CPU,由CPU控制語音電路,液晶顯示電路和鍵盤電路。鍵盤電路采用中斷模式,當有鍵按下,系統(tǒng)產(chǎn)生中斷,CPU響應中斷;CPU處理后,決定播放語音芯片中已錄制好的的錄音,再經(jīng)過一個功率放大電路來緩沖,播放錄音;同時CPU通過程序讀取漢字信息,送入LCD顯示電路。 其系統(tǒng)框圖

31、如圖2-1所示:</p><p>  圖2-1總體設計系統(tǒng)框圖</p><p><b>  設計主要內(nèi)容</b></p><p><b> ?。?)語音模塊</b></p><p>  選用ISD4003芯片實現(xiàn)報站。特點:播放時間長,單片4至8分鐘語音錄放,多段信息處理,不耗電信息保存100年,1

32、0萬次錄音周期,外圍電路簡單。</p><p>  實現(xiàn)功能:1.播放錄音;2.復位</p><p><b> ?。?)液晶顯示模塊</b></p><p>  選用12864顯示屏,控制簡單,顯示數(shù)據(jù)多,顯示資料提供64×2位元組的空間,最多控制4行×16字(64字)中文字型顯示。</p><p>

33、  實現(xiàn)功能:1.漢字顯示,顯示站名;2.時間顯示</p><p><b> ?。?)時間顯示模塊</b></p><p>  選用DS1302,它是充電時間芯片,通過簡單串行接口與單片機進行通信;時間可自行調(diào)整,設置初值后,芯片自動計數(shù)時間。時間在液晶顯示屏上顯示,通過按鍵可調(diào)整。</p><p><b>  (4)鍵控模塊<

34、/b></p><p>  鍵盤是人機交流的重要組成部分,通過鍵盤控制,向單片機提供指令,從而達到控制的目的。根據(jù)鍵盤的數(shù)目和占用資源的相對多少選擇鍵盤形式。由于本文中鍵盤數(shù)目較少,控制簡單,故選用獨立式鍵盤。</p><p>  3公交報站系統(tǒng)硬件設計</p><p>  3.1主體控制(AT89C51)</p><p>  為保持系

35、統(tǒng)的穩(wěn)定,系統(tǒng)采用AT89S51。它是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機,片內(nèi)含4k bytes的可反復擦寫的只讀程序存儲器(PEROM)和128 bytes的隨機存取數(shù)據(jù)存儲器(RAM)。片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元。單片機最小系統(tǒng)電路圖3-1如下:</p><p>  圖3-1單片機最小系統(tǒng)</p><p>  該單片機最小系統(tǒng)包括一個復

36、位電路、時鐘電路和由晶振、負載電容組成的時鐘振蕩電路。復位電路由一個10uF的電容和一個10K的電阻組成,當這個管腳有連續(xù)兩個以上機器周期的高電平時,這個單片機就會復位,復位電路高電平有效;時鐘振蕩電路由一個12M的晶振和2個30pF的負載電容組成,輸出時鐘脈沖,在51單片機中,晶振輸出的脈沖周期為脈沖周期,12個脈沖周期為機器周期,單片機工作時間的最小單片機是機器周期;使用的單片機需要在+5V的直流電壓下工作,且這個電源必須很穩(wěn)定,否

37、則會導致單片機的復位。</p><p>  AT89C51有2種可用軟件編程的省電模式,它們是空閑模式和掉電模式。在空閑模式狀態(tài)下,CPU保持睡眠狀態(tài)而所有片內(nèi)的外設仍保持激活狀態(tài);在掉電模式下,振蕩器停止工作,進入掉電模式的指令是最后一條被執(zhí)行的指令。</p><p><b>  主要引腳描述:</b></p><p>  RST/VPD(9

38、引腳):復位信號輸入端,高電平有效。完成復位操作時,需要在該引腳加上2個機器周期(24個時鐘振蕩周期)的高電平;正常工作時,引腳電壓≦0.5V。 </p><p>  ALE/PROG(30引腳):ALE引腳輸出為地址鎖存允許信號;PROG引腳作為編程脈沖輸入端。它的第二功能是對片內(nèi)EPROM型單片機編程寫入時,此引腳作為編程脈沖輸入端。</p><p>  PSEN(29引腳):程

39、序存儲器允許輸出控制端。在單片機訪問外部存儲器時,此引腳輸出脈沖負跳沿作為讀外部程序存儲器的選通信號。</p><p>  EA/VPP(31引腳):內(nèi)外程序存儲器選擇控制端。當EA為高電平時,訪問片內(nèi)程序存儲器,EA為低電平時,只訪問外部程序存儲器。</p><p>  其性能參數(shù)和管腳圖如3-2下:</p><p><b>  圖3-2管腳配置圖<

40、;/b></p><p>  單片機需要在+5V的直流電壓下工作,且這個電源必須很穩(wěn)定,否則會導致單片機的復位。用7805三端穩(wěn)壓塊進行穩(wěn)壓,輸入和輸出加兩個濾波電容。</p><p>  其電源電路如下3-3所示:</p><p><b>  圖3-3電源電路圖</b></p><p><b>  3.

41、2語音模塊</b></p><p>  語音部分采用ISD4003系列高保真語音集成芯片。ISD4003系列語音芯片的錄放電路設計包括了錄音和放音的電路,其電路方框圖如圖3-4所示:</p><p>  圖3-4 ISD4003 錄放電路方框圖</p><p>  本設計中采用單端輸入的連接方式來輸入錄音信號,將錄制好的信號送出相應的地址,再報站狀態(tài)下,

42、只需由單片機找到語句存儲地址,可開始放音??芍爸梅糯箅娐肥且粋€電壓并聯(lián)負反饋單管放大電路,通過實際實驗,該電路的輸出信號滿足ISD4003的輸入電壓要求。本論文中,語音已錄制后,故省略錄音前置放大電路。</p><p>  ISD4003的基本應用電路是根據(jù)芯片說明書上的要求,采用芯片說明書推薦的應用電路使用。ISD4003有數(shù)字電源和模擬電源,控制芯片說明書的要求,兩個電源在做電路板的時候最好分開走線,而數(shù)字

43、地和模擬地則盡量在焊盤上直接連接后用低阻通路連接到電源的地線。而音頻輸入端采用單端輸入方式,其同相輸入端通過一個電容接地,反相輸入端通過一個電容接到前置放大器的輸出,可以濾去前置放大器輸出的直流信號。ISD4003的音頻輸出端通過一個4.7uF的電容接到后級的功率放大電路(由LM386芯片構成)。該應用電路圖如3-5下所示:</p><p>  圖3-5 ISD4003的應用電路</p><p

44、>  3.2.1語音芯片ISD4003</p><p>  ISD4003系列芯片是高保真語音錄放IC,3V單電源工作,無需開發(fā)系統(tǒng),采用高質(zhì)量、自然語音還原技術。</p><p>  其引腳圖如3-6下:</p><p>  圖3-6 ISD4003管腳圖</p><p><b>  主要引腳描述</b><

45、/p><p>  電源(VCCA,VCCD):芯片的模擬和數(shù)字電路使用不同的電源總線,且分別總線,盡可能靠近供電端處相連去耦電容靠近器件。</p><p>  地線(VSSA,VSSD):用低阻通路連接至電源,接地通路使VSSA與VSSD之間阻值<3Ω。</p><p>  同相模擬輸入(ANA IN+):錄音信號同相輸入端,本文采用單端輸入方式。 <

46、/p><p>  反相模擬輸入(ANA IN-):錄音信號的反相輸入端。單端方式下,該管腳通過電容接地。且ANA IN+和ANA IN-端的電容值相同。</p><p>  片選(SS):低電平有效。</p><p>  串行輸入(MOSI):串行輸入端,主控制器在串行時鐘沿上升之前半個周期將數(shù)據(jù)放到末端。</p><p>  串行輸出(MISO

47、):串行輸出端,芯片未選中,本端呈高阻狀態(tài)。</p><p>  串行時鐘(SCLK):時鐘輸入端,由主控制器產(chǎn)生,用于同步MOSI和MISO數(shù)據(jù)傳輸。數(shù)據(jù)在SCLK上升沿鎖存到ISD,在下降沿移出ISD。</p><p>  行地址時鐘(RAC):漏極開路輸出。每個RAC周期表示ISD存儲器進行了一行的操作,該端用于存儲管理技術。</p><p>  音頻輸出(A

48、UD OUT):音頻輸出端,可驅(qū)動5Ω的負載。</p><p>  自動靜躁(AMCAP):該端對地接1µF的電容,構成內(nèi)部信號電平峰值檢測電路的一部分。</p><p>  SPI(串行外接口)</p><p>  ISD4003工作于SPI串行接口。SPI協(xié)議是一個同步串行數(shù)據(jù)傳輸協(xié)議,假定SPI移位寄存器在SCLK的下降沿動作,在時鐘上升沿鎖存MOS

49、I引腳的數(shù)據(jù),在下降沿將數(shù)據(jù)傳送至MISO引腳。</p><p><b>  (1)信息快進 </b></p><p>  用戶不需要知道信息的確切地址,就能快進跳過一條信息。 信息快進只用于放音模式。遇到EOM后停止,內(nèi)部地址計數(shù)器加1,指向下條信息的開始處。 </p><p><b>  (2)上電順序 </b><

50、;/p><p>  器件延時TPUD(8kHz采樣時,約為25ms)后才能開始操作。所以用戶發(fā)完上電指令后,必須等待TPUD,才能發(fā)出一條操作指令。器件會從此00地址開始放音,當出現(xiàn)EOM時,立即中斷,停止放音。</p><p>  該芯片設計是基于所有操作必須由微控制器控制,操作命令可通過串行通信接口(SPI或Microwire)送入。芯片采用多電平直接模擬量存儲技術, 每個采樣值直接存貯在

51、片內(nèi)閃爍存貯器中,能夠非常真實、自然地再現(xiàn)語音、音調(diào)和效果聲,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和"金屬聲"[5]。文選用ISD4003-04M,外部鐘頻:1024KHz。</p><p>  表3-1 4003系列型號與性能對照表</p><p>  ISD4003系列工作電壓3V,單片錄放時間4~8分鐘。ISD4003系列芯片內(nèi)含振蕩器、防混淆濾波器、

52、音頻放大器、自動靜噪、平滑濾波器及高密度多電平閃爍存貯陳列。采樣頻率可為 4.0,5.3,6.4,8.0kHz,頻率越低,錄放時間越長,而音質(zhì)有所下降。片內(nèi)信息可在斷電情況下保存100年(典型值)[6]。</p><p>  3.2.2音頻小功率放大電路LM386</p><p>  因為ISD4003的輸出最大可以驅(qū)動5K的負載,所以要設計一個功率放大電路來緩沖。可以使用簡單的三極管放大

53、電路也可以采用專用的功率放大芯片來構成。采用三極管構成的功率放大電路有成本低的優(yōu)點,但是它的工作穩(wěn)定性比較差,而且電路不簡潔[7]。而采用專用的功率放大芯片(如LM386)構成的放大電路有電路簡潔、工作穩(wěn)定等優(yōu)點,而且價格也不會太高,所以本設計采用LM386來構成ISD4003輸出信號的功率放大電路[8]。</p><p>  LM386是低電壓應用的音頻功率放大電路,有如下特點:</p><

54、p> ?。?)電源電壓范圍寬,;</p><p> ?。?)靜態(tài)電流小,當時,靜態(tài)電流典型值為4mA。</p><p>  (3)電壓增益可調(diào),輸出端直流電壓自動跟蹤,外圍元件少。</p><p>  其應用電路如3-7下:</p><p>  圖3-7 LM386功率放大電路</p><p>  LM386的應

55、用電路簡單:6管腳接電源4~12V或5~18V,由于系統(tǒng)中有多組電源,電壓不同,電容不同,故可將上電、調(diào)電時間短的電源調(diào)至+12V且它的值不得低于4V;4管腳接地;通過1、8管腳間的電容改變增益,斷開時增益為20dB;7管腳一定要接電容,該電容的作用是:濾除噪聲,當工作穩(wěn)定后,該管腳電壓為原先的一半,若要減緩直流基準電壓的上升、下降速度,抑制噪聲比,可增大該電容的容值;2、3管腳采用雙音輸入/輸出方式,輸出端可以抵消共模信號,有效抑制共

56、模噪聲比,在輸出端再接一個輸出耦合電容,該電容的作用是隔直通交和耦合,接4.7Uf/10uF最合適;電位器的選擇一般采用10K最合適,阻值不會特別大。</p><p>  3.3 液晶顯示模塊</p><p>  本部分采用12864B液晶顯示模塊。它控制簡單、接口方式靈活,有4位/8位并行,2線或3線串行多種接口方式;為了能夠簡單、有效地顯示漢字和圖形,該模塊內(nèi)部設計有2MB的中文字型C

57、GROM和64*256點陣的GDRAM繪圖區(qū)域;同時,該模塊還提供有4組可編程控制的16*16點陣造字空間[9]。字符顯示通過將字符顯示編碼寫入該字符顯示RAM實現(xiàn),根據(jù)寫入方式的不同,顯示不同類別的內(nèi)容。</p><p>  本設計液晶模塊串口顯示,PSB接低電平(接地)。數(shù)據(jù)線(D0-D7)空接,RS、R/W、E分別與P0.0、P0.1、P0.2連接。每次上電后,單片機初始化完成后,進入系統(tǒng)默認的報站模式,一

58、旦有鍵按下,通過軟件解碼讀出鍵值,根據(jù)軟件所設置的功能去執(zhí)行[10]。模塊電路圖如3-8下:</p><p>  圖3-8液晶串口顯示電路圖</p><p>  3.3.1 液晶顯示-12864系列與MCU的接口</p><p>  引腳描述(串行狀態(tài)下):</p><p>  VCC(2引腳):模塊電源輸入,一般為5V;</p>

59、<p>  V0(3引腳):對比度調(diào)節(jié);通過電位器調(diào)節(jié)后,從接口的V0腳引入模塊來驅(qū)動LCD;</p><p>  VEE(1引腳):液晶電壓輸出端;</p><p>  RST(17引腳):復位信號,低電平有效;</p><p>  PSB(15引腳):并口/串口選擇,H并口;L串口;</p><p>  RS(4引腳):片選

60、,低有效;</p><p>  R/W(5引腳):串行數(shù)據(jù)線;</p><p>  E(6引腳):串行時鐘輸入;</p><p>  DB0-DB7(7-14引腳):空接;</p><p>  LEDK(19引腳):背光負;</p><p>  LEDA(20引腳):背光正。</p><p> 

61、 3.3.2 12864系列內(nèi)置硬件說明</p><p>  12864液晶顯示模塊是采用控制芯片ST7920來控制顯示的。ST7920是一種內(nèi)置128*64-12漢字圖形點陣的液晶顯示控制模塊,用于顯示漢字及圖形。該芯片共內(nèi)置8192個中文漢字(16*16點陣)、128個字符的ASCII字符庫(8*16點陣)及64*256點陣顯示RAM(GDRAM)。</p><p>  中文字型產(chǎn)生R

62、OM(CGROM)及半寬字型為字符產(chǎn)生器ROM(HCGORM):ST7920</p><p>  的字型產(chǎn)生ROM通過8192個16*16點陣的中文字型,以及126個16*8點陣的西文字符,用2個字節(jié)提供編碼選擇,硬件依照編碼自動從CGROM中選擇將要顯示的字型;</p><p>  字型發(fā)生RAM(CGRAM):提供用戶自定義字符生成(造字)功能,可提供4組16*16點陣空間,可將CGR

63、OM中沒有定義的字符定義到CGRAM;</p><p>  顯示RAM(DDRAM):用以存放LCD顯示的數(shù)據(jù),將標準的ASCII碼放入DDRAM,內(nèi)部控制線路就會自動將數(shù)據(jù)傳送到顯示器上,并顯示出該ASCII碼對應的字符。提供64*2字節(jié)的空間,最多可控制4行*16字的中文字,寫入顯示RAM,可分別顯示CGROM、HCGROM、CGRAM的字型。三種字型的選擇可通過在DDRAM中寫入編碼來進行設定,各種字型的詳

64、細編碼如下:</p><p>  1)顯示HCGROM字型,將一個字節(jié)的編碼寫入DDRAM,范圍為02-7FH;</p><p>  2)顯示CGRAM字型:將兩個字節(jié)的編碼寫入DDRAM中來實現(xiàn),有0000H、0002H、0004H、0006H四種編碼方式;</p><p>  3)顯示中文字型:將兩字節(jié)的編碼寫入DDRAM中,先寫高8位,后寫低8位,范圍為A14

65、0H-D75FH,A1A0H-F7FFH(GB)。</p><p>  繪圖RAM:提供64*32個字節(jié)空間(擴充指令設定繪圖RAM地址),最多可控制256*64點陣的二維繪圖緩沖空間。更改時,先設置GDRAM地址的垂直地址后水平地址,再2個字節(jié)的數(shù)據(jù)繪圖RAM(先高8位后低8位)。</p><p>  采用串口接線方式,PSB接低電平,只用兩根線來完成數(shù)據(jù)傳輸。當多個連續(xù)指令被送入時,需

66、考慮指令時間,必須等待上一個指令執(zhí)行完畢后才送入下一個指令。</p><p>  一個完整的串行傳輸周期由以下部分組成:</p><p> ?。?)送入啟動字節(jié):發(fā)送5個連續(xù)的“1”啟動周期,然后指定2個位傳輸方向和傳輸性質(zhì)(RW:確定讀/寫;RS:確定命令寄存器/數(shù)據(jù)寄存器),最后寫入一個“0”;</p><p> ?。?)送入指令/顯示數(shù)據(jù):指令或代碼以字節(jié)為單

67、位,送入的指令/數(shù)據(jù)以2個字節(jié)來處理。</p><p>  3.4 時間顯示模塊</p><p>  時間顯示我們采用DS1302芯片,因為它是涓流充電時鐘芯片,自償充放電,功耗低,外圍電路簡單。主要特點是采用串行數(shù)據(jù)傳輸,可為掉電保護電源提供可編程的充電功能,并且可以關閉充電功能,普通采用32.768kHz晶振[11]。</p><p>  管腳圖如圖3-9所示:

68、</p><p><b>  圖3-9管腳配置圖</b></p><p>  DS1302 是一種帶RAM的實時時鐘電路,它可以對時、分、秒進行計時,具有閏年補償功能。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302與單片機之間能簡單地采用同步串行的方式通信,僅需要三個口線:(1)RES(復位),(2)I/O數(shù)據(jù)線

69、,(3)SCLK(串行時鐘)。內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器,時鐘/RAM的讀/寫數(shù)據(jù)以一個字節(jié)或多達31個字節(jié)的字符組方式組成。</p><p>  在DS1302的時鐘日歷或RAM進行數(shù)據(jù)傳送時,DS1302必須首先發(fā)送命令字節(jié)。若進行單字節(jié)傳送,8位命令字節(jié)傳送結束之后,在下2個SCLK周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8個SCLK周期的下降沿輸出數(shù)據(jù)字節(jié)。DS1302與RAM

70、相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM寄存器,在此方式下可一次性讀、寫所有的RAM的31個字節(jié)。</p><p>  DS1302有2個電源:后備電源Vcc1,主電源Vcc2,且由Vcc1,Vcc2兩者中較大者供電。當Vcc2> Vcc1+0.2V,由Vcc2供電;Vcc1&

71、gt;Vcc2,由Vcc1供電。上電運行時,在Vcc>2.0V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),SCLK為時鐘輸入端,X1和X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線。DS1302的外圍應用電路如3-10所示:</p><p>  圖3-10 DS1302應用電路圖</p><p> 

72、 DS1302在與CPU進行數(shù)據(jù)交換時,首先由微處理器向電路發(fā)送命令,且命令字節(jié)最高位邏輯為高電平,低電平則禁止寫入DS1302;位6=0,表示取日歷時鐘數(shù)據(jù),位6=1時,取RAM數(shù)據(jù);位5-位1指示操作單元的地址;位0=0,進行寫操作,位0=1,進行讀操作,控制字節(jié)從最低位開始輸出。在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下

73、降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。</p><p><b>  3.5 鍵控模塊</b></p><p>  報站系統(tǒng)的鍵盤采用獨立式鍵盤接口。電路鍵盤共有6個鍵,采用軟件查詢和外部中斷相結合的方法設計,當某個鍵按下時,低電平有效。6個鍵S1-S6功能的定義如表3-2所示:</p><p>  表3-2 6個鍵S1-S6

74、的定義</p><p>  本設計的獨立式鍵盤電路圖如圖3-11所示,</p><p>  圖3-11 鍵盤電路圖</p><p>  獨立式鍵盤就是各鍵相互獨立,每個按鍵各接一根輸入線,通過檢測輸入線的電平狀態(tài)可以判斷哪個按鍵被按下。 鍵盤的電路圖如下所示,各按鍵均采用了上拉電阻,為了保證在按鍵斷開時,各I/O口有確定的高電平。若同時有2個按鍵閉合,將不做任何操

75、作。</p><p>  4公交報站系統(tǒng)軟件設計</p><p>  公交報站系統(tǒng)的軟件設計,利用C語言進行編程,采用了結構化、模塊化的設計方法,由主程序以及鍵盤子程序、顯示子程序和語音子程序等模塊組成。C語言是一種計算機程序設計語言。它既有高級語言的特點,又具有匯編語言的特點。它可以作為系統(tǒng)設計語言,編寫工作系統(tǒng)應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。C語言

76、. 簡潔緊湊、靈活方便、運算符豐富、數(shù)據(jù)結構豐富,應用范圍非常廣泛[12-15]。</p><p>  4.1主程序流程圖及程序</p><p>  系統(tǒng)采用模塊化結構,上電后,先對語音芯片和液晶顯示器進行初始化;然后調(diào)用鍵盤程序?qū)崿F(xiàn)控制,當有不同的鍵按下,通過掃描鍵盤、尋址(每個車站都有唯一的編碼數(shù)據(jù)),調(diào)用其他子程序,從而基本實現(xiàn)公交報站和顯示功能。其流程圖如下圖4-1所示:</

77、p><p>  圖4-1主程序流程圖</p><p><b>  主函數(shù)程序:</b></p><p><b>  main()</b></p><p><b>  {</b></p><p>  unsigned char temp;</p>

78、<p>  DS1302SendData(WPR,0x00);//關閉寫保護</p><p>  temp = DS1302GetData(SEC); //讀出時鐘開關,SEC寄存器的第七位是時鐘控制位,為0時時鐘運行</p><p>  temp &= 0x7f;//打開時鐘開關</p><p>  DS13

79、02SendData(SEC,temp);//寫入</p><p>  temp = DS1302GetData(HOU);</p><p>  temp &= 0x7f;</p><p>  DS1302SendData(HOU,temp);//選擇24小時制</p><p>  DS1302SendData(CHARG

80、ER,0xaa); //開啟充電功能,給備用電池充電,選擇兩個二極管和4K的電阻.</p><p>  Timer0Init();</p><p>  init_12864();</p><p>  OldHour=12;</p><p>  Lcd_beel = 0;</p><p><b> 

81、 while(1)</b></p><p><b>  {</b></p><p>  ReadTimeData();//讀取時間數(shù)據(jù)</p><p>  DisplayReady();//準備顯示數(shù)據(jù)</p><p>  Display();//顯示</p>&

82、lt;p>  ScanKeyborad();//掃描鍵盤</p><p>  if(PLAY_KEY == 0)</p><p>  ISDPlay(0x00);</p><p><b>  }</b></p><p><b>  }</b></p><p>

83、  void Timer0Int(void) interrupt 1//定時器0中斷函數(shù),定時時間為1ms</p><p><b>  {</b></p><p>  TH0 = 0xfd;</p><p>  TL0 = 0x18;</p><p>  if(ucTimerKeyChange >

84、 0)</p><p>  { ucTimerKeyChange--;}</p><p>  if(ucTimerDelay > 0)</p><p>  { ucTimerDelay--; }</p><p>  uiTimerHalfSecond++;</p><p>  if(uiTimerH

85、alfSecond == 2000)</p><p>  { uiTimerHalfSecond = 0; }</p><p>  if(uiTimerHalfSecond < 1200)</p><p>  { bFlagFlshTime = 1;//beel = 0;}</p><p><b>  else &

86、lt;/b></p><p>  { bFlagFlshTime = 0;//beel =1;}</p><p><b>  }</b></p><p>  4.2鍵盤子程序模塊流程圖及程序</p><p>  在單片機應用系統(tǒng)中,按鍵是重要的組成部分,用于向單片機應用系統(tǒng)輸入數(shù)據(jù)和控制信息。由于按鍵數(shù)目較少

87、,控制簡單,采用獨立式鍵盤。為了消除鍵的抖動,采用軟件的方法消抖。其程序流程圖4-2所示:</p><p>  圖4-2獨立式鍵盤子程序模塊流程圖</p><p><b>  程序如下:</b></p><p>  void ScanKeyborad(void)//鍵盤掃描程序</p><p><b> 

88、 {</b></p><p>  if(FUNTION_KEY == 0)//如果是功能鍵盤按下</p><p><b>  {</b></p><p>  Delayms(10); //延時10ms</p><p>  if(FUNTION_KEY == 0)</p&

89、gt;<p><b>  {</b></p><p>  while(!FUNTION_KEY)//等待鍵盤放開</p><p><b>  {</b></p><p>  ReadTimeData();//讀取時間數(shù)據(jù)</p><p>  DisplayReady()

90、;//準備顯示數(shù)據(jù)</p><p>  Display();//顯示</p><p><b>  }</b></p><p>  if(ucClockStatu != RUNING)</p><p><b>  {</b></p><p>  DS130

91、2SendData(HOU,OldHour);</p><p>  DS1302SendData(MIN,OldMinute);</p><p>  DS1302SendData(SEC,OldSecond);</p><p><b>  }</b></p><p>  ucClockStatu++;</p>

92、<p>  if(ucClockStatu == 0x04)</p><p><b>  {</b></p><p>  ucClockStatu = RUNING;</p><p>  lcdClear();</p><p>  init_12864(); } } }</p><

93、p>  4.3語音子程序模塊流程圖及程序</p><p>  電路上電后,先完成程序初始化,進入系統(tǒng)待機狀態(tài)。若有鍵按下,轉(zhuǎn)向執(zhí)行該鍵指向的程序,直至語音播放結束。按鍵包括報站鍵、提示鍵、加1鍵和減1鍵。若放音鍵首次按下,自動讀出第一站的放音內(nèi)容;若不是首次按下,先判斷當前站名,以該站名獲得放音內(nèi)容的首地址,進行放音。語音芯片數(shù)據(jù)的串行輸入/輸出,串行時鐘信號分別與單片機的P0口相接,中斷引腳INT(25)

94、引腳空接,自動靜噪(14引腳)對地接1uF的電容,構成內(nèi)部信號電平峰值檢測電路的一部分。</p><p>  圖4-3語音子程序模塊流程圖</p><p><b>  程序如下:</b></p><p>  void Timer0Init(void)//定時器2初始化,自動重裝初值模式,定時時間為1ms</p><p&

95、gt;<b>  {</b></p><p>  TMOD=0x01;TH0 = 0xfd;</p><p>  TL0 = 0x18;TR0 = 1;</p><p>  ET0 = 1;EA = 1; }</p><p>  void DelayTPUD(void)//延時上電等待時間約25ms</p&

96、gt;<p><b>  {</b></p><p>  uchar i = 100;</p><p><b>  uchar j;</b></p><p>  for(j = 20; j > 0; j--)</p><p><b>  {</b></

97、p><p>  while(--i){ } } }</p><p>  void ISDSendCommand(uint com)</p><p><b>  {</b></p><p>  uchar i;SS = 0;CLK = 0;</p><p>  for(i = 16; i &

98、gt; 0; i--)</p><p><b>  {</b></p><p>  if(com & 0x0001)</p><p>  { MOSI = 1; }</p><p>  Else { MOSI = 0; }</p><p><b>  CLK = 1;&l

99、t;/b></p><p><b>  CLK = 0;</b></p><p>  com = com >> 1;}</p><p><b>  SS = 1;}</b></p><p>  void ISDPowerUP(void)//ISD上電函數(shù)</p>

100、<p><b>  {</b></p><p>  ISDSendCommand(POWERUP);</p><p><b>  }</b></p><p>  void ISDPlay(uint addr)//ISD放音函數(shù)</p><p><b>  {</b

101、></p><p>  ISDPowerUP();//器件上電命令</p><p>  DelayTPUD();//等待上電延時</p><p>  ISDSendCommand(SETPLAY | addr);//設定放音地址</p><p>  ISDSendCommand(PLAY);}//開始放音&l

102、t;/p><p>  void Delayms(unsigned char time)//延時函數(shù),實現(xiàn)延時,具體時間根據(jù)晶振調(diào)整</p><p><b>  {</b></p><p>  ucTimerDelay = time;</p><p>  while(ucTimerDelay != 0);</p>

103、<p><b>  }</b></p><p>  void Flash_Lcd()</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  for (i = 0;i<5;i++) </p>

104、;<p>  Lcd_beel = 0;</p><p>  Delayms(500);</p><p>  Lcd_beel = 1;</p><p>  Delayms(500);</p><p><b>  }</b></p><p>  Lcd_beel = 0;}</

105、p><p>  4.4顯示子程序模塊流程圖及程序</p><p>  液晶顯示器是一種功耗極低的顯示器件。通常把它與驅(qū)動電路做在一塊,形成液晶顯示模塊(LCM),使用者只要向lcm送入相應的命令和數(shù)據(jù)就可以實現(xiàn)所需要顯示的內(nèi)容。其程序流程圖如圖4-4所示:</p><p>  圖4-4顯示子程序模塊程序流程圖</p><p><b> 

106、 程序如下:</b></p><p>  void Display(void)//顯示函數(shù),把顯示緩沖區(qū)的時間數(shù)據(jù)送到數(shù)碼管顯示</p><p><b>  {</b></p><p>  unsigned char i;</p><p>  w_12864(com_byte,0x92);</p&

107、gt;<p>  for(i = 0;i < 10;i++)</p><p><b>  {</b></p><p>  w_12864(dat_byte,TAB3[aucDisplayBuff[i]]); </p><p><b>  } }</b></p><p>  v

108、oid DisplayReady(void)//顯示前的準備</p><p><b>  {</b></p><p>  if(ucClockStatu == RUNING)//如果時鐘正在運行,就把顯示數(shù)據(jù)送到顯示緩沖區(qū)</p><p><b>  {</b></p><p>  auc

109、DisplayBuff[1] = OldHour & 0x0f;</p><p>  aucDisplayBuff[0] = OldHour >> 4;</p><p>  aucDisplayBuff[5] = OldMinute & 0x0f;</p><p>  aucDisplayBuff[4] = OldMinute >&

110、gt; 4;</p><p>  aucDisplayBuff[9] = OldSecond & 0x0f;</p><p>  aucDisplayBuff[8] = OldSecond >> 4;</p><p><b>  }</b></p><p>  if(ucClockStatu == M

111、ODIFY_HOU)//如果時鐘正在修改小時,就讓小時數(shù)據(jù)閃爍顯示</p><p><b>  {</b></p><p>  if(bFlagFlshTime)</p><p><b>  {</b></p><p>  aucDisplayBuff[1] = OldHour & 0x0

112、f;</p><p>  aucDisplayBuff[0] = OldHour >> 4;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  c

113、onvertChar(1,2,2);//hour</p><p><b>  }</b></p><p>  aucDisplayBuff[5] = OldMinute & 0x0f;</p><p>  aucDisplayBuff[4] = OldMinute >> 4;</p><p>  au

114、cDisplayBuff[9] = OldSecond & 0x0f;</p><p>  aucDisplayBuff[8] = OldSecond >> 4;</p><p><b>  }</b></p><p>  else if(ucClockStatu == MODIFY_MIN)//如果時鐘正在修改分鐘,就讓

115、分鐘數(shù)據(jù)閃爍顯示</p><p><b>  {</b></p><p>  if(bFlagFlshTime)</p><p><b>  {</b></p><p>  aucDisplayBuff[5] = OldMinute & 0x0f;</p><p> 

116、 aucDisplayBuff[4] = OldMinute >> 4;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  convertChar(1,4,2);<

117、/p><p><b>  }</b></p><p>  aucDisplayBuff[1] = OldHour & 0x0f;</p><p>  aucDisplayBuff[0] = OldHour >> 4;</p><p>  aucDisplayBuff[9] = OldSecond &

118、; 0x0f;</p><p>  aucDisplayBuff[8] = OldSecond >> 4;</p><p><b>  }</b></p><p>  else if(ucClockStatu == MODIFY_SEC)//如果時鐘正在修改秒,就讓秒顯示數(shù)據(jù)閃爍顯示</p><p><

119、;b>  {</b></p><p>  if(bFlagFlshTime)</p><p><b>  {</b></p><p>  aucDisplayBuff[9] = OldSecond & 0x0f;</p><p>  aucDisplayBuff[8] = OldSecond &

120、gt;> 4;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  convertChar(1,6,2);</p><p><b>  }<

121、;/b></p><p>  aucDisplayBuff[1] = OldHour & 0x0f;</p><p>  aucDisplayBuff[0] = OldHour >> 4;</p><p>  aucDisplayBuff[5] = OldMinute & 0x0f;</p><p>  au

溫馨提示

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

評論

0/150

提交評論