基于51單片機出租車計價器設計.doc_第1頁
基于51單片機出租車計價器設計.doc_第2頁
基于51單片機出租車計價器設計.doc_第3頁
基于51單片機出租車計價器設計.doc_第4頁
基于51單片機出租車計價器設計.doc_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 淮南師范學院機械與電氣工程學院 12級自動化(3)班 郭恩賜 單片機系統(tǒng)設計課程論文 成績課程論文題 目:基于51單片機出租車計價器設計 學生姓名: 郭恩賜 學生學號: 1214210110 系 別: 機械與電氣工程學院 專 業(yè): 自動化 年 級: 12級(3)班 任課教師: 朱士永 機械與電氣工程學院制第 27 頁 目錄1 概述12 系統(tǒng)總體方案設計22.1 總體思路22.2系統(tǒng)方案論證23 硬件設計43.1 系統(tǒng)硬件結構框圖43.2 AT89C51簡介43.3 晶體振蕩電路原理圖63.4 復位電路原理圖63.5 時鐘電路原理圖73.6 測距單元73.7 按鍵單元103.8 LCD顯示電路

2、原理圖104 軟件設計124.1 系統(tǒng)主程序124.2 數(shù)據(jù)處理子程序134.3 鍵盤掃描子程序145 仿真與調試155.1 編譯環(huán)境155.2 仿真環(huán)境155.3 仿真調試結果166 設計總結17參考文獻18附錄1 C程序代碼19基于51單片機出租車計價器設計學生:郭恩賜指導教師:朱士永機械與電氣工程學院 自動化專業(yè)1 概述 由于科技的飛速發(fā)展,帶動汽車行業(yè)快速發(fā)展,出租車日益普遍,而出租車上的計價器也不斷發(fā)展,并且更加精確和智能化。對我們日常生活也有幫助。而使用單片機實現(xiàn)該系統(tǒng),是深化單片機應用的良好途徑。我國在70年代開始出現(xiàn)出租車,但那時的計費系統(tǒng)大都是國外進口不但不夠準確,價格還十分

3、昂貴。隨著改革開放日益深入,出租車行業(yè)的發(fā)展勢頭已十分突出,國內各機械廠家紛紛推出國產計價器。出租車計價器的功能從剛開始的只顯示路程(需要司機自己定價,計算后四舍五入),到能夠自主計費,以及現(xiàn)在的能夠打一發(fā)票和語音提示、按時間自主變動單價等功能。隨著城市旅游業(yè)的發(fā)展,出租車行業(yè)已成為城市的窗口,象征著一個城市的文明程度。本次設計的目的在于現(xiàn)在各大中城市出租車行業(yè)都已普及自動計價器,所以計價器技術的發(fā)展已成定局。而部分小城市尚未普及,但隨著城市建設日益加快,象征著城市面貌的出租車行業(yè)也將加速發(fā)展,計價器的普及也是毫無疑問的,所以未來汽車計價器的市場還是十分有潛力的。本系統(tǒng)由單片機AT89C51和

4、一些外圍原件組成,具有操作簡單,顯示明了,功能強大的特點。整個系統(tǒng)只有兩個按鍵,一個“啟動/停止”,一個“復位”;使用128*64LCD顯示屏,可以顯示數(shù)字、字母和漢字等復雜符號顯示更加人性化。本系統(tǒng)除了里程統(tǒng)計和費用計算以外,還具有萬年歷功能。萬年歷由時鐘芯片DS1302實時提供時鐘信號,再由單片機調用顯示;本系統(tǒng)涉及到的理論知識有: AT89C51單片機知識、實時時鐘芯片的工作原理及應用、 出租車計費系統(tǒng)的原理和實現(xiàn)方法。2,系統(tǒng)總體方案設計本次設計是使用單片機技術來實現(xiàn)一個出租車的數(shù)字計價器,利用單片機豐富的IO端口,及其控制的靈活性,實現(xiàn)基本的里程計價功能和單雙程價格調整、時鐘顯示功能

5、等等。具有性能可靠,電路簡單、成本低、擴展空間大等特點。2.1 總體思路設計一款基于AT89C51單片機的出租車數(shù)字計價器,通過對傳感器的檢測,對數(shù)值進行處理和顯示。本設計所設計的出租車數(shù)字計價器的主要功能有:金額輸出、路程輸出、數(shù)據(jù)復位、計時計價、空車顯示等。輸出采用LCD12864液晶顯示屏顯示。一、基本要求(1)能顯示里程,單位為公里,最后一位為小數(shù)位。(2)能顯示金額數(shù),單位為元,最后一位為小數(shù)位。(3)可設定單程價格和往返價格,單程價格為2元/公里,往返價格為1.5元/公里。 (4)起步公里數(shù)為3公里,價格為5元,若實際距離大于3公里,按規(guī)則3計算價格。(5)按暫停鍵,計價器可暫停計

6、價,按查詢鍵,可顯示總等待時間。二、發(fā)揮部分(1)增加了空車指示功能,當無客人時,按下功能切換按鍵,空車指示燈亮。(2)增加實時時間顯示,無論計價器工作或者空車,都能顯示實時時間,便于時間提醒。(3)增加信息儲存功能??梢詢Υ娴却龝r間,里程和金額。2.2 系統(tǒng)方案論證本設計是由軟件設計和硬件設計兩部分組成的。軟件設計要進行程序的編寫和軟件仿真;硬件設計要設計電路和硬件仿真。本系統(tǒng)的硬件設計主要包括單片機AT89C51、數(shù)據(jù)顯示部件、U18霍爾傳感器電路、里程計算及計價單元的設計。在硬件設計過程中,充分利用各部件的功能,實現(xiàn)多功能的出租車計價器設計。鍵盤電路時鐘電路單片機顯示電路里程計算圖1電路

7、系統(tǒng)構成框圖主控芯片使用51系列AT89C51單片機,采用高性能的靜態(tài)80C51設計,由先進工藝制造,并帶有非易失性Flash程序存儲器。它是一種高性能、低功耗的8位COMS微處理芯片,市場應用最多。8時鐘芯片使用美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘芯片DS1302。采用DS1302作為主要計時芯片、可以做到計時準確。更重要的是,DS1302可以在很小的電流的后備電源(2.55.5V電源,在2.5V時耗電小于300nA)下繼續(xù)計時,并可編程選擇多種充電電流對后備電源進行慢速充電,可以保證后備電源基本不耗電。采用串行數(shù)據(jù)傳輸,與單片機硬件連接簡單,如果使用時鐘芯片DS

8、12887,將采用并行數(shù)據(jù)傳輸,占用更多的硬件資源。因此為節(jié)省單片機端口,時鐘芯片采用DS1302。本設計程序的采取C語言進行編寫,使用Keil uVision4編譯和Proteus7.8仿真軟件進行仿真調試。其中的里程計算和費用計算方案如下。一、里程計算(1)霍爾傳感器對車輪進行信號檢測,產生并輸出脈沖信號到單片機;(2)單片機對傳感器輸出的脈沖信號進行計數(shù),并進行km計算:每一個信號代表輪胎旋轉一周,設輪胎的周長為2m ;每km產生的信號數(shù)為500,里程顯示為N 2m = 2N(km)二、費用計算(1)出租車的起步費為5元,并且3km內不需額外計價;(2)出租車行駛3km后,單程2元/km

9、,雙程1.5元/km。(3)等待收費的標準為5分鐘算一公里;(4)暫停時計價器暫停計價,不收費用。3 硬件設計3.1 系統(tǒng)硬件結構框圖 LCD顯示屏復位電路 單片機工作指示燈晶體振蕩電路時鐘電路 按鍵圖2 系統(tǒng)硬件結構圖3.2 AT89C51單片機簡介 AT89C51是一個低電壓,高性能CMOS 8位單片機,片內含4k bytes的可反復擦寫的Flash只讀程序存儲器和128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統(tǒng),片內置通用8位中央處理器和Flash存儲單元,內置功能強大的微型計算機AT89C51提供了高性

10、價比的解決方案。10 AT89C51是一個低功耗高性能單片機,40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,AT89C51可以按照常規(guī)方法進行編程,也可以在線編程。9其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發(fā)成本。圖3 AT89C51單片機P0口有二個功能:1、外部擴展存儲器時,當做數(shù)據(jù)/地址總線。2、不擴展時,可做一般的I/O使用,但內部無上拉電阻,作為輸入或輸出時應在外部接上拉電阻。P1口只做I/O口使用:其內部有上拉電阻。 P2口有兩個功能:1、 擴展外部

11、存儲器時,當作地址總線使用。 2、做一般I/O口使用,其內部有上拉電阻。 P3口有兩個功能:除了作為I/O使用外(其內部有上拉電阻),還有一些特殊功能,由特殊寄存器來設置。5設計中用到的單片機各管腳(圖3-1)功能以及與其他模塊連接介紹如下:VCC:接+5V電源。VSS:接地。時鐘引腳:XTAL1和XTAL2兩端接晶振和30PF的電容,構成時鐘電路。它可以使單片機穩(wěn)定可靠的運行。RST:復位信號輸入端,高電平有效。當在此引腳加兩個機器周期的高電平時,就可以完成復位操作。P1.0:接功能按鍵。P1.2:接空車指示燈。P0口接顯示屏數(shù)據(jù)口,P2口接顯示屏控制口。P3.4:接霍爾傳感器的輸出口。 P

12、3.5:接時鐘電路DS1302的RST口。P3.6:接DS1302的SCLK口。P3.7:接DS1302的I/O口。3.3晶體振蕩電路原理圖本系統(tǒng)采用AT89C51作為主控芯片,加上一些必要的外圍電路構成最小系統(tǒng)才能工作,如圖4所示,晶體振蕩電路主要為單片機提供時鐘脈沖,振蕩頻率為12MHZ,晶體振蕩電路主要由時鐘晶體,和微調電容組成,接在單片機的XTAL1、XTAL2(19、18引腳)上。7圖4 晶體震蕩電路原理圖3.4 復位電路原理圖 計算機在啟動運行時都需要復位,復位是使處理器和內部其他部件出于一個確定的初始狀態(tài),從這個狀態(tài)開始工作。MCS-51單片機有一個復位引腳RST(9引腳),高電

13、平有效。在時鐘電路工作以后,當外圍電路使得RST端出現(xiàn)兩個機器周期(24個時鐘周期)以上的高電平時,系統(tǒng)內部復位。單片機復位電路如圖5所示,按下復位按鈕,開始給電容充電,并使得RST端維持兩周期以上的復位高電平,使得單片機成功復位。 圖5復位電路原理圖3.5 時鐘電路原理圖時鐘芯片采用DS1302,時鐘芯片的復位線與單片機的P3.5相連,時鐘線與P3.6相連,數(shù)據(jù)線與P3.7相連,DS1302的X1和X2接32.768KHZ晶體,VCC2接主電源,VCC1接備用電源,使單片機斷電時,時鐘芯片依然走時,時鐘電路如圖5所示。圖5 時鐘電路原理圖3.6 測距單元本次設計我們選取了霍爾傳感器來進行里程

14、測量?;魻柶骷且环N磁傳感器。用它們可以檢測磁場及其變化,可在各種與磁場有關的場合中使用。霍爾器件以霍爾效應為其工作基礎?;魻柶骷哂性S多優(yōu)點,它們的結構牢固,體積小,重量輕,壽命長,安裝方便,功耗小,頻率高,耐震動,不怕灰塵、油污、水汽及鹽霧等的污染或腐蝕?;魻柶骷譃椋夯魻栐突魻柤呻娐穬纱箢?,前者是一個簡單的霍爾片,使用時常常需要將獲得的霍爾電壓進行放大。后者將霍爾片和它的信號處理電路集成在同一個芯片上。本次設計選取了霍爾集成電路來測量里程。里程測量是通過將霍爾傳感器的集成電路安裝在車輪上方的鐵板上,將磁鐵安裝在車輪上,旋轉的車輪將磁鐵對準集成電路時,霍爾傳感器會輸出一個脈沖信號,送

15、到單片機,經過單片機的計算處理,將行駛的里程送到顯示單元并顯示出來。其原理示意圖如下:圖6 傳感器測距示意圖U18是一種利用霍爾效應做成的半導體集成電路器件,它被設計在交變磁場中運行,特別是能在低電源電壓和長時間運行溫度范圍可達到125。這種霍爾IC可用作各種類型的傳感器(速度傳感器、位移傳感器、轉速傳感器等等),接觸開關以及相類似的應用場合。其工作電壓比較寬(2.520V),可運行在較大的溫度范圍內(-20125), 其輸出的信號符合TTL電平標準,可以直接接到單片機的IO 端口上,而且其最高檢測頻率可達到1MHZ。8霍爾傳感器的特性如圖3-4所示,其中BOP為工作點“開”的磁感應強度,BR

16、P為釋放點“關”的磁感應強度。當外加的磁感應強度超過動作點BOP時,傳感器輸出低電平,當磁感應強度降到動作點BOP以下時,傳感器輸出電平不變,一直要降到釋放點BRP時,傳感器才由低電平躍變?yōu)楦唠娖?。BOP與BRP之間的滯后使開關動作更為可靠。U18集成霍耳開關由穩(wěn)壓器A、霍耳電勢發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器D和OC門輸出E五個基本部分組成。在輸入端輸入電壓VCC,經穩(wěn)壓器穩(wěn)壓后加在霍爾電勢發(fā)生器的兩端,根據(jù)霍爾效應原理,當霍爾片處在磁場中時,在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會產生霍爾電勢差VH輸出,該VH信號經放大器放大后送至施密特觸發(fā)器整形,使其成

17、為方波輸送到OC門輸出。當施加的磁場達到工作點(即Bop)時,觸發(fā)器輸出高電壓(相對于地電位),使三極管導通,此時OC門輸出端輸出低電壓,三極管截止,使OC門輸出高電壓,這種狀態(tài)為關。這樣兩次電壓變換,使霍爾開關完成了一次開關動作。圖7 U18霍爾傳感器和其輸出特性U18霍爾傳感器有3個外接口,2個是電源的正負極接口,最后一個是脈沖信號輸出口,只要將霍爾傳感器的信號輸出端接到單片機的端口上便可以實現(xiàn)距離檢測。其中,單片機的P3.2(INT0)引腳作為信號的輸入端,采用外部中斷0進行計數(shù)。車輪每轉一圈,霍爾傳感器就產生一個脈沖信號,根據(jù)霍爾效應原理,當霍爾片處在磁場中時,霍爾傳感器的輸出端輸出低

18、電平。當車輪轉動一圈時小磁鐵提供一個磁場,則霍爾傳感器輸出一次低電平完成一次數(shù)據(jù)采集,從而產生信號?;魻杺鞲衅鳈z測并輸出信號到單片機的INT0或INT1計算脈沖輸入端,引起單片機的中斷,對脈沖計數(shù),當計數(shù)達到特定的次數(shù)時,里程就會增加,單片機對里程進行計算后,通過接口電路將計算好的結果傳送到數(shù)碼管并顯示出來。3.7 按鍵單元 本設計的按鍵單元電路(如圖8)僅有一個功能按鍵,也就是是否計價控制鍵,其功能是開啟計價模式,并控制空車指示燈的亮滅。圖8 按鍵單元3.8 顯示單元 本次課程設計采用的是LCD12864液晶顯示屏,其功能十分強大,液晶顯示屏(LCD)用于數(shù)字型鐘表和許多便攜式計算機的一種顯

19、示器類型。1、液晶和液晶顯示LCD顯示使用了兩片極化材料,在它們之間是液體水晶溶液。電流通過該液體時會使水晶重新排列,以使光線無法透過它們。因此,每個水晶就像百葉窗,既能允許光線穿過又能擋住光線。液晶顯示器(LCD)目前科技信息產品都朝著輕、薄、短、小的目標發(fā)展,在計算機周邊中擁有悠久歷史的顯示器產品當然也不例外。在便于攜帶與搬運為前題之下,傳統(tǒng)的顯示方式如CRT映像管顯示器及LED顯示板等等,皆受制于體積過大或耗電量甚巨等因素,無法達成使用者的實際需求。而液晶顯示技術的發(fā)展正好切合目前信息產品的潮流,無論是直角顯示、低耗電量、體積小、還是零輻射點,都能讓使用者享受最佳的視覺環(huán)境。這種顯示器件

20、的最大特點是:(1) 微功耗,每個顯示字符只有幾個毫安。是所有顯示器件中功耗最小的。(2) 低壓驅動,一般扭曲向列型(TN)器件閥值電壓僅1.52V,可以直接與大規(guī)模集成電路直接匹配。(3) 平板形結構,尺寸可以很大,也可以很小。顯示的有效面積相對來說也是比較大的。顯示圖案的自由度也相當大 (4)液晶顯示器件屬于被動型,不發(fā)光,靠調制外界光達到顯示目的。因此,在陽光下也能看的很清楚,既沒有刺目感,也不會引起視覺疲勞,更沒有射線輻射,傷害視力。所以它是高信息量信息顯示的理想器件。(5) 液晶顯示器件雖然所需材料都有特殊、較高的要求,但是其結構簡單,而且工藝非常適應現(xiàn)代化規(guī)模生產。所以其生產成本不

21、高。正因為它具有這些特點,所以在一切小型、便攜、數(shù)字、智能化儀表中具有最大競爭力;在大信息量、彩色化、微型及巨型顯示領域,液晶顯示器件也具有很大的潛力。2、液晶顯示器各種圖形的顯示原理(1)線段的顯示 點陣圖形式液晶由MN個顯示單元組成,假設LCD顯示屏有64行,每行有128列,每8列對應1字節(jié)的8位,即每行由16字節(jié),共168=128個點組成,屏上6416個顯示單元與顯示RAM區(qū)1024字節(jié)相對應,每一字節(jié)的內容和顯示屏上相應位置的亮暗對應。例如屏的第一行的亮暗由RAM區(qū)的000H00FH的16字節(jié)的內容決定,當(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(3FFH

22、)=FFH時,則屏幕的右下角顯示一條短亮線;當(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。(2)字符的顯示用LCD顯示一個字符時比較復雜,因為一個字符由68或88點陣組成,既要找到和顯示屏幕上某幾個位置對應的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每

23、行的列數(shù)找出顯示RAM對應的地址,設立光標,在此送上該字符對應的代碼即可。漢字的顯示漢字的顯示一般采用圖形的方式,事先從微機中提取要顯示的漢字的點陣碼(一般用字模提取軟件),每個漢字占32B,分左右兩半,各占16B,左邊為1、3、5右邊為2、4、6根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)可找出顯示RAM對應的地址,設立光標,送上要顯示的漢字的第一字節(jié),光標位置加1,送第二個字節(jié),換行按列對齊,送第三個字節(jié)直到32B顯示完就可以LCD上得到一個完整漢字。圖9 LCD顯示單元4 軟件設計 本系統(tǒng)的軟件設計主要分為系統(tǒng)主程序、數(shù)據(jù)處理子程序、和鍵盤掃描子程序三個模塊,下面對每一塊進行介紹。4.1

24、系統(tǒng)主程序本設計中,軟件設計采用模塊化操作,利用各個模塊之間的相互聯(lián)系,在設計中采用主程序調用各個子程序的方法,使程序通俗易懂,我們設計了整體程序流程圖。在main函數(shù)編寫開始,要進行初始化,包括對系統(tǒng)初始化和對硬件設備進行初始化,并使硬件處于就緒狀態(tài)。在主程序模塊中,需要完成對各接口芯片的初始化、出租車起價和單價的初始化、中斷向量的設計以及開中斷、循環(huán)等待等工作。系統(tǒng)流程圖如下圖10。開始初始化數(shù)據(jù)處理鍵盤掃描屏幕顯示結束圖10 主程序流程圖4.2 數(shù)據(jù)處理子程序 每當霍爾傳感器輸出一個低電平信號就使單片機中斷一次,在計數(shù)中斷服務程序,里程和金額都相應變化,當然等待時間也換算成里程(當速度小

25、于5km/h時5分鐘想當于1公里)。計算程序根據(jù)里程數(shù)分別進入不同的計算公式。如果里程大于3公里,則執(zhí)行公式:金額=(里程-3)*單價+5;否則,執(zhí)行公式:總金額=起步價。程序流程圖如圖11所示。開始計算公里里程3公里否是金額=5元金額=單價*(里程-3)+5顯示金額結束圖11 數(shù)據(jù)處理子程序4.3 鍵盤掃描子程序鍵盤采用查詢的方式,放在主程序中,當沒有按鍵按下的時候,單片機循環(huán)主程序,一旦右按鍵按下,便轉向相應的子程序處理,處理結束再返回。開始開關是否閉合否指示燈程序是主程序數(shù)據(jù)處理結束圖12 鍵盤掃描程序5 仿真與調試5.1編譯環(huán)境本設計需要用Keil uVision4對C51程序進行編譯

26、,生成“.hex”文件,如圖13:圖13 keil編譯環(huán)境軟件編寫完成后就可以編譯生成HEX文件,然后將HEX文件加載到Proteus仿真文件中的單片機中,即可進行軟硬件仿真,利用Proteus仿真軟件可方便的檢驗硬件和程序錯誤,降低開發(fā)成本,減少不必要勞動。5.2仿真環(huán)境“Proteus不僅能實現(xiàn)數(shù)字電路、模擬電路及數(shù)/?;旌想娐返脑O計與仿真,而且能為單片機應用系統(tǒng)提供方便的軟、硬件設計和系統(tǒng)運行的仿真,Proteus將單片機仿真與電路仿真結合,以其完美的仿真功能,直接在基于電路原理圖的虛擬原型上進行單片機程序的編寫與調試,并進行功能驗證。”1在仿真過程中,用戶可以直接用鼠標單擊按鍵,開關,

27、等動態(tài)外設模型,使單片機系統(tǒng)根據(jù)輸入信號做出相應的響應,并將響應處理結果實時的在顯示器上顯示。把單片機的程序嵌入到虛擬硬件中,整個過程與真實的軟件、硬件、調試過程相似,從而實現(xiàn)其他仿真軟件所不能實現(xiàn)的仿真效果。圖14 Proteus元器件編輯環(huán)境5.3仿真調試結果圖15開關閉合時圖16 開關斷開時6 設計總結總結在本次設計中,我們采用AT89C51芯片為核心器件,設計出了簡單的出租車計價器,能夠實現(xiàn)顯示時間、等待時間、金額和里程,按鍵控制,空車指示。選題后,我們便開始復習單片機方面的知識,也查閱、搜索了很多相關資料,進行總體設計與具體設計,同時也學習仿真軟件Proteus和編程軟件Keil u

28、Vision4。由于以前都采用匯編語言實現(xiàn)編程,對用C語言來實現(xiàn)單片機的編程不太習慣,花費了一些時間來熟悉C語言的編程。在設計開始,要形成流程圖,它可以使設計有一定的邏輯性與嚴密性,使得設計思路明確。采用模塊化的設計思想很重要,它方便編寫、修改與調試,另外加上必要的注釋,便于交流與理解。這次課程設計設計完成后,體會頗多,在學與做的過程中,取長補短,不斷學習新的知識,吸取經驗,達到進步的目的。通過自身的努力以及相關圖書資料的幫助,逐漸熟悉了Keil uVision4、PROTEUS和C語言等軟件的使用以及硬件焊接與檢測過程中的一些小技巧。本次設計我學習到不少單片機的知識,但由于自己的理論知識水平

29、有限,實踐知識和設計經驗不足,在設計過程中難免存在一些問題。所焊實物尚有許多不足,個別功能還不能很好的實現(xiàn),主要原因是考慮問題不周全,電路設計經驗少,實際動手能力不足。懇請各位老師批評指正,以使我在以后的學習和實踐中加以改進和提高。參考文獻1 朱清慧.Proteus教程M.清華大學出版社,20082 周潤景,等.單片機課程設計實例指導M.北京航空航天大學出版社,20063 李光飛,等.單片機原理與應用及C51程序設計M.清華大學出版社,20054 吳延海.微型計算機接口技術M.重慶大學出版社,19975 李建忠.單片機原理及應用M.西安電子科技大學出版社,20026 謝維成,楊加國.單片機原理

30、與應用及C51程序設計M.清華大學出版社,20147 張毅剛.新編MCS-51單片機應用設計M.哈爾濱工業(yè)大學出版社,20038 8-bit Microcontroller With 4K Bytes Flash AT89C51.ATMEL, 20009 8-bit Microcontroller With 8K Bytes in-system programble Flash AT89C52.ATMEL, 200110 Atmel Microcontroller Handbook, 2001附錄1 C程序代碼#include#include#includelcd12864.c#include

31、code.h#includeds1302.c#includedisplay.csbit P10=P10;sbit P12=P12;float distance_km,money;void timer0isr(void)interrupt 1 using 1distance_km+=0.1;if(distance_km=3)money=5;else money=5+(distance_km-3)*1.5;void main(void) init_lcd();clearscreen(0);setline(0);TMOD=0x06;distance_km=0;TH0=0xCE;TL0=0xCE;EA

32、=1;TR0=1;Init_DS1302(); while(1)if(P10=0)ET0=1;P12=0;display(distance_km);display1(money);else ET0=0; P12=1;distance_km=0;money=0;display(distance_km);display1(money);displayc(1,0,0*16,li);displayc(1,0,1*16,chen);displayc(1,0,2*16,shu);displaye(1,0,6*8,num,14);displayc(1,3,0*16,jin);displayc(1,3,1*1

33、6,e);displaye(1,3,5*8,num,14);display2();lcd12864.c#include#include#define uchar unsigned char #define uint unsigned int sbit cs1=P20; sbit cs2=P21; sbit EN=P22; sbit RW=P23; sbit RS=P24; void delay(uchar i) while(i-); void readbusy()P0=0x00;RS=0;RW=1;EN=1;while(P0&0x80);EN=0; void lcd_wcmd(uchar cm

34、d)readbusy();RS=0;RW=0;P0=cmd;EN=1;_nop_();_nop_();EN=0;void lcd_wdat(uchar dat)readbusy();RS=1;RW=0;P0=dat;EN=1;_nop_();_nop_();EN=0;void setpage(uchar page)page=0xb8|page;/起始頁lcd_wcmd(page);void setline(uchar line)line = line & 0x07;line=line|0xc0;/起始行l(wèi)cd_wcmd(line);void setcolumn(uchar column)col

35、umn=column&0x3f;/最終列column=column|0x40;/起始列l(wèi)cd_wcmd(column);void setonoff(uchar onoff)onoff=0x3e|onoff;lcd_wcmd(onoff);void selectscreen(uchar screen)switch(screen) case 0:cs1=0;delay(2);cs2=0;delay(2);break; case 1:cs1=0;delay(2);cs2=1;delay(2);break; case 2:cs1=1;delay(2);cs2=0;delay(2);break; def

36、ault:break;void clearscreen(uchar screen) uchar i,j; selectscreen(screen); for(i=0;i8;i+) setpage(i); setcolumn(0); for(j=0;j64;j+) lcd_wdat(0x00); void init_lcd()readbusy();selectscreen(0);setonoff(0);selectscreen(0);setonoff(1);selectscreen(0);clearscreen(0);setline(0);code.hUchar code li = 0x00,0

37、x00,0xFE,0x92,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00, 0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00; uchar code chen = 0x24,0x24,0xA4,0xFE,0x23,0x22,0x00,0x3E,0x22,0x22,0x22,0x22,0x22,0x3E,0x00,0x00, 0x08,0x06,0x01,0xFF,0x01,0x06,0x40,0x49,0x49,

38、0x49,0x7F,0x49,0x49,0x49,0x41,0x00; uchar code shu = 0x90,0x52,0x34,0x10,0xFF,0x10,0x34,0x52,0x80,0x70,0x8F,0x08,0x08,0xF8,0x08,0x00, 0x82,0x9A,0x56,0x63,0x22,0x52,0x8E,0x00,0x80,0x40,0x33,0x0C,0x33,0x40,0x80,0x00; uchar code jin = 0x00,0x80,0x80,0x40,0x20,0x50,0x48,0x44,0xC3,0x44,0x48,0x50,0x20,0x4

39、0,0x80,0x80,0x00,0x40,0x40,0x42,0x4A,0x72,0x42,0x42,0x7F,0x42,0x42,0x62,0x5A,0x42,0x40,0x40; uchar code e = 0x00,0x00,0x8C,0x44,0xB5,0x26,0xA4,0x64,0x0C,0x02,0xF2,0x1A,0xD6,0x12,0xF2,0x02,0x00,0x10,0x08,0xFC,0x4A,0x49,0x4A,0xFC,0x08,0x80,0x4F,0x30,0x0F,0x10,0x2F,0xC0; uchar code gong = 0x00,0x00,0x8

40、0,0x40,0x20,0x18,0x06,0x80,0x00,0x07,0x18,0x20,0x40,0x80,0x00,0x00,0x00,0x01,0x00,0x20,0x70,0x28,0x26,0x21,0x20,0x20,0x24,0x38,0x60,0x00,0x01,0x01; uchar code yuan = 0x00,0x20,0x20,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x20,0x20,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x3F

41、,0x40,0x40,0x40,0x40,0x78; uchar code num1516= 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00, 0x00,0x30,

42、0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00, 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00, 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00, 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x

43、11,0x0E,0x00, 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00, 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00, 0x00,0x10,0xF0,0x00,0x00,0x00,0x00,0x00,0x0

44、0,0x40,0x7F,0x48,0x0C,0x53,0x61,0x41, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x7F,0x41,0x01,0x7F,0x41,0x01,0x7E, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80

45、,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0x61,0x00,0x00,0x00, ;ds1302sbit RST=P35;sbit SCLK=P36;sbit DATA=P37;void delaynus(unsigned char n) unsigned char i; for(i=0;in;i+);/*函數(shù)功能:向1302寫一個字節(jié)數(shù)據(jù)入口參數(shù):x*/ void Write1302(unsigned char dat) unsigned char i; SCLK=0; delaynus(2); for(i=0;i=1; /*函數(shù)功能:根據(jù)命令字,向1302寫一個字節(jié)數(shù)據(jù)入口參數(shù):Cmd,儲存命令字;dat,儲存待寫的數(shù)據(jù)*/ void WriteSet1302(unsigned char Cmd,unsigned char dat) RST=0; SCLK=0; RST=1; delaynus(2); Write1302(Cmd); Write1302(dat); SCLK=1; RST=0; /*函數(shù)功能:從1302讀一個字節(jié)數(shù)據(jù)入口參數(shù):x*/ unsigned char Read1302(void) unsigned char i,dat; delaynus(2); for(i=0;i=1

溫馨提示

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

評論

0/150

提交評論