課程設(shè)計(jì)-- 基于at89c52單片機(jī)的出租車計(jì)費(fèi)器設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  基于AT89C52單片機(jī)的出租車計(jì)費(fèi)器設(shè)計(jì)報(bào)告</p><p><b>  摘 要</b></p><p>  隨著城市建設(shè)日益加快,人們生活速率的加快,出租車作為一種快捷的交通工具越來(lái)越得到廣泛的使用。現(xiàn)在各大中城市出租車行業(yè)都已普及自動(dòng)計(jì)價(jià)器,所以關(guān)于出租車計(jì)費(fèi)器模塊的研究有很好的發(fā)展前景。</p><p>  出租車

2、計(jì)費(fèi)器是單片機(jī)的一種典型應(yīng)用?;趩纹瑱C(jī)的計(jì)費(fèi)器是由單片機(jī)和外部電路組成。包括檢測(cè)模塊,控制模塊,人機(jī)模塊。里程檢測(cè)模塊脈沖代替輪轉(zhuǎn)實(shí)現(xiàn),控制模塊包括AT89C52單片機(jī),人機(jī)模塊包括獨(dú)立的按鍵模塊和LED動(dòng)態(tài)顯示。</p><p><b>  系統(tǒng)性能指標(biāo)</b></p><p><b>  1.設(shè)定價(jià)格;</b></p><

3、;p>  2.顯示當(dāng)前單價(jià)、行駛里程和總金額;</p><p>  3.里程精確到0.1公里。</p><p>  關(guān)鍵詞:AT89C52,脈沖 ,I2C總線,動(dòng)態(tài)顯示</p><p><b>  目 錄</b></p><p>  第1章 系統(tǒng)工作原理錯(cuò)誤!未定義書(shū)簽。</p><p>

4、  1.1功能要求錯(cuò)誤!未定義書(shū)簽。</p><p>  1.2基本原理錯(cuò)誤!未定義書(shū)簽。</p><p>  第2章 硬件設(shè)計(jì)錯(cuò)誤!未定義書(shū)簽。</p><p>  2.1 單片機(jī)最小系統(tǒng)單元錯(cuò)誤!未定義書(shū)簽。</p><p>  2.2 霍爾傳感器單元錯(cuò)誤!未定義書(shū)簽。</p><p>  2.3 掉

5、電存儲(chǔ)單元錯(cuò)誤!未定義書(shū)簽。</p><p>  2.4 鍵盤調(diào)整單元錯(cuò)誤!未定義書(shū)簽。</p><p>  2.5 顯示單元錯(cuò)誤!未定義書(shū)簽。</p><p>  第3章 軟件設(shè)計(jì)錯(cuò)誤!未定義書(shū)簽。</p><p>  3.1 系統(tǒng)主程序錯(cuò)誤!未定義書(shū)簽。</p><p>  3.2 里程計(jì)數(shù)中斷程序錯(cuò)誤

6、!未定義書(shū)簽。</p><p>  3.3 中途等待中斷程序錯(cuò)誤!未定義書(shū)簽。</p><p>  3.4 計(jì)算程序錯(cuò)誤!未定義書(shū)簽。</p><p>  3.5 顯示程序錯(cuò)誤!未定義書(shū)簽。</p><p>  3.6 鍵盤程序錯(cuò)誤!未定義書(shū)簽。</p><p>  第4章 調(diào)試改進(jìn)過(guò)程及運(yùn)行結(jié)果分析錯(cuò)誤!未

7、定義書(shū)簽。</p><p>  4.1 動(dòng)態(tài)掃描的調(diào)試和分析錯(cuò)誤!未定義書(shū)簽。</p><p>  4.2 AT24C02的編程與調(diào)試錯(cuò)誤!未定義書(shū)簽。</p><p>  4.3 按鍵查詢功能的實(shí)現(xiàn)錯(cuò)誤!未定義書(shū)簽。</p><p>  4.4 計(jì)算程序的分析與設(shè)計(jì)錯(cuò)誤!未定義書(shū)簽。</p><p>  4.

8、5 結(jié)果分析與性能改進(jìn)錯(cuò)誤!未定義書(shū)簽。</p><p>  4.6 計(jì)價(jià)器系統(tǒng)的仿真錯(cuò)誤!未定義書(shū)簽。</p><p>  結(jié) 論錯(cuò)誤!未定義書(shū)簽。</p><p>  謝 辭錯(cuò)誤!未定義書(shū)簽。</p><p>  參考文獻(xiàn)錯(cuò)誤!未定義書(shū)簽。</p><p>  附 錄A 系統(tǒng)原理圖錯(cuò)誤!未定義書(shū)簽。

9、</p><p>  附 錄B 仿真圖PCB板錯(cuò)誤!未定義書(shū)簽。</p><p>  附 錄C 系統(tǒng)源程序錯(cuò)誤!未定義書(shū)簽。</p><p><b>  前 言</b></p><p>  單片機(jī)是一種可通過(guò)編程控制的微處理器,雖其自身不能單獨(dú)用在某項(xiàng)工程或產(chǎn)品上,但當(dāng)其與外圍數(shù)字器件和模擬器件結(jié)合時(shí)便可發(fā)揮強(qiáng)大

10、的功能,現(xiàn)在單片機(jī)已廣泛應(yīng)用于眾多領(lǐng)域。舉例如下:</p><p>  1. 工業(yè)自動(dòng)化。如數(shù)據(jù)采集、測(cè)控技術(shù)。</p><p>  2. 智能儀器儀表。如數(shù)字示波器、數(shù)字信號(hào)源、感應(yīng)電流表等。</p><p>  3. 消費(fèi)類電子產(chǎn)品。如空調(diào)機(jī)、微波爐、IC卡、汽車電子設(shè)備等。</p><p>  4. 通信方面。如調(diào)制解調(diào)器、程控交換技術(shù)

11、等。</p><p>  5. 武器裝備。如飛機(jī)、軍艦、導(dǎo)彈、魚(yú)雷制導(dǎo)、智能武器等。</p><p>  作為與自動(dòng)化技術(shù)和電子密切相關(guān)的理工科學(xué)生,掌握單片機(jī)是最簡(jiǎn)單也最基礎(chǔ)的要求。為了進(jìn)一步豐富和鞏固單片機(jī)知識(shí),也為了能更好的聯(lián)系實(shí)際應(yīng)用,本次畢業(yè)設(shè)計(jì)選擇了基于單片機(jī)STC89C52控制的出租車計(jì)價(jià)器,并力求能做出實(shí)物。</p><p>  鑒于電子技術(shù)、計(jì)算機(jī)

12、技術(shù)以及各種更先進(jìn)的仿真軟件的出現(xiàn),使用高級(jí)語(yǔ)言如C代替匯編語(yǔ)言進(jìn)行編程和控制已成為現(xiàn)實(shí),也成為一種發(fā)展趨勢(shì)。單片機(jī)C語(yǔ)言編程相對(duì)于MC51匯編語(yǔ)言編程有如下優(yōu)點(diǎn):</p><p>  1. 對(duì)單片機(jī)的指令系統(tǒng)不需要有很深的理解就可以編程操作單片機(jī)。</p><p>  2. 寄存器分配、不同存儲(chǔ)器的尋址及數(shù)據(jù)類型等細(xì)節(jié)完全由編輯器自動(dòng)處理。</p><p>  3

13、. 程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù),可使程序結(jié)構(gòu)化。</p><p>  4. 庫(kù)中包括許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的處理能力,使用方便。</p><p>  5. 具有方便的模塊化編程技術(shù),使已編好的程序便于移植,可極大縮短開(kāi)發(fā)時(shí)間,增加程序的可讀性和可維護(hù)性。</p><p>  事實(shí)上,當(dāng)今許多硬件的開(kāi)發(fā)都已開(kāi)始用C語(yǔ)言編程,如各種單片機(jī)、DSP、ARM等,用

14、C語(yǔ)言進(jìn)行工業(yè)控制也已成為一種趨勢(shì),為了更好的適應(yīng)當(dāng)今社會(huì)形勢(shì),為了更好的面對(duì)挑戰(zhàn)、把握機(jī)遇,此次課程設(shè)計(jì)使用了C語(yǔ)言編程完成。也希望能在進(jìn)一步熟悉單片機(jī)控制的同時(shí),對(duì)數(shù)字電子技術(shù)、模擬電子技術(shù)、計(jì)算控制技術(shù)以及常用外圍芯片有更深層次的了解,提高自己的綜合能力,檢驗(yàn)自己專業(yè)技術(shù)。</p><p>  綜上,基于單片機(jī)AT89C52的出租車計(jì)費(fèi)器不僅可方便的用軟件代替硬件,降低成本,具備一般計(jì)價(jià)器的計(jì)算里程和顯示總

15、金額的功能,還具備了掉電保持,白天、夜晚單價(jià)切換的功能,并且還可很方便的擴(kuò)展為速度測(cè)試儀,具有很好市場(chǎng)前景。</p><p><b>  功能要求</b></p><p>  設(shè)計(jì)一個(gè)出租車計(jì)費(fèi)器系統(tǒng),利用脈沖信號(hào)模擬車輪轉(zhuǎn)動(dòng),3公里以內(nèi)起步價(jià)5元,超過(guò)3公里部分每增加0.5公里計(jì)費(fèi)器增加0.9元</p><p>  功能按鍵,顯示公里數(shù)和費(fèi)用

16、</p><p>  系統(tǒng)工作符合一般出租車計(jì)價(jià)器要求</p><p><b>  擴(kuò)展要求:</b></p><p>  低速時(shí)進(jìn)入等待計(jì)時(shí)狀態(tài),等待計(jì)時(shí)超過(guò)5分鐘后,每分鐘0.9元</p><p><b>  夜班加價(jià)功能</b></p><p><b>  系

17、統(tǒng)工作原理</b></p><p><b>  1.1功能要求</b></p><p>  出租車計(jì)價(jià)器是根據(jù)乘客乘坐汽車行駛距離和等候時(shí)間的多少進(jìn)行計(jì)價(jià)的,并在行駛中同步顯示本次消費(fèi)、運(yùn)行里程、運(yùn)行單價(jià)以及等待時(shí)間等信息。從起步開(kāi)始,當(dāng)汽車行駛里程未滿3公里時(shí),均按起步價(jià)計(jì)算。超過(guò)3公里后,實(shí)現(xiàn)每1公里單價(jià)收費(fèi),中間遇到暫停時(shí),計(jì)程數(shù)不再增加,開(kāi)始計(jì)時(shí)收

18、費(fèi),計(jì)程收費(fèi)和計(jì)時(shí)收費(fèi)的和便構(gòu)成了一位乘客的車費(fèi)。同時(shí),白天和夜晚價(jià)格不同,可以進(jìn)行切換。白天單價(jià)、夜晚單價(jià)、等待單價(jià)和起步價(jià)格都可通過(guò)獨(dú)立鍵盤進(jìn)行調(diào)節(jié)。(默認(rèn)起步價(jià)為5元/3公里,里程單價(jià)白天為1.8元/公里,夜晚為2元/公里,等待計(jì)時(shí)單價(jià)為1元/1分鐘)</p><p>  為提高計(jì)時(shí)、計(jì)價(jià)精度,確保乘客對(duì)自己消費(fèi)的知情權(quán),出租車計(jì)價(jià)器應(yīng)做到里程數(shù)精確到0.1公里,同時(shí)為減少司機(jī)朋友來(lái)回調(diào)整單價(jià)以及停車后需重

19、設(shè)單價(jià)的麻煩,計(jì)價(jià)器應(yīng)具有掉電保持功能,即當(dāng)重新啟動(dòng)后維持原有數(shù)值(包括總金額、等待時(shí)間、行駛里程、單價(jià))不變,直至強(qiáng)制按下清零鍵,計(jì)價(jià)器顯示起步價(jià)(剛起步時(shí)對(duì)應(yīng)總金額)、運(yùn)行單價(jià),為下一次計(jì)價(jià)做準(zhǔn)備。</p><p><b>  1.2基本原理</b></p><p>  計(jì)價(jià)器系統(tǒng)主要由五部分組成:分別為脈沖信號(hào)檢測(cè)單元、AT89C52單片機(jī)、外擴(kuò)串行EEPROM

20、-AT24C02、獨(dú)立按鍵和LED顯示。</p><p>  脈沖檢測(cè)單元主要用于檢測(cè)汽車行使的里程數(shù),出租車車輪每旋轉(zhuǎn)一周,脈沖計(jì)數(shù)器就增加1,并把該脈沖交由單片機(jī)進(jìn)行處理,單片機(jī)則根據(jù)程序設(shè)定,通過(guò)計(jì)算脈沖個(gè)數(shù)換算出已行駛里程(里程=脈沖個(gè)數(shù)*出租車車輪周長(zhǎng)),然后再根據(jù)從EEPROM-AT24C02中讀取的單價(jià)等相關(guān)數(shù)據(jù)進(jìn)行總的消費(fèi)金額的計(jì)算:當(dāng)里程小于3公里時(shí),總金額=起步價(jià)+等待時(shí)間*等待單價(jià);當(dāng)里程大

21、于3公里時(shí),總金額=起步價(jià)+(里程-3)*運(yùn)行單價(jià)+等待時(shí)間*等待單價(jià),計(jì)算好的金額、等待時(shí)間、里程和單價(jià)等數(shù)據(jù)信息都可實(shí)時(shí)地顯示在數(shù)碼管上。其中,等待時(shí)間可根據(jù)霍爾傳感器A44E是否有脈沖輸出加以判斷,如可設(shè)定等待時(shí)基為5s,即假如A44E在5s后仍無(wú)脈沖輸出便認(rèn)為進(jìn)入等待時(shí)間,并由單片機(jī)AT89C52內(nèi)部計(jì)時(shí)器對(duì)其進(jìn)行計(jì)時(shí)。</p><p>  獨(dú)立按鍵系統(tǒng)可以調(diào)整單價(jià)等相關(guān)數(shù)據(jù),當(dāng)按下某按鍵,會(huì)給單片機(jī)相應(yīng)

22、端口一低電平信號(hào),單片機(jī)會(huì)通過(guò)循環(huán)掃描檢測(cè)到此信號(hào),并根據(jù)預(yù)先設(shè)置好的程序做出相應(yīng)的處理;調(diào)整好的數(shù)據(jù)存儲(chǔ)到EEPROM中,掉電后可以使該數(shù)據(jù)不丟失,下次得電后直接從EEPROM-AT24C02中讀到單片機(jī),并通過(guò)數(shù)碼管實(shí)時(shí)顯示。系統(tǒng)結(jié)構(gòu)圖如圖1-1所示。</p><p><b>  圖1-1系統(tǒng)</b></p><p><b>  結(jié)構(gòu)圖</b>

23、;</p><p><b>  第二章 硬件設(shè)計(jì)</b></p><p>  2.1單片機(jī)最小系統(tǒng)單元</p><p>  主控機(jī)系統(tǒng)采用STC公司生產(chǎn)的 AT89C52單片機(jī),它含有512 字節(jié)數(shù)據(jù)存儲(chǔ)器RAM,內(nèi)置8K 的電可擦除FLASH ROM,可重復(fù)編程,大小滿足主控機(jī)軟件系統(tǒng)設(shè)計(jì),所以不必再擴(kuò)展程序存儲(chǔ)器。芯片外圍電路最高可接入40

24、MHZ的晶振(AT單片機(jī)數(shù)值一般為24MHZ)。復(fù)位電路和晶振電路,以及P0口接入的10K的上拉電阻便構(gòu)成了STC89C52 單片機(jī)工作所需的最簡(jiǎn)外圍電路。單片機(jī)最小系統(tǒng)電路圖如圖2-1所示。</p><p> ?。▓D????只截一部分就行了)</p><p>  圖2-1 單片機(jī)最小系統(tǒng)</p><p>  AT89C52單片機(jī)的復(fù)位端接74LS14,它是一個(gè)史密

25、特觸發(fā)輸入的芯片,高電平有效,具有穩(wěn)定波形的作用。RST端若由低電平上升到高電平并持續(xù)2個(gè)周期,系統(tǒng)將實(shí)現(xiàn)一次復(fù)位操作;在該復(fù)位電路中,按一下復(fù)位開(kāi)關(guān),利用電容沖放電的所產(chǎn)生的延時(shí),就會(huì)在RST端產(chǎn)生一段時(shí)間的高電平,進(jìn)而進(jìn)行復(fù)位操作。外接12M的晶振和兩個(gè)30pF 電容組成系統(tǒng)的內(nèi)部時(shí)鐘電路,其中電容主要起到濾波、微調(diào)以及利用其充放電過(guò)程幫助單片機(jī)晶振啟振的作用 [1] 。</p><p>  對(duì)于單片機(jī)的P0

26、口,可以作為地址/數(shù)據(jù)總線使用,也可以作為一般的I/O口使用。但當(dāng)其作為I/O使用時(shí),由于輸出屬于開(kāi)漏電路,無(wú)上拉電阻故也無(wú)法進(jìn)行高低電平的操作,此時(shí)必須接上拉電阻,一般阻值選為10K。但P0口不能同時(shí)作為地址/數(shù)據(jù)總線和I/O使用。本設(shè)計(jì)利用P0口的I/O功能 [2] 。</p><p>  2.2脈沖發(fā)生及檢測(cè)元件</p><p>  我們編輯的程序中的脈沖是低電平有效的脈沖,每按一次

27、鍵,產(chǎn)生一個(gè)脈沖,程序中的脈沖計(jì)數(shù)器加1。為簡(jiǎn)化里程計(jì)數(shù),每一個(gè)脈沖相當(dāng)與0.1公里。</p><p>  里程數(shù)=脈沖數(shù)×0.1公里</p><p><b>  2.3掉電存儲(chǔ)單元</b></p><p>  AT24C02的作用是在電源斷開(kāi)的時(shí)候,存儲(chǔ)當(dāng)前設(shè)定的總金額,等待時(shí)間,運(yùn)行里程以及單價(jià)等信息。該芯片內(nèi)的資料可在掉電情況下

28、長(zhǎng)期保存。AT24C02采用8腳DIP封裝,使用方便,其引腳配置如圖2-3所示。</p><p>  圖2-2AT24C02引腳配置</p><p>  每當(dāng)設(shè)定一次單價(jià),系統(tǒng)就調(diào)用存儲(chǔ)程序,將單價(jià)信息保存在芯片內(nèi);當(dāng)系統(tǒng)重新上電時(shí),自動(dòng)調(diào)用讀存儲(chǔ)器程序,將存儲(chǔ)器內(nèi)的里程及費(fèi)用等信息讀入緩存單元中,供主程序使用哪個(gè)。</p><p>  事實(shí)上,AT24C02為典型

29、的支持I2C總線的器件,對(duì)其進(jìn)行編程時(shí)需遵守I2C總線的時(shí)序要求,以及I2C委員會(huì)對(duì)各種I2C芯片的地址分配規(guī)則。現(xiàn)把I2C總線與AT24C02的通訊時(shí)序、通訊規(guī)則簡(jiǎn)要介紹如下:</p><p>  1. I2C總線節(jié)點(diǎn)的尋址字節(jié)</p><p>  主機(jī)產(chǎn)生起始條件后,發(fā)送的第一個(gè)字節(jié)為尋址字節(jié)。該字節(jié)的頭七位為從機(jī)地址,對(duì)于AT24C02來(lái)說(shuō)高四位為1010,它是I2C總線器件的固有地

30、址,緊接著是A1、A2、A3通過(guò)接地或者高電平?jīng)Q定外圍器件的地址數(shù)據(jù),第八位是讀寫(xiě)控制為,當(dāng)為0是表示主節(jié)點(diǎn)向從節(jié)點(diǎn)發(fā)送數(shù)據(jù),當(dāng)為1時(shí)表示要接收數(shù)據(jù)。</p><p>  2. I2C總線數(shù)據(jù)傳輸?shù)母袷?lt;/p><p>  (1) 主控器的寫(xiě)數(shù)據(jù)格式:</p><p>  首先由主機(jī)發(fā)送起始信號(hào)—當(dāng)SCL為高電平時(shí),SDA由高到低有跳變;然后發(fā)一個(gè)尋址字節(jié),當(dāng)收到應(yīng)

31、答信號(hào)后發(fā)送數(shù)據(jù),其中應(yīng)答信號(hào)為當(dāng)SCL為高時(shí)SDA傳送0,并持續(xù)4.7us以上;當(dāng)主機(jī)產(chǎn)生停止信號(hào)時(shí),數(shù)據(jù)傳送結(jié)束,停止信號(hào)是當(dāng)SCL為高電平時(shí)SDA有一個(gè)由低到高的跳變。</p><p>  (2)主控器的讀數(shù)據(jù)格式:</p><p>  與寫(xiě)數(shù)據(jù)的不同之處在于數(shù)據(jù)發(fā)送結(jié)束和停止位之間加一個(gè)非應(yīng)答位,表示數(shù)據(jù)發(fā)送結(jié)束,格式為當(dāng)SCL為高時(shí)SDA傳送1,并持續(xù)4.7us以上。 </

32、p><p>  3. 要特別注意的是SDA和SCL都是雙向傳輸線,平時(shí)均處于高電平備用狀態(tài),只有當(dāng)需要關(guān)閉時(shí)才使其鉗制在低電平,且僅在SCL為高電平時(shí)數(shù)據(jù)才能傳送,而當(dāng)SCL為低電平時(shí)才允許數(shù)據(jù)發(fā)生變化。</p><p><b>  2.4按鍵系統(tǒng)</b></p><p>  當(dāng)單價(jià)等信息需要進(jìn)行修改時(shí),需要用到按鍵系統(tǒng)。我們根據(jù)計(jì)費(fèi)器功能,設(shè)置了

33、5個(gè)按鍵,分別用來(lái)實(shí)現(xiàn):清零、切換、增大、減小和功能等作用。原理如圖2-3所示。</p><p>  2-3按鍵系統(tǒng)接線圖</p><p>  圖中,鍵盤從上至下依次為:</p><p>  S0:接P1.0口,對(duì)上一次的計(jì)費(fèi)進(jìn)行清零,為下次載客做準(zhǔn)備;</p><p>  S1:接P1.1口,通過(guò)對(duì)功能鍵S3按下次數(shù)的計(jì)數(shù),實(shí)現(xiàn)單價(jià)數(shù)據(jù)的增

34、大;</p><p>  S2:接P1.2口,通過(guò)對(duì)功能鍵S3按下次數(shù)的計(jì)數(shù),實(shí)現(xiàn)單價(jià)數(shù)據(jù)的減??;</p><p>  S3:接P1.3口,按1次,進(jìn)入調(diào)整白天單價(jià);按2次,進(jìn)入調(diào)整夜晚單價(jià);按3次,進(jìn)入調(diào)整等待單價(jià);按4次,進(jìn)入調(diào)整起步價(jià);按5次,返回。</p><p>  S4: 實(shí)現(xiàn)白天單價(jià)和夜晚單價(jià)的切換。</p><p>  需要注

35、意的時(shí),當(dāng)按鍵按下和釋放的瞬間都有抖動(dòng)現(xiàn)象,一般來(lái)說(shuō),抖動(dòng)的時(shí)間長(zhǎng)短與鍵盤的機(jī)械特性有關(guān),大約為5-10ms [5] 。所以在實(shí)際編程時(shí)一定要注意鍵盤的去抖動(dòng)。鍵盤去抖動(dòng)有專用的延時(shí)電路,也有專門的延時(shí)芯片,也可以用軟件去抖,考慮到電路的難易程度,從簡(jiǎn)化硬件的角度,本次設(shè)計(jì)采用軟件去抖動(dòng),用一個(gè)短延時(shí)程序,進(jìn)行鍵盤去抖操作。</p><p><b>  2.5 顯示單元</b></p&

36、gt;<p>  顯示單元由兩個(gè)4位8段共陽(yáng)數(shù)碼管組成,電路連接時(shí),公共端接高電平,因此我們需要點(diǎn)亮哪個(gè)發(fā)光二極管只需給哪個(gè)二極管陰極送低電平,并采用動(dòng)態(tài)掃描進(jìn)行顯示[6]。前三個(gè)數(shù)碼管分別接P2.0、P2.1和P2.2,用于顯示總金額;第四個(gè)接P2.3 ,顯示等待時(shí)間;第五個(gè)和第六個(gè)數(shù)碼管分別接P2.4和P2.5,用于顯示里程,由于需精確到小數(shù)位,故最多只能顯示9.9公里,但經(jīng)過(guò)添加溢出指示,可計(jì)到20公里,在現(xiàn)實(shí)中已基

37、本夠用;后面兩個(gè)數(shù)碼管分別接P2.6和P2.7,用于顯示單價(jià)。由于溢出指示是采用發(fā)光二極管是否點(diǎn)亮表示,故必須選好參數(shù)以確保發(fā)光二極管正常工作。根據(jù)元件手冊(cè)(也可用萬(wàn)用表測(cè)量)查得,發(fā)光二極管點(diǎn)亮?xí)r壓降為1.7V,點(diǎn)亮電流為3-20mA,取導(dǎo)通電流為5mA,所以限流電阻可選擇為(5-1.7)/5=660,故可選擇限流電阻值510Ω。</p><p>  由于數(shù)碼管內(nèi)部二極管點(diǎn)亮?xí)r需要5mA以上的電流,而單片機(jī)的輸

38、出電流還不到1mA,所以數(shù)碼管與單片機(jī)連接時(shí)需加驅(qū)動(dòng)電路,可以使用上拉電阻的方法,也可以使用專門的驅(qū)動(dòng)芯片,考慮到復(fù)用單片機(jī)I/O接口,節(jié)省單片機(jī)I/O資源,此次設(shè)計(jì)采用74HC573鎖存器,其輸出電流較大,電路接口簡(jiǎn)單且可直接驅(qū)動(dòng)數(shù)碼管顯示。74HC573的引腳分布圖2-6如下。</p><p>  圖2-4 74HC573的引腳分布</p><p>  :為三態(tài)允許輸入端(低電平有效)

39、,也可稱作輸出允許端;</p><p>  1D-8D為數(shù)據(jù)輸入端;</p><p>  1Q-8Q為數(shù)據(jù)輸出端;</p><p><b>  LE為鎖存允許端。</b></p><p>  74HC573所對(duì)應(yīng)真值表2-1如表。</p><p>  表2-1 74HC573真值表</p&g

40、t;<p>  其中 :H—高電平;L—低電平;X—任意電平;Z—高阻態(tài),既不是高電平也不是低電平,其電平狀態(tài)由與它相連接的其它電氣狀態(tài)決定;Q0—上次的電平狀態(tài)。</p><p>  由真值表可以看出,當(dāng)為高電平時(shí),無(wú)論LE與D端為何電平狀態(tài),其輸出均為高阻態(tài),此時(shí)芯片處于不可控狀態(tài)。做設(shè)計(jì)時(shí)必須使其處于可控狀態(tài),即應(yīng)該接低電平。當(dāng)為低電平時(shí),若LE為H,則D與Q同時(shí)為H或者L,數(shù)據(jù)實(shí)現(xiàn)直通傳送;

41、而當(dāng)LE為L(zhǎng)時(shí),無(wú)論D為何狀態(tài)Q都保持上一次的數(shù)據(jù)狀態(tài),數(shù)據(jù)被鎖存住,利用此特性即可實(shí)現(xiàn)對(duì)數(shù)碼管的控制。</p><p>  本次設(shè)計(jì)中:段選信號(hào)LE接P1.5,對(duì)應(yīng)圖中標(biāo)號(hào)P1.5;位選信號(hào)LE接P1.6,對(duì)應(yīng)圖中標(biāo)號(hào)P1.6。控制顯示時(shí)先給P1.5高電平,使通道打開(kāi),接著送字碼,然后把P1.5電平拉低,使字碼保持?。恢蟠蜷_(kāi)P1.6(送高電平),緊接著送位碼,控制要顯示的位,然后把P1.6拉低,數(shù)據(jù)被保持。最

42、后延時(shí)5ms;依次循環(huán)掃描;利用數(shù)碼管點(diǎn)亮后的余暉和人眼視覺(jué)暫留效應(yīng)即可實(shí)現(xiàn)動(dòng)態(tài)顯示。數(shù)碼管動(dòng)態(tài)顯示電路如圖2-5所示。</p><p>  圖2-5 數(shù)碼管動(dòng)態(tài)顯示電路</p><p><b>  第3章 軟件設(shè)計(jì)</b></p><p><b>  3.1 系統(tǒng)主程序</b></p><p> 

43、 在主程序模塊中,需要完成對(duì)各參量和接口的初始化、出租車起步價(jià)和單價(jià)的初始化以及中斷、計(jì)算、循環(huán)等工作。另外,在主程序模塊中還需要設(shè)置啟動(dòng)/清除標(biāo)志寄存器、里程寄存器和價(jià)格寄存器,并對(duì)它們進(jìn)行初始化。然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動(dòng)、清除、計(jì)程和計(jì)價(jià)等不同的操作。</p><p>  當(dāng)出租車運(yùn)行后,就啟動(dòng)計(jì)價(jià)器,根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷行駛里程是否已超過(guò)起步價(jià)公里數(shù)。若已超過(guò),則根據(jù)里

44、程值、每公里的單價(jià)值和起步價(jià)來(lái)計(jì)算出當(dāng)前的總金額,并將結(jié)果存于總金額寄存器中;中途等待時(shí),無(wú)脈沖輸入,不產(chǎn)生中斷,當(dāng)時(shí)間超過(guò)等待設(shè)定值時(shí),開(kāi)始進(jìn)行計(jì)時(shí),并把等待金額加到總金額里,然后將總金額、里程、等待時(shí)間和單價(jià)送數(shù)碼管顯示出來(lái)。程序流程如圖3-1所示。</p><p>  圖3-1 主程序流程圖</p><p>  3.2 里程計(jì)數(shù)中斷程序</p><p>  每

45、當(dāng)按一次鍵輸出一個(gè)低電平信號(hào),單片機(jī)定時(shí)器0(工作在計(jì)數(shù)模式)就對(duì)其計(jì)數(shù)一次,相應(yīng)的變量設(shè)為inter就自加1,當(dāng)里程計(jì)數(shù)器inter對(duì)里程脈沖計(jì)滿500次時(shí),對(duì)其自身進(jìn)行清零操作,為下一次計(jì)數(shù)做準(zhǔn)備,同時(shí)進(jìn)入里程計(jì)數(shù)中斷服務(wù)程序中,里程變量加1,總金額根據(jù)此時(shí)所設(shè)單價(jià)做出相應(yīng)的變化。里程中斷子程序如圖3-2所示。</p><p>  圖3-2 里程中斷服務(wù)子程序</p><p>  3.

46、3中途等待中斷程序</p><p>  在中途等待中斷程序中,定時(shí)器1每50ms計(jì)一次數(shù),每計(jì)夠100次(5sec),便將當(dāng)前里程值送入某個(gè)緩存變量,與前一個(gè)5秒的值進(jìn)行比較,如果兩者相同,則表明霍爾傳感器沒(méi)有輸出信號(hào),認(rèn)為出租車停了下來(lái),進(jìn)入等待計(jì)時(shí),計(jì)時(shí)中間變量dd自加1,計(jì)夠12次為一分鐘,dd自清零,同時(shí)根據(jù)所設(shè)的等待單價(jià)刷新總金額。計(jì)數(shù)初值可有以下公式獲得:</p><p>  

47、X=(65536-t)*11.0592*10^6/12;</p><p>  TH=X/256; </p><p><b>  TL=X%256;</b></p><p>  其中:X表示計(jì)數(shù)初值,TH、TL分別為16位計(jì)數(shù)器高8位和低8位應(yīng)裝入的初值。</p><p>  用定時(shí)器作為基準(zhǔn),可使測(cè)試的等待時(shí)間更

48、為精確(可以精確到uS級(jí));且每隔5秒比較一次,能有效減小誤判率,避免把汽車低速行駛誤認(rèn)為靜止等待處理。中途等待子程序流程圖如圖3-3所示。</p><p>  圖3-3 中途等待中斷子程序流程圖</p><p>  3.4 費(fèi)用計(jì)算程序</p><p>  計(jì)算程序根據(jù)里程數(shù)分別進(jìn)入不同的計(jì)算公式。如果里程大于3公里,則執(zhí)行公式:總金額=起步價(jià)+(里程-3)*單價(jià)

49、+等待時(shí)間*等待單價(jià);否則,執(zhí)行公式:總金額=起步價(jià)+等待時(shí)間*等待單價(jià)。程序流程圖如圖3-4所示。</p><p>  圖3-4 計(jì)算程序流程圖</p><p><b>  3.5 顯示程序</b></p><p>  由于8位數(shù)碼管所有段選皆有8位的P0口進(jìn)行控制,因此,在每一瞬間,8位LED會(huì)顯示同一個(gè)數(shù)字。要想每位顯示不同的字符,就必須

50、采用動(dòng)態(tài)掃描的方法輪流點(diǎn)亮各位LED,即在每一時(shí)刻只使某一位顯示字符。在此瞬間,段選控制I/O口輸出相應(yīng)字符段選碼(字符碼),而位選則控制I/O口在該顯示的位送入選通電平,以保證該位顯示顯示相應(yīng)字符。如此循環(huán)操作,使每位分時(shí)顯示該位應(yīng)該顯示的字符 [7] 。</p><p>  在本次設(shè)計(jì)中顯示程序利用延時(shí)程序,每隔5ms刷新一次,相應(yīng)的數(shù)碼管點(diǎn)亮,顯示一位數(shù)據(jù),利用主函數(shù)內(nèi)的循環(huán),實(shí)現(xiàn)動(dòng)態(tài)掃描顯示,同時(shí)根據(jù)數(shù)碼

51、管余輝和人眼暫留現(xiàn)象,給人看上去每個(gè)數(shù)碼管總是在亮,以實(shí)現(xiàn)動(dòng)態(tài)顯示。</p><p><b>  3.6 鍵盤程序</b></p><p>  鍵盤采用查詢的方式,放在主程序中,當(dāng)有按鍵按下的時(shí)候,在相應(yīng)I/O口產(chǎn)生一次低電平,當(dāng)單片機(jī)查詢出該低電平后便轉(zhuǎn)入進(jìn)行處理,處理結(jié)束返回。鍵盤程序流程圖如圖3-5。 </p><p><b>

52、  圖3-5 鍵盤程序</b></p><p>  按鍵檢測(cè)流程圖3-6所示。</p><p>  圖3-6 按鍵檢測(cè)子程序流程圖</p><p>  第4章 調(diào)試改進(jìn)過(guò)程及運(yùn)行結(jié)果分析</p><p>  4.1 動(dòng)態(tài)掃描的調(diào)試和分析</p><p>  首先,第一次調(diào)試的時(shí)候,顯示器上出現(xiàn)了亂碼,不能正

53、常顯示,</p><p>  4.4 程序分析與設(shè)計(jì)</p><p>  計(jì)算程序的分析與設(shè)計(jì)</p><p>  由于里程和單價(jià)都精確的小數(shù)點(diǎn)后一位,而顯示時(shí)仍按整數(shù)顯示,只不過(guò)人為的加入 &0x7f(共陽(yáng)極時(shí)加入&0x7f,共陰極時(shí)加入 ||0x)控制是否顯示小數(shù)點(diǎn)兒,故實(shí)際計(jì)算時(shí)要做適當(dāng)改動(dòng)。</p><p><b

54、>  改動(dòng)如下:</b></p><p>  1. 當(dāng)里程值大于30(實(shí)際對(duì)應(yīng)大于3公里)且無(wú)進(jìn)位時(shí),溢出指示燈不亮,總金額=起步價(jià)+(里程十位數(shù)字-2)*運(yùn)行單價(jià)+等待單價(jià)*等待時(shí)間;</p><p>  2. 當(dāng)里程值小于30(實(shí)際對(duì)應(yīng)小于3公里),肯定無(wú)進(jìn)位,溢出指示燈不亮,總金額=起步價(jià)+等待單價(jià)*等待時(shí)間;</p><p>  3. 有進(jìn)

55、位,溢出指示燈點(diǎn)亮,表示里程一定大于三公里,只需執(zhí)行總金額=起步價(jià)+7*運(yùn)行單價(jià)+(里程十位數(shù)字+1)*運(yùn)行單價(jià)+等待單價(jià)*等待時(shí)間</p><p>  即:總金額=起步價(jià)+(里程十位數(shù)字+8)*運(yùn)行單價(jià)+等待單價(jià)*等待時(shí)間;</p><p>  4.5 結(jié)果分析與性能改進(jìn)</p><p>  經(jīng)過(guò)反復(fù)調(diào)試驗(yàn)證,基于AT89C52單片機(jī)的出租車計(jì)費(fèi)器滿足了所要求的功

56、能要求,所有器件均較為普通,價(jià)格合理,但是此計(jì)費(fèi)器若要用于實(shí)踐,還需要改進(jìn)。</p><p>  可以改進(jìn)的地方,如下:</p><p>  脈沖發(fā)生和計(jì)數(shù)部分可以用霍爾傳感元件A44E檢測(cè)完成,A44E工作原理如圖4-1</p><p>  圖4-1A44E霍爾傳感器原理</p><p>  出租車車輪每旋轉(zhuǎn)一周,霍爾傳感器A44E便產(chǎn)生一

57、相應(yīng)的脈沖輸出,并把該脈沖交由單片機(jī)進(jìn)行處理,單片機(jī)則根據(jù)程序設(shè)定,通過(guò)計(jì)算脈沖個(gè)數(shù)換算出已行駛里程:里程=脈沖個(gè)數(shù)*出租車車輪周長(zhǎng)。其原理如圖4-2所示。</p><p>  圖4-2傳感器測(cè)距示意圖</p><p>  將A44E的脈沖輸出端接到P3.2口,即做為定時(shí)器/計(jì)數(shù)器1的輸入端,車輪每轉(zhuǎn)一圈(設(shè)車輪的周長(zhǎng)是2米),霍爾開(kāi)關(guān)便輸出一低電平信號(hào),然后利用單片機(jī)定時(shí)器1對(duì)該脈沖計(jì)數(shù)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論