基于單片機的出租車計價器的設計_第1頁
基于單片機的出租車計價器的設計_第2頁
基于單片機的出租車計價器的設計_第3頁
基于單片機的出租車計價器的設計_第4頁
基于單片機的出租車計價器的設計_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 基于單片機的出租車計價器的設計 院 系 獨 創(chuàng) 性 聲 明本人鄭重聲明:所呈交的畢業(yè)論文(設計)是本人在指導老師指導下取得的研究成果。除了文中特別加以注釋和致謝的地方外,論文(設計)中不包含其它人已經(jīng)發(fā)表或撰寫的研究成果。和本研究成果相關的所有人所做出的任何貢獻均已在論文(設計)中作了明確的說明并表示了謝意。 簽名: 年月日授 權 聲 明本人完全了解許昌學院有關保留、使用本科生畢業(yè)論文(設計)的規(guī)定,即:有權保留并向國家有關部門或機構(gòu)送交畢業(yè)論文(設計)的復印件和磁盤,允許畢業(yè)論文(設計)被查閱和借閱。本人授權許昌學院可以將畢業(yè)論文(設計)的全部或部分內(nèi)容編入有關數(shù)據(jù)庫進行檢索,可以采用影印

2、、縮印或掃描等復制手段保存、匯編論文(設計)。本人論文(設計)中有原創(chuàng)性數(shù)據(jù)需要保密的部分為: 簽名: 年月日指導教師簽名: 年月日摘 要本設計就是以AT89C51單片機為控制核心,用LCD顯示器顯示出租車的路程,價格,通過按鍵來實現(xiàn)開始,暫停,復位,轉(zhuǎn)換等功能,還可根據(jù)不同情況來調(diào)節(jié)價格,不計價的時候還可以作為時鐘使用。設計中一共采用了四個頻率開關,每個開關模擬不同的車速,6個按鍵,每個按鍵控制不同的功能,N鍵和P鍵是調(diào)整時間的導航鍵,+ 鍵和- 鍵是調(diào)節(jié)時間和日期的,E/C鍵是模式切換鍵,Pause鍵是暫停計費按鍵。關鍵詞:AT89C51單片機;LCD;數(shù)字時鐘DS1302 ABSTRAC

3、TThe design is a control center based on AT89C51 microcontroller. LCD display show the journey and price of taxi, by the keyboard, achieved start suspended, reset, display conversion and so on. You also can adjust the price according to different circumstances, when it comes to pricing can be used a

4、s a clock. There are four frequency switchs in the design, each switch simulation different speed, and six keys, each key control different function, N key and P key is the navigation keys to adjust the time, + keys and - key is to adjust the time and date, E/C key is mode switch button, Pause key i

5、s suspended billing buttons.Key words: AT89C51 microcontroller; LCD; digital clock DS1302目錄1課題背景11.1研究背景11.2研究內(nèi)容12硬件平臺12.1單片機概述12.1.1 AT89C51單片機的中央處理器22.1.2 AT89C51單片機引腳介紹22.2硬件電路的組成42.2.1復位電路的設計42.2.2時鐘電路的設計42.3單片機最小系統(tǒng)電路52.4 A44E霍爾傳感器52.4.1 A44E霍爾傳感器簡介52.4.2里程計算、計價單元設計62.5液晶顯示簡介72.6時鐘芯片DS130272.6.1

6、 DS1302的簡介72.6.2 DS1302的電路82.6.3 DS1302的控制字節(jié)83軟件平臺93.1 Proteus ISIS 仿真軟件簡介93.2 Proteus ISIS 的仿真步驟93.3 Keil uVision2 調(diào)試軟件104軟硬件設計124.1電路的總體設計124.1.1電路設計方案124.1.2計價器總體設計圖124.2計價器系統(tǒng)軟件的設計134.2.1主程序模塊134.2.2定時中斷服務程序144.2.3液晶驅(qū)動程序144.2.4計價管理程序144.3主程序設計及程序流程圖145 Proteus ISIS仿真結(jié)果165.1出租車停止行駛時165.2出租車行駛時165.

7、3出租車暫停計費時175.4顯示時間和日期175.5仿真結(jié)果分析186總結(jié)19參考文獻20附 錄21致 謝341 課題背景1.1 研究背景隨著我國經(jīng)濟的快速發(fā)展,人民的生活水平有了很大的改善,旅游已經(jīng)成為一種時尚,旅游業(yè)的發(fā)展,讓人們對交通和服務行業(yè)的要求越來越高,而出租車就成為了外出旅游的重要工具之一。當然,出租車計價就成為了最重要的問題,也是廣大消費者最關心的問題。隨著出租車行業(yè)的迅猛發(fā)展,出租車成為了日常生活中重要的交通工具,只有安裝了計價器的出租車才可以使用。計價器是出租車公司和消費者之間公平交易的重要工具,所以計價器的性能一定要穩(wěn)定,準確。近年來,依據(jù)國家有關法律、法規(guī)。出租車計價器

8、已經(jīng)被列為國家強制檢定的計量器具之一。出租車作為重要的交通工具,其行業(yè)的發(fā)展也早已備受關注,出租車能否準確的計價,是乘客和司機一直關注的重點,而良好性能的計價器無論是對汽車司機還是對廣大消費者都是很重要的。我國最早的生產(chǎn)計價器的是重慶市起重機廠,那時的計價器都是采用機械齒輪鉤,只能完成簡單的計程功能,但它是早期計價器的一個里程碑。隨著科學技術的飛速發(fā)展,第二代半機械化、半電子化的計價器產(chǎn)生,這時的計價器不但可以計程,還可計價。當大規(guī)模集成電路發(fā)展時,第三代計價器很快問世,即全電子化的計價器,它利用了功能強大的單片機,可輕易的完成計程,計價,顯示等基本工作。1.2 研究內(nèi)容計價器是主要負責出租車

9、收費的職能儀表,它關系到消費者的經(jīng)濟利益,所以它對穩(wěn)定性,準確性,精確性的要求非常的高。本設計利用AT89C51作為核心控制中心,使計價器具有計價、計程、停車時間計價,時鐘顯示等相關功能。2 硬件平臺2.1 單片機概述單片機又稱為單片微型計算機,是典型的嵌入式微控制器(Microcontroller Unit),常用英文縮寫字母MCU來表示單片機,單片機最早被用在工業(yè)控制領域。單片機主要由中央處理器(CPU)、內(nèi)部數(shù)據(jù)存儲器(內(nèi)部RAM)、內(nèi)部程序存儲器(內(nèi)部ROM)、I/O口、串行口、定時器、終端程序等系統(tǒng)組成。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh

10、 Programmable and Erasable Read Only Memory),高性能CMOS8位微處理器,單片機的可擦除只讀存儲器可以反復擦除100次。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。2.1.1 AT89C51單片機的中央處理器單片機的核心部分是CPU,它相當于單片機的大腦和心臟。CPU的主要功能是產(chǎn)生各種控制信號,以控制存儲器、輸入/輸出端口的數(shù)據(jù)傳送、數(shù)據(jù)的算術運算和邏輯預算以及位操作處理等。AT89C51的中央處理器主要由運算器和控制邏輯組

11、成,其中包括一些特殊功能寄存器(SFR)。算術邏輯單元ALU能對數(shù)據(jù)進行加、減、乘、除等算術運算;“和”、“或”、“異或”等邏輯運算以及位操作運算。ALU只進行運算,運算的操作數(shù)可以事先存放到累加器ACC或寄存器TMP中,運算結(jié)果可以送回ACC或通用寄存器或存儲單元中, ACC也可簡寫為A。寄存器B在乘法指令中用來存放一個乘數(shù),在除法指令中用來存放除數(shù),運算后B中為部分運算結(jié)果。2.1.2 AT89C51單片機引腳介紹AT89C51有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2個讀寫口線,AT89C51可以按照常

12、規(guī)方法進行編程,也可在線編程。它將通用的微處理器和Flash存儲器結(jié)合在一起,可反復擦寫的Flash存儲器可有效地降低開發(fā)成本。 AT89C51單片機是高性能單片機,因為受引腳數(shù)目限制,所以有許多引腳具有第二功能,各引腳功能如圖2-1所示。圖2-1 AT89C51的引腳圖電源引腳VCC和VSS VSS:接地端。VCC:+5V電源端。時鐘信號引腳XTAL1和XTAL2XTAIL1、XTAL2:當使用單片機內(nèi)部振蕩電路時,用外接石英晶振和微調(diào)電容,XTAL1是內(nèi)部振蕩電路反相放大器的輸入端,XTAL2是片內(nèi)振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶振的固有頻率。當使用外部時鐘時,XTAL1接

13、地,XTAL2接外部時鐘信號源??刂菩盘栆_RST/VPD、ALE/、和EA/VPPRST/VPD:RET是復位信號輸入端。當輸入的復位信號保持兩個機器周期(24個時鐘周期)以上的高電平時有效,用來完成復位操作;第二功能VPD作為備用電源輸入端,當電源VCC發(fā)生故障,電壓降低到低電平規(guī)定值時,可通過VPD為單片機內(nèi)部RAM提供電源,以保護片內(nèi)RAM中的信息不丟失,使系統(tǒng)在上電后能繼續(xù)正常運行。ALE/:ALE為地址鎖存允許輸出信號。在訪問外部存儲器時,ALE用來鎖存P0口擴展低8位地址的控制信號。在不訪問外部存儲器時,ALE也以時鐘振蕩頻率的1/6的固定頻率輸出,因而它又可以作對外輸出時鐘信號

14、或其他需要,例如可以示波器查看ALE是否有脈沖信號輸出來確定89C51芯片的好壞;第二功能PROG是對內(nèi)部有EPROM的單片機的EPROM編程脈沖輸入端,它和31號引腳的第二功能VPP一起使用。:外部ROM的讀選通信號輸出端。在訪問外部ROM時,PSEN產(chǎn)生負脈沖作為讀外部ROM的選通信號。而在訪問外部RAM或片內(nèi)ROM時,不會產(chǎn)生有效PSEN信號。/VPP:EA是訪問外部ROM的控制信號。EA為低電平時,CPU只執(zhí)行外部ROM中的程序。EA為高電平且PC值小于0FFF(4K)時,CPU執(zhí)行內(nèi)部ROM的程序,但當PC的值超出4K時將自動轉(zhuǎn)去執(zhí)行片外ROM的程序。對于無片內(nèi)ROM的8031或不使

15、用內(nèi)部ROM的89C51,EA必須接地;第二種功能VPP是作為8751的片內(nèi)EPROM的+21V編程電源輸入端。并行I/O端口P0、P1、P2和P3P0口(P0.0P0.7):P0口是一個8位雙向I/O端口(無需外接上拉電阻)。在訪問外存儲器時,分時提供低8位地址線和8位雙向數(shù)據(jù)線。P0口先輸出片外存儲器的低8位地址并鎖存在地址鎖存器中,然后再輸入或輸出數(shù)據(jù)。P1口(P1.0P1.7):P1口是一個內(nèi)部帶有上拉電阻的8位準雙向I/O端口。且P1口只能作為一般I/O口使用。P2口(P2.0P2.7):P2口是一個內(nèi)部帶有上拉電阻的8位準雙向I/O端口。在訪問外部ROM或外部RAM時,輸出高8位地

16、址,和P0口提供的低8位地址一起組成16位地址總線。P0口和P2口用作數(shù)據(jù)/地址線后,不能再作為通用I/O口使用。P3口(P3.0P3.7):P3口是一個內(nèi)部帶有上拉電阻的8位準雙向I/O端口,在系統(tǒng)中8個引腳都有各自的第二功能。2.2 硬件電路的組成2.2.1 復位電路的設計單片機復位是使CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作,例如復位后PC0000H,使單片機從第一個單元取指令。無論是在單片機剛開始接上電源時,還是斷電后或者發(fā)生故障后都要復位。本設計所用的復位電路如圖2-2所示。 圖2-2 復位電路2.2.2時鐘電路的設計AT89C51系列單片機內(nèi)部有一

17、個可控制的反相放大器,引腳XTAL1、XTAL2為反相放大器的輸入端和輸出端,在XTAL1、XTAL2上外接晶振和電容便組成振蕩器。具體的時鐘電路如圖2-3所示。振蕩器頻率主要取決和晶振的頻率,但小于器件所允許的最高頻率。振蕩器的工作可由軟件置1,使振蕩器停止振蕩,從而使整個單片機停止工作,以達到節(jié)電的目的。圖2-3 時鐘電路2.3 單片機最小系統(tǒng)電路單片機最小系統(tǒng)是指用最少的元件組成的單片機可以工作的系統(tǒng)。對于AT89C51單片機來說,最小系統(tǒng)一般應該包括:單片機、晶振電路、復位電路等。它們是AT89C51工作所需的最簡外圍電路。單片機最小系統(tǒng)電路如圖2-4所示。圖2-4 單片機最小系統(tǒng)電路

18、圖2.4 A44E霍爾傳感器2.4.1 A44E霍爾傳感器簡介A44E霍爾傳感器是一種磁傳感器??梢詸z測磁場及其變化,可在各種磁場有關的場合中使用。以霍爾效應為其工作基礎。它結(jié)構(gòu)牢固,體積小,重量輕,壽命長,安裝方便,功耗小,頻率高,耐震動不怕一些污染和腐蝕,而且精度高工作溫度范圍寬。這種霍爾元件大量用于直流無刷電機和測磁儀表。A44E集成霍爾開關由穩(wěn)壓器,霍爾電勢發(fā)生器(即硅霍爾片)B,差分放大器C,施密特觸發(fā)器D和OC門輸出E五個基本部分組成。 (a)1VCC 2GND (b) 3OUT 圖2-5 集成霍爾開關外形及引線在輸入端 輸入電壓VCC,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍爾電勢發(fā)生器的兩端,根據(jù)

19、霍爾效應原理,當霍爾片處在磁場中時,在垂直于磁場的方向通以電流,則和這二者相垂直的方向上將會產(chǎn)生霍爾電勢差VH輸出,該VH信號經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC門輸出。當施加的磁場達到工作點(即Bop)時,觸發(fā)器輸出高電壓(相對于地電位),使三極管導通,此時OC門輸出端輸出低電壓,三極管截止,使OC門輸出高電壓,這種狀態(tài)為關。這樣兩次電壓變換,使霍爾開關完成了一次開關動作。集成開關型霍爾傳感器原理如圖2-6所示。圖2-6 集成開關霍爾傳感器原理2.4.2 里程計算、計價單元設計里程計算是通過安裝在車輪上的霍爾傳感器A44E檢測到的信號,送到單片機,經(jīng)處理計算,送給顯示單

20、元的,其原理如圖2-7所示。圖2-7傳感器測距示意圖由于A44E屬于開關型的霍爾傳感器件,其工作電壓范圍比較寬(4.5V18V),其輸出的信號符合TTL電平標準,可以直接接到單片機的I/O端口上,而且其最高檢測頻率可達到1MHZ。我們選擇了P3.2口作為信號的輸入端,內(nèi)部采用外部中斷0(這樣可以減少程序設計的麻煩),車輪每轉(zhuǎn)一圈,霍爾開關就檢測并輸出信號,引起單片機的中斷,對脈沖計數(shù),當計數(shù)達到1000次時,也就是1公里,單片機就控制將金額自動的增加,其計算公式:當前單價公里數(shù)=金額。由于在仿真過程中不能直接用霍爾傳感器,所以仿真時使用了系統(tǒng)中的頻率來模擬霍爾傳感器脈沖。仿真時共用了四個不同頻

21、率的脈沖模擬傳感器脈沖。2.5 液晶顯示簡介LM016L是一款較常用的液晶。通常有16條引腳線,其中有8位數(shù)據(jù)總線D0-D7,和RS、R/W、EN三個控制端口,還有兩個腳為背光源正負極,工作電壓為5V。液晶顯示原理:液晶顯示的原理是利用液晶的物理性質(zhì),通過電壓對其顯示區(qū)域進行控制,有電就可顯示出圖形。液晶顯示具有厚度薄,使用于大規(guī)模集成電路進行驅(qū)動,目前已被廣泛使用于眾多領域,例如便攜式電腦,數(shù)字攝像機,PDA移動通信工具等。引腳如下:第1腳:VSS為地第2腳:VDD接5V正電源第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以

22、通過一個10K的電位器調(diào)整對比度,或直接通過一個電阻到地.第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第1516腳:背光源正負極。2.6時鐘芯片DS13022.6.1 DS1302的簡介DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時

23、時鐘芯片,它可以對年、月、日、周日、時、分、秒進行計時,且具有閏年補償功能,工作電壓寬達2.55.5V。采用三線接口和CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個318的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302的管腳如圖2-8所示。圖 2-8 DS1302管腳引腳介紹:VCC1后背電源 VCC2主電源X1,X2振蕩源 RST復位/片選線2.6.2 DS1302的電路在DS1302電路(如圖2-9)中,VCC2是主電源,VCC1是后備電源。當主電源關閉時,后背電源 同樣能保持時鐘的連續(xù)運行。DS1302由VCC1或VCC2中的電壓較大的

24、一個供電。RST的輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,就會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在VCC2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。 圖2-9 DS1302電路2.6.3 DS1302的控制字節(jié)DS1302 的控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù)

25、,為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。1RAN/CKA4A3A2A1A0RAN/K圖 2-10 DS1302的控制字節(jié)3 軟件平臺3.1 Proteus ISIS 仿真軟件簡介Proteus ISIS是一種操作簡便而又功能強大的原理圖編輯工具,它運行于Windows操作系統(tǒng)上,可以仿真、分析各種模擬器件和集成電路,該軟件的特點有:(1)實現(xiàn)了單片機仿真和SPICE電路仿真的結(jié)合具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試

26、器、鍵盤和LCD系統(tǒng)仿真等功能。(2)支持主流單片機系統(tǒng)的仿真目前支持的單片機類型有68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。(3)提供軟件調(diào)試功能在硬件仿真系統(tǒng)中具有全速、單步、設置斷點等調(diào)試功能,同時可以觀察各個變量、寄存器等的當前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能。(4)具有強大的原理圖繪制功能目前支持的單片機類型有:68000 系列、8051 系列、AVR 系列、PIC12 系列等。3.2 Proteus ISIS 的仿真步驟Proteus仿真時,單片機需要加載程序,加載程序為.HE

27、X文件。在Proteus ISIS中,選中AT89C51并單擊鼠標左鍵,對AT89C51進行設置,設置單片機時鐘頻率為12MHz,按照正確的文件路徑加載.HEX文件,對單片機設置完畢后就可以開始仿真了。Proteus ISIS仿真界面如圖3-1所示。圖3-1 Proteus ISIS仿真界面運行Proteus程序后,進入軟件的主界面。通過左側(cè)工具欄中的P(從庫中選擇元件命令)命令,在Pick Devices 左側(cè)窗口中選擇所需元件的關鍵字,然后放置元件并調(diào)整方向和位置以及參數(shù)設置。元件的選取界面如圖3-2所示。 圖3-2 元件選取界面3.3 Keil uVision2 調(diào)試軟件Keil uVi

28、sion2是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),使用接近于傳統(tǒng)C語言的語法來開發(fā),提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,和匯編相比,C語言在功能性、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢。Keil uVision2 的使用流程如圖3-3所示。 圖 3-3 Keil的基本使用流程Keil uVision軟件的調(diào)試界面如圖3-4所示。圖3-4 Keil uVision2 程序調(diào)試界面本設計利用軟件Keil uVision2,在新建Keil項目時選擇AT89C51單片機作為CPU,將源程序?qū)?,在“Options For Target”對話窗口中,選

29、中“Output”選項中的“Create HEX File”,在編譯鏈接后就可以生成.HEX文件。此文件的選取界面如圖3-5所示。 圖 3-5 可執(zhí)行的.HEX 文件的選取界面4 軟硬件設計4.1 電路的總體設計4.1.1 電路設計方案如果我們在設計電路時用的是傳統(tǒng)的數(shù)字電路或者模擬電路的話,那么可用的顯示器就只能是LED顯示,VFD顯示,分段式數(shù)碼管等這些傳統(tǒng)的顯示器,這樣的話,僅顯示電路框圖和實際電路就已經(jīng)非常得復雜,整體電路更是非常的麻煩。此外,當進行計費模式切換時所用的按鍵是機械按鍵,而機械按鍵用久了很容易老化,會造成接觸不良,容易導致功能不易實現(xiàn)。和此相比,單片機的功能就強大很多,只

30、需用較少的硬件和少量的軟件就可以實現(xiàn)較復雜的設計要求,還可以添加更多的其他功能,靈活性很強,計費模式切換通過軟件就可輕易實現(xiàn),避免了因機械開關的老化而造成的潛在危險。因此本電路以AT89C51單片機為中心,實現(xiàn)對出租車路程的統(tǒng)計,輸出采用液晶顯示器LM016L。4.1.2 計價器總體設計圖顯示電路 單片機復位設置設置電路獨立按鍵時鐘電路輸入脈沖圖4-1 計價器設計原理框圖圖4-2 計價器設計原理圖原理圖功能分析:本設計一共采用了四個頻率開關,每個開關對應的頻率分別為5Hz,50Hz,150Hz,211Hz,這些頻率是采用系統(tǒng)中的頻率來模擬的霍爾傳感器脈沖。當選擇低于10Hz的頻率的時候,所表示

31、的是出租車停止行駛,此時采用的是計時收費模式,即100s按照1km收費,1km收費1.4元,起步價為6元(含3km)。當選擇50Hz,150Hz,211Hz時,表示出租車分別行駛在中速,高速,超高速的行駛狀態(tài)下,這是計價器的收費為計價收費,起步價為6元(含3km),行駛1km收費1.4元。時間顯示部分是用DS1302為時間基準計時的,N鍵和P鍵是調(diào)整時間的導航鍵,N鍵是順序,P鍵是倒序,+ 鍵和- 鍵是調(diào)節(jié)時間和日期的,E/C鍵是選擇時間顯示還是計費顯示的按鍵。Pause鍵是暫停計費的按鍵,當出租車正在行駛的過程中,也就是說計價器正在計價的時候,按下該按鍵,計費就會停止。4. 2 計價器系統(tǒng)軟

32、件的設計4. 2.1主程序模塊在主程序模塊設計中,要設置啟動/清除標志寄存器、里程寄存器,然后對它們進行初始化,這時,主程序就會根據(jù)需要完成啟動、清除、計程等各種操作。初次之外還要對各接口芯片初始化,對中斷向量的設計,開中斷和循環(huán)等待的工作。4. 2.2 定時中斷服務程序在定時中斷服務程序中,每1ms就會產(chǎn)生一次中斷,當產(chǎn)生1000次中斷的時候,也就是一秒,然后把數(shù)據(jù)送到相應的顯示緩沖單元,并調(diào)用顯示子程序即可顯示。4. 2.3 液晶驅(qū)動程序主程序的實現(xiàn)是用LCD驅(qū)動,系統(tǒng)初始化時涉及的硬件、鍵盤的控制,根據(jù)按鍵來啟動或者停止里程的測量,然后調(diào)用用戶界面程序定時更新日期和時間的顯示,及時的更新

33、價格、里程、費用等一些信息顯示,文本、圖形顯示等功能。4. 2.4 計價管理程序計價管理程序主要作用是對脈沖的計量并轉(zhuǎn)換為公里數(shù),計算出所需費用,同時,測出出租車的行駛速度,統(tǒng)計低速行駛的時間和費用,并把檢測到的結(jié)果傳送給液晶顯示器,及時的更新函數(shù),以便主函數(shù)可以及時的控制用戶界面,計時費用,行駛路程等信息。計價管理程序主要包括PWM管理程序、里程計量程序、時間管理程序、費用管理程序、用戶界面控制程序等部分。 4. 3 主程序設計及程序流程圖程序開始運行后,首先初始化各個硬件部分,同時打開時基中斷,準備好為鍵盤掃描和時間管理做好服務工作,程序進入主循環(huán)之后會不斷的對按鍵進行掃描,隨時準備根據(jù)按

34、鍵的啟動、停止里程計量,或者是轉(zhuǎn)換顯示模式和進入設置模式,主循環(huán)時,時間也會及時更新。主程序流程圖如下圖所示:NYYYN暫停計費進入計時收費模式是否按下暫停鍵進入按里程收費模式出租車是否高速行駛時間設定OK,進入計費模式日期、時間調(diào)整按鍵是否按下Time set over鍵是否按下進行時間日期的調(diào)整液晶顯示年月日時分秒單片機液晶初始化操作NYN圖4-3 主程序流程圖主程序見附錄5 Proteus ISIS 仿真結(jié)果5.1 出租車停止行駛時圖5-1 出租車停止時當頻率選擇在10Hz以下的情況時,出租車停止行駛,按一下按鍵E/C,切換至計費模式,LOW燈點亮,采用計時收費,100s按照1km收費,

35、1km 收費1.4元,起步價為6元(含3km)。5.2 出租車行駛時圖5-2 出租車行駛時當頻率選擇在50Hz,150Hz,211Hz的情況下時,出租車中速、高速、超高速行駛,按一下按鍵E/C,切換至計費模式,RUN燈點亮,采用計價收費,每行駛1公里收費1.4元,起步價為6元(含3公里)。5.3 出租車暫停計費時圖5-3 出租車暫停計費時出租車正在行駛的過程中,按下PAUSE鍵,將會停止計費。5.4 顯示時間和日期圖5-4 顯示時間和日期出租車不計費時,按下E/C鍵,就會切換顯示模式,同時還可根據(jù)需要,按下N鍵或P鍵選中要調(diào)整的日期或者時間,然后按+ 或- 鍵就可以隨意修改時間和日期了。5.5

36、 仿真結(jié)果分析以上是出租車計價器具體計價的四種情況,其他情況和此相類似。本設計中用虛擬的儀表發(fā)生頻率模擬了四個霍爾傳感器脈沖,共用了四個頻率開關的ON和OFF來選擇頻率,不同的頻率模擬了汽車不同的行駛情況,10Hz以下時模擬汽車停止行駛,計價方式為按時計費,每過100s收費1.4元;50Hz,150Hz,211Hz分別模擬汽車中速,高速,超高速的行駛狀態(tài),計價方式為計程計費,每行駛1km收費1.4元,起步價為6元(含3km)。計時用DS1302作為時間基準來計時,N鍵和P鍵為調(diào)節(jié)時間的導航鍵,+鍵和-鍵可以調(diào)節(jié)時間和日期,E/C鍵切換顯示模式。本設計雖然成功通過仿真,但還是有很多需要改進的地方

37、,對實際使用場合的一些環(huán)境因素考慮不周,應增加此方面的處理,更好的提高計價器的準確性和精確性。6 總結(jié)通過這次的論文設計,使我將理論和實際真正結(jié)合了起來,這次的設計不但讓我對單片機有了更深刻的認識,而且還學到了其他一些芯片的很多知識,對Proteus ISIS 仿真軟件也能較好的運用。感觸最深的就是畫圖和編程了,也是單片機最重要的部分。這次的畢業(yè)設計讓我明白了:在以后的學習和工作中一定要把理論和實際結(jié)合起來,不能只會理論而不會實際,那是不現(xiàn)實的,只有實際的做了,你才會知道自己究竟掌握了多少東西,永遠不要做一個眼高手低的人。這次我設計的是基于單片機的出租車計價器的設計,總體來看還是比較簡單的,可

38、以在以后考慮增加一些特殊的功能,使其在計價的同時還可有一定的記憶功能,這樣的話,無論是對出租車司機還是對廣大消費者都是一個很好的保護措施,計價器的功能也會變的更加強大!參考文獻1 康華光.數(shù)字電子技術基礎(第四版)M.北京:高等教育出版社,1998.52 劉和平,劉躍.單片機原理及使用M.重慶:重慶大學出版社,2004.2 3 張靖武,周靈彬.單片機系統(tǒng)PROTEUS設計和仿真M.北京:電子工業(yè)出版社,2008.74 楊剛,周群.電子系統(tǒng)設計和實踐M.北京:電子工業(yè)出版社,2004.6 5 郝鴻安.555集成電路實用大全M.上海:上??茖W普及出版社,2000.3 6 吳運昌.模擬電子線路基礎M

39、.廣州:華南理工大學出版社, 2005.8 7 沈任元,吳勇.常用電子元器件簡明手冊M.北京:機械工業(yè)出版社, 2004.78 陳有卿.555時基集成電路原理和使用M.北京:機械工業(yè)出版社,2006.49 李群芳,肖看.單片機原理接口及使用嵌入式系統(tǒng)技術基礎M.北京:清華大學出版社,2005.410 劉南平,孫蕙芹.單片機實訓和開發(fā)教程M.北京:科學出版社,2008.1011 樓然苗,李光飛.51系列單片機設計實例M.北京:北京航空航天大學出版社,2003.412 陳明熒.89C51單片機課程設計實訓教材M.北京:清華大學出版社,2004.5附 錄 /出租車計價器 設計/該模擬程序折合規(guī)則:1

40、km-1m,等待100s-1km-1m,1m-1.4元/底層規(guī)則:若脈沖個數(shù)/秒 10,則判為低速,1m-200個脈沖#include#include#include#include#includeuchar code univalent2 = 1,40;/保存單價的數(shù)組,0-里程單價整數(shù)位,1-里程單價小數(shù)位uchar code time_pos7 = 4,-1,7,10,4,7,10; /各時間在液晶上的顯示位置uchar code money_pos4 = 4,7,4,7; /計價器價格各位在液晶上的顯示位置bit config_ok = 0; /0-未配置完成,1-配置完成bit st

41、ate = 0;/當前儀表的運行狀態(tài),0-全速(計里程),1-低速(計時間)bit pause = 0;/計價停止狀態(tài)位,0-正常計價,1-暫停計價uint pulse_count = 0; /脈沖計數(shù)器uint pulse_count_tmp = 0;uint time_count = 0;/保存等待計時的變量,單位為秒,10s-1km-1.4元uint mileage_count_new = 0,mileage_count_old = 0;/保存里程的變量,通過差值計算里程變化,單位為km,1km-1.4元,uchar idata time7 = 0x09,0x1,0x1,0x1,0x0,

42、0x0,0x0;/保存時間的數(shù)組uint money2=6,0; /保存車費的數(shù)組,0-整數(shù)位,1-小數(shù)位uchar first_3_km = 0;void INT0_init(void);void INT1_init(void);void Delay(uint);void System_init(void);void Time_Show(uchar time_data7);void Run_Show_Time(uchar time_data7);void Money_Show(uint money2);void Show_Wait_Time(uint);void Show_Mileage(v

43、oid);void Run_BackGround(void);/運行起來后,將在LCD上一直出現(xiàn)的void Run_BackGround(void)WriteChar(/, 3,0);WriteChar(:,10,0);WriteChar(:,13,0);WriteChar(.,3,1);WriteChar(Y,6,1);void Show_Mileage(void)WriteDecimal(pulse_count / 200,0,12,1);WriteInt(pulse_count % 200 / 10,0,0,13,1);WriteChar(.,12,1);WriteString(km,1

44、4,1);void Show_Wait_Time(uint time_count)WriteChar(s,15,1);WriteChar( , 10,1);WriteInt(time_count,1,4,11,1);void Money_Show(uint money2)WriteDecimal(money0,0,3,1);WriteDecimal(money1,1,3,1);void Run_Show_Time(uchar time_data7)WriteInt(BcdToInt(time_data2),1,2, 1,0);WriteInt(BcdToInt(time_data3),1,2,

45、 4,0);WriteInt(BcdToInt(time_data4),1,2, 8,0);WriteInt(BcdToInt(time_data5),1,2,11,0);WriteInt(BcdToInt(time_data6),1,2,14,0);void Time_Show(uchar time_data7)WriteChar(/,6,0);WriteChar(/,9,0);WriteChar(:,6,1);WriteChar(:,9,1);WriteInt(BcdToInt(time_data0),1,2, 4,0);WriteInt(BcdToInt(time_data2),1,2,

46、 7,0);WriteInt(BcdToInt(time_data3),1,2,10,0);WriteInt(BcdToInt(time_data4),1,2, 4,1);WriteInt(BcdToInt(time_data5),1,2, 7,1);WriteInt(BcdToInt(time_data6),1,2,10,1);void System_init(void)RstLcd();ClrLcd();P1 = 0x00;config_ok = 0;Time_Show(time);LcdPos(5,0);SetCur(3);INT1_init();while(config_ok = 0)

47、;/等待配置時間結(jié)束標志ClrLcd();SetCur(1);WriteString(set time over.,0,0);Delay(60000);ClrLcd();Run_BackGround();P1= 0xff;void Delay(uint dtime) uint temp;for(temp=0;tempdtime;temp+);void INT0_init(void)EA = 0;IT0 = 1;EX0 = 1;EA = 1;void INT1_init(void)EA = 0;IT1 = 1;EX1 = 1;EA = 1;void main() uchar time_tmp7,

48、i;System_init();DS1302_GetData(time);pulse_count_tmp = pulse_count;mileage_count_new = mileage_count_old = 0;Money_Show(money);Run_Show_Time(time);Show_Mileage();while(1)if(config_ok = 0)/若設置時間未完成System_init();DS1302_GetData(time_tmp);if(!(P1 & 0x04)P1 &= 0xfe;P1 |= 0x02;pause = 0;if(time6 != time_t

49、mp6)Run_Show_Time(time_tmp);for(i = 0;i 7;i+)timei = time_tmpi;first_3_km = 0;money0 = 6;money1 = 0;mileage_count_new = mileage_count_old = 0;WriteString( ,0,1);WriteString( ,9,1);Money_Show(money);pulse_count = 0;Show_Mileage();time_count = 0;else if(pause = 0)INT0_init();if(time6 != time_tmp6)Run_Show_Time(time_tmp);for(i = 0;i 7;i+)timei = time_tmpi;if(pulse_count - pulse_count_tmp 2)/由等待時間換算公里數(shù),10s折合為1km(1m)money1 += 40;if(money1 99)mone

溫馨提示

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

評論

0/150

提交評論