基于51單片機的出租車計價器帶仿真及程序_第1頁
基于51單片機的出租車計價器帶仿真及程序_第2頁
基于51單片機的出租車計價器帶仿真及程序_第3頁
基于51單片機的出租車計價器帶仿真及程序_第4頁
基于51單片機的出租車計價器帶仿真及程序_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、引 言 現(xiàn)在各個城市出租車行業(yè)都已普及,因此出租車計價器的技術(shù)已經(jīng)成熟,但是出租車計價器的市場還具有廣闊的前景。隨著城市建設(shè)的日益完善,關(guān)乎城市面貌的出租車行業(yè)也將迅速發(fā)展,出租車計價器的的大批量需求也是毫無疑問的,所以未來出租車計價器的市場還是有相當大的潛力的。 本次出租車計價器設(shè)計以AT89S52單片機為中心,采用U18霍爾傳感器對輪胎轉(zhuǎn)數(shù)進行計數(shù),實現(xiàn)對出租車里程的測量,并最終計算出結(jié)果。其中采用寄存器芯片AT24C02使系統(tǒng)在掉電的時候?qū)蝺r、里程、車輪長度等信息進行存儲,采用時鐘芯片DS1302來顯示時間和在系統(tǒng)需要時進行計時。輸出采用兩個4段數(shù)碼顯示管,而且根據(jù)按鍵有空車指示燈、等

2、待查詢指示燈、單程指示燈進行指示。 汽車計價器是乘客與司機雙方的交易準則,它是出租車行業(yè)發(fā)展的重要標志,是出租車中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計價器無論是對廣大出租車司機朋友還是乘客來說都是很必要的。因此,汽車計價器的研究也是有一定的應(yīng)用價值的。 1 緒論1.1 出租車計價器概述我國在70年代開始出現(xiàn)出租車,但那時的計費系統(tǒng)大都是國外進口不但不夠準確,價格還十分昂貴。隨著改革開放日益深入,出租車行業(yè)的發(fā)展勢頭已十分突出,國內(nèi)各機械廠家紛紛推出國產(chǎn)計價器。出租車計價器的功能從剛開始的只顯示路程(需要司機自己定價,計算后四舍五入),到能夠自主計費,以及現(xiàn)在的能夠打一發(fā)票和語

3、音提示、按時間自主變動單價等功能。隨著城市旅游業(yè)的發(fā)展,出租車行業(yè)已成為城市的窗口,象征著一個城市的文明程度。本次設(shè)計的目的在于現(xiàn)在各大中城市出租車行業(yè)都已普及自動計價器,所以計價器技術(shù)的發(fā)展已成定局。而部分小城市尚未普及,但隨著城市建設(shè)日益加快,象征著城市面貌的出租車行業(yè)也將加速發(fā)展,計價器的普及也是毫無疑問的,所以未來汽車計價器的市場還是十分有潛力的。1.2 單片機的概述計算機系統(tǒng)已明顯地朝巨型化、單片化、網(wǎng)絡(luò)化三個方向發(fā)展。巨型化發(fā)展的目的在于不斷提高計算機的運算速度和處理能力,以解決復(fù)雜系統(tǒng)計算和高速數(shù)據(jù)處理,比如系統(tǒng)仿真和模擬、實時運算和處理。單片化是把計算機系統(tǒng)盡可能集成在一塊半導(dǎo)

4、體芯片上,其目的在于計算機微型化和提高系統(tǒng)的可靠性,這種單片計算簡稱單片機。單片機的內(nèi)部硬件結(jié)構(gòu)和指令系統(tǒng)主要是針對自動控制應(yīng)用而設(shè)計的所以單片機又稱微控制器MCU(Micro Controller Unit)。用它可以很容易地將計算機嵌入到各種儀器和現(xiàn)場控制設(shè)備中,因此單片機又叫做嵌入式微控制器(Embedded MCU)。單片機自20世紀70年代問世以來,以其鮮明的特點得到迅猛發(fā)展,已廣泛應(yīng)用于家用電器、智能玩具、智能儀器儀表、工業(yè)控制、航空航天等領(lǐng)域,經(jīng)過30多年的發(fā)展,性能不斷提高,品種不斷豐富,已經(jīng)形成自動控制的一支中堅力量。據(jù)統(tǒng)計,我國的單片機年容量已達13億片,且每年以大約16的

5、速度增長,但相對于國際市場我國的占有率還不到1。這說明單片機應(yīng)用在我國有著廣闊的前景。對于從事自動控制的技術(shù)人員來講,掌握單片機原理及其應(yīng)用已經(jīng)成為必不可少的學(xué)習(xí)任務(wù)。 單片機的應(yīng)用十分廣泛,在工業(yè)控制領(lǐng)域、家電產(chǎn)品、智能化儀器儀表、計算機外部設(shè)備,特別是機電一體化產(chǎn)品中,都有重要的用途。其主要的用途可以分為以下方面。單片機的應(yīng)用十分廣泛,在工業(yè)控制領(lǐng)域、家電產(chǎn)品、智能化儀器儀表、計算機外部設(shè)備,特別是機電一體化產(chǎn)品中,都有重要的用途。其主要的用途可以分為以下方面。l 顯示:通過單片機控制發(fā)光二極管或是液晶,顯示特定的圖形和字符。l 機電控制:用單片機控制機電產(chǎn)品做定時或定向的動作。l 檢測:

6、通過單片機和傳感器的聯(lián)合使用,用來檢測產(chǎn)品或者工況的意外發(fā)生。l 通信:通過RS-232串行通信或者是USB通信,傳輸數(shù)據(jù)和信號。l 科學(xué)計算:用來實現(xiàn)簡單的算法。那么單片機是不是解決上述應(yīng)用的唯一選擇呢?當然不是!單片機最明顯的優(yōu)點是價格便宜,從幾元人民幣到幾十元人民幣。這是因為這類芯片的生產(chǎn)量很大,技術(shù)也很成熟。其次,單片機的體積也遠小于其他兩種方案。單片機本身一般用40引腳封裝,當然功能多一些的單片機也有引腳比較多的,如68引腳,功能少的只有10多個或20多個引腳,有的甚至只有8只引腳。當然,單片機無論在速度還是容量方面都小于其他兩種方案,但是在實際工作中并不是任何需要計算機的場合都要求

7、計算機有很高的性能。例如,控制電冰箱的控制器就不需要使用嵌入式系統(tǒng),用一片51就可以輕松實現(xiàn)。所以應(yīng)用的關(guān)鍵是看能否夠用,是否有很好的性能價格比。51系列的單片機已經(jīng)面世十多年,依然沒有被淘汰,還在不斷發(fā)展中,這就說明是它有廣闊的應(yīng)用前景。2 總體方案設(shè)計本次設(shè)計是使用單片機技術(shù)來實現(xiàn)一個出租車的數(shù)字計價器,利用單片機豐富的IO端口,及其控制的靈活性,實現(xiàn)基本的里程計價功能和單雙程價格調(diào)整、時鐘顯示功能等等。具有性能可靠,電路簡單、成本低、擴展空間大等特點。 2.1 設(shè)計任務(wù)要求2.1.1 設(shè)計任務(wù)設(shè)計一款基于AT89S52單片機的出租車數(shù)字計價器,通過對傳感器的檢測,對數(shù)值進行處理和顯示。

8、2.1.2 設(shè)計要求一、基本要求(1)能顯示里程,單位為公里,最后一位為小數(shù)位。(2)能顯示金額數(shù),單位為元,最后一位為小數(shù)位。(3)可設(shè)定單程價格和往返價格,單程價格為2元/公里,往返價格為1.5元/公里。 (4)起步公里數(shù)為3公里,價格為5元,若實際距離大于3公里,按規(guī)則3計算價格。(5)按暫停鍵,計價器可暫停計價,按查詢鍵,可顯示總等待時間。二、發(fā)揮部分(1)增加了空車指示功能,當無客人時,按下功能切換按鍵,空車指示燈亮。(2)增加實時時間顯示,無論計價器工作或者空車,都能顯示實時時間,便于時間提醒。(3)增加信息儲存功能??梢詢Υ娴却龝r間,里程和金額。2.2 設(shè)計的主要功能 本設(shè)計所設(shè)

9、計的出租車數(shù)字計價器的主要功能有:金額輸出、路程輸出、數(shù)據(jù)復(fù)位、計時計價、空車顯示等。輸出采用LCD12864液晶顯示屏顯示。2.3 方案的選取本設(shè)計是由軟件設(shè)計和硬件設(shè)計兩部分組成的。軟件設(shè)計要進行程序的編寫和軟件仿真;硬件設(shè)計要設(shè)計電路、硬件仿真和制作電路板。2.3.1 硬件設(shè)計方案本系統(tǒng)的硬件設(shè)計主要包括單片機AT89S52、數(shù)據(jù)顯示部件、U18霍爾傳感器電路、里程計算及計價單元的設(shè)計。在硬件設(shè)計過程中,充分利用各部件的功能,實現(xiàn)多功能的出租車計價器設(shè)計。計價器的單片機系統(tǒng)框圖如圖2-1所示。它由以下幾個部件組成:霍爾傳感器單元、AT89S52單片機、金額顯示、里程顯示、電源。利用單片機

10、豐富的IO端口,及其控制的靈活性,實現(xiàn)基本的里程和價格的計算及顯示功能。圖2-1計價器系統(tǒng)框圖2.3.2 軟件設(shè)計方案本設(shè)計程序的采取C語言進行編寫,使用Keil uVision4編譯和Proteus7.4a仿真軟件進行仿真調(diào)試。其中的里程計算和費用計算方案如下。1、里程計算(1)霍爾傳感器對車輪進行信號檢測,產(chǎn)生并輸出脈沖信號到單片機;(2)單片機對傳感器輸出的脈沖信號進行計數(shù),并進行km計算:每一個信號代表輪胎旋轉(zhuǎn)一周,設(shè)輪胎的周長為2m ;每km產(chǎn)生的信號數(shù)為500,里程顯示為N × 2m = 2N(km)2、費用計算(1)出租車的起步費為5元,并且3km內(nèi)不需額外計價;(2)

11、出租車行駛3km后,單程2元/km,雙程1.5元/km。(3)等待收費的標準為5分鐘算一公里;(4)暫停時計價器暫停計價,不收費用。3 硬件設(shè)計本設(shè)計的硬件設(shè)計包括單片機AT89S52單元、測距單元、顯示單元(數(shù)碼管顯示金額、等待時間和里程,指示燈對單雙程切換指示、空車指示、等待計時指示)、按鍵單元、時鐘單元和儲存單元。3.1 AT 89S52單片機及最小系統(tǒng)1、AT89S52單片機AT89S52具有如下特點:40個引腳,8k Bytes Flash片內(nèi)程序存儲器, 256bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,3個16位可編程定時計數(shù)器,全雙工串行口,

12、看門狗(WDT)電路,片內(nèi)時鐘振蕩器。圖3-1 AT89S52引腳圖P0口有二個功能:1、外部擴展存儲器時,當做數(shù)據(jù)/地址總線。2、不擴展時,可做一般的I/O使用,但內(nèi)部無上拉電阻,作為輸入或輸出時應(yīng)在外部接上拉電阻。P1口只做I/O口使用:其內(nèi)部有上拉電阻。  P2口有兩個功能:1、 擴展外部存儲器時,當作地址總線使用。  2、做一般I/O口使用,其內(nèi)部有上拉電阻。  P3口有兩個功能:除了作為I/O使用外(其內(nèi)部有上拉電阻),還有一些特殊功能,由特殊寄存器來設(shè)置。設(shè)計中用到的單片機各管腳(圖3-1)功能以及與其他模塊連接介紹如下:VCC:接+5V電源。VSS:

13、接地。時鐘引腳:XTAL1和XTAL2兩端接晶振和30PF的電容,構(gòu)成時鐘電路。它可以使單片機穩(wěn)定可靠的運行。RST:復(fù)位信號輸入端,高電平有效。當在此引腳加兩個機器周期的高電平時,就可以完成復(fù)位操作。P1.0:接功能按鍵。P1.2:接空車指示燈。P0口接顯示屏數(shù)據(jù)口,P2口接顯示屏控制口。P3.4:接霍爾傳感器的輸出口。 P3.5:接時鐘電路DS1302的RST口。P3.6:接DS1302的SCLK口。P3.7:接DS1302的I/O口。2、單片機最小系統(tǒng)復(fù)位電路和晶振電路是AT89S52工作所需的最簡外圍電路。單片機最小系統(tǒng)電路圖如圖3-2所示。 圖3-2單片機最小系統(tǒng)AT89S

14、52 的復(fù)位端是一個史密特觸發(fā)輸入,高電平有效。RST端若由低電平上升到高電平并持續(xù)2個周期,系統(tǒng)將實現(xiàn)一次復(fù)位操作。在復(fù)位電路中,按一下復(fù)位開關(guān)就使在RST端出現(xiàn)一段時間的高電平,外接11.0592M 晶振和兩個30pF 電容組成系統(tǒng)的內(nèi)部時鐘電路。3.2 測距單元本次設(shè)計我們選取了霍爾傳感器來進行里程測量。霍爾器件是一種磁傳感器。用它們可以檢測磁場及其變化,可在各種與磁場有關(guān)的場合中使用。霍爾器件以霍爾效應(yīng)為其工作基礎(chǔ)。霍爾器件具有許多優(yōu)點,它們的結(jié)構(gòu)牢固,體積小,重量輕,壽命長,安裝方便,功耗小,頻率高,耐震動,不怕灰塵、油污、水汽及鹽霧等的污染或腐蝕?;魻柶骷譃椋夯魻栐突魻柤呻?/p>

15、路兩大類,前者是一個簡單的霍爾片,使用時常常需要將獲得的霍爾電壓進行放大。后者將霍爾片和它的信號處理電路集成在同一個芯片上。本次設(shè)計選取了霍爾集成電路來測量里程。里程測量是通過將霍爾傳感器的集成電路安裝在車輪上方的鐵板上,將磁鐵安裝在車輪上,旋轉(zhuǎn)的車輪將磁鐵對準集成電路時,霍爾傳感器會輸出一個脈沖信號,送到單片機,經(jīng)過單片機的計算處理,將行駛的里程送到顯示單元并顯示出來。其原理示意圖如下:圖3-3 傳感器測距示意圖U18是一種利用霍爾效應(yīng)做成的半導(dǎo)體集成電路器件,它被設(shè)計在交變磁場中運行,特別是能在低電源電壓和長時間運行溫度范圍可達到125。這種霍爾IC可用作各種類型的傳感器(速度傳感器、位移

16、傳感器、轉(zhuǎn)速傳感器等等),接觸開關(guān)以及相類似的應(yīng)用場合。其工作電壓比較寬(2.520V),可運行在較大的溫度范圍內(nèi)(-20125), 其輸出的信號符合TTL電平標準,可以直接接到單片機的IO 端口上,而且其最高檢測頻率可達到1MHZ。霍爾傳感器的特性如圖3-4所示,其中BOP為工作點“開”的磁感應(yīng)強度,BRP為釋放點“關(guān)”的磁感應(yīng)強度。當外加的磁感應(yīng)強度超過動作點BOP時,傳感器輸出低電平,當磁感應(yīng)強度降到動作點BOP以下時,傳感器輸出電平不變,一直要降到釋放點BRP時,傳感器才由低電平躍變?yōu)楦唠娖健OP與BRP之間的滯后使開關(guān)動作更為可靠。U18集成霍耳開關(guān)由穩(wěn)壓器A、霍耳電勢發(fā)生器(即硅

17、霍耳片)B、差分放大器C、施密特觸發(fā)器D和OC門輸出E五個基本部分組成。在輸入端輸入電壓VCC,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍爾電勢發(fā)生器的兩端,根據(jù)霍爾效應(yīng)原理,當霍爾片處在磁場中時,在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會產(chǎn)生霍爾電勢差VH輸出,該VH信號經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC門輸出。當施加的磁場達到工作點(即Bop)時,觸發(fā)器輸出高電壓(相對于地電位),使三極管導(dǎo)通,此時OC門輸出端輸出低電壓,三極管截止,使OC門輸出高電壓,這種狀態(tài)為關(guān)。這樣兩次電壓變換,使霍爾開關(guān)完成了一次開關(guān)動作。圖3-4 U18霍爾傳感器和其輸出特性U18霍爾傳感器有3個

18、外接口,2個是電源的正負極接口,最后一個是脈沖信號輸出口,只要將霍爾傳感器的信號輸出端接到單片機的端口上便可以實現(xiàn)距離檢測。其中,單片機的P3.2(INT0)引腳作為信號的輸入端,采用外部中斷0進行計數(shù)。車輪每轉(zhuǎn)一圈,霍爾傳感器就產(chǎn)生一個脈沖信號,根據(jù)霍爾效應(yīng)原理,當霍爾片處在磁場中時,霍爾傳感器的輸出端輸出低電平。當車輪轉(zhuǎn)動一圈時小磁鐵提供一個磁場,則霍爾傳感器輸出一次低電平完成一次數(shù)據(jù)采集,從而產(chǎn)生信號?;魻杺鞲衅鳈z測并輸出信號到單片機的INT0或INT1計算脈沖輸入端,引起單片機的中斷,對脈沖計數(shù),當計數(shù)達到特定的次數(shù)時,里程就會增加,單片機對里程進行計算后,通過接口電路將計算好的結(jié)果傳

19、送到數(shù)碼管并顯示出來。3.3 按鍵單元 本設(shè)計的按鍵單元電路(如圖3-5)僅有一個功能按鍵,也就是是否計價控制鍵,其功能是開啟計價模式,并控制空車指示燈的亮滅。3.4 時鐘單元本設(shè)計采用基于DS1302的時鐘電路(如圖3-6)對時間進行實時顯示,單片機掉電對其沒有影響。用數(shù)碼管表現(xiàn)出來,當出租車空車時就顯示時間,給人時間提示。圖3-6 時鐘電路單元3.5 顯示單元 本次課程設(shè)計采用的是LCD12864液晶顯示屏,其功能十分強大,液晶顯示屏(LCD)用于數(shù)字型鐘表和許多便攜式計算機的一種顯示器類型。 1、液晶和液晶顯示LCD顯示使用了兩片極化材料,在它們之間是液體水晶溶液。電流通過該液

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

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

22、其生產(chǎn)成本不高。 正因為它具有這些特點,所以在一切小型、便攜、數(shù)字、智能化儀表中具有最大競爭力;在大信息量、彩色化、微型及巨型顯示領(lǐng)域,液晶顯示器件也具有很大的潛力。2、液晶顯示器各種圖形的顯示原理(1)線段的顯示   點陣圖形式液晶由M×N個顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個點組成,屏上64×16個顯示單元與顯示RAM區(qū)1024字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的 000H00FH的16字

23、節(jié)的內(nèi)容決定,當(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(3FFH)=FFH時,則屏幕的右下角顯示一條短亮線;當(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。    (2)字符的顯示  用LCD顯示一個字符時比較復(fù)雜,因為一個字符由6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”

24、,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標,在此送上該字符對應(yīng)的代碼即可。 漢字的顯示 漢字的顯示一般采用圖形的方式,事先從微機中提取要顯示的漢字的點陣碼(一般用字模提取軟件),每個漢字占32B,分左右兩半,各占16B,左邊為1、3、 5右邊為2、4、6根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)可找出顯示RAM對應(yīng)的地址,設(shè)立光標,送上要顯示的漢字的第一字節(jié),光標位置加

25、60;1,送第二個字節(jié),換行按列對齊,送第三個字節(jié)直到32B顯示完就可以LCD上得到一個完整漢字。     4 軟件設(shè)計本系統(tǒng)的軟件設(shè)計主要分為系統(tǒng)主程序、數(shù)據(jù)處理子程序、和鍵盤掃描子程序四個模塊,下面對每一塊進行介紹。4.1 系統(tǒng)主程序本設(shè)計中,軟件設(shè)計采用模塊化操作,利用各個模塊之間的相互聯(lián)系,在設(shè)計中采用主程序調(diào)用各個子程序的方法,使程序通俗易懂,我們設(shè)計了整體程序流程圖。在main函數(shù)編寫開始,要進行初始化,包括對系統(tǒng)初始化和對硬件設(shè)備進行初始化,并使硬件處于就緒狀態(tài)。在主程序模塊中,需要完成對各接口芯片的初始化、出租車起價和單價的初始

26、化、中斷向量的設(shè)計以及開中斷、循環(huán)等待等工作。系統(tǒng)流程圖如下圖4-1。圖4-1系統(tǒng)主程序流程圖4.2 數(shù)據(jù)處理子程序 每當霍爾傳感器輸出一個低電平信號就使單片機中斷一次,在計數(shù)中斷服務(wù)程序,里程和金額都相應(yīng)變化,當然等待時間也換算成里程(當速度小于5km/h時5分鐘想當于1公里)。計算程序根據(jù)里程數(shù)分別進入不同的計算公式。如果里程大于3公里,則執(zhí)行公式:金額=(里程-3)*單價+5;否則,執(zhí)行公式:總金額=起步價。程序流程圖如圖4-2所示。4.3 鍵盤掃描子程序鍵盤采用查詢的方式,放在主程序中,當沒有按鍵按下的時候,單片機循環(huán)主程序,一旦右按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。5

27、Proteus軟件仿真本設(shè)計需要用Keil uVision4對C51程序進行編譯,生成“.hex”文件,如圖5-1 :圖5-1 Keil uVision4編譯在Proteus軟件中畫出仿真電路(如圖5-2),把Keil uVision3編譯后生成的“.hex”導(dǎo)入到單片機中,按“運行仿真”鍵進行仿真。圖5-2Proteus仿真總結(jié)總結(jié)在本次設(shè)計中,我們采用AT89S52芯片為核心器件,設(shè)計出了簡單的出租車計價器,能夠?qū)崿F(xiàn)顯示時間、等待時間、金額和里程,按鍵控制,空車指示。選題后,我們便開始復(fù)習(xí)單片機方面的知識,也查閱、搜索了很多相關(guān)資料,進行總體設(shè)計與具體設(shè)計,同時也學(xué)習(xí)仿真軟件Proteus

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

29、由于自己的理論知識水平有限,實踐知識和設(shè)計經(jīng)驗不足,在設(shè)計過程中難免存在一些問題。所焊實物尚有許多不足,個別功能還不能很好的實現(xiàn),主要原因是考慮問題不周全,電路設(shè)計經(jīng)驗少,實際動手能力不足。懇請各位老師批評指正,以使我在以后的學(xué)習(xí)和實踐中加以改進和提高。致謝畢業(yè)設(shè)計即將結(jié)束,在老師的指導(dǎo)和同學(xué)的幫助之下,學(xué)生對于出租車計價器設(shè)計有了更多新的認知,對出租車計價器設(shè)計有了更深一步的認識,對出租車計價器綜合設(shè)計的整體脈絡(luò)了解得更加的清晰透徹。通過畢業(yè)設(shè)計,學(xué)生對自己三年以來所學(xué)的知識有更多的認識。 畢業(yè)設(shè)計,幫助我們總結(jié)大學(xué)的收獲、認清自我。同時,還幫助我們改變一些處理事情時懶散的習(xí)慣。從最開始時的

30、搜集資料,整理資料,到方案比選,確定方案,再到著手開始設(shè)計,每一步都是環(huán)環(huán)相扣,銜接緊密,其中任何一個步驟產(chǎn)生遺漏或者疏忽,就會對以后的設(shè)計帶來很多的不便。本次作者的畢業(yè)設(shè)計是由徐老師指導(dǎo)的,在他的悉心指導(dǎo)下,我開闊了眼界,明確了思路。在整個的設(shè)計過程中,徐老師提出了許多寶貴的建議和指導(dǎo),使我能夠順利的完成整個設(shè)計,在此,謹向徐老師表示由衷的感謝。在即將離開學(xué)校之際,我要感謝在大學(xué)生活中任課的眾多老師,正是在他們的諄諄教誨下使我順利完成了大學(xué)的基礎(chǔ)知識和專業(yè)知識的學(xué)習(xí)。在此,還要感謝陪伴我共同走過大學(xué)時代并給予我?guī)椭耐瑢W(xué)和朋友們,感謝你們,祝福你們在以后的日子里開開心心的度過每一天!參考文獻

31、1賀哲榮.AT89S51單片機硬件設(shè)計與編程實例.北京:中國電力出版社.2012 2李泉溪.單片機原理與應(yīng)用實例仿真.北京:北京航空航天大學(xué)出版社,2012.3王平.單片機應(yīng)用設(shè)計與制作.北京:清華大學(xué)出版社, 2012.4彭為等.單片機典型系統(tǒng)設(shè)計實例精講. 北京:電子工業(yè)出版社,20075王慶利等.單片機設(shè)計案例實踐教程.北京:北京郵電大學(xué)出版社,20086韓志軍等.單片機應(yīng)用系統(tǒng)設(shè)計入門向?qū)c設(shè)計實例.北京:機械工業(yè)出版社,20057皮大能等. 單片機課程設(shè)計指導(dǎo)書. 北京:北京理工大學(xué)出版社,2010附1、源程序#include<reg52.h>#include<in

32、trins.h>#include"lcd12864.c"#include"code.h"#include"ds1302.c"#include"display.c"sbit 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 mai

33、n(void) init_lcd();clearscreen(0);setline(0);TMOD=0x06;distance_km=0;TH0=0xCE;TL0=0xCE;EA=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

34、);displayc(1,0,2*16,shu);displaye(1,0,6*8,num,14);displayc(1,3,0*16,jin);displayc(1,3,1*16,e);displaye(1,3,5*8,num,14);display2();lcd12864.c#include<reg52.h>#include<intrins.h>#define uchar unsigned char #define uint unsigned int sbit cs1=P20; sbit cs2=P21; sbit EN=P22; sbit RW=P23; sbit

35、 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 cmd)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;/起

36、始頁lcd_wcmd(page);void setline(uchar line)line = line & 0x07;line=line|0xc0;/起始行l(wèi)cd_wcmd(line);void setcolumn(uchar column)column=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) ca

37、se 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; default:break;void clearscreen(uchar screen) uchar i,j; selectscreen(screen); for(i=0;i<8;i+) setpage(i); setcolumn(0); for(j=0;j<64;j+) lcd_wdat(0x00); void init_l

38、cd()readbusy();selectscreen(0);setonoff(0);selectscreen(0);setonoff(1);selectscreen(0);clearscreen(0);setline(0);code.hUchar code li = 0x00,0x00,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; uch

39、ar 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,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,

40、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,0x40,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,0

41、xF2,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,0x80,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

42、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,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,0

43、x00,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,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,0x

44、F8,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,0x11,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

45、,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,0x00,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,

46、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,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; f

47、or(i=0;i<n;i+);/*函數(shù)功能:向1302寫一個字節(jié)數(shù)據(jù)入口參數(shù):x*/ void Write1302(unsigned char dat) unsigned char i; SCLK=0; delaynus(2); for(i=0;i<8;i+) DATA=dat&0x01; delaynus(2); SCLK=1; delaynus(2); SCLK=0; dat>>=1; /*函數(shù)功能:根據(jù)命令字,向1302寫一個字節(jié)數(shù)據(jù)入口參數(shù):Cmd,儲存命令字;dat,儲存待寫的數(shù)據(jù)*/ void WriteSet1302(unsigned char C

48、md,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<8;i+) dat>>=1; if(DATA=1) dat|=0x80; SCLK=1; delaynus(2); SCLK=0; delaynus(2); return

49、dat; /*函數(shù)功能:根據(jù)命令字,從1302讀取一個字節(jié)數(shù)據(jù)入口參數(shù):Cmd*/ unsigned char ReadSet1302(unsigned char Cmd) unsigned char dat; RST=0; SCLK=0; RST=1; Write1302(Cmd); dat=Read1302(); SCLK=1; RST=0; return dat; /*函數(shù)功能: 1302進行初始化設(shè)置*/ void Init_DS1302(void) WriteSet1302(0x8E,0x00); WriteSet1302(0x80,(0/10)<<4|(0%10); W

50、riteSet1302(0x82,(25/10)<<4|(25%10); WriteSet1302(0x84,(12/10)<<4|(12%10); WriteSet1302(0x86,(8/10)<<4|(8%10); WriteSet1302(0x88,(11/10)<<4|(11%10); WriteSet1302(0x8c,(14/10)<<4|(14%10); display.cuchar secondh,secondl,minuteh,minutel,hourh,hourl,dayh,dayl,monthh,monthl,ye

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論