單片機(jī)出租車計(jì)價(jià)器的設(shè)計(jì)與制作畢業(yè)設(shè)計(jì)_第1頁
單片機(jī)出租車計(jì)價(jià)器的設(shè)計(jì)與制作畢業(yè)設(shè)計(jì)_第2頁
單片機(jī)出租車計(jì)價(jià)器的設(shè)計(jì)與制作畢業(yè)設(shè)計(jì)_第3頁
單片機(jī)出租車計(jì)價(jià)器的設(shè)計(jì)與制作畢業(yè)設(shè)計(jì)_第4頁
單片機(jī)出租車計(jì)價(jià)器的設(shè)計(jì)與制作畢業(yè)設(shè)計(jì)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGE27目錄第一部分設(shè)計(jì)任務(wù) 41.1設(shè)計(jì)任務(wù)要求 41.2方案選取 41.3總體方案設(shè)計(jì) 5第二部分設(shè)計(jì)說明 72.1理論分析 72.2硬件設(shè)計(jì) 82.3軟件設(shè)計(jì) 152.4作品特點(diǎn) 17第三部分設(shè)計(jì)成果 193.1主程序圖 193.3佐證材料 20第四部分結(jié)束語 29第五部分致謝 30第六部分參考文獻(xiàn) 31第一部分設(shè)計(jì)任務(wù)1.設(shè)計(jì)任務(wù)要求1.1設(shè)計(jì)任務(wù)設(shè)計(jì)一款基于AT89S52單片機(jī)的出租車數(shù)字計(jì)價(jià)器,通過對傳感器的檢測,對數(shù)值進(jìn)行處理和顯示,實(shí)現(xiàn)車輛當(dāng)前速度輸出,當(dāng)達(dá)到所設(shè)定的速度上限時(shí)并報(bào)警,以保證駕駛?cè)藛T的人身安全。測速計(jì)主要由單片機(jī)主模塊、傳感器模塊、報(bào)警模塊和顯示模塊組成。1.2設(shè)計(jì)要求一、基本要求(1)能顯示里程,單位為公里,最后一位為小數(shù)位。(2)能顯示金額數(shù),單位為元,最后一位為小數(shù)位。(3)可設(shè)定單程價(jià)格和往返價(jià)格,單程價(jià)格為2元/公里,往返價(jià)格為1.5元/公里。(4)起步公里數(shù)為3公里,價(jià)格為8元,若實(shí)際距離大于3公里,按規(guī)則3計(jì)算價(jià)格。按暫停鍵,計(jì)價(jià)器可暫停計(jì)價(jià),按查詢鍵,可顯示總等待時(shí)間。(6)利用光電轉(zhuǎn)換器實(shí)現(xiàn)車輪轉(zhuǎn)速的測量(7)利用單片機(jī)實(shí)現(xiàn)速度的計(jì)算和顯示(8)測速范圍:1–80KM/小時(shí)(9)顯示精度:1KM二、發(fā)揮部分(1)增加了空車指示功能,當(dāng)無客人時(shí),按下功能切換按鍵,空車指示燈亮。(2)增加實(shí)時(shí)時(shí)間顯示,無論計(jì)價(jià)器工作或者空車,都能顯示實(shí)時(shí)時(shí)間,便于時(shí)間提醒。(3)增加信息儲(chǔ)存功能??梢詢?chǔ)存等待時(shí)間,里程和金額。2方案的選取本設(shè)計(jì)是由軟件設(shè)計(jì)和硬件設(shè)計(jì)兩部分組成的。軟件設(shè)計(jì)要進(jìn)行程序的編寫和軟件仿真;硬件設(shè)計(jì)要設(shè)計(jì)電路、硬件仿真和制作電路板。2.1硬件設(shè)計(jì)方案本系統(tǒng)的硬件設(shè)計(jì)主要包括單片機(jī)AT89S52、數(shù)據(jù)顯示部件、U18霍爾傳感器電路、里程計(jì)算及計(jì)價(jià)單元的設(shè)計(jì)。在硬件設(shè)計(jì)過程中,充分利用各部件的功能,實(shí)現(xiàn)多功能的出租車計(jì)價(jià)器設(shè)計(jì)。計(jì)價(jià)器的單片機(jī)系統(tǒng)框圖如圖2-1所示。它由以下幾個(gè)部件組成:霍爾傳感器單元、AT89S52單片機(jī)、金額顯示、里程顯示、電源。利用單片機(jī)豐富的IO端口,及其控制的靈活性,實(shí)現(xiàn)基本的里程和價(jià)格的計(jì)算及顯示功能。圖2-1計(jì)價(jià)器系統(tǒng)框圖2.2軟件設(shè)計(jì)方案本設(shè)計(jì)程序的采取C語言進(jìn)行編寫,使用KeiluVision4編譯和Proteus7.4a仿真軟件進(jìn)行仿真調(diào)試。其中的里程計(jì)算和費(fèi)用計(jì)算方案如下。1、里程計(jì)算(1)霍爾傳感器對車輪進(jìn)行信號檢測,產(chǎn)生并輸出脈沖信號到單片機(jī);(2)單片機(jī)對傳感器輸出的脈沖信號進(jìn)行計(jì)數(shù),并進(jìn)行km計(jì)算:每一個(gè)信號代表輪胎旋轉(zhuǎn)一周,設(shè)輪胎的周長為2m;每km產(chǎn)生的信號數(shù)為500,里程顯示為N×2m=2N(km)2、費(fèi)用計(jì)算(1)出租車的起步費(fèi)為5元,并且3km內(nèi)不需額外計(jì)價(jià);(2)出租車行駛3km后,單程2元/km,雙程1.5元/km。(3)等待收費(fèi)的標(biāo)準(zhǔn)為5分鐘算一公里;(4)暫停時(shí)計(jì)價(jià)器暫停計(jì)價(jià),不收費(fèi)用。第二部分設(shè)計(jì)說明1總體分析本系統(tǒng)的設(shè)計(jì)主要包括單片機(jī)AT89S52、數(shù)據(jù)顯示部件、U18霍爾傳感器電路、里程計(jì)算及計(jì)價(jià)單元的設(shè)計(jì)。在硬件設(shè)計(jì)過程中,充分利用各部件的功能,實(shí)現(xiàn)多功能的出租車計(jì)價(jià)器設(shè)計(jì)。2硬件設(shè)計(jì)本設(shè)計(jì)的硬件設(shè)計(jì)包括單片機(jī)AT89S52單元、測距單元、顯示單元(數(shù)碼管顯示金額、等待時(shí)間和里程,指示燈對單雙程切換指示、空車指示、等待計(jì)時(shí)指示)、按鍵單元、時(shí)鐘單元和儲(chǔ)存單元。信號處理單片機(jī)光電檢測顯示器2.1AT89S52單片機(jī)系統(tǒng)信號處理單片機(jī)光電檢測顯示器復(fù)位電路和晶振電路是AT89S52工作所需的最簡外圍電路。單片機(jī)最小系統(tǒng)電路圖如圖3-2所示。

圖3-2單片機(jī)最小系統(tǒng)AT89S52的復(fù)位端是一個(gè)史密特觸發(fā)輸入,高電平有效。RST端若由低電平上升到高電平并持續(xù)2個(gè)周期,系統(tǒng)將實(shí)現(xiàn)一次復(fù)位操作。在復(fù)位電路中,按一下復(fù)位開關(guān)就使在RST端出現(xiàn)一段時(shí)間的高電平,外接11.0592M晶振和兩個(gè)30pF電容組成系統(tǒng)的內(nèi)部時(shí)鐘電路。2.2測距單元本次設(shè)計(jì)我們選取了霍爾傳感器來進(jìn)行里程測量。霍爾器件是一種磁傳感器。用它們可以檢測磁場及其變化,可在各種與磁場有關(guān)的場合中使用。霍爾器件以霍爾效應(yīng)為其工作基礎(chǔ)。霍爾器件具有許多優(yōu)點(diǎn),它們的結(jié)構(gòu)牢固,體積小,重量輕,壽命長,安裝方便,功耗小,頻率高,耐震動(dòng),不怕灰塵、油污、水汽及鹽霧等的污染或腐蝕?;魻柶骷譃椋夯魻栐突魻柤呻娐穬纱箢悾罢呤且粋€(gè)簡單的霍爾片,使用時(shí)常常需要將獲得的霍爾電壓進(jìn)行放大。后者將霍爾片和它的信號處理電路集成在同一個(gè)芯片上。本次設(shè)計(jì)選取了霍爾集成電路來測量里程。里程測量是通過將霍爾傳感器的集成電路安裝在車輪上方的鐵板上,將磁鐵安裝在車輪上,旋轉(zhuǎn)的車輪將磁鐵對準(zhǔn)集成電路時(shí),霍爾傳感器會(huì)輸出一個(gè)脈沖信號,送到單片機(jī),經(jīng)過單片機(jī)的計(jì)算處理,將行駛的里程送到顯示單元并顯示出來。其原理示意圖如下:圖3-3傳感器測距示意圖U18是一種利用霍爾效應(yīng)做成的半導(dǎo)體集成電路器件,它被設(shè)計(jì)在交變磁場中運(yùn)行,特別是能在低電源電壓和長時(shí)間運(yùn)行溫度范圍可達(dá)到125℃。這種霍爾IC可用作各種類型的傳感器(速度傳感器、位移傳感器、轉(zhuǎn)速傳感器等等),接觸開關(guān)以及相類似的應(yīng)用場合。其工作電壓比較寬(2.5~20V),可運(yùn)行在較大的溫度范圍內(nèi)(-20℃~125℃),其輸出的信號符合TTL電平標(biāo)準(zhǔn),可以直接接到單片機(jī)的IO端口上,而且其最高檢測頻率可達(dá)到1MHZ。霍爾傳感器的特性如圖3-4所示,其中BOP為工作點(diǎn)“開”的磁感應(yīng)強(qiáng)度,BRP為釋放點(diǎn)“關(guān)”的磁感應(yīng)強(qiáng)度。當(dāng)外加的磁感應(yīng)強(qiáng)度超過動(dòng)作點(diǎn)BOP時(shí),傳感器輸出低電平,當(dāng)磁感應(yīng)強(qiáng)度降到動(dòng)作點(diǎn)BOP以下時(shí),傳感器輸出電平不變,一直要降到釋放點(diǎn)BRP時(shí),傳感器才由低電平躍變?yōu)楦唠娖?。BOP與BRP之間的滯后使開關(guān)動(dòng)作更為可靠。U18集成霍耳開關(guān)由穩(wěn)壓器A、霍耳電勢發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器D和OC門輸出E五個(gè)基本部分組成。在輸入端輸入電壓VCC,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍爾電勢發(fā)生器的兩端,根據(jù)霍爾效應(yīng)原理,當(dāng)霍爾片處在磁場中時(shí),在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會(huì)產(chǎn)生霍爾電勢差VH輸出,該VH信號經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC門輸出。當(dāng)施加的磁場達(dá)到工作點(diǎn)(即Bop)時(shí),觸發(fā)器輸出高電壓(相對于地電位),使三極管導(dǎo)通,此時(shí)OC門輸出端輸出低電壓,三極管截止,使OC門輸出高電壓,這種狀態(tài)為關(guān)。這樣兩次電壓變換,使霍爾開關(guān)完成了一次開關(guān)動(dòng)作。圖3-4U18霍爾傳感器和其輸出特性U18霍爾傳感器有3個(gè)外接口,2個(gè)是電源的正負(fù)極接口,最后一個(gè)是脈沖信號輸出口,只要將霍爾傳感器的信號輸出端接到單片機(jī)的端口上便可以實(shí)現(xiàn)距離檢測。其中,單片機(jī)的P3.2(INT0)引腳作為信號的輸入端,采用外部中斷0進(jìn)行計(jì)數(shù)。車輪每轉(zhuǎn)一圈,霍爾傳感器就產(chǎn)生一個(gè)脈沖信號,根據(jù)霍爾效應(yīng)原理,當(dāng)霍爾片處在磁場中時(shí),霍爾傳感器的輸出端輸出低電平。當(dāng)車輪轉(zhuǎn)動(dòng)一圈時(shí)小磁鐵提供一個(gè)磁場,則霍爾傳感器輸出一次低電平完成一次數(shù)據(jù)采集,從而產(chǎn)生信號?;魻杺鞲衅鳈z測并輸出信號到單片機(jī)的INT0或INT1計(jì)算脈沖輸入端,引起單片機(jī)的中斷,對脈沖計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到特定的次數(shù)時(shí),里程就會(huì)增加,單片機(jī)對里程進(jìn)行計(jì)算后,通過接口電路將計(jì)算好的結(jié)果傳送到數(shù)碼管并顯示出來。2.3按鍵單元本設(shè)計(jì)的按鍵單元電路(如圖3-5)僅有一個(gè)功能按鍵,也就是是否計(jì)價(jià)控制鍵,其功能是開啟計(jì)價(jià)模式,并控制空車指示燈的亮滅。2.4時(shí)鐘單元本設(shè)計(jì)采用基于DS1302的時(shí)鐘電路(如圖3-6)對時(shí)間進(jìn)行實(shí)時(shí)顯示,單片機(jī)掉電對其沒有影響。用數(shù)碼管表現(xiàn)出來,當(dāng)出租車空車時(shí)就顯示時(shí)間,給人時(shí)間提示。圖3-6時(shí)鐘電路單元2.5顯示單元本次課程設(shè)計(jì)采用的是LCD12864液晶顯示屏,其功能十分強(qiáng)大,液晶顯示屏(LCD)用于數(shù)字型鐘表和許多便攜式計(jì)算機(jī)的一種顯示器類型。

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

這種顯示器件的最大特點(diǎn)是:

微功耗,每個(gè)顯示字符只有幾個(gè)毫安。是所有顯示器件中功耗最小的。

低壓驅(qū)動(dòng),一般扭曲向列型(TN)器件閥值電壓僅1.5-2V,可以直接與大規(guī)模集成電路直接匹配。

平板形結(jié)構(gòu),尺寸可以很大,也可以很小。顯示的有效面積相對來說也是比較大的。顯示圖案的自由度也相當(dāng)大(4)

液晶顯示器件屬于被動(dòng)型,不發(fā)光,靠調(diào)制外界光達(dá)到顯示目的。因此,在陽光下也能看的很清楚,既沒有刺目感,也不會(huì)引起視覺疲勞,更沒有射線輻射,傷害視力。所以它是高信息量信息顯示的理想器件。

(5)液晶顯示器件雖然所需材料都有特殊、較高的要求,但是其結(jié)構(gòu)簡單,而且工藝非常適應(yīng)現(xiàn)代化規(guī)模生產(chǎn)。所以其生產(chǎn)成本不高。

正因?yàn)樗哂羞@些特點(diǎn),所以在一切小型、便攜、數(shù)字、智能化儀表中具有最大競爭力;在大信息量、彩色化、微型及巨型顯示領(lǐng)域,液晶顯示器件也具有很大的潛力。2、液晶顯示器各種圖形的顯示原理(1)線段的顯示

點(diǎn)陣圖形式液晶由M×N個(gè)顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個(gè)點(diǎn)組成,屏上64×16個(gè)顯示單元與顯示RAM區(qū)1024字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的

000H——00FH的16字節(jié)的內(nèi)容決定,當(dāng)(000H)=FFH時(shí),則屏幕的左上角顯示一條短亮線,長度為8個(gè)點(diǎn);當(dāng)(3FFH)=FFH時(shí),則屏幕的右下角顯示一條短亮線;當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,??(00EH)=00H,(00FH)=00H時(shí),則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。

(2)字符的顯示

用LCD顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋€(gè)字符由6×8或8×8點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。

漢字的顯示

漢字的顯示一般采用圖形的方式,事先從微機(jī)中提取要顯示的漢字的點(diǎn)陣碼(一般用字模提取軟件),每個(gè)漢字占32B,分左右兩半,各占16B,左邊為1、3、

5??右邊為2、4、6??根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)可找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),送上要顯示的漢字的第一字節(jié),光標(biāo)位置加

1,送第二個(gè)字節(jié),換行按列對齊,送第三個(gè)字節(jié)??直到32B顯示完就可以LCD上得到一個(gè)完整漢字。

3軟件設(shè)計(jì)本系統(tǒng)的軟件設(shè)計(jì)主要分為系統(tǒng)主程序、數(shù)據(jù)處理子程序、和鍵盤掃描子程序四個(gè)模塊,下面對每一塊進(jìn)行介紹。3.1系統(tǒng)主程序本設(shè)計(jì)中,軟件設(shè)計(jì)采用模塊化操作,利用各個(gè)模塊之間的相互聯(lián)系,在設(shè)計(jì)中采用主程序調(diào)用各個(gè)子程序的方法,使程序通俗易懂,我們設(shè)計(jì)了整體程序流程圖。在main函數(shù)編寫開始,要進(jìn)行初始化,包括對系統(tǒng)初始化和對硬件設(shè)備進(jìn)行初始化,并使硬件處于就緒狀態(tài)。在主程序模塊中,需要完成對各接口芯片的初始化、出租車起價(jià)和單價(jià)的初始化、中斷向量的設(shè)計(jì)以及開中斷、循環(huán)等待等工作。系統(tǒng)流程圖如下圖4-1。圖4-1系統(tǒng)主程序流程圖3.2數(shù)據(jù)處理子程序每當(dāng)霍爾傳感器輸出一個(gè)低電平信號就使單片機(jī)中斷一次,在計(jì)數(shù)中斷服務(wù)程序,里程和金額都相應(yīng)變化,當(dāng)然等待時(shí)間也換算成里程(當(dāng)速度小于5km/h時(shí)5分鐘想當(dāng)于1公里)。計(jì)算程序根據(jù)里程數(shù)分別進(jìn)入不同的計(jì)算公式。如果里程大于3公里,則執(zhí)行公式:金額=(里程-3)*單價(jià)+5;否則,執(zhí)行公式:總金額=起步價(jià)。程序流程圖如圖4-2所示。3.3鍵盤掃描子程序鍵盤采用查詢的方式,放在主程序中,當(dāng)沒有按鍵按下的時(shí)候,單片機(jī)循環(huán)主程序,一旦右按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。3.4Proteus軟件仿真本設(shè)計(jì)需要用KeiluVision4對C51程序進(jìn)行編譯,生成“.hex”文件,如圖5-1:圖5-1KeiluVision4編譯在Proteus軟件中畫出仿真電路(如圖5-2),把KeiluVision3編譯后生成的“.hex”導(dǎo)入到單片機(jī)中,按“運(yùn)行仿真”鍵進(jìn)行仿真。3.4、作品特點(diǎn)本次設(shè)計(jì)是使用單片機(jī)技術(shù)來實(shí)現(xiàn)一個(gè)出租車的數(shù)字計(jì)價(jià)器,利用單片機(jī)豐富的IO端口,及其控制的靈活性,實(shí)現(xiàn)基本的里程計(jì)價(jià)功能和單雙程價(jià)格調(diào)整、時(shí)鐘顯示功能等等。具有性能可靠,電路簡單、成本低、擴(kuò)展空間大等特點(diǎn)。第三部分設(shè)計(jì)成果3.1主流程圖3.2硬件電路#include<reg52.h>#defineuintunsignedint#defineucharunsignedchar#definerate15//脈沖數(shù)與里程數(shù)的比例sbitP20=P2^0;sbitP21=P2^1;sbitP22=P2^2;//接74LS138控制數(shù)碼管sbitpulse_in=P1^0;bitpulse=1;bitdispflag;ucharnum,temp;bitbegin_signal;//開始標(biāo)志bits_or_d;//單程還是往返標(biāo)志uinttimes;//定時(shí)次數(shù)uintpulse_counter;uintrecord;uints_temple;uints,m;//里程數(shù)s和金額muintt;//等待時(shí)間charbaiwei,shiwei,gewei,xiaoshu; charkeynum;//鍵盤的鍵值ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//0~fand'-'的字型碼(共陰) //聲明區(qū) voiddelay(uintx);voidinit();voiddivide(uintcounter);voidselect(bita,bitb,bitc);voiddebouncer(void);ucharkeyscan(void);voiddelay(uintx)//延時(shí)xms.{ uinti,j; for(i=0;i<x;i++) for(j=0;j<=150;j++) ;}voidinit()//定時(shí)器初始化{ TMOD=0x01; TH0=(65536-25000)/256;//timer=1/40s TL0=(65536-25000)%256; EA=1; ET0=1; TR0=1; }voiddivide(uintcounter){ if(dispflag==0){ P0=0x00; counter=counter*10/rate; xiaoshu=counter%10; gewei=(counter/10)%10; shiwei=(counter/100)%10; baiwei=(counter/1000)%10; if(counter<=30) m=80; else if(s_or_d==0) m=80+2*(counter-30)+t/300; else m=80+1.5*(counter-30)+t/300; select(1,1,0); //顯示里程數(shù)目 P0=table[xiaoshu]; delay(2); select(0,1,0); P0=table[gewei]|0x80; delay(2); select(1,0,0); P0=table[shiwei]; delay(2); select(0,0,0); P0=table[baiwei]; delay(2); xiaoshu=m%10; gewei=(m/10)%10; shiwei=(m/100)%10; baiwei=(m/1000)%10; select(1,1,1);//顯示金額數(shù)目 P0=table[xiaoshu]; delay(2); select(0,1,1); P0=table[gewei]|0x80; delay(2); select(1,0,1); P0=table[shiwei]; delay(2); select(0,0,1); P0=table[baiwei]; delay(2);}else{ P0=0x00; xiaoshu=t%10; gewei=(t/10)%10; shiwei=(t/100)%10; baiwei=(t/1000)%10; select(1,1,0); //顯示等待時(shí)間 P0=table[xiaoshu]; delay(2); select(0,1,0); P0=table[gewei]; delay(2); select(1,0,0); P0=table[shiwei]; delay(2); select(0,0,0); P0=table[baiwei]; delay(2);}}voidtimer0()interrupt1{ TH0=(65536-25000)/256; TL0=(65536-25000)%256; if(begin_signal==1) { if(pulse_in!=pulse) { delay(10); if(pulse_in!=pulse) { pulse=~pulse; pulse_counter++; } } if(times==39)//1stimercompleted { times=0; if((pulse_counter-record)<5)//如果每秒脈沖小于5,則等待時(shí)間增加 t++; record=pulse_counter; } times++; }// s_temple=pulse_counter/2;// divide(s_temple);}voidselect(bita,bitb,bitc){ P20=a; P21=b; P22=c;}voiddebouncer(void)//防抖動(dòng)程序{ uinti; for(i=0;i<4800;i++);}ucharkeyscan(){P3=0x7f;temp=P3;temp=temp&0x0f; while(temp!=0x0f) { delay(10); temp=P3; temp=temp&0x0f; while(temp!=0x0f) { temp=P3; switch(temp) { case0x7e:num=1; break; case0x7d:num=2; break; case0x7b:num=3; break; case0x77:num=4; break; } while(temp!=0x0f) { temp=P3; temp=temp&0x0f; } } }P3=0xbf;temp=P3;temp=temp&0x0f; while(temp!=0x0f) { delay(10); temp=P3; temp=temp&0x0f; while(temp!=0x0f) { temp=P3; switch(temp) { case0xbe:num=5; break; case0xbd:num=6; break; case0xbb:num=7; break; case0xb7:num=8; break; } while(temp!=0x0f) { temp=P3; temp=temp&0x0f; } } }P3=0xdf;temp=P3;temp=temp&0x0f; while(temp!=0x0f) { delay(10); temp=P3; temp=temp&0x0f; while(temp!=0x0f) { temp=P3; switch(temp) { case0xde:num=9; break; case0xdd:num=10; break; case0xdb:num=11; break; case0xd7:num=12; break; } while(temp!=0x0f) { temp=P3; temp=temp&0x0f; } } }P3=0xef;temp=P3;temp=temp&0x0f; while(temp!=0x0f) { delay(10); temp=P3; temp=temp&0x0f; while(temp!=0x0f) { temp=P3; switch(temp) { case0xee:num=13; break; case0xed:num=14; break; case0xeb:num=15; break; case0xe7:num=16; break; } while(temp!=0x0f) { temp=P3; temp=temp&0x0f; } } }returnnum;}voidsingleway(void)//單程開始函數(shù){ begin_signal=1; s_or_d=0;}voiddoubleway(void)//往返開始函數(shù){ begin_signal=1; s_or_d=1;}voidpause(void)//暫停函數(shù){ begin_signal=0;}voidclear(void)//清除函數(shù){ pulse_counter=0; t=0;}voidcheck(void)//查詢函數(shù){ dispflag=1;}voidcheck2(void)//查詢函數(shù){ dispflag=0;}voidsentence(void)//判定鍵盤值{ if(keynum!=0) { switch(keynum) { case1: singleway();break; case2: doubleway();break; case3: pause();break; case4: clear();break; case5: check();break; case6: check2();break; } }}main(){ init(); while(1) { divide(pulse_counter); keynum=keyscan(); sentence(); }}第四部分結(jié)束語總結(jié)在本次設(shè)計(jì)中,我們采用AT89S52芯片為核心器件,設(shè)計(jì)出了簡單的出租車計(jì)價(jià)器,能夠?qū)崿F(xiàn)顯示時(shí)間、等待時(shí)間、金額和里程,按鍵控制,空車指示。選題后,我們便開始復(fù)習(xí)單片機(jī)方面的知識,也查閱、搜索

溫馨提示

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

評論

0/150

提交評論