畢業(yè)論文基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì)_第1頁
畢業(yè)論文基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì)_第2頁
畢業(yè)論文基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì)_第3頁
畢業(yè)論文基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì)_第4頁
畢業(yè)論文基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于單片機(jī)的出租車計(jì)價(jià)系統(tǒng)設(shè)計(jì)1 設(shè)計(jì)目的,要求和設(shè)計(jì)方法1.1設(shè)計(jì)目的(1) 學(xué)習(xí)基本理論在實(shí)踐中綜合運(yùn)用的初步經(jīng)驗(yàn),掌握電路設(shè)計(jì)的基本方法、設(shè)計(jì)步驟,培養(yǎng)綜合設(shè)計(jì)與調(diào)適能力,進(jìn)一步提高綜合運(yùn)用所學(xué)知識(shí)和設(shè)計(jì)能力的的目的。(2) 掌握C語言程序設(shè)計(jì)方法。(3) 培養(yǎng)實(shí)踐技能,提高分析和解決實(shí)際問題的能力,并具備一定程度的設(shè)計(jì)能力。1.2基本設(shè)計(jì)要求本出租車自動(dòng)計(jì)費(fèi),上電后顯示最初的起步價(jià),里程計(jì)費(fèi)單價(jià),等待時(shí)間計(jì)費(fèi)單價(jià),通過按鍵可以調(diào)節(jié)起步價(jià),里程計(jì)費(fèi)單價(jià),等待時(shí)間計(jì)費(fèi)單價(jià)。同時(shí)具有運(yùn)行,等待,暫停等狀態(tài),可以顯示暫停的時(shí)間。出租車停止后能夠顯示行駛的總費(fèi)用。1.3性能指標(biāo)1、費(fèi)用的計(jì)算是按

2、行駛里程收費(fèi)。設(shè)起步價(jià)為7.00元。2、當(dāng)里程<3km時(shí),按起價(jià)計(jì)算費(fèi)用。3、當(dāng)里程>3km時(shí),每公里按1.7元計(jì)費(fèi)。4、等待累計(jì)時(shí)間>2min時(shí),按1.5元/min計(jì)費(fèi)。1.4顯示功能1、顯示行駛里程:用兩位數(shù)字顯示,顯示方式為“XX”,單位為km。計(jì)程范圍0-99km,精確到1km。2、顯示等候時(shí)間:用兩位數(shù)字顯示,顯示方式為“XX”,單位為min。計(jì)時(shí)范圍0-59min,精確到1min。3、顯示總費(fèi)用:用四位數(shù)字顯示,顯示方式為“XXX.X”,單位為元。計(jì)價(jià)范圍0-999.9元,精確到0.1元。1.3 設(shè)計(jì)方法本設(shè)計(jì)采用AT89C51單片機(jī)為主控器,并用開關(guān)或者頻率信號(hào)

3、發(fā)生器模擬車速,利用AT89C51的定時(shí)器工作在方式1下定時(shí)實(shí)現(xiàn)對(duì)出租車的計(jì)時(shí)及計(jì)價(jià)設(shè)計(jì),輸出采用LCD液晶顯示屏顯示。2 設(shè)計(jì)方案及原理2.1 設(shè)計(jì)方案本設(shè)計(jì),利用單片機(jī)豐富的端口和控制的靈活性,采用AT89C51單片機(jī)為主控器,并用開關(guān)或頻率信號(hào)發(fā)生器模擬車速,通過石英振蕩器,LCD液晶顯示和發(fā)光二級(jí)管以及單片機(jī)內(nèi)部程序構(gòu)成完整的出租車計(jì)價(jià)系統(tǒng),基本可以實(shí)現(xiàn)了按運(yùn)行狀態(tài)計(jì)價(jià)的功能,價(jià)格調(diào)整功能。2.2 設(shè)計(jì)原理出租車計(jì)價(jià)是根據(jù)車所行駛的路程以及乘客乘車的里程綜合決定的。出租車行駛總路程可以通過車輪的周長(zhǎng)乘車輪旋轉(zhuǎn)圈數(shù)得到。即可計(jì)算得到車輪旋轉(zhuǎn)幾周出租車能行駛一公里的路程。通過計(jì)數(shù)接收到的脈

4、沖個(gè)數(shù),計(jì)算出當(dāng)前所行駛的路程。同時(shí),通過LCD液晶顯示器顯示當(dāng)前的行駛里程、等待時(shí)間和需支付的車費(fèi)。出租車計(jì)價(jià)器用于記錄里程、起步公里數(shù)與價(jià)格的關(guān)系。模擬出租車計(jì)價(jià)器能根據(jù)總里程數(shù)、起步公里數(shù)的情況作出相應(yīng)報(bào)價(jià)等。3出租車計(jì)價(jià)器系統(tǒng)的硬件設(shè)計(jì)3.1出租車硬件框圖圖2-1系統(tǒng)的硬件框圖3.2 出租車計(jì)價(jià)器硬件連接圖AT89C51的最小系統(tǒng):時(shí)鐘電路是單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。通過這兩個(gè)引腳在芯片外并接石英晶體振蕩器和兩只電容(電容和一般取30pF)。這樣就構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。復(fù)位操作是按鍵復(fù)位,按鍵復(fù)位具有上電復(fù)位功能外,若

5、要復(fù)位,只要按圖中的RESET鍵,電源VCC經(jīng)電阻R1、R2分壓,在RESET端產(chǎn)生一個(gè)復(fù)位高電平。AT89C51的最小系統(tǒng)硬件圖如圖3.2(a)所示。圖3.2(a) AT89C51的最小系統(tǒng)硬件圖液晶顯示和LED燈指示電路:顯示電路對(duì)于現(xiàn)實(shí)電路我們采用液晶顯示,液晶又分字符型和點(diǎn)陣型,我們使用的液晶是字符型液晶,并且?guī)ё址麕斓?,不需要查找代碼,英文字符就可以。運(yùn)行狀態(tài)指示電路采用發(fā)光二級(jí)管對(duì)運(yùn)行方式進(jìn)行指示,可清楚看到計(jì)價(jià)器的運(yùn)行狀態(tài)。液晶顯示和LED燈指示電路如圖3.2(b)所示。圖3.2(b) 液晶顯示和LED燈指示電路 按鍵電路:按鍵電路是通過按鍵去調(diào)節(jié)初始選擇、調(diào)節(jié),模式選擇,開始運(yùn)

6、行,終止等功能。霍爾傳感器里程計(jì)算是通過安裝在車輪旁的霍爾傳感器檢測(cè)到的信號(hào),送到單片機(jī),經(jīng)處理計(jì)算,送給顯示單元的。而由于本次實(shí)驗(yàn)室的局限不能利用霍爾傳感器,所以我們利用按鍵來代替霍爾傳感器,通過按一次鍵代表汽車行駛了1公里,當(dāng)在行駛過程中通過按鍵來選擇運(yùn)行狀態(tài)。按鍵電路如圖3.2(c)所示。圖3.2(c) 按鍵電路4出租車計(jì)價(jià)器系統(tǒng)的軟件設(shè)計(jì)4.1系統(tǒng)流程圖出租車計(jì)價(jià)器系統(tǒng)流程圖如附錄1所示。4.2源程序代碼 根據(jù)設(shè)計(jì)的要求,在本系統(tǒng)中主要有主程序和延時(shí)程序,主程序中包括中斷服務(wù)程序和鍵盤顯示子程序、計(jì)算子程序等?,F(xiàn)在應(yīng)用更廣泛的是單片機(jī)C語言,因其簡(jiǎn)單明了,故此次課程設(shè)計(jì)采用單片機(jī)C語言

7、編程。程序源代碼如附錄2所示。4.3程序調(diào)試域運(yùn)行結(jié)果在Keil C51 uvision4中對(duì)系統(tǒng)建立項(xiàng)目,選定合適的單片機(jī)AT89C51,創(chuàng)建一個(gè)計(jì)價(jià)器的新文件,并將上述的源程序進(jìn)行編輯和選項(xiàng)操作進(jìn)行編譯,以生成計(jì)價(jià)器的HEX文件。5 系統(tǒng)仿真及實(shí)際調(diào)試5.1運(yùn)行圖示仿真開始后,首先按動(dòng)初始選擇按鈕,則可以在運(yùn)行單價(jià),等待單價(jià),起步價(jià)之間切換,每按一次切換一個(gè)量,選定后可以按動(dòng)初始調(diào)節(jié)按鈕進(jìn)行調(diào)節(jié),調(diào)節(jié)完成后,按下開始運(yùn)行按鈕則開始運(yùn)行,選擇運(yùn)行模式后開始計(jì)費(fèi),不同的運(yùn)行模式會(huì)有不同的指示燈亮起,在運(yùn)行過程中液晶屏?xí)S時(shí)顯示走過的路程和等待的時(shí)間,以及總的費(fèi)用。仿真圖如附錄3所示。5.2仿真

8、問題分析問題需要改進(jìn),例如本設(shè)計(jì)經(jīng)過多次的調(diào)試與改正,最終達(dá)到了設(shè)計(jì)方案中的結(jié)果。在仿真試驗(yàn)中各種設(shè)計(jì)要求都能夠得到驗(yàn)證。但由于設(shè)計(jì)的原因,本系統(tǒng)仍然總在一些自動(dòng)化程度不夠,運(yùn)行模式還需要手動(dòng)選擇。6總結(jié)出租車計(jì)費(fèi)器系統(tǒng)的設(shè)計(jì)已經(jīng)全部完成,能利用AT89C51單片機(jī)對(duì)出租車啟動(dòng),停止,暫停等運(yùn)行狀態(tài)進(jìn)行選擇和顯示,能將單價(jià)和費(fèi)用適時(shí)通過LCD顯示出來。本款出租車計(jì)價(jià)器包括單價(jià)輸出、單價(jià)調(diào)整、顯示當(dāng)前的總費(fèi)用等功能。雖然達(dá)到了基本的設(shè)計(jì)目的,但仍然存在一些問題,策劃的不夠全面,對(duì)單片機(jī)不夠熟悉,系統(tǒng)編寫不夠簡(jiǎn)潔完善,使得計(jì)價(jià)器計(jì)費(fèi)不夠細(xì)致,不夠人性化。經(jīng)過這次課程設(shè)計(jì)讓我學(xué)會(huì)了很多的東西。經(jīng)過自

9、己努力,基本上完成了設(shè)計(jì)要求的內(nèi)容,在系統(tǒng)可行性分析、原理圖設(shè)計(jì)等方面都作了一些實(shí)際工作,同時(shí)也遇到了一些問題,存在一些不足。學(xué)會(huì)了怎么去查找些資料,把所找到的東西與自己的問題所結(jié)合起來并給予解決。這次設(shè)計(jì)使我學(xué)會(huì)把以前學(xué)到的理論知識(shí)應(yīng)用于實(shí)踐,使我認(rèn)識(shí)到理論知識(shí)與實(shí)踐之間有一定的差距,只有通過不斷的努力學(xué)習(xí)和實(shí)踐才能很好的把理論知識(shí)應(yīng)用到實(shí)踐當(dāng)中,也只有通過不斷的實(shí)踐才能加深對(duì)理論知識(shí)的理解。 參考文獻(xiàn)1王思明,張金敏,張?chǎng)蔚?單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì).北京:科學(xué)出版社,20122 張金敏,董海棠,高博等.單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計(jì).成都:西南交通大學(xué)出版社, 20103 李華,王思明,張金敏

10、.單片機(jī)原理及應(yīng)用.蘭州:蘭州大學(xué)出版社,2001附錄1附錄2 #include<reg52.h>#define uchar unsigned char#define uint unsigned int /*定義1602讀寫使能端口*/sbit rw=P21;sbit rs=P20;sbit en=P22;sbit b=P07;sbit gl=P10;void lcd_init(); /lcd設(shè)置函數(shù)void wr_com(uchar command); /命令函數(shù)void wr_data(uchar data0); /數(shù)據(jù)函數(shù)void lcd_clear(); /清屏函數(shù)void

11、 lcd_set(); /屏幕設(shè)置函數(shù)void busy(); /測(cè)忙函數(shù)void display(); /啟動(dòng)前顯示函數(shù)void printstring(uchar *s);void display1(); /啟動(dòng)后顯示函數(shù)void key1();/啟動(dòng)前按鍵sbit K=P30;sbit K1=P31;sbit K2=P35; /開始計(jì)價(jià)sbit K3=P33; /模式選擇(行程/等待)sbit K4=P34;/復(fù)位sbit g=P27; sbit aa=P23; /運(yùn)行sbit bb=P24; /等待sbit cc=P25; /暫停/sbit led_run=P30;/sbit led_

12、await=P31;/sbit led_stop=P32;bit f_start;bit jump_in;bit jump_out;void key(); /啟動(dòng)后按鍵/*定義液晶顯示地址數(shù)組*/uchar code table=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x70;uchar dispbuf=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;uchar dispbuf1=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;uchar v,v1; uchar i,m=0;void init();void

13、chuli();void chuli1();void delay(uchar t); /延時(shí)函數(shù)void clear(); /終止函數(shù)void set(uchar x);void set1(uchar y); uchar command;uchar count,count1;uchar second,minite,second1,minite1;unsigned int tt,tt1;unsigned char value1=70,value2=17,value3=15; /value1=起步價(jià),value2=超出每公里價(jià)格,value3=等待價(jià)格unsigned int money; voi

14、d main()/ Init_Timer1();/定時(shí)器中斷函數(shù) EX0=1;/開外部中斷0 IT0=1;/采用跳變沿觸發(fā)方式 init(); lcd_init(); while(1) key1();chuli(); display(); if(jump_in=1) jump_in=0; lcd_init(); while(1) key(); chuli1(); display1(); if(jump_out=1) lcd_init(); jump_out=0; clear(); break; void clear() TR0=0; TR1=0; money=0; second=0; seco

15、nd1=0; minite=0; minite1=0; value1=70; value2=17; value3=15; / led_run=1; /led_await=1; / led_stop=1; v=0; v1=0; for(i=0;i<15;i+) dispbufi=0; dispbuf1i=0; m=0;void init()/中斷定時(shí) TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; ET0=1; ET1=1; EA=1

16、; TR0=0; TR1=0;void t0_(void) interrupt 1 using 0 /中斷1模式0 用來計(jì)時(shí) 秒、分 count+; if(count=20) count=0; second+; if(second=60) second=0;minite+;if(minite=99) minite=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; dispbuf10=m/10; dispbuf11=m%10; dispbuf12=second/10; dispbuf13=second%10;void t1_(void) inter

17、rupt 3 using 3 /中斷3模式3用來計(jì)時(shí) 秒、分 count1+; if(count1=20) count1=0; second1+; if(second1=60) second1=0;minite1+;if(minite1=99) minite1=0; TH1=(65536-50000)/256; TL1=(65536-50000)%256; dispbuf14=minite1/10; dispbuf15=minite1%10; dispbuf16=second1/10; dispbuf17=second1%10; void lcd_init() wr_com(0x3c); wr

18、_com(0x06); wr_com(0x0c); wr_com(0x01);void wr_com(uchar command) /命令 busy(); rs=0; rw=0; P0=command; en=1; en=0;void wr_data(uchar data0) /數(shù)據(jù) busy(); rs=1; rw=0; P0=data0; en=1; en=0;void busy() /測(cè)忙函數(shù) while(1) en=0; rs=0; rw=1; P0=0xff; en=1; if(b!=1)break; en=0;void chuli() /分離出百位十位個(gè)位 dispbuf0=val

19、ue1/100%10; dispbuf1=value1/10%10; dispbuf2=value1%10; dispbuf3=value2/100%10; dispbuf4=value2/10%10; dispbuf5=value2%10; dispbuf6=value3/100%10; dispbuf7=value3/10%10; dispbuf8=value3%10;void display() /初始顯示函數(shù) set(0); printstring("step :"); wr_data(tabledispbuf0); wr_data(tabledispbuf1);

20、printstring("."); wr_data(tabledispbuf2); set(16); printstring("mileage :"); wr_data(tabledispbuf3); wr_data(tabledispbuf4); printstring("."); wr_data(tabledispbuf5); set1(0); printstring("await :"); wr_data(tabledispbuf6); wr_data(tabledispbuf7); printstring(

21、"."); wr_data(tabledispbuf8); set1(16); printstring("run : "); wr_data(tabledispbuf10); wr_data(tabledispbuf11); printstring(":"); wr_data(tabledispbuf12); wr_data(tabledispbuf13);void chuli1() if(f_start=1) tt=minite*60+second; tt1=minite1; if(m<=3) money=value1+val

22、ue3*tt1; if(m>3) money=value1+value2*(m-3)+value3*tt1; else if(f_start=0) money=0; dispbuf18=money/100%10; dispbuf19=money/10%10; dispbuf110=money%10;void display1() /運(yùn)行后顯示函數(shù) set(0); printstring("run: ");/ wr_data(tablem);wr_data(tabledispbuf10);wr_data(tabledispbuf11);/ printstring(&qu

23、ot;:");/ wr_data(tabledispbuf12);/ wr_data(tabledispbuf13); set(14); printstring("await:"); wr_data(tabledispbuf14); wr_data(tabledispbuf15); printstring(":"); wr_data(tabledispbuf16); wr_data(tabledispbuf17); set1(0); printstring("sum is: "); wr_data(tabledispbuf18); wr_data(tabledispbuf19); printstring("."); wr_data(tabledispbuf110);void printstring(uchar *s) /輸出顯示函數(shù) while(*s) wr_data(*s+); void key() /啟動(dòng)按鍵 if(K3=0) delay(50); /延時(shí)消抖動(dòng)if(K3=0) while(K3=0); v1+; if(v1=4) v1=1; switch(v

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論