久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

基于CPLD的出租車計價器設計[優(yōu)秀范文5篇]

時間:2019-05-13 22:54:15下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《基于CPLD的出租車計價器設計》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《基于CPLD的出租車計價器設計》。

第一篇:基于CPLD的出租車計價器設計

基于CPLD的出租車計價器設計

論文編號:2303 用戶評價:

本店售價:¥50元

論文摘要 商品屬性 商品標簽

摘 要

本文論述了一種基于CPLD的出租車計價系統(tǒng)的設計。該計價器通過數(shù)碼管和按鍵可以顯示時間、單價、起步價、里程數(shù),并用掃描電路顯示所走路程需要的費用。本論文主要工作是軟件設計,它主要包括四個子模塊:按鍵模塊,控制模塊,譯碼模塊和顯示模塊。設計時采用VHDL硬件描述語言,通過軟件Quartus II對本設計進行設計,下載到芯片EPM7128SLC84-l5中,從而實現(xiàn)計價器的計費功能。關鍵詞:CPLD 出租車計價器 VHDL QuartusII

目 錄 1 緒論.1 1.1 出租車計價器的發(fā)展概況.1 1.2 出租車行業(yè)的管理現(xiàn)狀.1 2 出租車計價器系統(tǒng)硬件結(jié)構.2 2.1 硬件系統(tǒng)概述.2 2.1.1 EDA概述.2 2.1.2 CPLD器件MAX7000系列.2 2.1.3 霍爾傳感器.3 2.2 VHDL硬件描述語言.4 2.2.1 VHDL概述.4 2.2.2 VHDL語言基礎知識.4 3 軟件編程環(huán)境.5 3.1 QuartusII軟件的特點.6 3.2 QuartusII軟件的集成工具.6 3.3 設計輸入.7 3.4 綜合.7 3.5 布局布線.8 3.6 仿真.8 3.7 編程與配置.8 4 出租車計價器的軟件設計過程.9 4.1 出租車計費器工作原理.9 4.2 基本的設計思想.9 4.2.1 控制模塊.9 4.2.2 譯碼顯示模塊.12 4.3 設計的整個過程.15 4.4 各個模塊的仿真結(jié)果.22 4.4.1 控制模塊仿真結(jié)果.22 4.4.2 譯碼顯示模塊仿真結(jié)果.23 5 出租車計價器存在的問題和改進工作.25 5.1 出租車計價器存在的問題.25 5.2 改進方法.25 結(jié)束語.25 參考文獻.27 英文摘要.28 附錄一 出租車計價器軟件設計的流程圖.29 附錄二 軟件設計的源代碼.30 致謝.37 仲愷農(nóng)業(yè)工程學院畢業(yè)設計成績評定表..38

緒論

1.1 出租車計價器的發(fā)展概況

出租車行業(yè)在我國是八十年代初興起的一項新興行業(yè),隨著我國國民經(jīng)濟的高速發(fā)展,出租汽車已成為城市公共交通的重要組成部分[1]。多年來國內(nèi)普遍使用的計價器只具備單一的計量功能。目前全世界的計價器中有90%為臺灣所生產(chǎn)。現(xiàn)今我國生產(chǎn)計價器的企業(yè)有上百家,主要是集中在北京,上海,沈陽和廣州等地。

我國第一家生產(chǎn)計價器的是重慶市起重機廠,最早的計價器全部采用機械齒輪構,只能完成簡單的計程功能,可以說,早期的計價器就是個里程表。隨著科學技術的發(fā)展,產(chǎn)生了第二代計價器。它采用了手搖計算機與機械結(jié)構相結(jié)合的方式,實現(xiàn)了半機械半電子化。此時它在計程的同時還可完成計價的工作。大規(guī)模集成電路的發(fā)展又產(chǎn)生了第三代計價器,也就是全電子化的計價器。它的功能也在不斷完善。出租汽車計價器是一種專用的計量儀器,它安裝在出租汽車上,能連續(xù)累加,并指示出行程中任一時刻乘客應付費用的總數(shù),其金額值是計程和計時時間的函數(shù)[2]。出租車計價器在最初使用時具備的主要功能是根據(jù)行駛里程計價,要求精度高,可靠性好。隨著電子技術的發(fā)展以及對計價器的不斷改進和完善,便產(chǎn)生了諸多的附加功能。例如:(1)LED顯示功能,數(shù)碼管的使用讓計價器實現(xiàn)多屏顯示的功能,可同時顯示各項營運數(shù)據(jù),使乘客一目了然;(2)永久時鐘功能,在非營運狀態(tài)下,日歷時鐘芯片的使用使計價器可以顯示永久時鐘;(3)存儲功能,可存儲多項營運數(shù)據(jù),便于查詢。新型數(shù)據(jù)存儲器的應用使得計價器的營運數(shù)據(jù)在掉電情況下還可以保存10年。1.2 出租車行業(yè)的管理現(xiàn)狀

隨著我國國民經(jīng)濟的高速發(fā)展,出租汽車已成為城市公共交通的重要組成部分。近幾年來,出租車汽車行業(yè)在各地蓬勃發(fā)展,出租車經(jīng)營也從無序狀態(tài)逐漸走入正軌。出租車計價器成為出租車運營中必配的、可靠的計量器具,其使用準確性直接關系到經(jīng)營者與乘客的經(jīng)濟利益。但在實際運營中,總有不少經(jīng)營者或乘客反映相同路徑,不同的出租車的收費有較大的出入[3]。本課題采用CPLD芯片為核心,用較少的硬件和適當?shù)能浖嗷ヅ浜现饕鉀Q以下問題:

(1)不同地區(qū)的計費方式存在差異;即使同一地區(qū),不同車型的出租車,其計費方式也有差別;另一方面,出租車還面臨幾年一次的調(diào)價或調(diào)整計費方式等問題。因此,所設計的計費器不僅要能滿足不同地區(qū)的要求,而且計費方式的調(diào)整也應當很方便。

(2)由于個別地區(qū)對計費器有特殊要求,有時必須修改軟件;另外,計費器還面臨軟件的升級;因而,所設計的計費器應能很方便地重新編程。

(3)計費器必須要有防作弊功能,能有效防止司機作弊;同時要防止計費器在營運過程中死機[4]。本課題實現(xiàn)上述設計要求,且靈活性強,可以通過軟件編程來完成更多的附加功能,具有一定的應用價值。由于科技的發(fā)展,芯片中的數(shù)據(jù)可保持十年不變,且芯片體積小,容量大,因此這種方式是可行的,具有十分重要的現(xiàn)實意義和廣闊的市場前景。

第二篇:出租車計價器設計范文

平頂山工業(yè)職業(yè)技術學院

目錄

目錄......................................................................................................................................................1 前言......................................................................................................................................................2 第一章 系統(tǒng)工作原理........................................................................................................................2 1.1 功能說明..............................................................................................................................2 1.2 基本原理..............................................................................................................................2 第二章 硬件設計...............................................................................................................................3 2.1 單片機最小系統(tǒng)單元..........................................................................................................3 2.2 A44E霍爾傳感器檢測單元................................................................................................4 2.3 AT24C01存儲單元..............................................................................................................6 2.4 鍵盤調(diào)整單元......................................................................................................................7 2.5 顯示單元..............................................................................................................................8 第三章 軟件設計...............................................................................................................................8 3.1 系統(tǒng)主程序..........................................................................................................................8 3.2 中斷程序..............................................................................................................................9 3.2.1 里程計數(shù)中斷程序...................................................................................................9 3.2.2 中途等待中斷程序.................................................................................................10 3.3 計算程序............................................................................................................................10 3.4 顯示程序............................................................................................................................10 3.5 鍵盤程序............................................................................................................................10 第四章 總結(jié).....................................................................................................................................11 參考文獻............................................................................................................................................12

平頂山工業(yè)職業(yè)技術學院

算出行駛公里數(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é)構圖如圖1。

圖1 系統(tǒng)結(jié)構圖

第二章 硬件設計

2.1 單片機最小系統(tǒng)單元

主控機系統(tǒng)采用了Atmel 公司生產(chǎn)的 AT89S52單片機,它含有256 字節(jié)數(shù)據(jù)存儲器,內(nèi)置8K 的電可擦除FLASH ROM,可重復編程,大小滿足主控機軟件系統(tǒng)設計,所以不必再擴展程序存儲器。復位電路和晶振電路是AT89S52 工作所需

平頂山工業(yè)職業(yè)技術學院 的最簡外圍電路。單片機最小系統(tǒng)電路圖如圖2所示。

圖2 單片機最小系統(tǒng)圖

AT89S52 的復位端是一個史密特觸發(fā)輸入,高電平有效。RST端若由低電平上升到高電平并持續(xù)2個周期,系統(tǒng)將實現(xiàn)一次復位操作。在復位電路中,按一下復位開關就使在RST端出現(xiàn)一段時間的高電平,外接11.0592M 晶振和兩個30pF 電容組成系統(tǒng)的內(nèi)部時鐘電路。

2.2 A44E霍爾傳感器檢測單元

A44E 屬于開關型的霍爾器件,其工作電壓范圍比較寬(4.5~18V),其輸出的信號符合TTL電平標準,可以直接接到單片機的IO 端口上,而且其最高檢測頻率可達到1MHZ。

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)為關。這樣兩次電壓變換,使霍爾開關完成了一次開關動作。A44E霍爾傳感器原理如圖3所示。

平頂山工業(yè)職業(yè)技術學院

圖3 A44E霍爾傳感器原理

里程計算是通過安裝在車輪上的霍爾傳感器檢測到的脈沖信號,送到單片機產(chǎn)生中斷,單片機再根據(jù)程序設定,計算出里程。其原理如圖4所示。

圖4 傳感器測距示意圖

本系統(tǒng)選擇了將A44E的脈沖輸出口接到P3.3口外部中斷1作為信號的輸入端(這樣可以減少程序設計的麻煩),車輪每轉(zhuǎn)一圈(設車輪的周長是1米),霍爾開關就檢測并輸出信號,引起單片機的中斷,對脈沖計數(shù),當計數(shù)達到1000次時,即1公里,單片機就控制將金額自動增加,如圖5。

圖5 A44E霍爾元件接線圖

平頂山工業(yè)職業(yè)技術學院

2.3 AT24C01存儲單元

存儲單元的作用是在電源斷開的時候,存儲當前設定的單價信息。AT24C01 是Ateml公司的1KB的電可擦除存儲芯片,采用兩線串行的總線和單片機通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10uA(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8 腳的DIP 封裝,使用方便。AT24C02芯片引腳配置如圖6所示。

存儲單元電路連接如圖7所示。

圖 7 存儲單元電路原理圖

圖中R4、R5 是上拉電阻,其作用是減少AT24C01 的靜態(tài)功耗。由于AT24C01的數(shù)據(jù)線和地址線是復用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(時鐘脈沖)和SDA(數(shù)據(jù)/地址)與單片機P2.2和P2.3口連接,進行傳送數(shù)據(jù)。

平頂山工業(yè)職業(yè)技術學院

每當設定一次單價,系統(tǒng)就自動調(diào)用存儲程序,將單價信息保存在芯片內(nèi);當系統(tǒng)重新上電的時候,自動調(diào)用讀存儲器程序,將存儲器內(nèi)的單價等信息,讀到緩存單元中,供主程序使用。

2.4 鍵盤調(diào)整單元

當單價等信息需要進行修改時,就要用到鍵盤進行修改。由于調(diào)節(jié)信息不多,故采用4個獨立鍵盤即可,分別實現(xiàn)清零、切換、增大、減小和功能等作用。電路原理如圖8所示。

圖8 鍵盤調(diào)整單元接線圖

S1:接P1.0口,對上一次的計費進行清零,為下次載客準備

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次,返回。

平頂山工業(yè)職業(yè)技術學院

2.5 顯示單元

顯示單元由7個8段共陽數(shù)碼管組成,采用動態(tài)掃描進行顯示。前三個數(shù)碼管分別接P3.0、P3.1和P3.2,用于顯示總金額;中間兩個分別接P3.4和P3.5,用于顯示里程;后邊兩個分別接P3.6和P3.7,用于顯示單價。電路如圖9所示。

圖9 數(shù)碼管顯示圖

第三章 軟件設計

3.1 系統(tǒng)主程序

在主程序模塊中,需要完成對各參量和接口的初始化、出租車起價和單價的初始化以及中斷、計算、循環(huán)等工作。另外,在主程序模塊中還需要設置啟動/清除標志寄存器、里程寄存器和價格寄存器,并對它們進行初始化。然后,主程序?qū)⒏鶕?jù)各標志寄存器的內(nèi)容,分別完成啟動、清除、計程和計價等不同的操作。當汽車運行起來時,就啟動計價,根據(jù)里程寄存器中的內(nèi)容計算和判斷行駛里程是否已超過起步價公里數(shù)。若已超過,則根據(jù)里程值、每公里的單價數(shù)和起步價數(shù)來計算出當前的總金額,并將結(jié)果存于總金額寄存器中;中途等待時,無脈沖輸入,不產(chǎn)生中斷,當時間超過等待設定值時,開始進行計時,并把等待價格加到總金額里,然后將總金額、里程和單價送數(shù)碼管顯示出來。程序流程如圖10所示。

平頂山工業(yè)職業(yè)技術學院

圖10 主程序流程圖

圖11 計算程序流程圖

3.2 中斷程序

3.2.1 里程計數(shù)中斷程序

每當霍爾傳感器輸出一個低電平信號就使單片機中斷一次,當里程計數(shù)器對里程脈沖計滿1000次時,進入里程計數(shù)中斷服務程序中,里程變量加一。主函數(shù)中總金額也相應地變化。

101112-

第三篇:出租車計價器

基于單片機的出租車計價器設計

摘要

出租車計價器的數(shù)字系統(tǒng)的設計正是基于一些專用的芯片,才發(fā)揮其有效特性,從而實現(xiàn)出租車的計價功能。此數(shù)字系統(tǒng)主要分為三個單元,即里程計數(shù)及顯示單元、價格計數(shù)及顯示單元、脈沖產(chǎn)生。本設計是一個基于單片機AT89C51的出租車自動計費設計,附有復位電路,時鐘電路等。關鍵詞:出租車計費器;單片機;控制

Abstract Taximeter design digital system is based on some special chip, to play their effective characteristics, thus realizing the taxi valuation function.This system is mainly divided into there modules, namely the mileage counting and display unit, and display unit price counting, pulsing.The design is based on a single chip AT89C51taxis design, a reset circuit, clock circuit.Keywords:taximeter,a single-chip microcomputer,control

1引言

1.1 設計目的

近幾年來,出租汽車行業(yè)在各地得以蓬勃發(fā)展,但采用模擬電路和數(shù)字電路設計的計價器整體電路的規(guī)模較大,用到的器件多,造成故障率高,難調(diào)試。而采用單片機進行的設計,相對來說功能強大,用較少的硬件和適當?shù)能浖嗷ヅ浜峡梢院苋菀椎貙崿F(xiàn)設計要求,且靈活性強。

1.2 功能要求

(1)用前4位數(shù)碼管實時顯示里程數(shù),單位為千米,最后一位為小數(shù)位;用后4位數(shù)碼管時時顯示金額數(shù),單位為元,最后一位為小數(shù)位。

(2)規(guī)定出租車里程小于2千米收費5元,超過2千米收費為8*(way-20)/5。

1.3 設計方法

本設計采用AT89C51單片機為主控器,并用頻率信號發(fā)生器模擬車速,利用AT89C51的定時器工作在方式1下定時實現(xiàn)對出租車的計價設計,輸出采用共陰極的集成8位7段數(shù)碼顯示管。設計方案及原理

2.1 設計方案

采用AT89C51單片機為主控器,并用頻率信號發(fā)生器模擬車速,利用AT89C51的定時器/定時器T1工作在方式1下定時實現(xiàn)對出租車的計價設計,輸出采用共陰極的集成8位7段數(shù)碼顯示管。本電路設計的計價器不但能實現(xiàn)基本的計價,而且

單片機原理及系統(tǒng)課程設計報告

還能根據(jù)里程來調(diào)節(jié)單價。

2.2 設計原理

出租車計價是根據(jù)車所行駛的路程以及乘客乘車的里程綜合決定的。出租車行駛總路程可以通過車輪的周長乘車輪旋轉(zhuǎn)圈數(shù)得到。即可計算得到車輪旋轉(zhuǎn)幾周出租車能行駛一公里的路程。通過計數(shù)接收到的脈沖個數(shù),計算出當前所行駛的路程。同時,通過數(shù)碼管顯示當前的行駛里程和需支付的車費。出租車計價器用于記錄里程、起步公里數(shù)與價格的關系。模擬出租車計價器能根據(jù)總里程數(shù)、起步公里數(shù)的情況作出相應報價等。這個系統(tǒng)以AT89C51單片機為主控器,單片機的計數(shù)器/定時器T1工作在方式1下來對外部脈沖計數(shù),最后通過集成的8位7段LED數(shù)碼管顯示里程數(shù)和價錢。總體模塊框圖如圖1所示。

總金額顯示單價顯示AT89C51脈沖產(chǎn)生動態(tài)掃描數(shù)碼管顯示

圖1 總體框圖 硬件設計

對于AT89C51的計數(shù)器/定時器T1,通過對寄存器TCON的設置,即使它的M1M0=01,計數(shù)器/定時器T1工作在方式1下,構成16位計數(shù)器/定時器。此時TH0、TL0都是8位加法計數(shù)器。此設計中,T1為計數(shù)工作方式,計數(shù)范圍為1~2^16=1~65536(個外部脈沖)。當計數(shù)溢出時則置位并申請中斷,進入中斷服務 執(zhí)行中斷程序。

通過74HC138接P20、P21、P22輸出來對8位7段的智能掃描LED進行段選,并且通過P1口對LED進行位選,最后將結(jié)果顯示在LED上。硬件設計圖如圖2所示。

74HC138是三八譯碼器,在工作之前,使74HC138的使能端有效,再使74HC138的A、B、C接P20、P21、P22的輸出達到對LED位選線的控制,使相應的位顯示相應的結(jié)果。硬件總設計圖如圖2所示。

第四篇:基于單片機的出租車計價器設計報告

河南理工大學

《單片機應用與仿真訓練》設計報告 出租車計價器設計

姓名學號: 專業(yè)班級: 指導老師: 所在學院: 2012年6月25日 摘要

本設計用直流電機轉(zhuǎn)動模擬出租車車輪轉(zhuǎn)動,實現(xiàn)出租車多功能的計價功能。設計采用AT89S52單片機為主控芯片,用光電對管檢測電機轉(zhuǎn)盤轉(zhuǎn)速,采用24C02芯片為系統(tǒng)在掉電時路程、錢數(shù)等重要信息提供存儲保護,采用兩個四位8段共陰數(shù)碼管顯示里程、總價格和等待時間等信息。本設計可以實現(xiàn)單雙程設置、系統(tǒng)暫停、空車指示、信息顯示、掉電保護等功能。

出租車計價是根據(jù)車所行駛的路程以及乘客乘車的方式綜合決定的。出租車行駛總路程可以通過車輪的周長乘車輪旋轉(zhuǎn)圈數(shù)得到。即可計算得到車輪旋轉(zhuǎn)幾周出租車能行駛一公里的路程。使用光電對管能方便地計量車輪旋轉(zhuǎn)的圈數(shù),輸出的脈沖信號被接入到AT89S52單片機系統(tǒng)中,通過計算接收到的脈沖個數(shù),計算出當前所行駛的路程,并且可以計算實時的速度。與此同時,根據(jù)不同的收費標準計算收費。通過鍵盤能夠?qū)崿F(xiàn)往返設置,啟動、暫停、停止計價器、設置單返程等。

關鍵字:出租車計價器,AT89S52,24C02,光電對管 Abstract This design with DC motor to rotate the analog taxi wheels turning, multi-purpose taxi pricing function.Design using AT89S52 MCU for master chip with a photoelectric tube test motor turntable speed, AT24C02 chip to make the system power-down distance, money and other important information on the storage protection, the use of two four-segment common cathode digital display tube mileage, the total price and waiting time information.This design enables single and double-way set, system halted, empty instructions, information display, power-down protection and other functions.The taxi meter according to the distance traveled by the vehicle and passengers ride the decision.Taxi driving the total distance by the circumference of the wheel drive wheel rotation laps.Can be calculated by the wheel rotation a few weeks a taxi to travel one kilometer away.The use of opto-the number of turns of the tube can be easily measured wheel rotation, the output pulse signal is connected to the microcontroller AT89S52 system, calculated by computing the number of pulses received, the current driving distance, and can calculate the real-time speed.At the same time, the charge will be calculated according to the different charges.Able to achieve a round trip via the keyboard settings, start, pause, stop the meter, set the single return.Key words: Meter,AT89S52,AT24C02,Photoelectric tube 目錄 1 概述 1 2 系統(tǒng)總體方案及硬件設計 2 2.1系統(tǒng)總體方案 2 2.2 硬件電路設計單元 2.2.1 電源電路單元 2 2.2.2 系統(tǒng)控制單元 3 2.2.3 驅(qū)動電路單元 6 2.2.4 信號檢測單元 7 2.2.5 顯示單元 8 2.2.6 數(shù)據(jù)存儲單元 9 3 軟件設計 10 3.1 軟件設計流程圖 10 3.2 計算模塊 11 3.3 鍵盤掃描 11 3.4 顯示程序 11 3.5 PWM波的生成 11 3.6 速度檢測 12 3.7 程序源代碼 12 4 Proteus軟件仿真 13 5 課程設計體會 14 6 主要參考文獻 16 致謝 17 附1 程序源代碼 18 附2 系統(tǒng)原理圖 33 1 概述

出租車計價器是乘客與司機雙方的交易準則,它是出租車行業(yè)發(fā)展的重要標志。它關系著交易雙方的利益,具有良好性能的計價器無論是對廣大出租車司機朋友還是乘客來說都是很必要的。因此,汽車計價器的研究也是十分有應用價值和現(xiàn)實意義的。

出租車計價是根據(jù)車所行駛的路程以及乘客乘車的方式綜合決定的。出租車行駛總路程可以通過車輪的周長乘車輪旋轉(zhuǎn)圈數(shù)得到。即可計算得到車輪旋轉(zhuǎn)幾周出租車能行駛一公里的路程。使用霍爾傳感器方便地計量車輪旋轉(zhuǎn)的圈數(shù)。輸出的脈沖信號被接入到AT89S52單片機系統(tǒng)中,通過計算接收到的脈沖個數(shù),計算出當前所行駛的路程,并且可以計算實時的速度,在速度低于5公里每小時是進入等待計費。于此同時,根據(jù)不同的收費標準,通過選擇相應的起步價、單價等收費標準進行計算。通過鍵盤能夠?qū)崿F(xiàn)往返設置,啟動、暫停、停止計價器以及切換顯示當前的行駛里程和需支付的車費。

本設計硬件電路分為六個單元:電源電路單元,系統(tǒng)控制單元,驅(qū)動電路單元,信號檢測單元,顯示單元和數(shù)據(jù)存儲單元。軟件系統(tǒng)分為五個大的模塊為:總初始化模塊,按鍵掃描模塊,中斷與定時模塊,數(shù)據(jù)計算模塊,數(shù)碼管顯示模塊。其中,鍵盤掃描和數(shù)碼管顯示采用查詢方式,轉(zhuǎn)速信號接收與等待記時采用中斷方式。這些軟硬件系統(tǒng)構成了最終的設計。系統(tǒng)總體方案及硬件設計 2.1系統(tǒng)總體方案 本設計以AT89S52單片機為中央控制芯片,通過按鍵控制實現(xiàn)計價器的啟動、停止、暫停、等待時間顯示、單返程等功能;因為單片機的I/O無法直接驅(qū)動直流電機轉(zhuǎn)動,所以通過L298N為驅(qū)動芯片驅(qū)動電路來驅(qū)動直流電機轉(zhuǎn)動;通過光電對管檢測直流電機的轉(zhuǎn)速,并利用電壓比較器將整理后的信號送給給單片機;通過數(shù)碼管來顯示里程、總價格、等待時間等信息;通過AT24C02來存儲信息,防止系統(tǒng)掉電信息丟失。系統(tǒng)設計總框圖,如圖2.1所示。

圖2.1系統(tǒng)設計總框圖 2.2 硬件電路設計單元

本設計硬件電路分為六個單元:電源電路單元,系統(tǒng)控制單元,驅(qū)動電路單元,信號檢測單元,顯示單元和數(shù)據(jù)存儲單元。

2.2.1 電源電路單元

電源是由7805芯片,變壓器和整流橋組成的一個5V穩(wěn)壓電源。變壓器將220V交流電轉(zhuǎn)變?yōu)?2V交流電,經(jīng)過整流橋和濾波電容后變?yōu)橹绷?經(jīng)過7805芯片后輸出5V穩(wěn)壓電源。電源電路原理圖,如圖2.2所示。

圖2.2電源電路原理圖 2.2.2 系統(tǒng)控制單元

系統(tǒng)控制單元主要有單片機最小系統(tǒng)和獨立按鍵組成。2.2.2.1 單片機最小系統(tǒng)

單片機采用了Atmel 公司生產(chǎn)的 AT89S52單片機,它含有256 字節(jié)數(shù)據(jù)存儲器,內(nèi)置8K 的電可擦除FLASH ROM,可重復編程,大小滿足主控機軟件系統(tǒng)設計。

AT89S52芯片的主要引腳功能分別為: VCC 電源電壓。GND 接地。

RST 復位輸入。當RST變?yōu)楦唠娖讲⒈3?個機器周期時,將使單片機復位。WDT溢出將使該引腳輸出高電平,設置SFR AUXR的DISRTO位(地址8EH)可打開或關閉該功能。DISKRTO位缺省為RESET輸出高電平打開狀態(tài)。

ALE/PROG: 當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。

XTAL1 反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2 來自反向振蕩放大器的輸出。

P0口:一組8位漏極開路型雙向I/O口。也即地址/數(shù)據(jù)總線復用口。作為輸出口用時,每位能驅(qū)動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復用,在訪問期間激活內(nèi)部上拉電阻。在Flash編程時,P0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻。

P1口:一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。Flash編程和程序校驗期間,P1接收低8位地址。

P2口:一個帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器時,P2口線上的內(nèi)容在整個訪問期間不改變。Flash編程和程序校驗期間,P2亦接收低8位地址。

P3口:一個帶內(nèi)部上拉電阻的8位雙向I/O口。P3的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫“1”時,它們被內(nèi)部的上拉電阻把拉到高電并可作輸入端口。作輸入端口使用時,被外部拉低的P3口將用上拉電阻輸出電流。P3口除了作為一般的I/O口線外,還作特殊功能口。P3口的第二功能引腳分配如下:

P3.0:RXD,串行通信輸入。P3.1:TXD,串行通信輸出。P3.2:INT0,外部中斷0輸入。P3.3:INT1,外部中斷1輸入。P3.4:T0,計時計數(shù)器0輸入。P3.5:T1,計時計數(shù)器1輸入。P3.6:WR:外部數(shù)據(jù)存儲器的寫入信號。P3.7:RD,外部數(shù)據(jù)存儲器的讀取信號。單片機最小系統(tǒng)原理圖,如圖2.3所示。圖2.3 單片機最小系統(tǒng)原理圖 2.2.2.2 獨立按鍵

本設計按照功能要求設置了六個按鍵。按鍵接線圖,如圖2.4所示。按鍵功能分別為:

key0:系統(tǒng)啟動,用來啟動計價器,使計價器開始工作; key1:系統(tǒng)停止/復位,用來關閉計價器,是計價器停止工作并復位;

key2:單程雙程,用來設置是單程計費還是往返計費;

key3:系統(tǒng)暫停,用來將整個計費系統(tǒng)暫停; key4:等待時間顯示,當按下不放時 圖2.4按鍵接線圖

數(shù)碼管為顯示等待的時間。

Key5:調(diào)速按鈕,用來調(diào)整電機的轉(zhuǎn)速,使測試時可控制電機轉(zhuǎn)速。2.2.3 驅(qū)動電路單元

LM298N是SGS公司的產(chǎn)品,內(nèi)部包含4通道邏輯驅(qū)動電路。是一種二相和四相電機的專用驅(qū)動器,即內(nèi)含二個H橋的高電壓大電流雙全橋式驅(qū)動器,接收標準TTL邏輯電平信號,可驅(qū)動46V、2A一下的電機。LM298N的管腳圖,如圖2.5所示。通過單片機的I/O輸入改變芯片控制端的電平,即可以對電機進行正反轉(zhuǎn),停止的操作,LM298N的邏輯功能表,如圖2.6所示。

圖2.5 LM298N的管腳圖 圖2.6 LM298N的邏輯功能表

LM298N有兩路電源分別為邏輯電源和動力電源,圖中6V為邏輯電源,12V為動力電源。J4接入邏輯電源,J6接入動力電源,J1與J2分別為單片機控制兩個電機的輸入端,J3與J5分別與兩個電極的正負極相連。ENA與ENB直接接入AVR單片機的PWM輸出口;控制電機的正反轉(zhuǎn)通過J1與J2兩個接口,控制電機的轉(zhuǎn)速的通過ENA和ENB的口輸入的PWM波的占空比。由于我們使用的電機是線圈式的,在從運行狀態(tài)突然轉(zhuǎn)換到停止狀態(tài)和從順時針狀態(tài)突然轉(zhuǎn)換到逆時針狀態(tài)時會形成很大的反向電流,在電路中加入二極管的作用就是在產(chǎn)生反向電流的時候進行泄流,保護芯片的安全。LM298N電機驅(qū)動原理圖,如圖2.7所示。

圖2.7 LM298N電機驅(qū)動原理圖 2.2.4 信號檢測單元

電機轉(zhuǎn)速的檢測模塊是由對射式光電傳感器及其配套電路組成的,對射式光電傳感器原理圖,如圖2.8所示。

對射式光電傳感器由紅外發(fā)光二極管與光敏三極管組成,主要檢測發(fā)射管與接收管之間有無物體存在。如上圖所示,當發(fā)射管與接收管之間沒有物體存在時,光敏三極管接收到紅外光后導通,out輸出低電平;當發(fā)射管與接收管之間有物體存在時,光敏三極管無法接收到足夠的強的紅外光所以截止,out輸出高電平。

但是上述電路存在缺陷,當直流電機高速旋轉(zhuǎn)時,out輸出的信號就容易失真,很難被單片機檢測識別。為了能夠讓單片機準確識別光電傳感器輸出地信號,需在傳感器的輸出端連接一個比較器。

電壓比較器可以看作是放大倍數(shù)接近“無窮大”的運算放大器。電壓比較器的功能:比較兩個電壓的大小 用輸出電壓的高或低電平,表示兩個輸入電壓的大小關系 :當”+”輸入端電壓高于”-”輸入端時,電壓比較器輸出為高電平;當”+”輸入端電壓低于”-”輸入端時,電壓比較器輸出為低電平。LM393是雙電壓比較器集成電路

圖2.8對射式光電傳感器原理圖 圖2.9 LM393引腳圖

速度檢測電路原理圖,如圖2.10所示。由原理圖可知, 當發(fā)射管與接收管之間沒有物體存在時,光敏三極管接收到紅外光后導通,out輸出高電平;當發(fā)射管與接收管之間有物體存在時,光敏三極管無法接收到足夠的強的紅外光所以截止,out輸出低電平。經(jīng)過整理后的電路能輸出比較標準的高低電平信號,很容易被單片機識別。圖2.10 速度檢測電路原理圖 2.2.5 顯示單元 2.2.5.1 數(shù)碼管顯示

顯示單元采用兩個四位8段數(shù)碼管顯示信息,一組顯示金額,另一組顯示路程配合按鍵來切換顯示。用鎖存器來驅(qū)動數(shù)碼管顯示,數(shù)據(jù)位連接單片機P0口,片選端和段選端分別用單片機的P2.6和P2.7端口。如圖2.11所示為數(shù)碼管顯示接線圖。

圖2.11 數(shù)碼管顯示接線圖 2.2.5.1 LED指示燈

本設計按照功能要求設置了五個LED燈。接線圖如圖2.12所示。各個LED燈的功能分別為:

DS0:等待指示燈,車速小于5Km/h時指示燈亮; DS1:暫停指示燈,當暫停鍵按下,計價器暫停計價時亮; DS2:空車指示,當計價器停止工作也就是空車時,此指示燈亮; DS3:啟動指示燈,當按下啟動鍵,計價器開始計價時亮; DS4:單雙程指示燈,默認為單程,當選 圖2.12 LED指示燈接線圖

擇雙程時亮。2.2.6 數(shù)據(jù)存儲單元

本設計使用了24C02作為外部存儲芯片。24C02是串行2K的EEPROM,是基于I2C-BUS 的存儲器件,遵循二線制協(xié)議,具有接口方便,體積小,數(shù)據(jù)掉電不丟失等特點。計價器能將里程和總價格實時的存儲到24C02中,當計價器因掉電停止工作,24C02會存儲掉電前一刻的數(shù)據(jù),使系統(tǒng)從新上電時能夠恢復里程和總價格。當計價器是被手動正常停止時,將會對24C02相應的地址寫0,以使下次啟動時,計價器從初始化數(shù)據(jù)開始計價。24C02的接線圖,如圖2.13所示。

圖2.13 24C02的接線圖 3 軟件設計 3.1 軟件設計流程圖

軟件系統(tǒng)可以大致分為幾個大的模塊為:初始化模塊,按鍵掃描模塊,中斷與定時模塊,數(shù)據(jù)計算模塊,數(shù)碼管顯示模塊,IIC總線通信模塊等。其中,鍵盤掃描和數(shù)碼管顯示采用查詢方式,轉(zhuǎn)速信號接收采用中斷方式。軟件設計流程圖,如圖3.1所示。

圖3.1 軟件設計流程圖 3.2 計算模塊

計算程序根據(jù)里程數(shù)分別進入不同的計算公式。如果里程大于3公里,則執(zhí)行公式:總金額 起步價+(里程-3)*單價+等待時間*等待單價;否則,執(zhí)行公式:總金額 起步價+等待時間*等待單價。

對于速度的判斷及等待時間的記錄采用定時器零中斷,設定10ms一個中斷,然后判斷車速,小于5公里/小時時,則開始記錄等待時間。

3.3 鍵盤掃描

鍵盤掃描才用查詢方式,當有按鍵按下時就對相應的標志進行取反,或調(diào)用其他子函數(shù),在消抖過程中,這里將數(shù)碼管顯示程序潛入以保證顯示的穩(wěn)定。

3.4 顯示程序

顯示程序利用主函數(shù)內(nèi)的循環(huán),實現(xiàn)動態(tài)掃描顯示,同時根據(jù)數(shù)碼管余輝和人眼暫留現(xiàn)象,即可實現(xiàn)顯示

3.5 PWM波的生成

在AT89系列單片機中,由于沒有PWM控制器,要輸出PWM信號就需通過軟件的方式在I/O口上模擬PWM的輸出。PWM軟件設計一般可以利用軟件延時的方式或利用單片機內(nèi)部的定時器/計數(shù)器作為時鐘信號。

本設計是利用軟件延時獲得PWM信號的,在軟件中設計一個基準的軟件延時程序,通過反復調(diào)用這個延時程序,從而獲得不同的時間長度,為了電機速度穩(wěn)定,我們選擇使用同周期,不同占空比的PWM進行調(diào)速。

若頻率為1kHZ,則每個方波的周期為1ms,占空比從0變化到100%,最小的變化量為10%,即高電平維持時間的最小值是100us,所以只要設計出100us的延時程序作為基準即可。具體程序如下: #define uchar unsigned char sbit PWM P3^4;//定義PWM輸出口為P3.4 void PWMout uchar q //生成同周期的PWM波

PWM 1;delay q;PWM 0;delay 10-q;

void delay uchar a //100us延時函數(shù)

uchar b;for;a 0;a--

for b 29;b 0;b--

_nop_;

_nop_;

3.6 速度檢測

經(jīng)檢測模塊得到的信號輸入到單片機內(nèi),因為輸入的是低電平信號,所以我把信號輸入到了中斷0端口,每接收一個低電平信號程序就會進入中斷函數(shù)里面,中斷0函數(shù)如下: void int0 interrupt 0

sudu++;

這樣就完成了速度測量。3.7 程序源代碼 程序源代碼見附錄2。4 Proteus軟件仿真

將整個系統(tǒng)原理圖在Proteus連接好后,下載如編寫好的程序仿真如下:如圖4.1顯示的狀態(tài)設置為:單程,車速大于5km/h,當路程等于40.4km時的顯示情況。

圖4.1 Proteus軟件仿真圖 5 課程設計體會

本次單片機課程設計,我們選的題目是出租車計價器的設計。通過仿真、焊接、調(diào)試等不斷的努力,我們的出租車計價器實現(xiàn)了基本要求的全部功能和發(fā)揮部分的部分功能。比如能顯示里程、金額數(shù)、總等待時間,可設定單程價格和雙程價格,按暫停鍵,計價器可暫停計價,按查詢鍵,可顯示總等待時間,空車指示、信息存儲等。

經(jīng)過這些天有關于出租車計價器的課程設計,使我們對MCS-51系列單片機的應用有了更深的了解。從前的學習過程過于浮淺,只是流于表面的理解,而現(xiàn)在要做課程設計,就不得不要求我們對所用到的知識有更深層次的理解。因為課程設計的內(nèi)容比及書本中的理論知識而言,更接近于現(xiàn)實生活,而理論到實踐的轉(zhuǎn)化往往是一個艱難的過程,它猶如一只攔路虎,橫更在我們的面前。但是我們毫不畏懼,因為我們相信我們能行。

事情并不總是一帆風順的,我們總會遇到困難和險阻。在此次課程設計的過程中,我們碰到了許多的問題。比如,對于數(shù)碼管動態(tài)掃描顯示和鍵盤的延時防抖的綜合編程不能較好地解決;對于代碼的前后順序及調(diào)用掌握得還不夠好;對于一些相關的應用軟件 KEIL、PROTEUS、Altium esigner 沒能熟練掌握。當然,問題并不可怕,只要我們懷著一顆不服輸?shù)男模峦鼻埃敲磩倮麑⒉粫x我們太遠。通過上網(wǎng)查找資料、與同學老師交流、小組成員間的討論、不斷實踐與探索,我們總能找到解決問題的方法,最后得到良好的效果。

通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。

總之,本次課程設計讓我們更加深刻的掌握了MCS-51系列單片機的工作原理和編程語言,更加熟練的掌握了KEIL、PROTEUS、Altium designer等專業(yè)軟件的使用,熟悉了產(chǎn)品開發(fā)的大致流程,深刻的體會到了團隊協(xié)作精神的重要性,培養(yǎng)了我們發(fā)現(xiàn)問題、獨立思考問題、多種途徑解決問題的能力,鍛煉并提高了了我們的動手實踐能力和理論與實踐相結(jié)合的能力。

我以后做一個動手能力強的大學生。http://www.tmdps.cn.致謝

在課程設計即將完成之際,我想向給予我?guī)椭椭С值娜吮硎局孕牡母兄x!感謝高老師和王老師給我們提供這次難得的課程設計機會,讓我們有機會把理論

得以應用到實踐上。

感謝我們的指導老師王莉,課程設計是在老師的親切關懷和悉心指導下完成的。嚴肅的科學態(tài)度,嚴謹?shù)闹螌W精神,精益求精的工作作風,深深地感染和激勵著我。老師不僅在學業(yè)上給我以精心指導,同時還在思想、上給我以無微不至的關懷,在此謹向老師致以誠摯的謝意和崇高的敬意。我還要感謝在一起愉快的度過的同學們,正是由于你們的幫助和支持,我才能克服一個一個的困難和疑惑,直至本文的順利完成。最后,再次對關心、幫助我的老師和同學表示衷心地感謝!#include

//頭文件

#include

#include

//IIC總線通信 #include

//數(shù)碼管顯示 #define uint unsigned int

#define uchar unsigned char sbit key0 P1^0;//啟動 sbit key1 P1^1;//停止 sbit key2 P1^2;//單返程 sbit key3 P1^3;//暫停 sbit key4 P1^4;//顯示等待時間 sbit key5 P1^5;//調(diào)速 sbit led0 P2^2;//暫停指示燈 sbit led1 P2^3;//空車指示燈 sbit led2 P2^4;//啟動指示燈 sbit led3 P2^5;//雙程指示燈 sbit led4 P2^1;//等待指示燈 sbit PWM P3^4;//PWM輸出口

uchar sudu,sudu0,shi,fen,miao,shi0 12,fen0 30,miao0;uchar danfanflag 0,flag 0,speedflag 1,stopflag 0;uint licheng 0,maichong,r 0,money 0;uint t,t1,t2;uchar num1,num2,num3,num4,lichenga,lichengb,moneya,moneyb;long licheng0;void init0;//系統(tǒng)初始化函數(shù) void delay uint a;//延時函數(shù) void PWMout uchar q;//PWM產(chǎn)生函數(shù) void anjian;//按鍵掃描函數(shù) void jisuan;//路程、價錢計算函數(shù) void chuli;void main

num1 read_add 25;num2 read_add 26;delay 5;licheng num1*100+num2;licheng0 150*licheng-300*fen;init0;while 1

anjian;chuli;lichenga licheng/100;lichengb licheng%100;

write_add 25,lichenga;delay 5;write_add 26,lichengb;

void init0

TH0 0x3c;TL0 0xb0;EA 1;

//初始化

TMOD 0x01;EX0 0;IT0 1;ET0 1;TR0 1;P0 0xff;P1 0xff;P2 0xff;P3 0xfe;

void chuli

if speedflag 1 PWMout 12;else if speedflag 2 PWMout 20;else PWMout 6;if flag 1 led2 0;

led3 1;jisuan;

if key4 0

display0 shi,fen,miao;

else

display licheng,money;

if flag 2

led2 0;led3 1;display 1,2;

if flag 0

display0 shi0,fen0,miao0;led3 0;led2 1;

if danfanflag 1 led1 0;if danfanflag 0 led1 1;if stopflag 1

led0 0;

else led0 1;

void jisuan

r maichong;licheng0+ r;licheng licheng0/150+ fen/5 *10;sudu0+ r;maichong 0;if t2 10

t2 0;

sudu sudu0;

sudu0 0;

if licheng 30

money 50;else

if danfanflag 1

money 50+1.5* licheng-30;

else

money 50+2* licheng-30;

void anjian

if key0 0

EX0 1;

flag 1;

stopflag 0;

if key1 0 EX0 0;maichong 0;

licheng0 0;licheng 0;flag 0;

shi 0;

fen 0;

miao 0;write_add 25,0;delay 5;write_add 26,0;

if key2 0

delay 5;

if key2 0

if flag 1

danfanflag++;

if danfanflag 2

danfanflag 0;

while!key2;delay 5;while!key2;

if key3 0

if flag 1

EX0 0;

stopflag 1;

if key5 0

delay 5;

if key5 0

speedflag++;

if speedflag 3

speedflag 0;

while!key5;delay 5;while!key5;

void int0 interrupt 0 數(shù)

maichong++;

void timer0 interrupt 1

TH0 0x3c;TL0 0xb0;t++;t1++;t2++;if t1 20

t1 0;

miao0++;

//檢測與計定時器50ms

//

if miao0 60

miao0 0;

fen0++;

if fen0 60

fen0 0;

shi0++;

if shi0 24

shi0 0;

if sudu 50&&flag 1&&stopflag 0 led4 0;if t 20

t 0;

miao++;

if miao 60

miao 0;

fen++;

if fen 60

fen 0;

shi++;

if shi 24

shi 0;

else led4 1;

void PWMout uchar q

PWM 1;delay q;

//生成PWM波

PWM 0;delay 20-q;

IIC.h IIC通信

#define uint unsigned int

#define uchar unsigned char sbit sda P1^6;sbit scl P1^7;void delay0;;void start

sda 1;delay0;scl 1;delay0;sda 0;delay0;

void stop

sda 0;delay0;scl 1;delay0;sda 1;delay0;

void respons

uchar i;scl 1;delay0;while sda 1 && i 250 i++;scl 0;delay0;

void init

sda 1;scl 1;

void write_byte uchar date uchar i,temp;temp date;scl 0;delay0;for i 0;i 8;i++

temp temp 1;

sda CY;

delay0;

scl 1;

delay0;

scl 0;

delay0;

sda 1;

delay0;

uchar read_byte

uchar i,j,k;scl 0;delay0;sda 1;delay0;for i 0;i 8;i++

scl 1;

delay0;

j sda;

k k 1 |j;

scl 0;

delay0;

return k;

void write_add uchar address,uchar date

start;write_byte 0xa0;//器件地址;

respons;write_byte address;//存儲器地址;

respons;write_byte date;//寫數(shù)據(jù)

respons;stop;

uchar read_add uchar address

uchar date;start;write_byte 0xa0;respons;write_byte address;respons;start;write_byte 0xa1;respons;date read_byte;stop;return date;

display.h 數(shù)碼管顯示#define uint unsigned int

#define uchar unsigned char sbit dula P2^7;//端口

定義段選

sbit wela P2^6;//定義位選端口

uchar code table[]

//數(shù)碼管編碼 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;void delay uint c

//延時100us

uint a,b;for a c;a 0;a--for b 40;b 0;b--;

void display uint shu,uint shu1 //顯示函數(shù)

uchar qian,bai,shi,ge,qian1,bai1,shi1,ge1;qian shu/1000;bai shu/100%10;shi shu%100/10;ge shu%10;qian1 shu1/1000;bai1 shu1/100%10;shi1 shu1%100/10;ge1 shu1%10;dula 1;P0 table[qian];dula 0;wela 1;P0 0xfe;wela 0;delay 2;dula 1;P0 table[bai];dula 0;wela 1;P0 0xfd;wela 0;delay 2;dula 1;P0 table[shi]|0x80;dula 0;wela 1;P0 0xfb;wela 0;delay 2;dula 1;P0 table[ge];dula 0;wela 1;P0 0xf7;wela 0;delay 2;dula 1;P0 table[qian1];dula 0;wela 1;P0 0xef;wela 0;delay 2;dula 1;P0 table[bai1];dula 0;wela 1;P0 0xdf;wela 0;delay 2;dula 1;P0 table[shi1]|0x80;dula 0;wela 1;P0 0xbf;wela 0;delay 2;dula 1;P0 table[ge1];dula 0;wela 1;P0 0x7f;wela 0;delay 2;

void display0 uchar shi,uchar fen,uchar miao 示時間函數(shù)

uchar aa,bb,cc,dd,ee,ff;aa shi/10;bb shi%10;cc fen/10;

顯 // dd fen%10;ee miao/10;ff miao%10;dula 1;P0 table[aa];dula 0;wela 1;P0 0xfe;wela 0;delay 4;dula 1;P0 table[bb]|0x80;dula 0;wela 1;P0 0xfd;wela 0;delay 4;dula 1;P0 table[cc];dula 0;wela 1;P0 0xfb;wela 0;delay 3;dula 1;P0 table[dd]|0x80;dula 0;wela 1;P0 0xf7;wela 0;delay 4;dula 1;P0 table[ee];dula 0;wela 1;P0 0xef;wela 0;delay 4;dula 1;P0 table[ff];dula 0;wela 1;P0 0xdf;wela 0;delay 4;

附2 系統(tǒng)原理圖

河南理工大學本科課程設計報告河南理工大學本科課程設計報告按 鍵

AT89S52單片機 L298N驅(qū)動 數(shù)碼管顯示 信號檢測 24C02 指示燈 直 流 電 機 開始 初始化 按鍵掃描 是否啟動 結(jié)束 是否暫停

速度是否小于5Km/h 是 否

1.5元/公里 2元/公里 數(shù)碼管顯示 是否雙程 暫停計價 是 是 否

每5分鐘加1公里 是 否 查詢 處理計算

第五篇:出租車計價器 硬件課程設計

硬件課程設計報告

題目:出租車計價器

目錄

1. 引言....................................................................................................................................錯誤!未定義書簽。

1.1設計目的................................................................................................................錯誤!未定義書簽。1.2設計任務................................................................................................................錯誤!未定義書簽。1.3設計思路................................................................................................................錯誤!未定義書簽。

2.需求分析.............................................................................................................................錯誤!未定義書簽。

2.1芯片原理................................................................................................................錯誤!未定義書簽。2.1.1可編程計數(shù)器/定時器8253/8254原理.............................................................錯誤!未定義書簽。2.1.2可編程外圍接口芯片8255原理.......................................................................錯誤!未定義書簽。2.1.3 12864液晶顯示器ST7920原理........................................................................錯誤!未定義書簽。2.2硬件設計................................................................................................................錯誤!未定義書簽。2.3軟件設計................................................................................................................錯誤!未定義書簽。2.3.1功能模塊圖.........................................................................................................錯誤!未定義書簽。2.3.2程序流程圖.........................................................................................................錯誤!未定義書簽。2.3.3模塊流程圖.........................................................................................................錯誤!未定義書簽。

3.詳細設計.............................................................................................................................錯誤!未定義書簽。

3.1程序模塊分析........................................................................................................錯誤!未定義書簽。3.1.1初始化模塊程序分析.........................................................................................錯誤!未定義書簽。3.1.2判斷開關程序模塊分析.....................................................................................錯誤!未定義書簽。3.1.3圈數(shù)統(tǒng)計模塊程序分析.....................................................................................錯誤!未定義書簽。3.1.4計算里程模塊程序分析.....................................................................................錯誤!未定義書簽。3.1.5顯示模塊程序分析.............................................................................................錯誤!未定義書簽。3.1.6結(jié)束模塊程序分析.............................................................................................錯誤!未定義書簽。3.2程序代碼................................................................................................................錯誤!未定義書簽。

4.5.6.程序結(jié)果.............................................................................................................................錯誤!未定義書簽。分析與測試.........................................................................................................................錯誤!未定義書簽。體會.....................................................................................................................................錯誤!未定義書簽。

附錄A:參考文獻.....................................................................................................................錯誤!未定義書簽。

一、引言

1.1設計目的

現(xiàn)在各大城市出租車已經(jīng)成為了一種重要的交通工具,當然出租車的收費問題也成了人們關注的焦點,那么怎么樣才能實現(xiàn)一種合理的收費方式讓大家都認可呢?在這種要求下,出租車自動計價器就走進了人們的生活,當然這就要求有一種合理公正的計價器收費方式。這不僅關系到出租車計價器的市場,也影響這出租車的市場,這就要求我們設計出更好的計價器來滿足人們的需求。

本設計是關于出租車計價器的設計。在本次設計中,我以計價器的基本功能作為設計的重點。為了完成上述設計,我們采用了8254、8255等芯片,用計算機匯編語言進行軟件功能的實現(xiàn)。

1.2設計任務

1.實現(xiàn)一個出租車計價器,可以顯示起步價。2.一個鍵來控制是否到達終點,是否計價要清零。3.基于路程的出租車計價方式。

1.3設計思路

利用直流電機來模仿出租車輪子的轉(zhuǎn)動來計算出租車行進的路程。將直流電機的直流端與滑動變阻器相連,通過人工控制滑動變阻器來模擬出租車的行進;并將計數(shù)端與8253CLK0端相連,GATE0接高電平,工作方式為方式二。直流電機每轉(zhuǎn)1000圈,8253輸出一個高電平,假設出租車已經(jīng)走了1公里。同時將8253OUT0接入8255方便CPU讀取。再將8255與ST7920顯示器相連,CPU通過控制8255來控制顯示,一旦8255從8253讀入一個高電平,則公里數(shù)加一,同時價格相應增加。另有一個開關連入8255,用以判斷出租車計價器是否啟動。

二、需求分析

2.1芯片原理

本節(jié)主要在介紹本次設計所用到的芯片的原理,共有可編程計數(shù)器/定時器8253/8254、可編程外圍接口芯片8255和12864液晶顯示器ST7920原理三種芯片。

2.1.1可編程計數(shù)器/定時器8253/8254原理

圖2-1 8254內(nèi)部結(jié)構圖

從圖2-1可見,8254內(nèi)部包含數(shù)據(jù)總線緩沖器、讀/寫控制邏輯、控制字寄存器和3個結(jié)構完全相同的計數(shù)器,這3個計數(shù)器分別稱為計數(shù)器0、計數(shù)器1和計數(shù)器2。

圖2-2 8254管腳圖

A1、A0:地址輸入線,用來控制8253內(nèi)部的4個端口,即3個計數(shù)器和1個控制字寄存器與CPU系統(tǒng)地址線相連。

CLK0-2:時鐘脈沖輸入端,用于輸入定時脈沖或計數(shù)脈沖信號。CLK可以是系統(tǒng)的時鐘脈沖,也可以由系統(tǒng)時鐘分頻或者其他脈沖源提供。當用于定時時,這個脈沖必須是均勻的、連續(xù)的、周期精確的,而用于計數(shù)時,這個脈沖可以是不均勻的、斷續(xù)的、周期不定的。

GATE0-2:門控輸入端,用于外部控制計數(shù)器的啟動計數(shù)和停止計數(shù)的操

作。兩個或兩個以上計數(shù)器連用時,可用此信號同步,也可用于與外部某信號的同步。

OUT0-2:計數(shù)輸出,當計數(shù)器從初值開始完成計數(shù)操作進,OUT引腳輸出相應的信號。

8253的方式控制字

圖2-3 8254控制字圖

本設計中8254的功能

只是用通道1,采用方式三。采用二進制計數(shù),輸入0FFFH。先輸入低字節(jié),再輸入高字節(jié)。當8254從0FFFFH遞減到159FH時(即轉(zhuǎn)了60000圈時),8254向總線發(fā)信號使程序向下進行。

2.1.2可編程外圍接口芯片8255原理

內(nèi)部結(jié)構如圖所示,由以下4個部分組成:

圖2-4 8255內(nèi)部結(jié)構圖

(1)輸入/輸出端口A、B、C。這三個端口均可看作是I/O端口,但它們的結(jié)構和功能也稍有不同。A口和B口是一個獨立的8位I/O口。C口:可以看作是一個獨立的8位I/O口;也可以看作是兩個獨立的4位I/O口。

(2)A組和B組控制電路。這是兩組根據(jù)CPU命令控制8255A工作方式的電路,這些控制電路內(nèi)部設有控制寄存器,可以根據(jù)CPU送來的編程命令來控制8255A的工作方式,也可以根據(jù)編程命令來對C口的指定位進行置/復位的操作。A組控制電路用來控制A口及C口的高4位;B組控制電路用來控制B口及C口的低4位

(3)讀/寫控制邏輯。(同上:它負責管理8255A的數(shù)據(jù)傳輸過程。它接收CS*及RD*、WR*、RESET,還有來自系統(tǒng)地址總線的口地址選擇信號A0和A1。將這些信號組合后,得到對A組控制部件和B組控制部件的控制命令,并將命令發(fā)給這兩個部件,以完成對數(shù)據(jù)、狀態(tài)信息和控制信息的傳輸。)

(4)數(shù)據(jù)總緩沖器。(同上:它是8位的雙向的三態(tài)緩沖器。作為8255A與系統(tǒng)總線連接的界面,輸入/輸出的數(shù)據(jù),CPU的編程命令以及外設通過8255A傳送的工作狀態(tài)等信息,都是通過它來傳輸?shù)摹#?/p>

如圖所示8255A的芯片引腳信號。除了電源和地以外,其他信號可以分為兩組:

圖2-5 8255管腳圖

1.和外設一邊相連的: PA7-PA0:A組數(shù)據(jù)信號

PB7-PB0:B組數(shù)據(jù)信號 PC7-PC0:C組數(shù)據(jù)信號 2.和CPU一邊相連的:

RESET:復位信號,低電平有效。當RESET信號來到時,所有內(nèi)部寄存器就被清除,同時,3個數(shù)據(jù)端口被自動設為輸入端口。

D7-D0:它們是8255A的數(shù)據(jù)線,和系統(tǒng)數(shù)據(jù)總線相連。

CS*:芯片選擇信號,低電平有效。在一個系統(tǒng)中,一般根據(jù)全部接口芯片來分配若干較低位地址(比如A5、A4、A3)來組成各種芯片選擇碼,當這幾位地址組成某一個代碼時,譯碼器便往8255A的CS*端輸出一個低電平,于是8255A被選中。只有當 CS*有效時,讀信號RD*和寫信號WR*才對8255A有效。

RD*:芯片讀出信號低電平有效。WR*:芯片寫入信號低電平有效。8255的方式控制字格式

圖2-6 8255控制字圖

本設計中8255的功能

8255PA0-PA7和PC0-PC2與ST7920相連,控制輸出。PB0與8253的OUT1相連,讀入8253OUT1 的數(shù)據(jù)。PB1與開關K0相連,讀入K0的數(shù)值用于確定是否開啟計價器。

2.1.3可編程外圍接口芯片8255原理

ST7920控制器系列中文圖形液晶模塊的軟件特性主要由ST7920控制驅(qū)動器決定。ST7920同時作為控制器和驅(qū)動器,它可提供33路com輸出和64路seg輸出。在驅(qū)動器ST7921的配合下,最多可以驅(qū)動256×32點陣液晶。

ST7920是臺灣矽創(chuàng)電子公司生產(chǎn)的中文圖形控制芯片,它是一種內(nèi)置12864漢字圖形點陣的液晶顯示控制模塊,用于顯示漢字及圖形。該芯片共內(nèi)置8192

個中文漢字(16×16點陣)、128個字符的ASCII字符庫(8×16點陣)及64×2256點陣顯示RAM(GDRAM)。

為了能夠簡單、有效地顯示漢字和圖形,該模塊內(nèi)部設計有2MB的中文字型CGROM和64×256點陣的GDRAM繪圖區(qū)域;同時,該模塊還提供有4組可編程控制的16×16點陣造字空間;除此之外,為了適應多種微處理器和單片機接口的需要,該模塊還提供了4位并行、8位并行、2線串行以及3線串行等多種接口方式。利用上述功能可方便地實現(xiàn)漢字、ASCII碼、點陣圖形、自造字體的同屏顯示,所有這些功能(包括顯示RAM、字符產(chǎn)生器以及液晶驅(qū)動電路和控制器)都包含在集成電路芯片里,因此,只要一個最基本的微處理系統(tǒng)就可以通過ST7920芯片來控制其它的芯片

圖2-7 ST7920外觀尺寸圖

本設計中ST7920的功能

用于顯示出租車行駛路程與應收費用。

2.2硬件設計

其中,8253GATE1連+5V高電平,直流電機連0~+5V,8253連280h~287h,8255連288h~28fh。8255PA0-PA7連ST7920顯示器D0-D7,PC0連DI,PC1連RW,PC2連E。開關K0連8255PB0。8253CLK1連直流電機計數(shù)端。

0~+5V直流電機D0-D7計數(shù)ST7920顯示屏DIRWE+5VGATE1CLK1PA0-PA7+5VPC0PC1PC2開關K0PB0+5V8253CS8255CS280H-288H289H-28FH總線圖2-8硬件連接圖

實際連接圖如下圖所示

圖2-9硬件實際連接圖

2.3軟件設計 2.3.1功能模塊圖

本節(jié)先給出一個程序的功能模塊圖。

出租車計價器系統(tǒng)計價器開關功能模塊讀入直流電機轉(zhuǎn)圈數(shù)模塊ST7920顯示功能模塊根據(jù)里程計算價格模塊

圖2-10軟件功能模塊圖

2.3.2程序流程圖

本節(jié)先給出一個程序的整體流程圖。

開始結(jié)束8253初始化液晶顯示屏初始化8255初始化是計價器是否開始工作通過8255讀入b0否是否有鍵盤輸入否液晶顯示屏初始化是液晶顯示屏調(diào)用顯示價格功能從直流電機讀入輸入圈數(shù)將更改過的路程在顯示器中顯示出來讀到一定圈數(shù)走的路程加一比較路程是否大于3公里是價格為(路程-3)*2+7 元將儲存的顯示字符串內(nèi)路程價格改為目前路程價格否價格為7元

圖2-11軟件程序流程圖

2.3.3模塊流程圖

如果對整個程序進行細分則可以分為初始化模塊,判斷開關模塊,圈數(shù)統(tǒng)計模塊,計算里程模塊、結(jié)束模塊和顯示模塊。其中初始化模塊是8253芯片、8255芯片和顯示屏的初始化。判斷開關模塊是對8255的b0端是否有高電平進行判斷。

圈數(shù)統(tǒng)計模塊是對直流電機傳入8253中高電平的數(shù)量進行圈數(shù)統(tǒng)計。計算里程模塊是對里程及價格進行計算的模塊。結(jié)束模塊是程序結(jié)束的操作與方法。顯示模塊是控制顯示屏顯示計算模塊的結(jié)果。

初始化模塊顯示模塊調(diào)用關判斷開關模塊開結(jié)束模塊圈數(shù)統(tǒng)計模塊計算里程模塊調(diào)用顯示模塊圖2-12軟件模塊流程圖

三、詳細設計

3.1程序模塊分析

我們將按模塊分析程序的功能并給出模塊內(nèi)的功能流程圖。

3.1.1初始化模塊分析

在初始化模塊中,我們定義了需要使用的8255和8254的接口,需要使用的變量如JSS,要輸出的字符串等,初始化了DS,完成了8255的初始化以及顯示屏的初始化。其流程圖為

開始圖3-1初始化模塊流程圖

3.1.2判斷開關模塊分析

以上為判斷開關模塊,在判斷開關模塊中,系統(tǒng)讀入8255PB0的電平,如果是高電平則程序繼續(xù)進行,如果是低電平則程序調(diào)用chushi函數(shù),用屏幕顯示“空車歡迎乘坐”,并繼續(xù)度8255PB0直到有高電平為止。其流程圖如下所示:

8255PB0是否為高電平是圈數(shù)統(tǒng)計模塊否Chushi函數(shù)計數(shù)變量和對應的字符串置零顯示 空車 歡迎乘坐 調(diào)用顯示模塊

圖3-2判斷開關模塊流程圖

3.1.3圈數(shù)統(tǒng)計模塊分析

在圈數(shù)統(tǒng)計模塊中,我們將直流電機計數(shù)端連入8254CLK1中(8253采用方式三),在CLK1中讀所記的數(shù),從0FFFFH向下計,一直計到159FH,即轉(zhuǎn)了6000圈后,進入程序的下一段。其流程圖如下所示:

讀8254計數(shù)值否是否到159FH以下是重新將8254計數(shù)初值設為0FFFFH計算里程模塊

圖3-3圈數(shù)統(tǒng)計模塊流程圖

3.1.4計算里程模塊分析

我們用地址JSS里表示已經(jīng)走過的公里,即8254傳過來的高電平,同時我們采用價格公式來計算價格,將其里程和價格對應的中文字碼表存入要顯示的字符串中。我們用地址JSS里表示已經(jīng)走過的公里,即8254傳過來的高電平,同時我們采用價格公式來計算價格,將其里程和價格對應的中文字碼表存入要顯示的字符串中。

計算公式為: 價格=(里程-3)* 2……(里程>3)

價格= 7…………………..(里程<=3)并調(diào)用顯示模塊來顯示這些字碼其流程圖如下所示:

圈數(shù)統(tǒng)計模塊計數(shù)值JSS加一并十進制化里程數(shù)加一里程數(shù)是否是大于3是價格為(里程-3)*2調(diào)用顯示模塊否價格為7

圖3-4計算里程模塊流程圖

3.1.5顯示模塊分析

在顯示模塊中,我們使用ST7920顯示我們要顯示的兩行字符串。我們采取先顯示第一行,再顯示第二行的方法,只是用ST7920的中間兩行。

調(diào)整顯示屏指針指向第二行調(diào)整顯示屏指針指向第三行調(diào)整字符串指針指向第一個字調(diào)整字符串指針指向第九個字輸出輸出延時延時

圖3-5顯示模塊流程圖

3.1.6結(jié)束模塊分析

結(jié)束模塊在程序的尾部在結(jié)束模塊中,我們規(guī)定只要在鍵盤上按任意一個鍵就會結(jié)束整個程序。如果無鍵按下,則程序自動跳轉(zhuǎn)到程序頭部。其程序流程圖如下圖所示:

調(diào)用DOS中斷是否有鍵按下是結(jié)束否判斷開關模塊

圖3-6結(jié)束模塊流程圖

3.2程序代碼

IO8253A

EQU 280H IO8253B

EQU 281H IO8253C

EQU 283H

DATA

SEGMENT HZ DW 0C2B7H,0B3CCH,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0B9ABH,0C0EFH

DW BCDBH,0B8F1H,0A3B0H,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0D4AAH;存放原始輸出 HZ_TAB DW 0C2B7H,0B3CCH,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0B9ABH,0C0EFH

DW 0BCDBH,0B8F1H,0A3B0H,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0D4AAH;存放要輸出的值 HZ_BG DW 0BFD5H,0B3B5H,0A2A0H,0A2A0H,0BBB6H,0D3ADH,0B3CBH,0D7F8H

DW 0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H;存放“空車歡迎乘坐”

HZ_ADR DB ?

;存放顯示行起始端口地址 JSS

DW 0000H DII

DW 0000H GAO

DW 0000H ZHE

DW 0000H NUMBER

DW 0A3B0H,0A3B1H,0A3B2H,0A3B3H,0A3B4H,0A3B5H,0A3B6H,0A3B7H,0A3B8H,0A3B9H DATA

ENDS IO_ADDRESS

EQU 288H

CODE SEGMENT ASSUME CS:CODE,DS:DATA START:

MOV AX,DATA MOV DS,AX

MOV DX,IO_ADDRESS ADD DX,3 MOV AL,82H OUT DX,AL

;8255初始化 MOV AL,0FFH MOV DX,300H OUT DX, AL CALL CLEAR

;LCD 清除

LLL:

MOV DX,IO_ADDRESS ADD DX,1 IN AL,DX

;判斷開關是否打開 AND AL,01H CMP AL,01H JZ F0 CALL CHUSHI JMP LLL F0: MOV AL,01110110B MOV DX,IO8253C OUT DX,AL

;8254初始化 MOV AL,0FFH MOV DX,IO8253B OUT DX,AL MOV AL,0FFH

;設置計數(shù)初值0FFFFH OUT DX,AL F1: MOV AL,01000000B

MOV DX,IO8253C OUT DX,AL MOV DX,IO8253B

IN AL,DX MOV AH,AL IN AL,DX XCHG AH,AL CMP AX,159FH

;查看是否下降到159FH JA F1

;不滿足條件繼續(xù)讀值

MOV AL,01110110B

;重置8253 MOV DX,IO8253C OUT DX,AL MOV AL,0FFH MOV DX,IO8253B OUT DX,AL MOV AL,0FFH OUT DX,AL

CALL DISP

;調(diào)顯示子程序

CALL DDSP

CALL DELAY PUSH DX

MOV AH,06H MOV DL,0FFH INT 21H POP DX

JZ LLL

MOV AH,4CH

;退出

INT 21H L1:

JMP

START;L1

CHUSHI PROC NEAR

LEA SI, HZ_TAB LEA DI,HZ MOV CX,0FH F3: ADD SI,2 ADD DI,2 MOV AX,[DI] MOV [SI],AX LOOP F3

;重置HZ_TAB

MOV AX,0000H LEA BX,JSS MOV [BX],AX LEA BX, HZ_BG MOV CH,2

CALL LCD_DISP LEA BX, HZ_BG MOV CH,3

;顯示“空車歡迎乘坐” CALL LCD_DISP RET CHUSHI ENDP

DDSP

PROC NEAR

LEA DI,HZ_TAB LEA BX,JSS LEA SI,NUMBER MOV AX,WORD PTR[BX]

MOV BP,AX AND BP,00FFH ADD BP,BP

MOV DX,WORD PTR[BP+SI] MOV WORD PTR[DI+6],DX

;將JSS中低八位傳入HZ_TAB MOV BP,AX AND BP,0FF00H ROR BP,8 ADD BP,BP MOV DX,WORD PTR[BP+SI] MOV WORD PTR[DI+4],DX

LEA BX, HZ_TAB

MOV CH,2

CALL LCD_DISP LEA DI,HZ_TAB LEA BX,JSS LEA SI,NUMBER MOV AX,WORD PTR[BX] CMP AX,0003H

JBE L3 CALL BJ LEA BX,JSS JMP L4

L3:MOV BP,0007H

ADD BP,BP MOV DX,WORD PTR[BP+SI ] MOV WORD PTR[DI+24],DX JMP L4 L4:

LEA BX, HZ_TAB

MOV CH,3

CALL LCD_DISP RET DDSP

ENDP

BJ

PROC NEAR

LEA DI,HZ_TAB LEA BX,JSS LEA SI,NUMBER MOV AX,WORD PTR[BX] CMP AL,03H

;將JSS中高八位傳入HZ_TAB

;顯示第2行信;比較路程與3的大小;路程比3小的情況

;顯示第3行信息

JAE BJ1 SUB AH,01H ADD AL,0AH SUB AL,03H AAS

;路程減三并十進制化 JMP BJ2 BJ1:

SUB AX,0003H BJ2: MOV CX,AX AND AX,00FFH ADD AL,AL AAA ADD AX,07H AAA

LEA BX,DII MOV [BX],AX;DII MOV BP,AX AND BP,00FFH ADD BP,BP MOV DX,WORD PTR[BP+SI] MOV WORD PTR[DI+24],DX

MOV AX,CX SHR AX,8 AND AX,00FFH ADD AL,AL

AAA LEA BX,GAO MOV [BX],AX;GAO LEA BX,DII MOV DX,[BX];DII AND AX,00FFH AND DX,0FF00H SHR DX,8 AND DX,00FFH ADD AL,DL

AAA LEA BX,ZHE MOV [BX],AX;ZHE MOV BP,AX AND BP,00FFH ADD BP,BP MOV DX,WORD PTR[BP+SI]

;路程加七并十進制化;先計算個位

;十位相加

;再加進位

MOV WORD PTR[DI+22],DX

;再計算十位 LEA BX,ZHE MOV DX,[BX] LEA BX,GAO MOV AX,[BX] AND DX,0FF00H AND AX,0FF00H SHR AX,8 SHR DX,8 ADD DL,AL

;百位加進位 AAA MOV BP,DX AND BP,00FFH ADD BP,BP MOV DX,WORD PTR[BP+SI] MOV WORD PTR[DI+20],DX

;最后計算百位 RET BJ ENDP

DISP

PROC NEAR

;顯示子程序

PUSH DX

LEA BX, JSS

MOV AX,WORD PTR[BX]

ADD AL,01H

CMP AL,09H

;判斷是否<=9

JLE NUM

;若是則為'0'-'9',ASCII碼加30H

MOV AL,00H

ADD AH,01H

CMP AH,0AH

JZ L2 NUM:

MOV WORD PTR[BX],AX

ADD AL,30H

ADD AH,30H

MOV DL,AH

MOV DH,AL

MOV AH,02H

;屏幕顯示

INT 21H

MOV DL,DH

MOV AH,02H

;屏幕顯示

INT 21H

MOV DL,0DH

;加回車符

INT 21H

MOV DL,0AH

;加換行符

INT 21H

POP DX

RET

;子程序返回 DISP ENDP L2: MOV AH,4CH

;退出

INT 21H

CLEAR

PROC

MOV AL,0CH

CLEAR

FUNCUP

;

;

;

FUNCUP

LCD_DISP

;

DISP_SEC:

NEXT:

CONTINUE:

MOV DX, IO_ADDRESS OUT DX,AL

;設置CLEAR命令 CALL CMD_SETUP

;啟動LCD執(zhí)行命令 RET

ENDP

PROC MOV AL, 0FH

;LCD功能設置命令 OUT DX, AL CALL CMD_SETUP MOV AL, 34H

;LCD顯示狀態(tài)命令 OUT DX, AL CALL CMD_SETUP RET

ENDP PROC LEA BX, HZ_TAB CMP CH, 2 JZ DISP_SEC MOV BYTE PTR HZ_ADR, 88H

;第三行起始端口地ADD BX,16

;指向第二行信息 JMP NEXT MOV BYTE PTR HZ_ADR,90H MOV CL,8

PUSH CX MOV AL,HZ_ADR MOV DX, IO_ADDRESS OUT DX, AL CALL CMD_SETUP

;設定DDRAM地址命令 MOV AX,[BX] PUSH AX MOV AL,AH

;先送漢字編碼高位 MOV DX,IO_ADDRESS OUT DX,AL CALL DATA_SETUP

;輸出漢字編碼高字節(jié)

CALL DELAY

;延遲

POP AX

MOV DX,IO_ADDRESS

OUT DX, AL

CALL DATA_SETUP

;輸出漢字編碼低字節(jié)

CALL DELAY

INC BX

INC BX

;修改顯示內(nèi)碼緩沖區(qū)指針

INC BYTE PTR HZ_ADR

;修改LCD顯示端口地址

POP CX

DEC CL

JNZ CONTINUE

RET LCD_DISP

ENDP CMD_SETUP

PROC

MOV DX,IO_ADDRESS

制端口

ADD DX,2

NOP

MOV AL,00000000B

(LCD I端=0,W端=0)

OUT DX, AL

CALL DELAY

NOP

MOV AL,00000100B

=1)

OUT DX, AL

NOP

CALL DELAY

MOV AL, 00000000B

0)

OUT DX, AL

CALL DELAY

RET CMD_SETUP

ENDP DATA_SETUP

PROC

MOV DX,IO_ADDRESS

ADD DX,2

MOV AL,00000001B

(LCD I端=1)

OUT DX, AL

NOP

CALL DELAY

;指向8255端口控

;PC1置0,PC0置0

;PC2置1(LCD E端

;PC2置0,(LCD E端置

;指向8255控制端

;PC1置0,PC0=1

MOV AL,00000101B

;PC2置1(LCD E端=1)

OUT DX, AL

NOP

CALL DELAY

MOV AL, 00000001B

;PC2置0,(LCD E端=0)

OUT DX, AL

NOP

CALL DELAY

RET DATA_SETUP

ENDP DELAY

PROC

PUSH CX

PUSH DX

MOV CX, 0FFFH X1:

LOOP

X1

POP DX

POP CX

RET DELAY

ENDP

CODE ENDS

END START

四、程序結(jié)果

我們利用8254、8255、ST7920顯示屏、直流電機等制作出了一個出租車計價器有專用鍵可以表示是否空車,同時利用直流電機模擬車輪運動,通過路程計算價格,成果如下圖所示:

圖4-1程序結(jié)果圖

五、分析與測試

程序中,我遇到的最大的難題就是如何完成正確的十進制計算,因為所有的計算指令都是十六進制的,雖然有的計算里有類似AAA這樣的調(diào)整指令,但是很多時候就不一定記得起來加上。同時由于需要根據(jù)數(shù)字來查表對應相應的字符碼,而且我是建立一個從零到九的數(shù)組,而由于計算錯誤導致經(jīng)常出現(xiàn)亂碼,而且比較難找到相應的錯誤。而且有些計算沒有十進制轉(zhuǎn)換指令,需要自己編寫。

同時我認為我利用提前存儲變量來表示走過的路程比利用堆棧要好,因為堆棧容易記混,而變量有獨特的名字,利于記憶與調(diào)用。而且易于清零、增減。

六、心得體會

這次課程設計中,令我印象最為深刻的就是我們應該有一種堅持的精神,有時候幾個小時都沒有成果,找不到BUG。顯示的就是有問題,這時候我們應該有一種堅持下去的毅力,積極詢問老師同學,問題的解決就很快了。

同時我發(fā)現(xiàn)編程習慣非常重要,應該有一個提前的規(guī)劃,不能想到哪寫到哪,這樣的話,后期的DEBUG會非常麻煩,因為自己也看不懂自己的代碼,我們都應該有規(guī)范化的代碼意識,這樣的編程能力才能上升。

參考文獻

[1]周荷琴,吳秀清,《微型計算機原理與接口技術》,合肥:中國科學技術大學出版社 2008。[2] 曹國清,《數(shù)字電路與邏輯設計》,徐州:中國礦業(yè)大學出版社 2003。[3] 8255芯片原理:http://baike.baidu.com/link?url=KHojvZzBGmo26_6iYGTdrdqH6PxQbM1Hnnc8hWQNPIp60L7TWG5LZu_ppSkXo5maU5M4APs4qCGSudiqZ0bdl_ [4]ST7920芯片原理:http://wenku.baidu.com/view/0dafd9232f60ddccda38a0fa.html訪問時間2013/10/15 [5]ST7920中文字碼表:http://wenku.baidu.com/view/d4abe628647d27284b735127.html訪問時間:2013/10/15

下載基于CPLD的出租車計價器設計[優(yōu)秀范文5篇]word格式文檔
下載基于CPLD的出租車計價器設計[優(yōu)秀范文5篇].doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

相關范文推薦

    出租車計價器畢業(yè)論文附錄

    北京信息科技大學 畢業(yè)設計(論文)附錄 題 目:學 院: 專 業(yè):學生姓名: 班級/學號 指導老師/督導老師:起止時間:2012 年 月 日 至 2012 年 月 日 目錄 附件1 原理圖·······......

    出租車計價器調(diào)試報告

    出租車計價器調(diào)試報告 本設計可分為單片機主控模塊、鍵盤、顯示器、溫度檢測、狀態(tài)指示、時鐘日歷、語音收錄播報、分頻器電路、脈沖信號發(fā)生器等9部分。仔細分析系統(tǒng)的工作......

    出租車計價器信息(精選5篇)

    霍市質(zhì)監(jiān)局集中對全市出租車計價器進行安裝檢定 切實規(guī)范運營行為近期,霍市質(zhì)監(jiān)局下屬檢測中心對全市范圍內(nèi)具有交通主管部門頒發(fā)經(jīng)營許可證的500余輛出租車計價器進行統(tǒng)一......

    出租車計價器課程設計2

    出租車計價器課程設計 目錄 前言 1、 系統(tǒng)工作原理 1.1 功能說明 1.2 基本原理 2、 硬件設計 2.1 單片機最小系統(tǒng)單元 2.2 A44E霍爾傳感器檢測單元 2.3 AT24C01存儲單元 2.......

    單片機出租車計價器源程序

    出租車計價器設計與制作 設計并制作一臺出租車計價器。調(diào)試時采用10Hz方波信號模擬,每個方波代表10m。基本要求: (1)不同情況具有不同的收費標準 白天 1元/公里 晚上 2元/ 公......

    《基于單片機的出租車計價器的設計》開題報告

    《基于單片機的出租車計價器的設計》開題報告 關鍵詞:出租車計價器 浙江師范大學應用電子技術專業(yè)開題報告范文 杭州論文 開題報告 一.選題背景和意義 隨著我國經(jīng)濟的迅速發(fā)展......

    EDA課程設計-簡易出租車計價器設計5則范文

    HBQY #20080230403 課程設計 EDA 課 程 設 計 [RTX于2012/2/22] 簡 易 出租車計價器設計 要求: ? 計價器按1.2元/公里計費,超過10公里后,則按1.8元/公里收費。 ? 起步價6元(3公......

    出租車計價器設計方案(5篇范例)

    1 系統(tǒng)硬件組成 總體結(jié)構如圖一所示。硬件上主要由HT46RU24單片機,霍爾傳感器,空載開關,鍵盤電路,數(shù)據(jù)存儲電路,時鐘電路,顯示電路,蜂鳴器,IC卡電路以及串口電路組成。1.1 HT46RU24......

主站蜘蛛池模板: 精品国产一区二区三区四区vr| 国产亚洲精品久久久久久无挡照片| 精品久久久久久无码中文字幕| 成本人妻片无码中文字幕免费| 美女大量吞精在线观看456| 免费国产黄网在线观看| 亚洲国产精品久久久久4婷婷| 亚洲精品乱码久久久久久蜜桃| 精国产品一区二区三区a片| 无翼乌口工全彩无遮挡h全彩| 亚洲精品午夜精品| 香蕉视频在线精品视频| 芙宁娜被?吸乳羞羞A片| 中文字幕乱妇无码av在线| 国产福利精品一区二区| 无码人妻一区二区三区在线视频| 一道本在线伊人蕉无码| 中文字幕无码家庭乱欲| 亚洲美腿丝袜无码专区| 99久久精品这里只有精品| 香蕉国产| 亚洲国产精品无码久久一区二区| 久久久综合九色合综国产精品| 亚洲免费观看视频| 国产福利一区二区三区高清| 极品美女扒开粉嫩小泬图片| 国产全肉乱妇杂乱视频| 国产普通话对白刺激| 国产无遮挡又黄又爽免费视频| 人妻av鲁丝一区二区三区| 国精产品999国精产品官网| 加勒比中文无码久久综合色| 日本久久久久久久久久加勒比| 无码av不卡一区二区三区| 亚洲熟女av乱码在线观看漫画| 东京热一区二区三区无码视频| 无码人妻品一区二区三区精99| 男女作爱免费网站| 亚洲天堂男人影院| 色欲av久久一区二区三区久| 免费人成在线观看网站品爱网|