出租車自動計費(fèi)器(共33頁)_第1頁
出租車自動計費(fèi)器(共33頁)_第2頁
出租車自動計費(fèi)器(共33頁)_第3頁
出租車自動計費(fèi)器(共33頁)_第4頁
出租車自動計費(fèi)器(共33頁)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目 錄 TOC o 1-3 h z u HYPERLINK l _Toc409191142 摘要(zhiyo) 出租車自動(zdng)計費(fèi)器設(shè)計摘要(zhiyo)近些年來,出租車成為了人們出行重要的交通工具之一,出租車以低價高質(zhì)的服務(wù)(fw)給人們帶來了不少方便?;趩纹瑱C(jī)系統(tǒng)設(shè)計的出租車計費(fèi)器以單片機(jī)作為核心的控制元件,具有功能強(qiáng),性能可靠,電路簡單,成本低的特點(diǎn),加上經(jīng)過優(yōu)化的程序,使其具有很高的智能化水平。本次設(shè)計中,硬件設(shè)計主電路以AT89S51單片機(jī)為核心控制元件,輸出采用LCD1602液晶屏和四位一體數(shù)碼管,顯示起價、每公里單價、等待價格、行駛總里程和總金額,并配有多個按鍵,以供手

2、動調(diào)節(jié)乘車價格。關(guān)鍵詞:計費(fèi)器 51單片機(jī) LCD1602 數(shù)碼管 1 概述(i sh)1.1 基本(jbn)要求 以MCS-51系列(xli)單片機(jī)為核心,設(shè)計出租車自動計費(fèi)器。 設(shè)計一個出租車自動計費(fèi)器,具有行車?yán)锍逃嬞M(fèi)、等候時間計費(fèi)、及起價三部分,用四位數(shù)碼管顯示總金額,最大值為99.99元。 行車?yán)锍虇蝺r1元/公里,等候時間單價0.5元/10分鐘,起價3元(3公里起價)均能通過人工輸入。 行車?yán)锍痰挠嬞M(fèi)以一個脈沖模擬汽車前進(jìn)十米, 用LED顯示行駛公里數(shù)和收費(fèi)金額。一、計費(fèi)功能費(fèi)用按行駛里程計費(fèi),起步價為3元。1、當(dāng)行駛里程小于或等于3公里,按起步價計費(fèi)2、當(dāng)行駛里程大于3公里,每公里

3、收費(fèi)1元,不足1公里不計3、等待時間為每10分鐘收費(fèi)0.5元,不足10分鐘不計二、顯示功能1、顯示行駛里程:用LCD1602液晶屏顯示,顯示方式為“XX”,單位為Km,范圍0-99Km2、顯示等候時間:用LCD1602液晶屏顯示,顯示方式為“XX”,單位Min,范圍0-99Min3、顯示總費(fèi)用:用四位數(shù)碼管顯示,顯示方式為“XX.X”,單位元,范圍3-99.9元1.2 功能(gngnng)介紹本出租車自動(zdng)計費(fèi),上電后顯示默認(rèn)(mrn)的起步價,每公里計費(fèi)單價,等待時間計費(fèi)單價,可通過按鍵調(diào)整起步價,里程計費(fèi)單價,等待時間計費(fèi)單價。具有運(yùn)行、暫停、停止?fàn)顟B(tài),可以顯示行駛的里程、等待的

4、時間和出租車行駛的總費(fèi)用。2 設(shè)計方案2.1設(shè)計原理利用單片機(jī)的強(qiáng)大功能,可用AT89S51單片機(jī)作主控芯片,用來處理計費(fèi)器的各種數(shù)據(jù)并控制LCD1602和數(shù)碼管顯示模塊,實現(xiàn)基本的里程計費(fèi)和價格調(diào)整。為模擬汽車行駛,用單片機(jī)的T0定時器進(jìn)行16位定時,每0.05S發(fā)射一個信號進(jìn)入定時中斷,20個中斷為1S,每秒向單片機(jī)發(fā)送信號表示前進(jìn)10米。2.2 設(shè)計方案復(fù)位電路里程傳輸按鍵電路數(shù)碼管顯示總費(fèi)用鎖存器LCD1602顯示行駛里程和等待時間等AT89S51單片機(jī)圖2-1 總體設(shè)計框圖3 硬件(yn jin)電路3.1 單片機(jī)最小系統(tǒng)(xtng)該電路單片機(jī)最小系統(tǒng)由四個部分組成(z chn):

5、電源、地、復(fù)位電路、時鐘電路。電源電路中,電源接單片機(jī),同時連接一個電容接地用于去耦合,穩(wěn)定電源電壓。復(fù)位電路如圖3-1所示,共有兩種基本形式:上電復(fù)位和按鍵復(fù)位。單片機(jī)上電瞬間會對C1進(jìn)行充電,此過程C1相當(dāng)于短路,RST引腳電平升高單片機(jī)復(fù)位;若要手動復(fù)位,則按下RSTK復(fù)位按鍵,RST引腳直接接高電平,單片機(jī)復(fù)位。圖3-1 復(fù)位電路圖3-2為單片機(jī)時鐘電路,AT89S51內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,它的輸入端為芯片引腳XTAL1,輸出端為XTAL2,。這兩個引腳跨接石英晶體和微調(diào)電容,構(gòu)成一個穩(wěn)定的自激振蕩器,微調(diào)電容的典型值通常為30pF。圖3-2 時鐘(shzhng)

6、電路3.2 按鍵(n jin)電路本設(shè)計共有(n yu)6個獨(dú)立按鍵:復(fù)位按鍵RSTK,進(jìn)入退出設(shè)置鍵K1,光標(biāo)移動鍵K2,數(shù)值增加鍵K3,等待計時鍵K4,開始暫停計費(fèi)鍵K5。1.復(fù)位或者程序跑飛,可用RSTK鍵進(jìn)行復(fù)位;2.調(diào)整計費(fèi)單價,按K1進(jìn)如設(shè)置狀態(tài),設(shè)置完后再按下K1退出設(shè)置狀態(tài);3.按K2可移動光標(biāo),分別調(diào)整各收費(fèi)單價;4.按K5鍵開始計費(fèi),中間需要停車等待,可直接按K4進(jìn)行等待計時計費(fèi),等待完畢直接按K5繼續(xù)行駛計費(fèi)。按鍵電路如圖3-3所示。圖3-3 按鍵電路3.3 數(shù)碼(shm)管顯示(xinsh)電路(dinl)數(shù)碼管用于顯示計費(fèi)總價,顯示方式為“XX.X”,單位元,顯示范圍

7、為3-99.9元。為保證數(shù)碼管顯示的穩(wěn)定性,在段選端前接鎖存器74HC573,數(shù)碼管電路如圖3-4所示。圖3-4 數(shù)碼管顯示電路由于單片機(jī)P0口沒有上拉能力,所以數(shù)碼管的段選口高電平由鎖存器提供。3.4 LCD1602顯示電路LCD1602液晶屏是字符型液晶屏,并且?guī)ё址麕斓?,不需要查找代碼,英文字符可直接輸入顯示。液晶電路使用時,如果發(fā)現(xiàn)液晶不亮可以調(diào)節(jié)連接液晶的變阻器,改變液晶的亮度。每個點(diǎn)陣字符位都可以顯示一個字符,每位之間有一個點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形。LCD1602顯示電路如圖3-5所示。圖3-5 LCD顯示(xi

8、nsh)電路另外(ln wi),系統(tǒng)(xtng)供電由P1口外接的5V電源供電,如圖3-6。圖3-6 電源接口4 軟件設(shè)計4.1單片機(jī)I/O資源(zyun)使用此設(shè)計(shj)中P10到P13口和P32口連接按鍵控制輸入,P0口和P14、P15、P16、P17口用于控制數(shù)碼管,P2口和P34、P35、P36口用于控制LCD1602液晶屏。4.2 單片機(jī)軟件(run jin)模塊設(shè)計一、LCD1602顯示模塊由于LCD1602程序比較復(fù)雜,所以專門創(chuàng)建一個1602的頭文件,將1602的使用程序存放于頭文件中,在主程序中只要聲明了1602頭文件,即可調(diào)用1602子程序。頭文件下包含的子程序有:延時

9、程序、LCD1602初始化程序、寫命令程序和寫數(shù)據(jù)程序。由于只是使用LCD1602進(jìn)行顯示,所以不需要讀命令數(shù)據(jù)程序。二、中斷程序模塊程序共使用三個中斷:INT0、T0、T1中斷。INT0中斷用于進(jìn)入或退出調(diào)價模式,打開計費(fèi)器后進(jìn)行計費(fèi)之前,隨時可以利用INT0中斷進(jìn)行調(diào)價,開始計費(fèi)之后則關(guān)閉INT0中斷,不能調(diào)價。T0定時中斷形成行車脈沖,模擬汽車行駛,每0.05s產(chǎn)生一次中斷,每20次中斷為1s,每秒行駛10米距離。程序中設(shè)置一個變量flag2用來表示按下的是K4還是K5,按下K5鍵T0中斷中的t1開始計時,模擬汽車行駛,再次按下則暫停計時,即停止行駛;按下K4,T0中的t2開始計時,計算

10、等待的時間。T1中斷用于數(shù)碼管顯示,由于數(shù)碼管是動態(tài)顯示,所以在此較為復(fù)雜的主程序中運(yùn)行會產(chǎn)生閃爍,將數(shù)碼管顯示程序置于T1中斷程序中,就不會再閃爍。三、其它程序模塊其它程序模塊主要包括數(shù)碼管顯示模塊、數(shù)據(jù)計算模塊、調(diào)價模塊、按鍵掃描模塊等。數(shù)碼管顯示(xinsh)模塊用于顯示總費(fèi)用,使用四位一體數(shù)碼管顯示,但只用其中后三位,顯示0到99.9。數(shù)據(jù)(shj)計算模塊主要計算行車?yán)锍?、等待時間、等待收費(fèi)、總收費(fèi)。調(diào)價模塊用于調(diào)整起價、每公里單價和等待(dngdi)收費(fèi)單價。按鍵掃描模塊用于檢測用戶按下了哪些功能鍵。4.3 程序框圖本設(shè)計中,軟件設(shè)計采用模塊化操作,利用各個模塊之間的相互聯(lián)系,在設(shè)

11、計中采用主程序調(diào)用子程序的方法,使程序通俗易懂。 在main函數(shù)開始,要對系統(tǒng)初始化,和對硬件設(shè)備進(jìn)行初始化,并使硬件處于就緒狀態(tài)。通過判斷是否計費(fèi),調(diào)價,清零等狀態(tài),來分別調(diào)用不同的子程序,使程序在設(shè)計之前,就有了很強(qiáng)的邏輯關(guān)系。這些對應(yīng)于硬件就是通過按下各個控制開關(guān),來分別進(jìn)行不同的動作,最后顯示屏根據(jù)輸入的信息,來顯示不同的數(shù)據(jù)信息,這就達(dá)到了軟件控制硬件,同時輸入信息控制輸出信息的目的。整個程序的流程圖如下:開始TO、T1、INT0初始化LCD1602初始化LCD默認(rèn)顯示 是否按下S1鍵 否 否 調(diào)價程序是 是是否按下S4或S5數(shù)碼管、LCD顯示數(shù)據(jù)圖4-1 程序(chngx)流程圖從

12、圖中可以看出,程序(chngx)開始就對LCD1602、T0 T1計數(shù)器和INT0進(jìn)行了初始化,1602顯示(xinsh)器開始顯示計費(fèi)標(biāo)準(zhǔn),之后判斷是否進(jìn)行調(diào)整收費(fèi)標(biāo)準(zhǔn),如需調(diào)整則進(jìn)入調(diào)整程序進(jìn)行價格調(diào)整,若不需要調(diào)整則判斷是否開始計費(fèi)或者計時,若開始則進(jìn)入數(shù)據(jù)處理程序進(jìn)行各數(shù)據(jù)計算,計算結(jié)果顯示在LCD1602和數(shù)碼管上,若不開始計價或者計時,則只用LCD1602顯示收費(fèi)標(biāo)準(zhǔn)。5 PROTEUS仿真(fn zhn)5.1 總仿真(fn zhn)電路圖使用PROTEUS搭建好電路,下載程序進(jìn)行仿真。仿真電路包含(bohn)AT89S51單片機(jī)、按鍵控制電路、74HC573鎖存器、四位共陰極數(shù)

13、碼管和LCD1602液晶屏??傠娐啡鐖D5-1所示。圖5-1 仿真電路圖5.2 不調(diào)價仿真先使用默認(rèn)的價錢進(jìn)行仿真,即起步價3元,每公里1元,每等待10分鐘0.5元。通過計算,行駛10公里且不等待收費(fèi)10塊錢,對比仿真結(jié)果圖5-2發(fā)現(xiàn)電路運(yùn)行正常。圖5-2 仿真(fn zhn)一再仿真等待收費(fèi)。行駛7公里,等待10分鐘,通過計算應(yīng)收費(fèi)7.5元,對比(dub)仿真結(jié)果圖5-3,運(yùn)行結(jié)果也正確。圖5-3 仿真(fn zhn)二5.3 調(diào)價仿真這次先進(jìn)行調(diào)價,再開始計費(fèi),檢查調(diào)價程序是否能夠正常運(yùn)行。將起步價調(diào)為6元,每公里單價調(diào)為3元,按K5開始行駛計費(fèi),行駛10公里,計算得費(fèi)用為27元,對比仿真結(jié)

14、果圖5-4,結(jié)果相同。圖5-4 仿真(fn zhn)三再將起步價調(diào)為5元,每公里單價調(diào)為2元,每10分鐘等待單價調(diào)為1.5元進(jìn)行(jnxng)仿真,等待10分鐘,顯示計費(fèi)12.5元,與計算結(jié)果圖5-5相同(xin tn)。圖5-5 仿真四6 心得體會出租車計費(fèi)器系統(tǒng)的設(shè)計已經(jīng)全部完成,能按預(yù)期的效果進(jìn)行模擬汽車啟動,停止,暫停(zn tn)等功能,并能夠通過LCD和數(shù)碼(shm)管顯示(xinsh)車費(fèi)數(shù)目。本款出租車計價器包括單價輸出、單價調(diào)整、顯示當(dāng)前總費(fèi)用等功能。另外,多功能出租車計價器還具有性能可靠、電路簡單、成本低、實用性強(qiáng)等特點(diǎn),加上經(jīng)過優(yōu)化的程序,使其有很高的智能化水平。 經(jīng)過自

15、己努力,基本上完成了設(shè)計要求的內(nèi)容,在系統(tǒng)可行性分析、原理圖設(shè)計等方面都作了許多實際工作,取得了一些成績,同時也遇到了一些問題,存在一些不足。經(jīng)過這幾天的學(xué)習(xí)和工作,我覺得自己不論是在理論知識方面還是在動手能力方面都有了不小的進(jìn)步,自己從中受益匪淺。這次設(shè)計很好的把以前學(xué)到的理論知識應(yīng)用于實踐,使我認(rèn)識到理論知識與實踐之間有一定的差距,只有通過不斷的努力學(xué)習(xí)和實踐才能很好的把理論知識應(yīng)用到實踐當(dāng)中,也只有通過不斷的實踐才能對理論知識的理解。 通過這次設(shè)計不僅學(xué)會了如何去查找相關(guān)資料,更重要的是通過查找資料和翻閱書籍學(xué)到了不少知識,擴(kuò)大了知識面,提高了知識水平。經(jīng)過單元設(shè)計和系統(tǒng)設(shè)計鞏固了以前所

16、學(xué)的專業(yè)知識,自己真正認(rèn)識到理論聯(lián)系實際的重要性,為以后的學(xué)習(xí)和工作提供了很多有價值的經(jīng)驗。通過這次設(shè)計不僅增強(qiáng)了自己的動腦能力和動手能力,也提高了我思考問題、分析問題、解決問題的能力,更重要的是學(xué)會用工程化的思想來解決問題。這在以前的學(xué)習(xí)過程中是不曾學(xué)到的。在短短的三個月時間內(nèi)完成設(shè)計內(nèi)容,在很大程度上得益于老師的幫助。這次設(shè)計是我認(rèn)真認(rèn)識到完整、嚴(yán)謹(jǐn)、科學(xué)分析問題、解決問題的思想是多么的重要,只有擁有了科學(xué)的態(tài)度才能設(shè)計出有用的產(chǎn)品。另外通過本次設(shè)計,使我認(rèn)識到自己理論知識的應(yīng)用能力有很大的欠缺,需要在以后的學(xué)習(xí)中進(jìn)一步提高。參考文獻(xiàn)1張毅坤等.單片微型計算機(jī)原理(yunl)及應(yīng)用.西安電

17、子科技大學(xué)出版社2李建忠.單片機(jī)原理(yunl)及應(yīng)用.西安電子科技大學(xué)出版社3張毅剛,彭喜元,彭宇.單片機(jī)原理(yunl)及應(yīng)用.高等教育出版社4康華光.電子技術(shù)基礎(chǔ)數(shù)字部分.高等教育出版社5劉坤,趙紅波,張憲棟.51單片機(jī)開發(fā)技術(shù)大全.人民郵電出版社6李廣弟,朱月秀,冷祖祁.單片機(jī)基礎(chǔ).北京航空航天大學(xué)出版社附錄(fl)1 原件清單名稱規(guī)格數(shù)量電阻10K1個排阻1K1排可變電阻1個極性電容10uF1個非極性電容33pF2個0.1uF2個晶振12MHz1個LCD16021個數(shù)碼管1個芯片AT89S511個74HC5731個附錄(fl)2 程序主程序:#include #include 160

18、2.h#define uint unsigned int#define uchar unsigned charuchar table3=3,1,5; /起步價,單價(dnji),等待單價uchar table13;uchar code table2=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/09uchar code table3=0 xbf,0 x86,0 xdb,0 xcf,0 xe6,0 xed,0 xfd,0 x87,0 xff,0 xef;/09帶小數(shù)點(diǎn)uchar SetPlace,SetState=0;

19、/設(shè)置(shzh)位置,設(shè)置狀態(tài)uchar time1,time2; /用于定時器計時uchar kilometre; /行走里程double min;double waitm=0.0,money=0.0;/等待計費(fèi)、總計費(fèi)uchar flag1=0,flag2; /用于K4和K5按鍵狀態(tài)uchar num=0;uint x;uint t1,t2; /t1為T0定時,表示汽車行走了t1秒 /t2為T1定時(dn sh),表示等待了t2秒sbit K1=P32; /設(shè)置(shzh)sbit K2=P12; /移動(ydng)光標(biāo)sbit K3=P13; /循環(huán)增加sbit K4=P10; /打開

20、關(guān)閉等待計時器sbit K5=P11; /打開關(guān)閉計價器sbit LSA=P14; /數(shù)碼管位選sbit LSB=P15;sbit LSC=P16;sbit LSD=P17;void Key(); /按鍵選擇計費(fèi)或計時void SMG(); /數(shù)碼管顯示void Data(); /計算行走里程、等待收費(fèi)、總收費(fèi)void tiaojia(); /按K1 K2 K3調(diào)整收費(fèi)標(biāo)準(zhǔn)void LcdDisplay(); /1602顯示void delay(uint c); /延時c毫秒void Int0Configuration(); /外部0中斷初始化void T_0Config(); /定時器0中斷

21、初始化void T_1Config(); /定時器1中斷初始化/*主程序*/void main()LCD1602init();T_0Config();T_1Config();Int0Configuration();while(1)if(SetState=1)tiaojia();/按下K1則調(diào)整(tiozhng)價格,不按則跳過elseKey();/按鍵選擇(xunz)計費(fèi)或計時Data(); /數(shù)據(jù)處理LcdDisplay(); /1602顯示(xinsh) /*數(shù)碼管顯示程序*/void SMG() /共陰極數(shù)碼管for(num=0;num2)SetPlace=0;while(i50)&(K

22、2=0)/檢測按鍵是否松開delay(10);i+;i=0;if(K3=0)/檢測按鍵K3按下 調(diào)節(jié)價格delay(10);/消除抖動if(K3=0)if(SetPlace9) /換成BCD碼。tableSetPlace=tableSetPlace+6; /轉(zhuǎn)換(zhunhun)為BCD碼之后,就相當(dāng)于十進(jìn)制數(shù)了if(tableSetPlace0 x9)&(SetPlace=0)/起步價tableSetPlace=0;if(tableSetPlace0 x9)&(SetPlace=1)/單價(dnji)tableSetPlace=0;elsetableSetPlace=tableSetPlac

23、e+5;if(tableSetPlace&0 x0f)9) /換成BCD碼。tableSetPlace=tableSetPlace+6; /轉(zhuǎn)換(zhunhun)為BCD碼之后,就相當(dāng)于十進(jìn)制數(shù)了if(tableSetPlace0 x99)&(SetPlace=2) /等待單價的10倍tableSetPlace=0;while(i10)&(K3=0) /檢測按鍵是否(sh fu)松開delay(10);i+;i=0;/*數(shù)據(jù)處理計算(j sun)程序*/void Data() /計算行走里程、等待(dngdi)收費(fèi)、總收費(fèi)kilometre=(10*t1)/100;/1000!min=t2/6

24、00; /t2/600是等待了多少個10分鐘waitm=min*table2; /不/10,在money處也不*10,正好抵消if(kilometre=20) /1Stime1=0;switch(flag2) /按K5則t1+,按K4則t2+ /原因是兩個程序公用一個定時器case(1):t1+;break;case(2):t2+;break;/*定時器T1及T1中斷*/void T_1Config()TMOD=0 x10;TH1=(65535-10000)/256; / 0.05STL1=(65535-10000)%256; /給定時器裝初值,程序啟動(qdng)之后定時器開始計時EA=1;

25、TR1=1;ET1=1;void T_1() interrupt 3TH1=(65535-10000)/256; / 重裝(zhn zhun)初值TL1=(65535-10000)%256;SMG(); /數(shù)碼(shm)管顯示在中斷中,這樣就不會閃了/*外部中斷0及中斷*/void Int0Configuration() /設(shè)置INT0IT0=1;/跳變沿觸發(fā)方式(下降沿)EX0=1;/打開INT0的中斷允許。EA=1; /打開總中斷void Int0() interrupt 0/如果按下了K3就進(jìn)入中斷 delay(10);if(K1=0)switch(SetState)case 0:SetState=1;break;case 1:SetState=0;break;SetPlace=0;/*延時程序(chngx)*/void delay(uint c) /延時c毫秒粗略(cl)延時uchar a,b;for(c;c0;c-)for(b=199;b0;b-)for(a=1;a0;a-);LCD1602顯示(xinsh)程序:#ifndef _1602_H_#define _1602_H_#include #ifndef uchar#define uchar unsigned cha

溫馨提示

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

評論

0/150

提交評論