久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17411|回復(fù): 4
收起左側(cè)

基于單片機的出租車計價器系統(tǒng)課程設(shè)計報告

[復(fù)制鏈接]
ID:211071 發(fā)表于 2017-6-14 10:45 | 顯示全部樓層 |閱讀模式
四川師范大學(xué)成都學(xué)院電子工程系課程設(shè)計報告

要:隨著出租車行業(yè)的發(fā)展,對出租車計費器的要求也越來越高。二十世紀(jì)后半期,隨著集成電路和計算機技術(shù)的飛速發(fā)展,單片機技術(shù)也得到了飛速發(fā)展,基于單片機的出租車計費器不僅可以解決電子系統(tǒng)小型化、低功耗、高可靠性等問題,而且其開發(fā)周期短、開發(fā)軟件投入少、芯片價格不斷降低,特別是對小批量、多品種的產(chǎn)品需求,單片機具有體積小、功能強可靠性高、價格低廉等一系列優(yōu)點,不僅已成為工業(yè)測控領(lǐng)域普遍采用的智能化控制工具,而且已滲入到人們工作和和生活的各個角落,有力地推動了各行業(yè)的技術(shù)改造和產(chǎn)品的更新?lián)Q代,應(yīng)用前景廣闊。(使用單片機的外圍電路比較簡單),在時間計數(shù)和速度的計算上便于擴展功能很,系統(tǒng)能夠?qū)崿F(xiàn)升級。很多數(shù)值可以預(yù)先寫到芯片中。本設(shè)計假設(shè)速度恒定為60Km/h,即1Km/min。

本設(shè)計主要了解應(yīng)用單片機的定時器/計數(shù)器,以及中斷。這是一個比較小的系統(tǒng),故采用匯編語言來編輯。匯編語言是一種編譯型程序設(shè)計語言,它具有編譯速度快,占用系統(tǒng)空間小,具有一定的助記可讀性等特點。

本系統(tǒng)假設(shè)速度恒定60Km/h(1Km/min),單價一定1.3元/Km,起步價5.0元,超過三公里開始計費,每公里加1.3元。


目錄
1 前言
1.1 我國出租車的發(fā)展
1.2 現(xiàn)階段出租車計價器的要求
2 單片機89C51的簡介              4
2.1 主芯片89C51的硬件資源              4
2.1.1 單片機的概念              4
2.1.2 89C51的芯片引腳圖            
2.1.3 使用I/O口的注意事項
2.2 89C51中斷系統(tǒng)
2.2.1 中斷源
2.2.2 中斷的控制            
2.2.3 中斷響應(yīng)
2.3 單片機定時器/計數(shù)器的使用
2.3.1 與T/C有關(guān)的特殊功能寄存器
2.3.2 定時器/計數(shù)器的初始化
3 計價器系統(tǒng)設(shè)計            
3.1 硬件設(shè)計
3.1.1 整體硬件電路圖            
3.1.2 74LS273和74LS02簡介
3.2 軟件設(shè)計
3.2.1 模塊介紹            
3.2.2 程序流程圖
結(jié)束語
參考文獻


1 前   言
1.1 我國出租車的發(fā)展
20世紀(jì)20-30年代是我國城市出租汽車行業(yè)的大發(fā)展時期。20年代初,北京自用及營運汽車有1231輛,出租汽車行達51家.據(jù)統(tǒng)計,上海市于2933-1934年間,有出租汽車行達91家,營業(yè)站153處,營運汽車達1151輛。20年代末,哈爾濱由于外國僑民劇增,使得出租汽車增多,在500輛。
1934年,河南出現(xiàn)了最早的出租汽車。開封有了首家私人出租車戶,經(jīng)營5輛小客車。1935年,河南長途汽車營業(yè)部購進3輛福特牌小客車,也在市區(qū)經(jīng)營出租業(yè)務(wù)。當(dāng)時,因出租車很時髦,用戶多是豪紳富商,他們走官場,講闊氣,不惜高價租用,所以,出租車的營業(yè)狀況較好。
抗日戰(zhàn)爭爆發(fā)后,國土的淪陷,戰(zhàn)爭的紛擾,出租汽車發(fā)展受到?jīng)_擊,數(shù)量急劇減少。至1942年,北京出租汽車行減少到48家,營運汽車約446輛,以后逐漸萎縮,至1946年,僅剩出租汽車303輛。上海在此期間,出租汽車行僅存30家,至1948年,出租汽車行僅有51家,車數(shù)減少到705輛。
中華人民共和國成立初期,出租汽車主要由兩種成分組成。一種為私有制的出租汽車,這種成分由于服務(wù)對象發(fā)生變化,客流量下降,加上車輛難以更新,營運車輛日趨減少,到1956年前,北京市出租一汽車行僅剩30家。另一種成分為公有制事業(yè)單位,主要是為了滿足接待外賓來訪和重要會議需要,由各省市人民政府組建成的汽車公司和汽車隊。50年代末至60年代初,國家旅游主管部門為適應(yīng)旅游事業(yè)發(fā)展的需要,先后在各地組建了旅游汽車隊。“文革”時期,乘出租車被稱為“四舊”,受到批判,車輛大量停駛,出租汽車行業(yè)處于奄奄一息狀態(tài)。當(dāng)時,北京市僅有出租汽車200多輛。其他城市出租汽車也為數(shù)不多。
1978年12月,黨的十一屆三中全會召開以后,國家實行了改革開放政策,城市經(jīng)濟日益繁榮,對外經(jīng)濟文化交流日益頻繁,人民生活有了很大的改善和提高,出租汽車不再是北京、上海、天津及廣州、哈爾濱等大城市的專利,全國很多中小城市在1980年以后也出現(xiàn)了出租汽車,且連續(xù)出現(xiàn)幾次高速發(fā)展浪潮。國家為解決群眾“乘車難”問題,滿足不同層次乘客出行的需要,對出租汽車行實行國營、集體、個人一起上,各行各業(yè)均可參與經(jīng)營出租汽車的政策,為出租汽車行業(yè)的發(fā)展帶來了契機,80年代后期至90年代,形成了快速發(fā)展的態(tài)勢。根據(jù)市場發(fā)展的需要,國家有關(guān)部委相繼頒布了出租汽車行業(yè)的管理規(guī)定,各地政府也根據(jù)本地實際制定了不少出租汽車管理辦法,使出租汽車行業(yè)逐步走上了規(guī)范化、正規(guī)化的法制管理軌道。



1.2 現(xiàn)階段出租車計價器的要求
隨著出租車行業(yè)的發(fā)展,對出租車計費器的要求也越來越高,用戶不僅要求計費器性能穩(wěn)定,計費準(zhǔn)確,有防作弊功能;同時還要求其具有車票資料打印 、IC卡付費、語音報話、和電腦串行通信等功能。通常,設(shè)計出租車計費器面臨以下三方面的問題:
(1)不同國家和地區(qū)的計費方式存在差異。有些地區(qū)有夜間收費及郊區(qū)收費等,而有些地區(qū)則無夜間收費和郊區(qū)收費;即使同一地區(qū),不同車型的出租車,其計費方式也有差別;另一方面,出租車還面臨幾年一次的調(diào)價或調(diào)整計費方式等問題。因此,所設(shè)計的計費器不僅要能滿足不同國家和地區(qū)的要求,而且計費方式的調(diào)整也應(yīng)當(dāng)很方便。
(2)由于個別地區(qū)對計費器有特殊要求,有時必須修改軟件;另外,計費器還面臨軟件的升級;因而,所設(shè)計的計費器應(yīng)能很方便地重新編程。
(3)計費器必須要有防作弊功能,能有效防止司機作弊;同時要防止計費器在營運過程中死機。
為此,設(shè)計出一款好的計費器,解決了上述問題是非常必要的。該計費器內(nèi)設(shè)置了多達64個選項,幾乎涵蓋了大多數(shù)國家和地區(qū)的出租車計費方式,因此,使用時無需更改計費器的硬件,而只需更改相應(yīng)的選項資料,便可適用于不同的國家和地區(qū),且計費資料的傳送可由電腦通過RS-232串口或?qū)S玫氖殖质劫Y料傳輸器來完成,非常方便;由于采用了具有單片機AT58C51,因此,編程時無需將單片機從電路板上取下,就可以直接對單片機進行編程;另外,該設(shè)計還采用單、雙信號防作弊技術(shù)和看門狗電路,較好地解決了計費器的作弊現(xiàn)象及死機問題。目前,該計費器已在許多大中城市得到了廣泛的應(yīng)用。

2 單片機89C51的簡介
2.1 主芯片89C51的硬件資源
2.1.1 單片機的概念
單片機(microcontroller,又稱微控制器)是在一塊硅片上集成了各種部件的微型計算機。這些部件包括中央處理器CPU、數(shù)據(jù)存儲器RAM、程序存儲器ROM、定時器/計數(shù)器和多種I/O接口電路。圖4-1是80C51單片機的基本結(jié)構(gòu)圖
1.001.jpg
a. 89C51單片機的結(jié)構(gòu)特點有以下幾點:




      •                    8位CPU;
      •                    片內(nèi)振蕩器及時鐘電路;
      •                    32根I/O線;
      •                    外部存儲器ROM和RAM,尋址范圍各64KB;
      •                    兩個16位的定時器/計數(shù)器;
      •                    5個中斷源,2個中斷優(yōu)先級
      •                    全雙工串行口
      •                    布爾處理器
b. 定時器/計數(shù)器
89C51內(nèi)部有兩個16位可編程定時器/計數(shù)器,記為T0和T1。16位是指它們都是由16個觸發(fā)器構(gòu)成,故最大計數(shù)模值為2-1?删幊淌侵杆麄兊墓ぷ鞣绞接芍噶顏碓O(shè)定,或者當(dāng)計數(shù)器來用,或者當(dāng)定時器來用,并且計數(shù)(定時)的范圍也可以由指令來設(shè)置。這種控制功能是通過定時器方式控制寄存器TMOD來完成的.
如果需要,定時器在計到規(guī)定的定時值時可以向CPU發(fā)出中斷申請,從而完成某種定時的控制功能。在計數(shù)狀態(tài)下同樣也可以申請中斷。定時器控制寄存器TCON用來負(fù)責(zé)定時器的啟動、停止以及中斷管理
在定時工作時,時鐘由單片機內(nèi)部提供,即系統(tǒng)時鐘經(jīng)過12分頻后作為定時器的時鐘。技術(shù)工作時,時鐘脈沖由TO和T1輸入。
c. 中斷系統(tǒng)
89C51的中斷系統(tǒng)允許接受五個獨立的中斷源,即兩個外部中斷申請,兩個定時器/計數(shù)器中斷以及一個串行口中斷。
外部中斷申請通過INTO和INT1(即P3.2和P3.3)輸入,輸入方式可以是電平觸發(fā)(低電平有效),也可以是邊沿觸發(fā)(下降沿有效)。兩個定時器中斷請求是當(dāng)定時器溢出時向CPU提出的,即當(dāng)定時器由狀態(tài)1轉(zhuǎn)為全零時提出的。第五個中斷請求是由串行口發(fā)出的,串行口每發(fā)送完一個數(shù)據(jù)或接收完一個數(shù)據(jù),就可提出一次中斷請求。
2.1.2 89C51的芯片引腳圖
VCC:供電電壓。
GND:接地。
P0口:P0口為一個8位漏極開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
1.002.jpg


P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。因此作為輸入時,P2口的管腳被外部拉低,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:
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ù)存儲器讀選通)
P3口同時為閃爍編程和編程校驗接收一些控制信號。
RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。
ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。
PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。
EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
2.1.3 使用I/O口的注意事項
(1)P1,P2,P3口的輸出緩沖器可驅(qū)動4個LSTTL電路。對于HCMOS芯片單片機的I/O口,在正常情況下,可任意由TTL或NMOS電路驅(qū)動。HMOS及CMOS性的單片機I/O口有集電極開路或漏極開路的輸出來驅(qū)動時,不必外加上拉電阻
(2)對于74LS系列,CD4000系列以及一些大規(guī)模集成電路芯片(如8155,8253,8279等),都可以和MCS-51系列單片機直接接口。具體使用時,可以查閱有關(guān)器件手冊或參考典型電路
(3)對一些線性組件,特別是應(yīng)用鍵盤、碼盤、LED顯示器等輸入/輸出設(shè)備時,應(yīng)當(dāng)盡量增加驅(qū)動部分的容量,否則,單片機將提供不出足夠的驅(qū)動電流供給負(fù)載使用
2.2 89C51中斷系統(tǒng)
所謂中斷,是指當(dāng)計算機執(zhí)行正常程序時,系統(tǒng)中出現(xiàn)某些急需處理的異常情況和特殊情求,CPU暫停執(zhí)行現(xiàn)行程序,轉(zhuǎn)去對隨機發(fā)生地更緊迫事件進行處理;處理完畢后,CPU自動返回原來的程序繼續(xù)執(zhí)行。
中斷允許軟件設(shè)計不需要關(guān)心系統(tǒng)其他部分定時要求,算術(shù)程序不需要考慮隔幾個指令檢查I/O設(shè)備是否需要服務(wù)。相反,算術(shù)程序編寫時好像有無限的時間作算術(shù)運算而無其他工作在進行。若其它事件需要服務(wù)時,則通過中斷告訴系統(tǒng)。
89C51單片機有5個中斷源,有兩個中斷優(yōu)先級,每個中斷源的優(yōu)先級可以編程控制。中斷允許受到CPU開中斷和中斷源開中斷的兩級控制。
2.2.1 中斷源
中斷源是指任何引起計算機中斷的事件,一般一臺機器允許有許多個中斷源。89C51系列單片機至少有5個中斷源。增加很少的硬件就可把各種硬件中斷源“線或”成為一個外部中斷輸入,然后再順序檢索一起中斷的特定源。
89C51單片機的5個中斷源是:
①              外部中斷請求0,由(P3.2)輸入;
②              外部中斷請求1,由(P3.3)輸入;
③              片內(nèi)定時器/計數(shù)器0益處中斷請求;
④              片內(nèi)定時器/計數(shù)器1溢出中斷請求;
  •    片內(nèi)串行口發(fā)送/接收中斷請求;
為了了解每個中斷源是否產(chǎn)生了中斷請求,中斷系統(tǒng)應(yīng)設(shè)置許多個中斷請
求觸發(fā)器(標(biāo)志位)實現(xiàn)記憶。這些中斷源請求標(biāo)志位分別有特殊功能寄存器TCON和SCON的相應(yīng)位鎖存
定時器/計數(shù)器控制寄存器TCON,它是一個八位的寄存器,各位如表4.1所示:
表4.1 定時器/計數(shù)器控制寄存器TCON
TF1

TF0

IE1
IT1
IE0
IT0

IT0,IT1:外部中斷0、1觸發(fā)方式選擇位,由軟件設(shè)置。1是下降沿觸發(fā),0是電平觸發(fā)。
IE0,IE1:外部終端0、1請求標(biāo)志位。
TF0,TF1:定時器/計數(shù)器0、1溢出中斷請求標(biāo)志。
2.2.2 中斷的控制
中斷的控制主要實現(xiàn)中斷的開關(guān)管理和中斷優(yōu)先級的管理。這個管理主要通過對特殊功能寄存器IE和IP的編程實現(xiàn)。
(1)中斷允許寄存器IE
表4.2 中斷允許寄存器IE
EA
   -
ET2
ES
ET1
EX1
ET0
EX0

EX0,EX1:外部終端0,1的中斷允許位。1是中斷開,0是中斷關(guān)
ET0,ET1:定時器/計數(shù)器0、1溢出中斷允許位。1是開中斷,0是關(guān)中斷
ES:串行口中斷允許位。1是中斷開,0是中斷關(guān)
ET2:定時器/計數(shù)器2溢出中斷位
EA:CPU開/關(guān)中斷控制位。1是開中斷,0是關(guān)中斷
(2)中斷優(yōu)先級寄存器IP
表4.3 中斷優(yōu)先級寄存器IP



PS
PT1
PX1
PT0
PX0

若系統(tǒng)中多個中斷源同時請求中斷,則CPU按中斷源的優(yōu)先級別,由高到低分別響應(yīng)。
89C51單片機有兩個中斷優(yōu)先級:高優(yōu)先級和低優(yōu)先級。每個中斷源都可以編程為高優(yōu)先級。這可以實現(xiàn)兩級中斷嵌套。嵌套的原則:一個正在執(zhí)行的中斷服務(wù)程序可以被高級的中斷請求中斷,而不能被同級或較低級的中斷請求中斷。兩級中斷通過使用IP寄存器設(shè)置,相應(yīng)的位置1,則優(yōu)先級高,0則優(yōu)先級低。
PX0、PX1:終端0、1中斷優(yōu)先級控制;
PT0、PT1:定時器/計數(shù)器0、1中斷優(yōu)先級控制。
PS:串行口中斷優(yōu)先級控制。
89C51復(fù)位時,IP被清零,5個中斷源都在同一個優(yōu)先級。這時若其中幾個中斷源同時產(chǎn)生中斷請求,則CPU按照片內(nèi)硬件優(yōu)先級鏈路的順序相應(yīng)中斷,硬件優(yōu)先級由高到低的順序是:外部終端0,定時器/計數(shù)器0,外部中斷1,定時器/計數(shù)器1串行口中斷。
2.2.3 中斷響應(yīng)
89C51的CPU在每個機器周期采樣中斷源的中斷請求標(biāo)志位,如果沒有上述阻止條件,則將在下一個機器周期響應(yīng)被激活的最高級中斷請求。阻止條件如下:
  •        CPU正在處理同級或更高級的中斷;
  •        現(xiàn)行機器周期不是所執(zhí)行指令的最后一個機器周期;
  •        正在執(zhí)行的是RETI或者是訪問IE或IP的指令;
CPU在中斷響應(yīng)之后完成如下操作:
  •        硬件清除相應(yīng)的中斷標(biāo)志位;
  •        執(zhí)行一條硬件子程序,保護斷點,并轉(zhuǎn)向中斷服務(wù)程序入口。
  •        結(jié)束中斷時執(zhí)行RETI指令,恢復(fù)斷點,返回主程序。
89C51的CPU在相應(yīng)中斷請求時,由硬件電路自動形成轉(zhuǎn)向與該中斷源對應(yīng)的中斷的服務(wù)程序入口地址。這種方法為硬件向量中斷法。
各中斷源的中斷服務(wù)程序入口地址如下:
表4.4 中斷源的中斷服務(wù)程序入口地址
編號
中斷源
入口地址
0
外部終端0
0003H
1
定時器/計數(shù)器0
000BH
2
外部終端1
0013H
3
定時器/計數(shù)器1
001BH
4
串行口中斷
0023H

各中斷服務(wù)程序入口地址僅隔8個字節(jié),編譯器在這些地址放入無條件轉(zhuǎn)移指令,跳到服務(wù)程序的實際地址。
向量中斷包括把先前的程序計數(shù)指針推入堆棧,中斷服務(wù)程序很像其他子程序。當(dāng)向量中斷發(fā)生時,硬件禁止所有中斷。此時表明外部中斷或定時器溢出的標(biāo)志位由硬件清除。中斷服務(wù)程序的不同分支取決于中斷源。在重新允許全局CPU中斷EA之前,必須仔細(xì)清除各種標(biāo)志。標(biāo)志會引起立即地重復(fù)中斷。89C51對終端實際上有特殊的返回指令----RETI。不是RET。RETI重新允許系統(tǒng)識別其他中斷。因而,沒必要在正常使用中斷時復(fù)位EA,只要在程序初始化時開中斷一次就可以了。
2.3 單片機定時器/計數(shù)器的使用
89C51系列單片機至少有兩個16位內(nèi)部定時器/計數(shù)器。8952有三個定時器/計數(shù)器,其中連個基本定時器/計數(shù)器是定時器/計數(shù)器0和定時器/計數(shù)器1。他們既可以編程為定時器使用,也可以編程為計數(shù)器使用。若是計數(shù)內(nèi)部晶振驅(qū)動時鐘,則它是定時器;若是計數(shù)89C51的輸入引腳的脈沖信號,則它是計數(shù)器。
89C51的T/C時加一計數(shù)的。定時器實際上也是工作在技術(shù)方式下的,只不過對固定頻率的脈沖計數(shù);由于脈沖周期固定,由計數(shù)值可以計算出時間,有定時功能。
當(dāng)T/C工作在定時器時,對振蕩源12分頻的脈沖計數(shù),即每個機器周期計數(shù)值加一,頻率加=fosc/12。晶振為6MHz,計數(shù)頻率=500KHz,每2uS計數(shù)加一。
當(dāng)T/C工作在計數(shù)器時,計數(shù)脈沖來自外部脈沖輸入引腳T0或T1。當(dāng)T0或T1腳上負(fù)跳變需2個機器周期,即24個振蕩周期。所以T0或T1腳輸入的計數(shù)外部脈沖的最高頻率為fosc/12。當(dāng)晶振為12MHz時,最高技術(shù)頻率為500KHz,高于此頻率將計數(shù)出錯。
2.3.1 與T/C有關(guān)的特殊功能寄存器
(1)計數(shù)寄存器TH和TL
T/C是16位的,計數(shù)寄存器有TH高8位TL低8位構(gòu)成。在特殊功能寄存器中,對應(yīng)T/C0為TH0和TL0;對應(yīng)T/C1為TH1和TL1。定時器/計數(shù)器的初始值通過TH1/TL1和TH0/TL0設(shè)置
(2)定時器/計數(shù)器控制寄存器TCON
表4.5 定時器/計數(shù)器控制寄存器TCON

TR1

TR0





TR0、TR1:定時器/計數(shù)器0、1啟動控制位。1是啟動,0是停止
TCON復(fù)位后清零,T/C需要受到軟件控制才能啟動計數(shù);當(dāng)計數(shù)計滿時,產(chǎn)生向高位的進位TF,即溢出中斷請求標(biāo)志
T/C的方式控制寄存器TMOD
表4.6 T/C的方式控制寄存器TMOD
GATE
C/T
M1
M0
GATE
C/T
M1
M0

C/T:計數(shù)器或定時器選擇位。1位計數(shù)器,0位定時器
GATE:門控信號。1時T/C的啟動控制受到雙重控制,即要求TR0/TR1和INT0/INT1同時為高;0時T/C的啟動僅受TR0/TR1控制。
表4.7 M1和M0工作方式選擇位
M1    M0
方式
功能
0      0
0
為13位定時器/計數(shù)器,TL存低5位,TH存高8位
0      1
1
為16定時器/計數(shù)器,TL存低8,TH存高8位
1      0
2
常數(shù)自動裝入的8位定時器/計數(shù)器
1      1
3
僅適用于T/C0,兩個8為定時器/計數(shù)器

2.3.2 定時器/計數(shù)器的初始化
(1)初始化步驟
在使用89C51的定時器/計數(shù)器前,應(yīng)對它進行編程初始化,主要是對TCON和TMOD編程,還需要計算和裝載T/C的計數(shù)初值。一般完成以下幾個步驟:
  •      確定T/C的工作方式----編程TMOD寄存器。
  •      計算T/C中的計數(shù)初值,并裝載到TH和TL。
  •      T/C在中斷方式工作時,須開CPU中斷和源中斷----編程IE寄存器。
  •      啟動定時器/計數(shù)器----編程TCON中TR1和TR0位
(2)計數(shù)初值的計算
在定時器方式下,T/C是對機器周期脈沖計數(shù)的,如果fosc=6MHz,一個機器周期為2us,則
方式0  13位定時器最大時間間隔=(2-1)×2us=16.384ms;
方式1  16位定時器最大時間間隔=(2-1)×2us=131.072ms;
方式2  8 位定時器最大時間間隔=(2-1)×2us=512us
若使T/C工作在定時器方式1,要求定時1ms,求計數(shù)初值。如設(shè)計數(shù)初值為x,則有(2-1)×2us=1000us
x=2-500
因此,TH,TL可置65536-500。

3 計價器系統(tǒng)設(shè)計
3.1 硬件設(shè)計
3.1.1 整體硬件電路圖
1.003.jpg


由上圖我們可以清楚地看到,本電路控制核心是AT89C51芯片。該方案我們采用動態(tài)顯示的方法。動態(tài)顯示的優(yōu)點是,它占用CPU的時間少,每次只把一個數(shù)據(jù)送到外部接口,雖然我們仿真看到的是全部數(shù)碼管都亮著,那是因為動態(tài)顯示的時間比較快,超過我們?nèi)搜鄣谋鎰e能力。若我們在仿真的時候暫停一下,就可以清楚地看到,時間單元和價格單元分別只顯示一位。靜態(tài)顯示,是每一個數(shù)碼管不論在什么時候都點亮,占用CPU的時間很多。按鍵主要控制系統(tǒng)的初始化、開始工作、數(shù)據(jù)鎖存三項工作。剛開始上電,則所有的數(shù)碼管同時顯示全0狀態(tài),當(dāng)?shù)谝淮伟聪麻_關(guān),價格從起步價005.0元開始計費,等待是否超過三公里以及計算,時間單元則從00.00.00開始計時,一秒一秒往上加。P0口作為數(shù)據(jù)總線口,分別把數(shù)據(jù)輸送到4個74LS273地址鎖存器中,而鎖存器的工作需要等待脈沖的到來。脈沖通過寫地址有些端口p3.6和端口p2.0-p2.3經(jīng)過或非門來產(chǎn)生。只有當(dāng)把數(shù)據(jù)送到外部接口時,p3.6口才為低電平,p2.0-p2.3用來控制到底是把數(shù)據(jù)送往哪一個鎖存器。
算法公式是:費用=起步價+(路程-3)×1.3
路程=速度×?xí)r間 (速度恒定,60Km/h,也就是1Km/min)
若路程小于等于3,則收起步價5元,否則按費用公式算。               
由于速度恒定,所以計算的核心是時間,只要判斷時間超出2分鐘,則費用公式就開始計算,每多出一公里,費用就加上1.5元,一分鐘一公里來計算,因此本設(shè)計比較簡單。時間單元由單片機的定時器/計數(shù)器來計算,延時1ms時間的初值由程序來設(shè)定。
3.1.2 74LS273和74LS02簡介
1.004.jpg


1.005.jpg
引腳功能:74LS273是8位數(shù)據(jù)/地址鎖存器。74LS273是一種帶清除功能的8D觸發(fā)器,1D~8D為數(shù)據(jù)輸入端,1Q~8Q為數(shù)據(jù)輸出端,正脈沖觸發(fā),低電平清除,常用作8位地址鎖存器。
1.006.jpg


引腳功能:74LS02是四二輸入或非門。該芯片有四個或非門公選擇,如1A或1B后,經(jīng)過非門再輸出,只有當(dāng)輸入的兩個變量同時為0時,輸出才為1。具有緩沖倒相功能。

3.2 軟件設(shè)計
3.2.1 模塊介紹
該計費器系統(tǒng)的軟件設(shè)計分為一下幾個模塊:
(1)主程序模塊
在主程序模塊中,需要完成對個接口芯片的初始化、出租車起步價和單價、中斷向量的設(shè)計以及開中斷、循環(huán)等待等工作。另外,在主程序模塊中還需要設(shè)置啟動/清除標(biāo)志寄存器、里程寄存器和價格寄存器,并對它們進行初始化。然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動、清除、計程和計價等不同的操作。流程圖如3-4所示。
當(dāng)按下輕觸開關(guān)時,開始對系統(tǒng)初始化,價格和時間都顯示0、0,再次按下開關(guān),時間單元開始計時,并計算時間是否超過2分鐘,超過2分鐘,則從第3分鐘開始計費。價格單元從起步價5.0元開始計費,每多一分鐘,價格單元多加1.5元。
(2)顯示子程序模塊
由于顯示是由顯示時間子程序DIS1和顯示價格子程序DIS組成的,時間由小時、分、秒三個單元組成,共六個數(shù)碼管。價格由元和角兩個單元組成,最大可以顯示999.9元。


3.2.2 程序流程圖


1.007.jpg


3.2.3 匯編程序
  1. ORG    0000H               ;初始化段地址

  2.       LJMP  MAIN        ;長跳轉(zhuǎn)到主函數(shù)MAIN處

  3.       ORG     000BH       ;TT0開始地址

  4.       LJMP    TT0         ;長跳轉(zhuǎn)到TT0 處

  5.        ORG     0030H       ;主函數(shù)開始地址,避開00—30敏感段

  6. MAIN: MOV     SP,#40H     ;設(shè)堆棧底指針,下一個數(shù)據(jù)將放在41H單元

  7.        MOV     70H,#60     ;價格單元的起步價

  8.        MOV     71H,#00     ;價格單元的十位和百位

  9.     MOV     72H,#00     ;秒單元清零

  10.        MOV     74H,#00     ;時單元清零

  11.      MOV    75H,#00     ;75H單元清零備用

  12.     CLR    00H

  13.     CLR    01H         ;將00H,01H單元清零

  14.     MOV     6BH,#0AH    ;將0AH(既十進制10)放入6B單元

  15.        MOV     R1,#76H     ;把76H放到R1中

  16. KKK:  MOV    @R1,#00H    ;將76H單元的內(nèi)容清零

  17.        INC    R1

  18.        DJNZ   6BH,KKK     ;76H—7FH單元全部清零,備用

  19.        LCALL DIS         ;調(diào)用價格顯示子程序

  20.        LCALL   DIS1        ;調(diào)用時間顯示子程序

  21.        MOV    TMOD,#11H   ;定時器/計數(shù)器工作方式設(shè)置

  22.        MOV     TH0,#3CH

  23.        MOV     TL0,#0B0H   ;這句和上一句設(shè)置延時50ms

  24.        MOV     6EH,#20     ;將6EH單元設(shè)置20,達到1s的延時

  25. G2:    LCALL   DIS         ;長調(diào)用價格顯示子程序

  26.        LCALL   DIS1        ;長調(diào)用時間顯示子程序

  27.        JB      P1.0,G2     ;開關(guān)沒按下,等待按下,顯示初始狀態(tài),全部為零

  28.        LCALL   TIME1       ;調(diào)用TIME1延時子程序

  29.        JB      P1.0,G2     ; 開關(guān)沒按下,跳到G2,否則轉(zhuǎn)到下一步

  30. G1:    LCALL   DIS

  31.        LCALL   DIS1

  32.        JNB     P1.0,G1     ;開關(guān)按下,繼續(xù)顯示價格和時間,并轉(zhuǎn)到中斷

  33.        SETB    EA          ;開中斷

  34.        SETB    ET0         ;定時器0中斷允許,向CPU申請中斷

  35.        SETB    TR0         ;定時器0工作允許

  36.        SETB    01H         ;01H單元置位

  37. LLL:   LCALL   CHAI        ;調(diào)用現(xiàn)場保護子程序

  38.        LCALL   DIS

  39.        LCALL   JISUAN      ;調(diào)用計算子程序

  40.        LCALL   DIS1

  41.        JB      P1.0,G3     ;開關(guān)沒按下,則返回

  42.        LCALL   TIME1

  43.        JB      P1.0,G3

  44.        CPL     01H         ;01H單元此時為零

  45.        JNB     01H,G5;01H  ;單元內(nèi)容為0,跳到G5

  46.        SETB    ET0         ;定時器0中斷允許,向CPU申請中斷

  47. G6:    LCALL   DIS

  48.        LCALL   DIS1

  49.        JNB    P1.0,G6     ;開關(guān)按下,顯示所走的時間及費用

  50.        LJMP    MAIN        ;重新等待下一個工作狀態(tài)

  51. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼




結(jié)束語
經(jīng)過這一階段的學(xué)習(xí),總于完成了設(shè)計。設(shè)計的每一步對我都是新的嘗試,對自己的設(shè)計總有一種期待。這段時間,學(xué)到了很多知識也有很多感受。通過這次設(shè)計我開始獨立學(xué)習(xí)和探索。查看相關(guān)的資料和書籍,使大腦由模糊到清晰,使自己的設(shè)計逐步完善起來,每一次改進都使我受益頗豐。
雖然我的設(shè)計不是很成熟,功能也很單一,付出了自己的努力,這是我引以自豪的。我相信只有經(jīng)歷過的人才會明白真滋味。
做學(xué)問,是真正自己學(xué)習(xí)和研究的過程,希望這次的經(jīng)歷能讓我在工作學(xué)習(xí)中激勵我繼續(xù)前進。


參考文獻

[1]:周立功、夏宇聞.單片機與CPLD綜合應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版,2006

[2]:丁元杰.單片微機原理及應(yīng)用[M].北京:機械工業(yè)出版社,2005

[3]:靳達編.單片機應(yīng)用系統(tǒng)開發(fā)實例導(dǎo)航[M].北京:人民郵電出版社,2007

[4]:李光飛.單片機課程設(shè)計實例指導(dǎo)[M].北京:北京航空航天大學(xué)出版社,2006

[5]:胡宴如.高頻電子線路[M].北京:高等教育出版社,2006

[6]:白駒珩、雷曉平.單片計算機及其應(yīng)用[M].成都:電子科技大學(xué)出版社,2005

[7]:李廣弟.單片機基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2006

[8]:沈美明、溫冬嬋.IBM匯編語言程序設(shè)計[M].北京:清華大學(xué)出版社,2004

[9]:彭傳正、林春景.凌陽單片機原理與實踐[M].北京:北京航空航天大學(xué)出版社,2006

[10]:李榮正、陳學(xué)軍.PIC單片機實踐教程[M].北京:北京航空航天大學(xué)出版社,2006

[11]:閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2007



完整論文下載(word格式 可編輯):
基于AT89C51單片機的出租車計價器系統(tǒng)設(shè)計.doc (365.5 KB, 下載次數(shù): 168)



評分

參與人數(shù) 1黑幣 +5 收起 理由
aa521314 + 5 贊一個!

查看全部評分

回復(fù)

使用道具 舉報

ID:284631 發(fā)表于 2018-2-28 00:29 | 顯示全部樓層
大佬,能把電路圖發(fā)出來么?
回復(fù)

使用道具 舉報

ID:284631 發(fā)表于 2018-2-28 00:30 | 顯示全部樓層
大佬,能把電路圖發(fā)出來么?
回復(fù)

使用道具 舉報

ID:280467 發(fā)表于 2018-3-2 14:33 | 顯示全部樓層
感謝親的分享,只可惜是匯編的,不過還是非常感謝的
回復(fù)

使用道具 舉報

ID:433287 發(fā)表于 2018-11-27 16:10 | 顯示全部樓層
有元器件的目錄么?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 免费欧美视频 | 神马影院一区二区三区 | 一级黄色夫妻生活 | 天天操天天射天天 | 欧美一区二区在线 | 日本精品一区二区三区视频 | 国产精品美女 | 久久久久国产一区二区三区 | 免费看黄视频网站 | 精品一区二区免费视频 | 成人一区二 | 岛国av在线免费观看 | 亚洲精品一区二区三区蜜桃久 | 久久久久久久久毛片 | 最新国产精品 | 日韩激情在线 | 精品国产乱码久久久久久1区2区 | 日本视频免费 | 九九热热九九 | 毛片免费观看 | 在线一区观看 | 久久蜜桃av一区二区天堂 | 日韩电影在线 | 中文字幕爱爱视频 | 一区二区三区四区国产 | 国产精品亚洲视频 | 日韩免费电影 | 国产精品久久影院 | 亚洲免费网 | 伊人伊成久久人综合网站 | 777zyz色资源站在线观看 | 国产成人免费视频网站高清观看视频 | 欧美成人精品在线 | 国产一区二区免费电影 | 欧美日韩在线成人 | 91国在线观看 | 久久国产精品偷 | 日韩欧美在线视频 | 中文字幕在线观 | 国产午夜精品一区二区三区嫩草 | 欧美日韩在线综合 |