縮距法出租車計價器設計_第1頁
縮距法出租車計價器設計_第2頁
縮距法出租車計價器設計_第3頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、河南理工大學單片機應用與仿真訓練設計報告題目 縮距法出租車計價器設計姓 名: 學 號:專業(yè)班級指導老師所在學院:年 月曰縮距法出租車計價器設計摘要隨著出租車行業(yè)的發(fā)展,對出租車計費器的要求也越來越高。二十世紀后半期,隨著集成電路和計算機技術的飛速發(fā)展,單片機技術也得到了飛速發(fā)展,基于單片機的出租車計費器不僅可以解決電子系統(tǒng)小型化、 低功耗、高可靠性等問題,而且其開發(fā)周期短、開發(fā)軟件投入少、芯片價格不斷降低,特別是對小批量、多品種的產(chǎn)品需求,單片機具有體積小、功能強可靠性高、價格低廉等一系列優(yōu)點,不僅已成為工業(yè)測控領域普遍采用的智能化控制工具, 而且已滲入到人們工作和和生活的各個角落,有力地推動

2、了各行業(yè)的技術改造和產(chǎn)品的更新?lián)Q代,應用前景廣闊。(使用單片機的外圍電路比較簡單) ,在時間計數(shù)和速度的計算上便于擴展功能很,系統(tǒng)能夠?qū)崿F(xiàn)升級。很多數(shù)值可以預先寫到芯片中。本設計主要了解應用單片機的定時器 / 計數(shù)器,以及中斷。這是一個比較小 的系統(tǒng), 故采用匯編語言來編輯。 匯編語言是一種編譯型程序設計語言, 它具有 編譯速度快,占用系統(tǒng)空間小,具有一定的助記可讀性等特點。 本系統(tǒng)假設起步價 5.0 元,超過三公里開始計費,每公里加 2 元。 關鍵詞:單片機; 霍爾傳感器 ; 數(shù)碼管目錄1 概述 31.1 基本要求31.2 設計參數(shù)31.3 系統(tǒng)原理32 系統(tǒng)總體方案及硬件設計 42.1 設

3、計方案介紹42.2 單片機的概念42.3A44E 霍爾傳感器檢測單元52.4 計時與時間顯示模塊電路設計62.5 鍵盤調(diào)整單元72.6 鍵盤程序 83 軟件設計 93.1 模塊介紹 93.2 程序流程圖104 Proteus 軟件仿真 115 課程設計體會 11參考文獻 12附 1 :源程序代碼 12附 2 :系統(tǒng)原理圖 221 概述1.1 基本要求( 1)能顯示里程,單位為公里,最后一位為小數(shù)位。(2)能顯示金額數(shù),單位為元,最后一位為小數(shù)位。( 3)可設定單程價格和往返價格,單程價格為 2 元/ 公里,往返價格為 1.5 元/ 公里。(4)車速5公里/小時的時間累積為總等待時間,每 5 分

4、鐘等待時間相當于里 程數(shù)增加 1 公里。(5)起步公里數(shù)為 3 公里,價格為 5元,若實際距離大于 3 公里,按規(guī)則 3 計 算價格。( 6)按暫停鍵,計價器可暫停計價,按查詢鍵,可顯示總等待時間。發(fā)揮部分:空車指示、語音提示、信息存儲等。1.2 設計參數(shù)由于要求沒有給出車輪的相關參數(shù), 所以這里進行一些基本參數(shù)的查詢。 據(jù) 調(diào)查統(tǒng)計,現(xiàn)行出租車輪胎直徑大致有四種,直徑分別為 520mm、540mm、560mm 和 580mm.本作品針對 560mm的出租車進行設計。它的周長為: 1.7584 m,57 圈行駛 100m。1.3 系統(tǒng)原理 出租車計價器是乘客與司機雙方的交易準則,它是出租車行業(yè)

5、發(fā)展的重要 標志。它關系著交易雙方的利益, 具有良好性能的計價器無論是對廣大出租車司 機朋友還是乘客來說都是很必要的。 因此,汽車計價器的研究也是十分有應用價 值和現(xiàn)實意義的。出租車計價是根據(jù)車所行駛的路程以及乘客乘車的方式綜合決定的。 出租車 行駛總路程可以通過車輪的周長乘車輪旋轉(zhuǎn)圈數(shù)得到。 即可計算得到車輪旋轉(zhuǎn)幾 周出租車能行駛一公里的路程。 使用霍爾傳感器方便地計量車輪旋轉(zhuǎn)的圈數(shù)。 輸 出的脈沖信號被接入到 AT89S52單片機系統(tǒng)中, 通過計算接收到的脈沖個數(shù), 計 算出當前所行駛的路程, 并且可以計算實時的速度, 在速度低于 5 公里每小時是 進入等待計費。于此同時,根據(jù)不同的收費標

6、準,通過選擇相應的起步價、單價 等收費標準進行計算。通過鍵盤能夠?qū)崿F(xiàn)往返設置,啟動、暫停、停止計價器以 及切換顯示當前的行駛里程和需支付的車費。本設計硬件電路分為五個單元: 單片機最小系統(tǒng)單元, 指示燈電路單元, 按 鍵電路單元, 路程時間與金額顯示單元, 轉(zhuǎn)速信號接收單元。 軟件系統(tǒng)分為五個 大的模塊為:總初始化模塊,按鍵掃描模塊,中斷與定時模塊,數(shù)據(jù)計算模塊, 數(shù)碼管顯示模塊。 其中,鍵盤掃描和數(shù)碼管顯示采用查詢方式, 轉(zhuǎn)速信號接收與 等待記時采用中斷方式。這些軟硬件系統(tǒng)構(gòu)成了最終的設計。2 系統(tǒng)總體方案及硬件設計2.1 設計方案介紹計數(shù)器系統(tǒng)主要由五部分組成: A44E霍爾傳感器、 ST

7、C89C51單片機、獨立 鍵盤、 EEPROM AT24C02和A顯示數(shù)碼管?;魻杺鞲衅靼惭b在車輪上, 主要檢測汽車行進的公里數(shù), 并產(chǎn)生一系列相應 的脈沖輸出, 脈沖送到單片機進行處理, 單片機根據(jù)程序設定通過計算脈沖數(shù)換 算出行駛公里數(shù),再根據(jù)從 EEPROM中讀取的價格等相關數(shù)據(jù)進行金額的計算, 計算好的金額、 里程和單價都實時地顯示在數(shù)碼管上。 獨立鍵盤可以調(diào)節(jié)價格等 相關數(shù)據(jù), 按下相應的按鈕, 產(chǎn)生信號交由單片機處理并實時顯示出來, 調(diào)節(jié)好 的數(shù)據(jù)存儲到 EEPROM中,掉電后可以使調(diào)好的數(shù)據(jù)不丟失,下次得電后直接從 EEPROM讀到單片機,系統(tǒng)結(jié)構(gòu)圖如圖 12.2 單片機的概念單

8、片機( microcontroller ,又稱微控制器)是在一塊硅片上集成了各種部T1件的微型計算機。這些部件包括中央處理器 CPU、數(shù)據(jù)存儲器 RAM、程序存儲器 ROM、定時器 /計數(shù)器和多種 I/O 接口電路。圖 2 是 80C51單片機的基本結(jié)構(gòu)圖T0INT0INT1中斷控制器128BRAM定時/計數(shù)器C/T0, C/T1CPUOSC串行口圖 2 89C51 結(jié)構(gòu)方框圖2.3 A44E 霍爾傳感器檢測單元A44E 屬于開關型的霍爾器件,其工作電壓范圍比較寬( 4.5 18V),其輸 出的信號符合 TTL 電平標準,可以直接接到單片機的 IO 端口上,而且其最高檢 測頻率可達到 1MHZ

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

10、次電壓變換,使霍爾開關完成了一次開關動作。 A44E 霍爾傳感器原理如圖 3 所示。圖 3 A44E 霍爾傳感器原理里程計算是通過安裝在車輪上的霍爾傳感器檢測到的脈沖信號,送到單片機產(chǎn)生中斷,單片機再根據(jù)程序設定,計算出里程。其原理如圖 4 所示。圖 4 霍爾傳感器的脈沖信號2.4 計時與時間顯示模塊電路設計時間顯示采用 24小時計時方式,時、分、秒用 8位LED數(shù)碼管動態(tài)掃描法 顯示。該電路采用 AT89C52單片機控制, 通過 4 個開關按鍵來調(diào)節(jié)時間, 其中按 鍵開關 SP1、SP2、SP3分別接單片機的 P0.0 、P0.1 、P0.2 口,分別調(diào)節(jié)時鐘的 秒、分、時;單刀雙擲開關 K

11、1(實際硬件電路用短路冒代替)控制時、分、秒 的加減調(diào)節(jié), 當發(fā)光二極管亮時, 按下按鍵開關進行加 1 調(diào)節(jié);當發(fā)光二極管滅 時,按下按鍵開關進行減 1 調(diào)節(jié)。在本電路中,各位 LED數(shù)碼管的段選端并接在一起,通過 220 歐姆電阻和8 位數(shù)據(jù)鎖存器 74LS573(下面的模塊圖中省略,詳見后總原理圖)接到單片機 AT89C52的 P1口。其中,8 位數(shù)據(jù)鎖存器 74LS573主要是驅(qū)動 LED數(shù)碼管的段選 端,使 LED數(shù)碼管的顯示更亮; 220 歐姆電阻在電路中起到限流的作用, 防止 LED 數(shù)碼管燒壞。各位 LED數(shù)碼管的位選端通過 ULN2803(下面的模塊圖中省略,詳 見后總原理圖)

12、和 74LS138接到單片機的 P2.0 、P2.1、P2.2 口。其中,電路通 過 74LS138將 P2.0、P2.1、P2.2 口的輸出狀態(tài)譯成 8 種 BCD碼,這 8 種 BCD碼 分別對應選擇 LED數(shù)碼管的各位, 起到位選作用; 并在 74LS138后面接上達林頓 管 ULN2803,增加 LED數(shù)碼管位選驅(qū)動能力。下面分別介紹各個元器件的功能和 在模塊電路中的作用。2.5 鍵盤調(diào)整單元 當單價等信息需要進行修改時, 就要用到鍵盤進行修改。 由于調(diào)節(jié)信息不多, 故采用 4 個獨立鍵盤即可,分別實現(xiàn)清零、切換、增大、減小和功能等作用。電 路原理如圖 5 所示。S1:接 P1.0 口

13、,對上一次的計費進行清零,為下次載客準備S2:接 P1.1 口,實現(xiàn)白天和夜晚單價的切換;當功能鍵 S4按下時, S2可 對數(shù)據(jù)進行增大。S3:接 P1.2 口,當功能鍵 S4按下時, S3可對數(shù)據(jù)進行減小。S4:接 P1.3 口,按 1 次,進入調(diào)整白天單價;按 2 次,進入調(diào)整夜晚單價; 按 3 次,進入調(diào)整等待單價;按 4 次,進入調(diào)整起步價;按 5 次,返回。2.6 鍵盤程序鍵盤采用查詢的方式, 放在主程序中, 當沒有按鍵按下的時候, 單片機循環(huán) 主程序,一旦右按鍵按下,便轉(zhuǎn)向相應的子程序處理,處理結(jié)束再返回。流程圖 如圖 6。key3=0?key3num 為真key3num=1 ?k

14、ey1=0?key3num=2?YN存儲白天單價白天單價 +1key2=0?NY白天單價 -1key1=0?Y夜晚單價 +1key3num=3?Y存儲夜晚單價顯示key3=0?key3num+key2=0?YN夜晚單價 -1key1=0?等待單價 +1key2=0?YN等待單價 -1Nkey3nu m=4?Ykey3num=5?存儲等待單價Y存儲起步價起步價 +1key1=0?YNkey2=0?YN起步價 +1key3num=03 軟件設計3.1 模塊介紹 該計費器系統(tǒng)的軟件設計分為一下幾個模塊: (1)主程序模塊在主程序模塊中,需要完成對個接口芯片的初始化、出租車起步價和單價、 中斷向量的設

15、計以及開中斷、 循環(huán)等待等工作。 另外,在主程序模塊中還需要設 置啟動/ 清除標志寄存器、里程寄存器和價格寄存器,并對它們進行初始化。然 后,主程序?qū)⒏鶕?jù)各標志寄存器的內(nèi)容,分別完成啟動、清除、計程和計價等不 同的操作。流程圖如 3-4 所示。當按下輕觸開關時,開始對系統(tǒng)初始化,價格和時間都顯示 0、0,再次按 下開關,時間單元開始計時,并計算時間是否超過 2 分鐘,超過 2 分鐘,則從第 3 分鐘開始計費。價格單元從起步價 5.0 元開始計費,每多一分鐘,價格單元多 加 2 元。(2)顯示子程序模塊由于顯示是由顯示時間子程序 DIS1和顯示價格子程序 DIS 組成的,時間由 小時、分、秒三個

16、單元組成,共六個數(shù)碼管。價格由元和角兩個單元組成,最大 可以顯示 999.9 元。3.2 程序流程圖4 Proteus 軟件仿真圖 7 整體硬件電路圖5 課程設計體會經(jīng)過這些天有關于出租車計價器的課程設計, 使我對單片機的應用有了更深 的了解。在課程設計的過程中,還是碰到了許多的問題。比如,對于數(shù)碼管動態(tài) 掃描顯示和鍵盤的延時防抖的綜合編程不能較好地解決; 對于代碼的前后順序及 調(diào)用掌握得還不夠好; 對于一些相關的應用軟件沒能熟練掌握。 通過這幾天晚上 的苦想和反復調(diào)試,以及參考網(wǎng)上的程序,最終還是把問題解決了。通過這次課程設計,我最大的收獲就是自己的動手能力和獨立解決問題的能 力得到了很大的

17、提高, 也充分體會到了自己設計東西的樂趣、 學會查閱資料和對 別人的東西融會變通的重要性, 也明白了很多知識光靠趴在書本上學是學不到其 中的精髓的, 必須親自去試著實踐, 親自去經(jīng)歷才能對它們真正的掌握, 凡事都 要自己去動下手, 去實踐一下, 遇到困難,永遠不要沮喪氣餒。 在動手的過程中, 不僅能增強實踐能力, 而且在理論上可以有更深的認識; 這次設計給了我極大的鼓舞和信心,相信在以后的學習中可以通過不斷的摸索和實踐來提高其他方面的 知識。通過本次課程設計,又使我學到了許多書本上無法學到的知識, 也使也深該體會到單片機技術應用領域的廣泛, 不僅使我對學過的單片機知識有了很多的 鞏固,同時也對

18、單片機這一門課程產(chǎn)生了更大的興趣。在本次課程設計過程中,我學會了在網(wǎng)絡上查找有關本設計的各硬件的資 源,其中包括: AT89S51單片機及其引腳說明、 555 引腳圖及其引腳功能等,為 本次課程設計提供了一定的資料。也為以后的進一步學習打下了堅實的基礎。 參考文獻1 張友德 趙志英 涂時亮 編 單片微型機原理、應用與實驗 上海:復旦 大學出版社 2005.12 全書2 徐光翔 單片機原理接口及應用 南京大學出版社3 張淑清等 . 單片微型計算機接口技術及其應用 北京:國防工業(yè)出版社, 4 王 曉君等 . MCS-51及兼容單片機原理與選型北京:電子工業(yè)出版社 5 張鑫、華臻、陳書謙單片機原理及

19、應用 M 電子工業(yè)出版社, 2005 P1101366 丁元杰、吳大偉單片微機實題集與實驗指導書 M 機械工業(yè)出版社,2004P1241257 AT89C52概述 EB/OL:附 1:源程序代碼#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define delayNOP(); _nop_();_nop_();_nop_();_nop_();_nop_();uchar code table=0xC0,0xF9,0xA4,0xB0,0x99,

20、0x92,0x82,0xF8,0x80,0x90;sbit exter=P33;sbit key0=P10;sbit key1=P11;sbit key2=P12;sbit key3=P13;sbit p30=P30; /sbit p31=P31;sbit p32=P32;sbit p34=P34;sbit p35=P35;sbit p36=P36;sbit p37=P37;sbit SDA=P22;sbit SCL=P23;uint inter,aa,bb,temp,temp1;uint zongjine,licheng,dengdai;uint key3num,qiehuantemp,de

21、laytemp; uchar danjia1,danjia2,danjia3,danjia,qibu;void delay(uint x)int i,j;for(i=x;i>0;i-) for(j=340;j>0;j-);void start()SDA = 1;SCL = 1;delayNOP();SDA = 0;delayNOP();SCL = 0;void stop()SDA = 0;delayNOP();SCL = 1;delayNOP();SDA = 1;void respons()uchar i;SCL=1;delayNOP();while(SDA=1)&&

22、;(i<250) i+;SCL=0;delayNOP();uchar read_byte()uchar i,j;for(i=0;i<8;i+)SCL=1; j<<=1;j|=SDA;SCL=0;return(j);void write_byte(uchar date)uchar i,temp; temp=date; for(i=0;i<8;i+) temp=temp<<1; SCL=0; delayNOP(); SDA=CY; delayNOP(); SCL=1; delayNOP();SCL=0; delayNOP();SDA=1; delayNOP

23、();void write_data(uchar addr, uchar date) start(); write_byte(0xa0); respons(); write_byte(addr); respons(); write_byte(date); respons();stop();uchar read_data(uchar addr)uchar date; start(); write_byte(0xa0); respons(); write_byte(addr); respons();start(); write_byte(0xa1); respons(); date=read_by

24、te();stop(); return date;void display(uint zongjine0,uint licheng0,uint danjia0)uint jbai,jshi,jge,lshi,lge,dshi,dge;uint numwei,numshu; jbai=zongjine0/100; jshi=zongjine0%100/10; jge=zongjine0%100%10; lshi=licheng0/10; lge=licheng0%10;dshi=danjia0/10; dge=danjia0%10;if(aa) aa=0; numshu+;if(numshu=7

25、) numshu=0;P3=0xff; switch(numwei) case 0:p30=0;P0=tablejbai;break; case 1:p31=0;P0=tablejshi&0x7f;break; case 2:p32=0;P0=tablejge;break; case 3:p34=0;P0=tablelshi;break; case 4:p35=0;P0=tablelge;break; case 5:p36=0;P0=tabledshi&0x7f;break; case 6:p37=0;P0=tabledge;break; numwei+;if(numwei=7

26、)numwei=0;void keyscan() if(key3=0)delay(5); if(key3=0) key3num=1; while(!key3);delay(5); while(!key3);while(key3num) if(key3num=1) if(key1=0) delay(5); if(key1=0) danjia1+; if(danjia1=100) danjia1=0; while(!key1); delay(5); while(!key1); if(key2=0) delay(5); if(key2=0) danjia1-; if(danjia1=-1) danj

27、ia1=99; while(!key2); delay(5); while(!key2);display(1,0,danjia1);if(key3num=2)write_data(1,danjia1); if(key1=0)delay(5);if(key1=0 danjia2=0;danjia2+; if(danjia2=100)while(!key1);delay(5);while(!key1); if(key2=0)delay(5);if(key2= danjia2=99;danjia2-; if(danjia2=-1)while(!key2);delay(5);while(!key2);

28、display(2,0,danjia2);if(key3num=3)write_data(2,danjia2); if(key1=0)danjia3=0;danjia3=99;if(key1=0)danjia3+; if(danjia3=100)while(!key1);delay(5);while(!key1);if(key2=0)delay(5);if(key2=0)danjia3-;if(danjia3=-1)while(!key2);delay(5); while(!key2);display(3,0,danjia3);if(key3num=4)write_data(3,danjia3

29、);if(key1=0)delay(5);if(key1=0)qibu+;qibu=0;if(qibu=100)while(!key1);delay(5); while(!key1);if(key2=0)delay(5);if(key2=0)qibu-;if(qibu=-1)qibu=99;while(!key2);delay(5);while(!key2);display(4,0,qibu);if(key3num=5) /write_data(4,qibu);key3num=0;if(key3=0)delay(5);if(key3=0)key3num+;while(!key3);delay(

30、5);while(!key3);void init()SDA=1;SCL=1;zongjine=0;licheng=0;dengdai=0;danjia1=read_data(1);danjia2=read_data(2);danjia3=read_data(3);qibu=read_data(4);aa=0;bb=0; inter=0;EA=1; EX1=1; IT1=1;TMOD=0x01;TH0=(65536-1000)/256;TL0=(65536-1000)%256;ET0=1;TR0=1;P3=0x08;P0=table0;?void jisuan()if(licheng>3)zongjine=qibu+(licheng-3)*danjia+dengdai*danjia3; elsezongjine=qibu+dengdai*danjia3;void qiehuan()if(key1=0)delay(5);if(key1=0)qiehuantemp=!qiehuantemp; while(!key1);delay(5);while(!key1);if(qiehuantemp=0) danjia=danjia2;if(qiehuantemp=1) danjia=danjia1;void

溫馨提示

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

評論

0/150

提交評論