出租車計費系統設計畢業論文_第1頁
出租車計費系統設計畢業論文_第2頁
出租車計費系統設計畢業論文_第3頁
出租車計費系統設計畢業論文_第4頁
出租車計費系統設計畢業論文_第5頁
已閱讀5頁,還剩43頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、x x x x大學本 科生畢 業論文題目:出租車計費系統設計姓名:學號:專業:年級:學院:完成日期:指導教師:本科生畢業論文設計)獨創性聲明本人聲明所呈交的畢業論文(設計)是本人在導師指導下進行的研究工作及 取得的研究成果,除了文中特別加以標注和致謝的地方外,本論文中沒有抄襲他 人研究成果和偽造數據等行為。與我一同工作的同志對本研究所做的任何貢獻均 已在論文中作了明確的說明并表示謝意。論文(設計)作者簽名: 日期:本科生畢業論文設計使用授權聲明海南師范大學有權保留并向國家有關部門或機構送交畢業論文(設計)的復 印件和磁盤,允許畢業論文(設計)被查閱和借閱。本人授權海南師范大學可以 將本畢業論文

2、(設計)的全部或部分內容編入有關數據庫進行檢索,可以釆用影 印、縮印或其他復印手段保存、匯編畢業論文(設計)。論文(設計)作者簽名: 日期:指導教師簽名: 日期:1. 引言1.1課題背景1. 2設計要求1.2.1里程計費 1. 2. 2按鍵控制2. 方案論證2. 1整體方案優選2. 2傳感器優選3. 相關硬件資料的介纟3. 1stc89c52單片機的介纟3. 2霍爾傳感器a44e的介纟4. 電路模塊設計與實現4. 1電源模塊的電路設計與實現4. 2霍爾傳感器a44e的電路設計與實現 4. 3掉電存儲數據電路設計與實現 4. 4顯示電路的設計與實現5. 系統軟件設計與實現5.1里程計價中斷服務程

3、序模塊5. 2里程、計費程序模塊設計 5. 3等待計費程序模塊設計6. 系統的模擬測試 參考文獻: 附錄a硬件電路實物圖 附錄b程序清單出租車計費系統設計作者:指導教師:(,)摘要:計費器是出租車營運收費的專用智能儀表,良好性能的出租車計費器對加 強行業管理以及減少司機與乘客的糾紛都是很有必要的。本設計采用stc89c52單 片機進行的設計,相對來說功能強大,只需用較少的硬件a44e、at24c02和適當 的軟件相互配合可以很容易地實現很多附加功能。關鍵詞:stc89c52 單片機;a44e; at24c02taxi billing system designauthor:tutor:(dep

4、artment of physics, hainan normal university, haikou, 571158)abstract:the meter is the taxi operation fees of special intelligent, goodperformance of taxi meters in strengthening enterprise management and reduce the driver and passengers in the disputes are necessary, this design adopts stc89c52 mon

5、olithic integrated circuits design of, powerful functions, only a relatively small hardware a44e, at24c02 and proper in the software can easily achieve a lot of additional features.keywords: stc89c52 monolithic integrated circuits; a44e ;at24co2弓i吉1.1矗背景如今出租車在我國的交通運輸中承擔著重要的角色,出租車計價器是出租車 上必不可少的重要儀器,它

6、是負責出租車營運收費的專用智能化儀表。隨著城市 旅游業的發展,幽租車行業已成為城市的窗口,象征著一個城市的文明程度。功 能完備、簡單易用、計費準確的出租車計費器是加強出租車行業管理、提高服務 質量的必備品。隨著出租車行業的發展,對岀租車計費器的需要也越來越高,用 戶不但需要計費器性能穩定,計費準確;同時還需要其具備應對不同種情況的收 費計算功能等。本文,采用單片機和霍爾傳感器來來實現出租車里程計量功能, 使用at24c02串行e2pr0m實現掉電儲存功能,不僅設計簡單,成本低,而口計算 準確,功能強,實現了出租車的計費模擬。1. 2設計要求1. 2.1里程計(1) 每一個脈沖代表輪胎旋轉一周,

7、輪胎周長是具體情況而定;(2) 單片機對傳感器輸出脈沖進行計數,n脈沖為0.5公里;(3) 起步價為10元三公里后每行駛0. 5公里,計數count達到額定值,總金額total price加次單價unit price;停車等待時間消費wait consume是等待 分鐘數wait timejnin*系數;1.2.2按鍵控制(1) start_kl (p0 口)計費關閉/開啟控制鍵,未開始計費start_kl=0 ; 開始計費start_kl=l;(2) daytime_k2 ( p1 口)模式白天/晚上控制鍵,白天 daytime_k2 = 0; 晚上 daytime_k2 = 1;庶亦 開啟

8、白天 晚上圖 1. 2. 2-1(3) setting_k5 ( p4 口)單價設置鍵,復位開關在k1計費關閉時按下 一次進入白天單價設置,按下兩次進入晚上單價設置,按下三次退岀設置返回原 界面;(4) add_k3 (pc2 口)單價調整鍵,復位開關在(3)情況下單價從0到9 遞增;(5) wait_time_k4 (p3 口)停車等候計費切換鍵,復位開關按下一次進 入等候模式,按下兩次返回;圖 1. 2. 2-2(6) k6復位清零鍵2方案設計論證2. 1整體方案優選方案一:釆用數字電路控制。其原理方框圖如圖21所示。采用傳感器件, 輸出脈沖信號,經過放大整形作為移位寄存器的脈沖,實現計價

9、,而考慮到這種 電路過于簡單,性能不夠穩定,也不能調整單價,也不能根據外部因素調節計費 標準,電路不夠實用。圖2-1數字電路方案方案二:采用單片機控制。利用單片機豐富的i 0端口,分配簡易,實現基本的里程計價功能和價格調節、口天晚上切換等功能。其原理如圖2.2所示。圖2-2單片機控制方案圖綜上分析,方案二有較大的活動空間,不但能實現所要求的功能而且能在很 大的程度上擴展功能,而且還可以方便的對程序進行升級,所以我們采用第二種方案。2. 2傳感器優選方案一:光電傳感器安裝在轉軸上,當扇葉經過時,可產生脈沖信號,但是 光電傳感器 對灰塵、油污等比較敏感。方案二:霍爾傳感器不怕灰塵和油污,且廣泛應用

10、于工業現場,霍爾傳感器 價格便宜且具有體積小、靈敏度高、響應速度快、溫度性能好、精確度高、可靠性高等特點,能很好地滿足車輪測速系統設計的需要。基于以上分析,我們選擇方案二。3 相關硬件資料的介紹3. 1 stc89c52單片機的介紹stc89c52是宏晶科技推出的一種帶8k字節閃爍可編程可擦除只讀存儲器 (fperom-flash programable and erasable read only memory )的高速、高可 靠、低功耗、超低價、強抗靜電、強抗干擾的單片機。該器件采用atmel高密度非易失存儲器制造技術制造,與工業標準的mcs-51指令集和輸出管腳相兼容。其管腳圖如圖1所示

11、。stc89c52單片機的主要功能如表1所示。39箜37運35亙n3221互2425 京28§12 3 4 57 £1234567p20p2p2p2p2p2p2p2int1 rxd txd alejppiorr pnrrp12p13 p14p15p16p17intot1 _to ea/vpxix2resetrd wr psen23456780 121514311918917* 16a圖3-1 stc89c52單片機管腳圖主要功能特性兼容mcs51指令系統8k可反復擦寫flash rom32個雙向i/o 口256x8bit 內部 ram3個16位可編程定時/計數器中斷時鐘頻率

12、0-24mhz2個串行中斷可編程uart串行通道2個外部中斷源共6個中斷源2個讀寫中斷口線3級加密位低功耗空閑和掉電模式軟件設置睡眠和喚醒功能表3-1寄存器的復位狀態3. 2霍爾傳感器a44e的介紹霍爾器件是一種磁傳感器。用它們可以檢測磁場及其變化,可在各種與磁場 有關的場合屮使用。霍爾器件以霍爾效應為其工作基礎。霍爾器件具有許多優點,它們的結構牢固,體積小,重量輕,壽命長,安裝 方便,功耗小,頻率高(可達1mi1z),耐震動,不怕灰塵、油污、水汽及鹽霧等的 污染或腐蝕。霍爾器件分為:霍爾元件和霍爾集成電路兩大類,前者是一個簡單的霍爾片, 使用時常常需要將獲得的霍爾電壓進行放大。后者將霍爾片和

13、它的信號處理電路 集成在同一個芯片上。本次設計選取了霍爾集成電路來測量里程。里程測量是通過將霍爾傳感器的集成電路安裝在車輪上方的鐵板上,將磁鐵 安裝在車輪上,旋轉的車輪將磁鐵對準集成電路時,霍爾傳感器會輸出一個脈沖 信號,送到單片機,經過單片機的計算處理,將行駛的里程送到顯示單元并顯示 出來。其原理示意圖如下:圖3-2傳感器測距示意圖由于a44e屬于開關型的霍爾器件,其工作電壓范圍比較寬(4.518v),其 輸出的信號符合ttl電平標準,可以直接接到單片機的10端口上,而且其最高檢 測頻率可達到imhzoa44e集成霍耳開關由穩壓器a、霍耳電勢發生器(即硅霍耳片)b、差分放大 器c、施密特觸發

14、器d和0c門輸出e五個基本部分組成。在輸入端輸入電壓ucc,經穩壓器穩壓后加在霍耳電勢發生器的兩端,根據霍 耳效應原理,當霍耳片處在磁場中時,在垂直于磁場的方向通以電流,則與這二 者相垂直的方向上將會產生霍耳電勢差vh輸出,該vh信號經放大器放大后送至 施密特觸發器整形,使其成為方波輸送到0c門輸出。當施加的磁場達到“工作 點”(即0pb)時,觸發器輸出高電壓(相對于地電位),使三極管導通,此時0c門 輸出端輸岀低電氐通常稱這種狀態為“開”。當施加的磁場達到“釋放點”(即rpb) 時,觸發器輸出低電壓,三極管截止,使0c門輸岀高電壓,這種狀態為“關”。 這樣兩次電壓變換,使霍耳開關完成了一次開

15、關動作。a44e只對磁鐵的s級有響應而對n級沒有絲毫響應。安裝時一定耍讓磁鐵的 s級對準a44e的反應傳感區,如圖我們選取的a44e霍爾傳感器是一個霍爾傳感器制品,里面有霍爾集成電路。 我們選取的霍爾傳感器有3個外接口,2個是電源的正負極接口,最后一個是脈沖 信號輸出口,只要將霍爾傳感器的信號輸出端接到單片機的端口上便可以實現距 離檢測。其中,我們選取了單片機的p3.2 (into)引腳作為信號的輸入端,釆用外部 中斷0進行計數。車輪毎轉一圈,霍爾傳感器就產生一個脈沖信號,根據霍爾效 應原理,當霍爾片處在磁場中時,霍爾傳感器的輸出端輸出低電平。當車輪轉動 一圈時小磁鐵提供一個磁場,則霍爾傳感器

16、輸出一次低電平完成一次數據采集, 從而產生信號。霍爾傳感器檢測并輸出信號到單片機的into或int1計算脈沖輸 入端,引起單片機的中斷,對脈沖計數,當計數達到特定的次數時,里程就會增 加,單片機對里程進行計算后,通過接口電路將計算好的結果傳送到數碼管并顯 示出來。4. 電路模塊設計與實現4.1電源模塊的電路設計與實現由于計價器的工作環境比較差,它要求有抗振動、抗高低溫、抗潮濕、抗電磁干擾等能力,特別是電源方面的干擾,如出租車啟動吋,發動機打火、電瓶充電等造成輸入計價器的+12 v電源不穩定。因此采用+12 v電瓶電源經過濾波和電源穩壓管理芯片7805后得到+5 v的穩定電壓輸出,保證整個系統能

17、夠正常工作。如圖所不:4. 2霍爾傳感器a44e的電路設計與實現用霍爾傳感器集成芯片a44e檢測并輸出脈沖,其工作原理下圖所示,霍爾傳 感器集成芯片a44e有信號轉換、電壓放大、整形輸出等功能,為增加其抗干擾的 能力,在a44e轉換、放大、整形后再通過光偶送入p3. 2引腳。g1 2 31-vcc 2-gnd3-out> + 12va44e2gndout圖4-2 a44e引腳及電路圖4. 3掉電存儲數據電路設計與實現采用掉電保護的e2prom存儲器at24c02o它是是atmel公司的2kb字節 的電可擦除存儲芯片,采用兩線串行的總線和單片機通訊,工作電壓寬(2.5 5.5v),額定電流

18、為1ma,靜態電流10ua(5.5v),具有擦寫次數多(大于1000次)、 寫入速度快(小于10ms)、高可靠性和低成本等特點。芯片內的資料可以在斷電的 情況下保存40年以上,而且采用8腳的dip封裝,其電路如圖所示。u21afl1r8nu7j12a1prrst t7ii.jn1ilk-/jljlji13a-j2*:x:jr6phsaj j.l4r1nitipl lrll5pr7imlx24(202i111111111111111圖4-3掉電存儲電路原理圖圖屮r8、r10是上拉電阻,其作用是減少at24c02的靜態功耗,由于at24c02 的數據線和地址線是復用的,采用串口的方式傳送數據,所以

19、只用兩根線scl(移 位脈沖)和sda (數據/地址)與單片機傳送數據。每當設定一次單價,系統就自 動調用存儲程序,將單價信息保存在芯片內;當系統重新上電的時候,自動調用 讀存儲器程序,將存儲器內的單價等信息,讀到緩存單元屮,供主程序使用。4. 4顯示電路的設計與實現本次設計的顯示單元是使用數碼管顯示數據。數碼管是一種半導體放光器件, 其基本單元是發光二極管,常使用的是8段式led數碼管顯示器,采用共陽極數 碼管,顯示電路如圖所示。ds1ds2圖4-4顯示電路從g管腳輸入不同的8位二進制編碼,可顯示不同的數字或字符,共陰極 和共陽極的字段碼互為反碼。顯示字符共陰極字段碼共陽極字段碼顯示字符共陰

20、極字段碼共陽極字段碼03fhc0hc39hc6h106hf9hd5eha1h25bha4he79h86h34fhb0hf71h8eh466h99hp73h8ch56dh92hu3ehc1h67dh82ht31hceh707hf8hy6eh91h87fh80hl38hc7h96fh90h8ffh00ha77h88h"滅”00ffhb7ch83h表4-4顯示字符與共陽共陰段碼5.系統軟件設計與實現5. 1里程計價中斷服務程序模塊本設計是用外部中斷into測量從a44e的3. 0引腳輸岀的負跳變信號累計數, 要使用外部中斷,必須對中斷允許控制寄存器ie和定時器/計數器控制寄存器tcon 進

21、行如下設計:ea=1;/開總中斷exo=1;/允許使用外部中斷it0=l;/選擇負跳變來觸發外部中斷(即為低電平觸發方式)每當車輪轉動一圈,車輪的磁鐵與霍爾傳感器感相遇時,霍爾傳感器就會產 生一個下降沿的脈沖信號。脈沖信號傳到p3. 2引腳,外部中斷請求源into,單片 機就會產生一次中斷。根據源代碼:void into() interrupt 0 using 1count+;/每觸發一次外中斷,計數變量累加1count為車輪轉動圈數,總路程等于圈數乘以車輪周長,把總路程的數據送到里程相識單元顯示。再按照里程收費標準,將價格數據送到計費顯示單元。行車計費的外部中斷流程圖如下:開始圖5-1外部中

22、斷流程圖5. 2里程、計費程序模塊設計里程、計費程序模塊源代碼如下:void into() interrupt 0 using 1/有乘客并等客if(guesttime_sign=1&&waittime_sign=0) 標志位為0total run+;/總里程加1if(total_run>999)total_run二0;if(total_run>30)/超過最大范圍清零/判斷是否超過3公里icount+;/每觸發一次外中斷,計數變量累加1if (coimt=5)/0. 5公里到total_price=total_price+uni t_price;/總金額加上單價c

23、ount二0;5. 3等待計費程序模塊設計等待程序模塊源代碼如下:void timero() interrupt 1/定時器0中斷服務程序,用于數碼管的動態掃描/ disjndex 顯示索引,用于標識當前顯示的數碼管和緩沖區的偏移量/ dis_digit 位選通值,傳送到p2 口用于選通當前數碼管的數值,如 等于oxfe時,/選通p2.0 口數碼管/ dis_buf -一顯于緩沖區基地址tho 二 oxfc;tlo 二 0x17;p2二oxff;/先關閉所有數碼管p0 二 dis_buf dis_index ;/ 顯示代碼傳送到 p0 口p2 二 disdigit;/dis_digit = _

24、crol_(dis_digit, 1):/位選通值左移,下次中斷吋選通下一位數碼管/dis_index+;dis_index &二0x07;/8個數碼管全部扌日描完一遍之后,再回到第一個開始下一次擔描ivoid timerl() interrupt 3th1 = oxdc;/定時器裝初值if(guestti me_sign=1&&wai 11 i me_sign=1)secl00+;if(secl00 >= 100)secloo = 0; inc sec ();wait consumc=wait time min;mmrdis buf 0 = dis codewa

25、.it consume/ 10;dis buf 1 = dis code wait consume% 10 ;/等待消費金額if(guesttime sign=0&&(set times=l|set times=2) glimpse_sign+;if(glimpse_sign >= 30)glimpse_sign=0; proc_glimpse();6系統的模擬測試第一步:模擬過程使用雙頭usb連接線,有筆記本供給系統穩定的直流5v電 源;第二步:置 start_kl (pro 口)計費關閉,按下 setting_k5 ( p4 口) 單價設置鍵,然后按下add_k3 (

26、p2 口)單價調整鍵,設置好價格;第三步:假設有乘客上車,置start_kl (pro 口)計費開啟,傳感器模塊每 接觸磁條一次向單片機發出一次屮斷信號(即輪胎每周行駛距離,假定為x km)第四步:按下wait_time_k4 (p3 口)停車等候計費鍵,系統開始計算停 車n分鐘等待時間消費。參考文獻:1 霍爾傳感器a44e在車輪測速中的應用研究 楊繼生 劉芬編電子測量技術.2009. 102 mcs-51系列單片機應用系統設計 何立民m北京航空航天大學出版 社.19883 萬頻.串行e2pr0m與87c51單片機接口技術的實現j微小型機開發與應用.1998. 14 電子技術基礎模擬部分 康華

27、光高等教育出版社5 單片微機實題集與實驗指導書丁元杰、吳大偉.機械工業出版社.2004.6 、單片機典型外圍器件及應用實例求是科技人民郵電出版社附錄a硬件電路實物圖附錄b程序清單winclude <reg51.h>#include intrins.h>unsigned char data dis_digit;unsigned char key_s, key_v;unsigned char code dis_codell = oxco, 0xf9, 0xa4, oxbo, / 0, 1, 2, 30x99, 0x92, 0x82, 0xf8, 0x80, 0x90, oxff

28、;/ 4, 5, 6, 7, 8, 9, offunsigned char data dis_buf8;unsigned char data dis_index;unsignedcharset_times, total_price, total_run, unit_price,wait_time_sec,wait_consume, daytime_price, nighttime_price;/設置次數標志,總價格,總里程,單價,等待時間,等待消費,白天單價, 晚上單價unsigned char secloo;imsigned char glimpse_sign;imsigned char l

29、ed glimpse_day;unsigned char led_glimpse_night;imsigned char count;unsigned char total;unsigned char i, j;sbitstartkl 二 p10;sbitdaytime_k2 二 pl;sbitadd_k3 二 pt2;sbitwaittimekd 二 pl 3;sbitsetting_k5 二 pl 4;sbitled 二 pt5;#define op_read oxal ttdcfincop write oxaottdcfincmax addr 0x7fsbit sda = p7;sbit

30、 scl = pl飛;void start ();void stop(); unsigned char shin ();/器件地址以及讀取操作/器件地址以及寫入操作/ at24c02最大地址bit shout(unsigncd char write data);unsigned char rcad_random(unsigned char random_addr);void writc_bytc( unsigned char addr, unsigned char write_data);void fill byte(unsigned char fill data);bit guesttimc

31、_sign, waittimc_sign; unsigned char scan key();void proc glimpse();void proc_key();void inc sec ();void inc min();void inc hour ();void display();void dclayms(unsigned char ms);void main (void)ipo = oxff;p2 = oxff;sda = 1;scl = 1;tmod = oxll;th1 = oxdc;tl1 = 0;/定時器0, 1工作模式1, 16位定時方式tho = oxfc;tlo =

32、0x17;total_price = 00;total run = 000;wait time min =00 ;wait time sec 二00 ;mmwait_consume 二 00 ;daytime price=read random(0) ;/讀取白天價格nigh11 imc_price=rcad_random (1) ; /讀取晚上價格 waittime sign=0;set times=0;guesttimc_sign=0;glimpse sign=0;led glimpse day=0;led glimpse night=0;count=0;j=o;secloo = 0;i

33、f (dayt i me k2=0)/判斷白天unit pricc=daytime_ price;if (daytime_k2=l)/判斷晚上dis buf0 = dis codctotal price/ 10; dis_buf1 = dis_codetotal_price % 10;dis buf2 = oxff;dis buf3 = dis codetotal run/ 100;dis_buf4 = dis_code(total_run % 100)/10& 0x7f;dis buf5 = dis code(total run % 100)%10;dis buf6 = oxff;d

34、is_buf7 = dis_codeunit_price;dis_digit 二 oxfe;dis index = 0;tcon = 0x01;ie = 0x8b;/ 使能 timcro, 1 中斷it0=l;tro = 1;tri = 0;key v = 0x07;whileiif (guesttimc sign!=l&&set times=0)iif (daytime k2=0)unit pricc=daytimc price;if (daytime_k2=l)dis buf7 = dis codeunit price;i辻(start kl=0)iif(guesttimc

35、_sign二二0&&set_t imcs=0)itotal price=10;guesttimc_sign=l;led=0;dis buf0 = dis codetotal price/ 10;ii辻(start kl=l)!if (guesttimc sign=l)tr1=o;total=total pricc+wait consume;dis buf0 = dis codetotal/ 10;dis buf1 = dis code total % 10;dis buf2 = oxff;dis buf3 = dis code total run/ 100;dis buf4 =

36、 dis code(total run % 100)/10& 0x7f;dis buf5 = dis code(total run % 100)%10; dis_buf6 = oxff;dis buf7 = dis code unit price;for(i=0;i<250;i+)dclayms (50000);j+;if(j=5)iledled;j=0;led=1;total price=0;total_run二0;waittime sign=0;guesttimc sign=0;wait_time_min 二00 ;wait time sec =00 ;mhmhwait co

37、nsume = 00 ;dis buf0 = dis codetotal price/ 10;dis buf1 = dis codetotal price % 10;dis buf2 = oxff;dis buf3 = dis code total run/ 100;dis buf4 = dis code(total run % 100)/10& 0x7f;dis buf5 = dis code(total run % 100)%10;dis buf6 = oxff;dis buf7 = dis codeunit price;key s=scan key (); if (key s !

38、= key v)dclayms(10);if (key s != key v)key v = key s; proc key ();unsignedichar scan key ()kcy_s=0x00;kcy_s|= add k3;kcy_s«= 1;kcy_s|= wait time k4;kcy_s«= 1;kcy_s=setting k5;returni key s ;void proc key()if (key v & 0x02) = 0)/ k4if (guesttimc sign=l)/判斷有沒有乘客wai tti mc_s i gn=wai tti

39、mc_s ign;/等客標志位取反if(waittimc sign=l)dis_buf0 = dis_codcwait_consume/ 10;金額dis buf 1 = dis code wait consume% 10;/等待消費tr1=1;總里程dis_buf2 = oxff;dis_buf 3 = dis_codcwait_timc_niin/10; dis buf4 = dis codewait time min%10; dis_buf5 = oxbf;dis buf6 = dis codewait time sec/10;dis_buf 7 = dis_codewait_time_

40、sec%10 ;/等客時間開啟定時器1if(waittimc sign=0)dis buf0 = dis codctotal price/ 10;dis buf 1 = dis code total price % 10 ;/總金額dis buf2 = oxff;dis buf3 = dis codetotal run/ 100;dis buf4 = dis code(total run % 100)/10& 0x7f; dis_buf5 = dis_code(total_run % 100)%10;/ dis_buf6 = oxff;dis buf 7 = dis code unit

41、 price ;/單價tr1=o;/關閉定時器1 if(kcy_v & 0x04) = 0) / k3iif (guesttime sign=0)/判斷有沒有顧客!set_times+;/調價計數器加1if(sct timcs=l set timcs=2)tr1=1;/開啟定時器1if (set timcs=3)iif (daytime_k2=0)/判斷 口天iunit price=daytimc price; /白天,存白天單價if (daytime k2=l)/判斷夜晚iunit price= nighttime price; /夜晚,存夜晚單價 dis buf0 = dis co

42、detotal price/ 10;/總金dis buf1 = dis codetotal price % 10;dis buf2 = oxff;dis_buf3 = dis_codetotal_run/ 100;里程dis buf4dis buf5dis code(total run %dis code(total run %100)/10& 0x7f;100)%10;總dis buf6 = oxff;dis buf 7 = dis code unit price ;/單價tr1=o;/關閉定時器1write byte(0, daytime price) ;/存儲白天單價write_

43、byte (1, nighttime_price) ;/存儲晚上單價set_times=0;/退出調節狀態if(kcy_v & 0x01) = 0) / k5iif(sct timcs=l)idaytime_pricc+;/白天單價加 1if (daytimc pricc>9)daytime_price=o;/單價超過范圍,清零dis buf 3 = dis code daytime price ; /調整白天單價 if(sct timcs=2)nigh11 i me_pri c e+; if (nighttimc pricc>9)/晚上單價加1單價超過范圍,清零nigh1

44、1 i me_pr ice=o;調整晚上dis buf7 = dis codenighttime price;天單價void timcro() interrupt 1/定時器0中斷服務程序,用于數碼管的動態掃描/ dis_index 顯示索引,用于標識當前顯示的數碼管和緩沖區的偏移量/ dis_digit位選通值,傳送到p2 口用于選通當前數碼管的數值,如等于oxfe時,/選通p2.0 口數碼管/ dis_buf 顯于緩沖區基地址!tho = oxfc;tlo = 0x17;p2二oxff;/先關閉所有數碼管p0 = dis buf dis index ;/ 顯示代碼傳送到 p0 口p2 =

45、dis digit;/dis digit二crol (dis digit, 1) ;/位選通值左移,下次中斷時選通下一位數碼管dis indcx+;/dis_indcx &= 0x07;/8個數碼管全部掃描完一遍之后,再回到第一個開始下一次掃描void timcrl () interrupt 3th1 = oxdc;/定時器裝初值if (guesttime sign=l&&waittinie sign=l)secl00+; if(secloo >= 100)iisecloo = 0;inc sec ();jwait consumc=wait time min;mm

46、r/等待消費金額dis buf 0 = dis codewa.it consume/ 10; dis_buf1二 dis_codewait_consume% 10;if(gues11 imc_sign二二0&&(sct_t imcs=l sct_t imcs=2)glimpse sign+;if (glimpse sign >= 30)iglimpse sign=0; proc glimpse();void inc sec ()wait time sec+;mhmhif(wait_time_sec > 59)wait time sec = 0;inc_min();!

47、dis buf 6 = dis codewa.it time sec/10; dis_buf7 = dis_codcwait_timc_scc%10;void inc min()!wait_time_min+;if (wait time min > 59)wait time min = 0;!dis_buf 3 = dis_codcwait_timc_niin/10; dis buf 4 = dis codewa.it time min%10;avoid inc hour()ihour+;辻(hour > 23)ihour = 0;!辻(hour > 9)/時十位dis_bu

48、f0 = dis_codehour / 10;elsedis bufo = oxff;/當小時的十位為0時不顯z5/時個位dis buf 1 = dis codehour % 10;ivoid dig it stat e ()ii*/void dclayms(unsigned char ms)/延時子程序!unsigned char i;while(ms-)ifor(i = 0; i < 120; i+);ivoid proc glimpse()iif (sct timcs=l)iif (led glimpse day=0)idis buf3 = oxff;if (led glimpse

49、 day=l)dis buf3 = dis codedaytime price;led glimpse day+;辻(led glimpse day > 1)led_glimpsc_day=o;dis bufo = oxff;dis bufl = oxff; dis_buf2 = oxff;dis buf4 = oxff;dis buf5 = oxff; dis_buf6 = oxff;dis_buf7 = dis_codcnighttimc_pricc;iif(sct_timcs=2)iif (led glimpse night=o)!dis buf7 = oxff;if (led g

50、limpse night=l)idis buf7 =dis codenighttime price; led glimpse night+;if (led glimpse night > 1)led glimpse night=0; dis_bufo = oxff; dis bufl = oxff;dis_buf2 = oxff;dis buf4 = oxff;dis buf5 = oxff;dis_buf6 = oxff;dis buf3 = dis codedaytime price;外部中斷0的中斷函數void into() interrupt 0 using 1!if(guesttimc sign= l&&wa.i11ime sign=0)/有乘客并等客標志位為0itotal_run+;/總里程加 1if (

溫馨提示

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

評論

0/150

提交評論