出租車計價器_第1頁
出租車計價器_第2頁
出租車計價器_第3頁
出租車計價器_第4頁
出租車計價器_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 電子信息工程 專業(yè)課程設(shè)計題單 班級 學(xué)生 朱振華 課程名稱 專業(yè)課程設(shè)計 課 題 出租車計價器 設(shè)計要求 里程顯示為:*.*,公里能預(yù)置起步價及單價:如起步3公里6.00元;1.60/公里 課 題 發(fā) 給 日 期 2011.6.14 課程設(shè)計完成日期 2011.7.1 指 導(dǎo) 教 師 評語: 評分: 摘 要 近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術(shù)日益更新。在實(shí)時檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個核心部件來使用,僅單片機(jī)方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。目前,單片機(jī)應(yīng)用的非常廣泛,幾乎在所有的領(lǐng)域都能看到單片機(jī)

2、的身影,導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上的各種儀表控制,計算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實(shí)時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。 現(xiàn)實(shí)生活中越來越離不開Taxi,由于它的存在,生活變得便捷。它的智能計價,使得出租車費(fèi)用得以規(guī)范,人們的打的生活變得更加美好。現(xiàn)實(shí)生活中打的有打表計時和打表計碼兩種方式,但是打表計碼對大眾來說應(yīng)該合理一些。按里程計價有一個起步價,超過里程按照相應(yīng)價格計價,這樣可謂幾乎實(shí)現(xiàn)雙贏。 關(guān)鍵字: 單片機(jī)

3、出租車 打表計碼 起步價 8255 目 錄前 言 .4第一章 緒 論 .51.1 引言 .51.2 課題背景 .51.3 研究的意義及內(nèi)容 .5第二章 系統(tǒng)總體設(shè)計方案 .72.1 總體設(shè)計方案 .72.2 出租車計價器設(shè)計思想 .8 2.2.1具體設(shè)計思想 .8 2.2.2出租車計價狀態(tài) .8第三章 系統(tǒng)的硬件設(shè)計 .103.1 8051單片機(jī)簡介 .103.2 內(nèi)部資源 .113.2.1 串行口 .123.2.2 定時器/計時器 .123.2.3 中斷系統(tǒng) .123.3 出租車計價器各部分功能分析及各邏輯器件描述 .123.3.1單片機(jī)輸入輸出引腳 .123.3.2 時鐘定時控制部件 .1

4、23.3.3 LED數(shù)字顯示電路 .143.3.4 復(fù)位電路 .153.3.5 出租車計價器顯示電路 .163.3.6 擴(kuò)展并行I/O口8255 .173.3.7 74LS373芯片簡介 .18第四章 軟件設(shè)計 .204.1 設(shè)計要求 .204.2 主程序流程圖 .204.3 中斷程序流程圖 .214.4 源程序及代碼注釋 .25第五章 課程調(diào)試 .36第六章 總 結(jié) .37參 考 文 獻(xiàn) .38附 錄 .39 附圖1:80C51與8255電路連接部分 .39 附圖2:8255通過74LS245控制數(shù)碼管顯示部分 .40 附圖3:出租車計價器整體電路. . . 41前 言 隨著計算機(jī)科學(xué)技術(shù)的

5、不斷發(fā)展,單片微型機(jī)得到了廣泛的應(yīng)用,是人們利用計算機(jī)設(shè)計和開發(fā)各種應(yīng)用系統(tǒng)的基礎(chǔ)。同時單片機(jī)接口技術(shù)也是一門實(shí)踐性較強(qiáng)的課程, 理論與實(shí)踐相結(jié)合可以更好的掌握知識,這也是這次交通燈系統(tǒng)控制的設(shè)計目的。道路交通事業(yè)的發(fā)展以及人們生活水平的提高都促使交通工具的不斷變化,無論是在大城市或是中小城市越來越多的出租車公司不斷的出現(xiàn)。出租車的出現(xiàn)方便了人們的生活,對于現(xiàn)在快節(jié)奏生活方式的人們來說出租車無疑是最好的交通工具。但是,傳統(tǒng)的出租車收費(fèi)方式完全是司機(jī)說了算,乘客不能很直觀的看到比如收費(fèi)標(biāo)準(zhǔn)以及行駛里程等各種數(shù)據(jù),給本來想尋求方便的人們帶了不便,也加重了司機(jī)的負(fù)擔(dān)。我們設(shè)計的這種出租車計價器,它可

6、以提供不同的收費(fèi)標(biāo)、準(zhǔn)計時收費(fèi),允許司機(jī)根據(jù)情況修改單價,直觀的顯示當(dāng)前單價、行駛里程、總金額等,有必要的話還可以打印輸出各種數(shù)據(jù)。主要包括以下五個方面:1.課程設(shè)計題目名稱;2.課程設(shè)計要求完成的任務(wù);3.系統(tǒng)設(shè)計文檔(包括了總體設(shè)計、詳細(xì)設(shè)計以及程序設(shè)計等文檔);4、課程設(shè)計總結(jié) ;5.參考文獻(xiàn)。第一章 緒 論1.1 引言 隨著社會經(jīng)濟(jì)的發(fā)展,城市交通問題越來越引起人們的關(guān)注。雖然公交很便利,但是擁擠的公交還是讓人們煩惱,出租車則不一樣,它能夠給你提供舒適的環(huán)境以及能高效的將你傳送到目的的。的士之所以這么受大眾歡迎,當(dāng)然也少不了它公平的價格了。誰成就了它呢,計價器也算是一大功臣。近年來隨著

7、科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,同時帶動傳統(tǒng)控制檢測日新月異更新。在實(shí)時檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往是作為一個核心部件來使用,僅單片機(jī)方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點(diǎn)的軟件結(jié)合,加以完善。1.2 課題背景在今天,公交車穿梭在各個道口上,已經(jīng)成為傳送交通工具中最常見和最有效的工具之一。計價器的出現(xiàn),使人們乘坐出租車時對自己的消費(fèi)更加透明,使得收費(fèi)更加合理化。因此,計價器的優(yōu)化以及設(shè)計也是影響人們生活的一大因素。1.3 研究的意義及內(nèi)容 隨著我國社會經(jīng)濟(jì)的發(fā)展,城市化、城鎮(zhèn)化進(jìn)程的加快,的士的普及,一個良好的出租車計價器成為了必不可少

8、的交易工具之一。 該課題研究的內(nèi)容主要是單片機(jī),單片機(jī)是微型計算機(jī)的一個重要分支,也是頗具生命力的機(jī)種。單片機(jī)微型計算機(jī)簡稱單片機(jī),特別適用于控制領(lǐng)域,故又稱為微控制器。隨著單片機(jī)在各個領(lǐng)域的廣泛應(yīng)用,單片機(jī)以其自身的特點(diǎn),已廣泛的應(yīng)用于智能儀器、工業(yè)控制、家用電器、電子玩具等各個領(lǐng)域。這種將單片機(jī)嵌入到對象體系中的嵌入式系統(tǒng)已滲透到每個單位、每個家庭和個人。隨著社會需求的不斷增長,單片機(jī)的應(yīng)用有著廣泛的和穩(wěn)定增長的市場通常,單片機(jī)由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計算機(jī)的基本功能部件:中央處理器、存儲器和I/O接口電路等。因此,單片機(jī)只需要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個單片機(jī)控制

9、系統(tǒng)。由單片機(jī)構(gòu)成計價器,在單片機(jī)內(nèi)運(yùn)行適當(dāng)?shù)某绦蚣礃?gòu)成了出租車計價器。 第二章 系統(tǒng)總體設(shè)計方案2.1 總體設(shè)計方案由于實(shí)驗條件的限制,即實(shí)驗箱只有六個數(shù)碼管,故起步價、大的費(fèi)用以及單價均由P4、P5(即最左邊兩個數(shù)碼管)顯示,里程由P2、P3(即中間兩個數(shù)碼管)顯示,脈沖計數(shù)由P0、P1(即最右邊兩個數(shù)碼管顯示)。由于缺少霍爾傳感器,因此只能通過輸入脈沖模擬。因此電路由時鐘脈沖電路(8MHZ接P1.0)、復(fù)位電路、數(shù)碼管顯示電路構(gòu)成。單片機(jī)時間顯示金額單價顯示顯示電路設(shè)置電路里程檢測系統(tǒng)復(fù)位存儲電路路程單價顯示等待時間單價計費(fèi)模式顯示 2-1 出租車計價器總體設(shè)計圖數(shù)碼管顯示電路時鐘脈沖電

10、路 復(fù)位電路單 片機(jī)鍵盤接口電路 2-1 單片機(jī)單元框圖2.2 計價器設(shè)計思想2.2.1具體設(shè)計思想 利用80C51單片機(jī)控制出租車計價系統(tǒng)工作。 單片機(jī)P1.0口作為脈沖輸入。8255的PB口連接一個74LS245芯片(雙向總線驅(qū)動器),再與外部六個數(shù)碼管連接,PB口連接一個74LS245芯片與6個數(shù)碼管的公共COM端連接,用于選擇數(shù)據(jù)輸出的地址,這樣就可以實(shí)現(xiàn)起始價、單價、里程、脈沖計數(shù)的動態(tài)顯示,并且節(jié)省了端口數(shù)。數(shù)碼管的段控制信號是由8255的PB口經(jīng)74LS245緩沖器后輸出得到,6位位控制信號由8255的PA口經(jīng)74LS245緩沖器后輸出得到。鍵盤電路由8255構(gòu)成,其中8255的

11、PC0-PC3作為矩陣式鍵盤行掃描線,8255的PA口為矩陣鍵盤列入線。 2.2.2計價器相應(yīng)控制通過軟件編程實(shí)現(xiàn)計價器起始價、單價、脈沖技術(shù)的顯示以及按下相應(yīng)鍵實(shí)現(xiàn)開始暫停、設(shè)置單價、復(fù)位功能,各個鍵按下的功能如表2-2所示。0鍵開始計數(shù)(價)E鍵暫停計數(shù)(價)F鍵復(fù)位(恢復(fù)起始價6元)2鍵 設(shè)置單價2元/公里3鍵 確定單價,恢復(fù)起始價表2-2 各個按鍵的功能在白天,不用調(diào)節(jié)價格,當(dāng)里程超過3公里即按照每公里1元計算,3公里以內(nèi)則均按起始價6元計費(fèi)。操作如下:白天只要顧客上車,就按下0鍵,到達(dá)目的地按下E鍵,然后讀數(shù)碼管上的L6、L5(最左邊兩位數(shù)碼管)即為費(fèi)用,中間兩位即為里程。顧客付費(fèi)完

12、后按下F鍵復(fù)位,恢復(fù)起始價格,等待下一個顧客的到來。在晚上,由于夜間行車風(fēng)顯以及司機(jī)加班狀態(tài),價格翻倍,3公里內(nèi)還是按照起始價6元計費(fèi);超過3公里則按照每公里2元計價。操作如下:按下2鍵顯示單價2元/公里,按下3鍵確定單價是2元/公里并恢復(fù)起始價6元,待顧客上車按0鍵開始計價,到達(dá)目的地按下E鍵,然后讀數(shù)碼管上的L6、L5(最左邊兩位數(shù)碼管)即為費(fèi)用,中間兩位即為里程。顧客付費(fèi)完后按下F鍵復(fù)位,恢復(fù)起始價格,等待下一個顧客的到來。第三章 系統(tǒng)的硬件設(shè)計3.1 80C51單片機(jī)簡介 80C51單片機(jī)屬于MCS-51系列單片機(jī),由Intel公司開發(fā),其結(jié)構(gòu)是8048的延伸,改進(jìn)了8048的缺點(diǎn),增

13、加了如乘(MUL)、除(DIV)、減(SUBB)、比較(PUSH)、16位數(shù)據(jù)指針、布爾代數(shù)運(yùn)算等指令,以及串行通信能力和5個中斷源。采用40引腳雙列直插式DIP(Dual In Line Package),內(nèi)有128個RAM單元及4K的ROM。80C51有兩個16位定時計數(shù)器,兩個外中斷,兩個定時計數(shù)中斷,及一個串行中斷,并有4個8位并行輸入口。80C51內(nèi)部有時鐘電路,但需要石英晶體和微調(diào)電容外接,本系統(tǒng)中采用12MHz的晶振頻率。由于80C51的系統(tǒng)性能滿足系統(tǒng)數(shù)據(jù)采集及時間精度的要求,而且產(chǎn)品產(chǎn)量豐富來源廣,應(yīng)用也很成熟,故采用來作為控制核心。其管腳封裝如圖3-1所示。圖3-1 80C

14、51 管腳封裝80C51包含以下部分,其結(jié)構(gòu)圖如圖3-2所示(1)一個8位微處理器CPU(2)片內(nèi)數(shù)據(jù)存儲器RAM和特殊功能寄存器SFR(3)片內(nèi)程序存儲器ROM(4)兩個定時/計數(shù)器T0、T1,可用作定時器,也可用以對外部脈沖進(jìn)行計數(shù)(5)四個8位可編程的并行I/O端口,每個端口既可作輸入,也可作輸出(6)一個串行端口,用于數(shù)據(jù)的串行通信(7)中斷控制系統(tǒng)(8)內(nèi)部時鐘電路圖3-2 80C51內(nèi)部結(jié)構(gòu)圖功能特性概述:80C51 提供以下標(biāo)準(zhǔn)功能:8K字節(jié) Flash 閃速存儲器,256字節(jié)內(nèi)部 RAM,32 個 I/O 口線,3 個 16 位定時/計數(shù)器,一個 6 向量兩級中斷結(jié)構(gòu),一個全雙

15、工串行通信口,片內(nèi)振蕩器及時鐘電路。同時,80C51 可降至 0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止 CPU 的工作,但允許 RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存 RAM 中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位。3.2 內(nèi)部資源3.2.1 串行口8051單片機(jī)內(nèi)部有一個可編程的、全雙工的串行接口。串行收發(fā)貯存在特殊功能寄存器SFR中的串行數(shù)據(jù)緩沖器SBUF中的數(shù)據(jù),SBUF占用內(nèi)部RAM地址99H。但在機(jī)器內(nèi)部,實(shí)際上有兩個數(shù)據(jù)緩沖器:發(fā)送緩沖器和接收緩沖器,因此,可以同時保留收/發(fā)數(shù)據(jù),進(jìn)行收/發(fā)操作,但收

16、/發(fā)操作都是對同一地址99H進(jìn)行的。3.2.2 定時器/計時器 8051內(nèi)部有兩個16位可編程計時器/計數(shù)器,記為T0和T1。16為是指他們都是由16個觸發(fā)器構(gòu)成,故最大計數(shù)模值為216-1,可編程是指他們的工作方式由指令來設(shè)定,或者當(dāng)計數(shù)器用,或者當(dāng)定時器用。并且計數(shù)(定時)的范圍可以由指令來設(shè)置。這種控制功能是通過定時器方式控制寄存器TMOD來完成的。 如果需要,定時器在記到規(guī)定的定時值時可以向CPU發(fā)出中斷申請,從而完成某種定時的控制功能。在計數(shù)狀態(tài)下同樣可以申請中斷。定時控制寄存器TCON用來負(fù)責(zé)定時器的啟動、停止以及中斷管理。 在定時工作時,時鐘由單片機(jī)內(nèi)部提供,即系統(tǒng)時鐘經(jīng)過12分

17、頻作為定時器的時鐘。計數(shù)工作時,時鐘脈沖(計數(shù)脈沖)由T0和T1(即P3.4,P3.5)輸入。3.2.3 中斷系統(tǒng)8051的中斷系統(tǒng)允許接受五個獨(dú)立的中斷源,即兩個外部中斷申請,兩個定時器/計數(shù)器中斷以及一個串行口中斷。外部中斷申請通過INT0和INT1(即P3.2,P3.3)輸入,輸入方式可以是電平觸發(fā)(低電平有效),也可以是邊沿觸發(fā)(下降沿有效)。兩個定時器中斷請求是當(dāng)定時器溢出時向CPU提出的,即當(dāng)定時器由狀態(tài)全1轉(zhuǎn)為全0時發(fā)出的。第五個中斷請求是由串行口發(fā)出的,串行口每發(fā)送完一個數(shù)據(jù)或接收完一個數(shù)據(jù),就可以提出一次中斷請求。8051單片機(jī)可以設(shè)置兩個中斷優(yōu)先級,即高優(yōu)先級和低優(yōu)先級,由

18、中斷優(yōu)先控制器IP來控制。3.3 計價器各部分功能分析及各邏輯器件描述3.3.1單片機(jī)輸入輸出引腳 (1) P1端口P0.0-P0.7 P0是一個8位漏極開路型雙向I/O端口,端口置1(對端口寫1)時作高阻抗輸入端。作為輸出口時能驅(qū)動8個TTL。對內(nèi)部Flash程序存儲器編程時,接收指令字節(jié);校驗程序時輸出指令字節(jié),要求外接上拉電阻。 在訪問外部程序和外部數(shù)據(jù)存儲器時,P0口是分時轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線,訪問期間內(nèi)部的上拉電阻起作用。(2) P1端口P1.0P1.7 P1是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入

19、用。對內(nèi)部Flash程序存儲器編程時,接收低8位地址信息。(3) P2端口P2.0P2.7 P2是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時,接收高8位地址和控制信息。在訪問外部程序和16位外部數(shù)據(jù)存儲器時,P2口送出高8位地址。而在訪問8位地址的外部數(shù)據(jù)存儲器時其引腳上的內(nèi)容在此期間不會改變。(4) P3端口P3.0P3.7 P2是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時,接控

20、制信息。除此之外P3端口還用于一些專門功能,具體請參看下表。P3引腳兼用功能P3.0串行通訊輸入(RXD)P3.1串行通訊輸出(TXD)P3.2外部中斷0( INT0)P3.3外部中斷1(INT1)P3.4定時器0輸入(T0)P3.5定時器1輸入(T1)P3.6外部數(shù)據(jù)存儲器寫選通WRP3.7外部數(shù)據(jù)存儲器寫選通RD3.3.2 時鐘定時控制部件由于AT89C52單片機(jī)內(nèi)部有一個用于構(gòu)成振蕩器的高增益反向放大器,此放大器的輸入和輸出端分別是引腳XTAL1和XTAL2,在XTAL1和XTAL2上外接時鐘源即可構(gòu)成時鐘電路,該電路采用的是內(nèi)部方式,如圖3-3所示。圖3-3 時鐘定時電路 在XTAL1

21、和XTAL2的兩端接石英晶體振蕩器,與內(nèi)部反向器構(gòu)成穩(wěn)定的自激振蕩器,發(fā)出的時鐘脈沖直接進(jìn)入片內(nèi)定時定時控制部件。用以提供交通燈時鐘信號。在該電路的設(shè)計過程中,C1、C2的選取對頻率有微調(diào)作用,選取值是22pF。為了減少寄生電容,保證振蕩器穩(wěn)定和可靠的工作,在接線時將晶振和電容的管腳接在單片機(jī)最近的地方。3.3.3 LED數(shù)字顯示電路顯示器普遍地用于直觀地顯示數(shù)字系統(tǒng)的運(yùn)行狀態(tài)和工作數(shù)據(jù),按照材料及產(chǎn)品工藝,單片機(jī)應(yīng)用系統(tǒng)中常用的顯示器有: 發(fā)光二極管LED顯示器、液晶LCD顯示器、CRT顯示器等。LED顯示器是現(xiàn)在最常用的顯示器之一,如圖3-4所示。圖3-4 LED顯示器的符號圖發(fā)光二極管(

22、LED)由特殊的半導(dǎo)體材料砷化鎵、磷砷化鎵等制成,可以單獨(dú)使用,也可以組裝成分段式或點(diǎn)陣式LED顯示器件(半導(dǎo)體顯示器)。分段式顯示器(LED數(shù)碼管)由7條線段圍成8字型,每一段包含一個發(fā)光二極管。外加正向電壓時二極管導(dǎo)通,發(fā)出清晰的光。只要按規(guī)律控制各發(fā)光段亮、滅,就可以顯示各種字形或符號。LED數(shù)碼管有共陽、共陰之分。圖3-5是共陽式、共陰式LED數(shù)碼管的原理圖和符號。表3-1是兩種數(shù)碼管段碼與顯示字形的關(guān)系。圖3-5 數(shù)碼管原理圖和數(shù)碼管符號圖顯示字型0123456789段碼共陽C0HF9HA4HB0H99H92H82HF8H80H90H共陰3FH06H5BH4FH66H6DH7DH07

23、H7FH6FH表3-1段碼與顯示字形的關(guān)系3.3.4 復(fù)位電路在振蕩器運(yùn)行時,有兩個機(jī)器周期(24個振蕩周期)以上的高電平出現(xiàn)在80C51的9(RST)引腳上時,將使單片機(jī)復(fù)位,只要這個腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P0P3口均置1,引腳表現(xiàn)為高電平,程序計數(shù)器和特殊功能寄存器SFR全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r,芯片為ROM的00H處開始運(yùn)行程序。復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。片內(nèi)復(fù)位電路是復(fù)位引腳RST通過一個斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,它的輸出在每個機(jī)器周期的S5P2,由復(fù)位電路采樣一次。復(fù)位電路通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式,此電路

24、系統(tǒng)采用的是上電與按鈕復(fù)位電路。當(dāng)時鐘頻率選用12MHz時,C取10F,R約為10K。復(fù)位操作不會對內(nèi)部RAM有所影響。常用的復(fù)位電路如圖3-6所示: 圖3-6 單片機(jī)復(fù)位電路3.3.5 出租車計價顯示電路 出租車計價器顯示電路主要由代碼實(shí)現(xiàn)。顯示電路如下圖所示。圖3-7 出租車計價器顯示電路3.3.6 擴(kuò)展并行I/O口82558255A芯片是一個采用NMOS工藝制造的、40引腳雙列直插式封裝組建的大規(guī)模集成電路,采用單一+5V電源供電。40個引腳中有24個為與外圍設(shè)備的接口。8255管腳封裝如圖3-8所示。圖3-8 8255管腳封裝圖(1)數(shù)據(jù)總線緩沖器 這是一個三態(tài)雙向緩沖器,其寬度是8位

25、,用做8255的內(nèi)部數(shù)據(jù)總線與系統(tǒng)中的數(shù)據(jù)總線相連時的緩沖部件。緩沖器向數(shù)據(jù)總線送出數(shù)據(jù),或從數(shù)據(jù)總線接收數(shù)據(jù)都是CPU指令控制下進(jìn)行的。 (2)讀寫邏輯控制 這一部件用來管理所有的數(shù)據(jù)、控制字或狀態(tài)資的傳送。他接收來自CPU的各種控制信號,并以此為依據(jù),控制數(shù)據(jù)總線緩沖器數(shù)據(jù)的傳送方向。與CPU相連的個引腳說明如下:1) CS:芯片選擇信號。來自地址譯碼器,低電平有效。2) RD:芯片讀出信號。來自系統(tǒng)總線,低電平有效。3) WR:芯片寫入信號。來自系統(tǒng)總線,低電平有效。4) RESET復(fù)位信號。當(dāng)它為高電平時,清除所有內(nèi)部寄存器的內(nèi)容,并將3 個數(shù)據(jù)端口PA,PB,PC置為輸入方式。5)

26、A1,A0:端口地址選擇信號。用于選擇8255A的3個數(shù)據(jù)端口和1個控 制口。當(dāng)A1A0為00、01、10時,分別選擇數(shù)據(jù)端口PA、PB、PC;當(dāng)A1A0 為11時,選擇控制口。 6) Vcc、GND:電源和地線。 (3) 端口PA、PB與PC8255A有三個與外圍設(shè)備相連的端口PA,PB,PC。各端口可以獨(dú)立工作,由程序控制位將它設(shè)成各種不同的工作方式。端口A,B一般用做獨(dú)立的輸入或輸出端口,每個端口包括一個四位瑣存器,分別與A口,B口配合使用,作為與外設(shè)之間的聯(lián)絡(luò)信號3.3.7 74LS373芯片簡介 74LS373 是一種帶三態(tài)門的8D鎖存器,其管腳示意圖3-9所示。其中:D0-D7為8

27、個輸入端。 Q0-Q7為8個輸出端。 LE為數(shù)據(jù)打入端: 當(dāng)LE為“1”時,鎖存器輸出狀態(tài)同輸入狀態(tài); 當(dāng)LE由“1”變“0”時,數(shù)據(jù)打入鎖存器 為輸出允許端: 當(dāng)=0時,三態(tài)門打開; 當(dāng)=1時,三態(tài)門關(guān)閉,輸出為高阻狀態(tài)。 圖3-9 74LS373管腳封裝圖第4章 軟件設(shè)計 軟件在硬件平臺上構(gòu)筑,完成各部分硬件的控制和協(xié)調(diào)。系統(tǒng)功能是由硬件和軟件共同實(shí)現(xiàn)的,由于軟件的可伸縮性,最終實(shí)現(xiàn)的系統(tǒng)功能可強(qiáng)可弱,差別可能很大。因此,軟件是本系統(tǒng)的靈魂。軟件采用模塊化設(shè)計方法,不僅易于編程和調(diào)試,也可減小軟件故障率和提高軟件的可靠性。同時,對軟件進(jìn)行全面測試也是檢驗錯誤排除故障的重要手段。4.1 設(shè)計

28、要求 (1) 里程顯示為:*.*公里,能預(yù)置起步價和單價(根據(jù)現(xiàn)實(shí)實(shí)驗條件顯示為*.*.*單價、起步價、費(fèi)用在最高兩位顯示,里程中間兩位顯示,脈沖計數(shù)最后兩位顯示)。 (2)起步價3公里6元;可以設(shè)置單價白天1元,晚上2元。4.2主程序流程圖軟件總體設(shè)計主要完成各部分的軟件控制和協(xié)調(diào)。本系統(tǒng)主程序模塊主要完成的工作是對系統(tǒng)的初始化,等待外部中斷,發(fā)送顯示數(shù)據(jù),以及根據(jù)所需要的功能進(jìn)行相應(yīng)的操作。程序可以分為兩大塊: 1、主程序:對系統(tǒng)初始化,等待中斷; 2、中斷:鍵掃和數(shù)顯。 其主程序流程圖如圖4-1所示。開始8255初始化定時器、顯緩單元以及標(biāo)志顯示單元初始化清借位開定時器0等待中斷結(jié)束 圖

29、4-1 主程序流程圖4.3 中斷程序流程圖 中斷程序主要由兩部分組成,分別為鍵盤掃描和數(shù)碼管顯示,其中中斷程序流程圖如圖4-2所示,鍵盤掃描流程圖如圖4-3所示,數(shù)碼管顯示如圖4-4顯示。中斷服務(wù)程序入口定時器0初始化 調(diào)用鍵盤掃描 即0鍵按下否開始計數(shù)R1=0 是 否復(fù)位,恢復(fù)起始價6元R3=0 即F鍵按下 即E鍵按下數(shù)碼管顯示否暫停計數(shù)R4=0 是否顯示單價2元/公里R7=0即2鍵按下是否R2=0即3鍵按下確定單價2元/公里,并恢復(fù)起始價6元是圖4-2 中斷程序流程圖 鍵盤掃描服務(wù)程序入口0鍵適是否按下F鍵適是否按下2鍵適是否按下3鍵適是否按下E鍵適是否按下僅R1置1僅R3置1僅R7置1僅

30、R2置1僅R4置1返回總中斷開始計數(shù)復(fù)位,恢復(fù)起始價 6元顯示單價為2/公里確定單價為2元/公里,恢復(fù)起始價暫停計數(shù)否否否否否否是是是是是 圖4-3 鍵盤掃描程序流程圖 中斷服務(wù)程序入口脈沖計數(shù)高位顯示00H=001H=002H=003H=004H=0里程低位顯示里程高位顯示顯示價格低位顯示價格高位顯示否否否否否是是是是返回總中斷脈沖計數(shù)低位顯示清標(biāo)志位00H-04H 圖4-4 數(shù)碼管顯示程序流程圖4.4 源程序及代碼注釋 ORG 0000H ;程序入口地址 SJMP MAIN ;相對跳轉(zhuǎn)到主程序 ORG 000BH ;中斷0入口地址 SJMP INT ;相對跳轉(zhuǎn)到中斷程序MAIN: CLR

31、TR0 ;定時器0清零 MOV A,#81H ;控制字 MOV DPTR,#0FF23H ;8255芯片初始化 MOVX DPTR,A ;控制口賦控制字 MOV TMOD,#01H ;T0作為定時器 MOV TH0,#0FAH ;定時器T0高位賦初值 MOV TL0,#68H ;定時器T0低位賦初值 MOV IE,#82H ;開總中斷,開中斷0(相當(dāng)于SETB EA,SETB TR0 ) MOV 71H,#00H ;置各數(shù)碼1管顯示初值 MOV 72H,#00H ;置各數(shù)碼2管顯示初值 MOV 73H,#00H ;置各數(shù)碼3管顯示初值 MOV 74H,#00H ;置各數(shù)碼4管顯示初值 MOV

32、75H,#06H ;置各數(shù)碼5管顯示初值 MOV 76H,#00H ;置各數(shù)碼6管顯示初值 MOV 40H,#50 ;置動態(tài)顯示循環(huán)次數(shù) MOV 00H,#00H ;值數(shù)碼管2是否顯示的標(biāo)志初始值 MOV 01H,#00H ;值各數(shù)碼管3是否顯示的標(biāo)志初始值 MOV 02H,#00H ;值各數(shù)碼管4是否顯示的標(biāo)志初始值 MOV 03H,#00H ;值各數(shù)碼管5是否顯示的標(biāo)志初始值 MOV 04H,#00H ;值各數(shù)碼管6是否顯示的標(biāo)志初始值 MOV R1,#00H ;置用于標(biāo)志是否調(diào)用功能程序的寄存器R1初值 MOV R3,#00H ;置用于標(biāo)志是否調(diào)用功能程序的寄存器R3初值 MOV R4,

33、#00H ;置用于標(biāo)志是否調(diào)用功能程序的寄存器R4初值 MOV R5,#00H ;置用于標(biāo)志是否調(diào)用功能程序的寄存器R5初值 MOV 50H,#10 ;對存儲數(shù)碼管1循環(huán)顯示值的循環(huán)次數(shù)的存儲單元賦值 MOV 51H,#10 ;對存儲數(shù)碼管2循環(huán)顯示值的循環(huán)次數(shù)的存儲單元賦值 MOV 52H,#10 ;對存儲數(shù)碼管3循環(huán)顯示值的循環(huán)次數(shù)的存儲單元賦值 MOV 53H,#10 ;對存儲數(shù)碼管4循環(huán)顯示值的循環(huán)次數(shù)的存儲單元賦值 MOV 54H,#10 ;對存儲數(shù)碼管5循環(huán)顯示值的循環(huán)次數(shù)的存儲單元賦值 MOV 55H,#10 ;對存儲數(shù)碼管6循環(huán)顯示值的循環(huán)次數(shù)的存儲單元賦值 SETB TR0

34、;開定時器T0 CLR C ;清借位 SJMP $ ;中斷等待INT: MOV TH0,#0FAH ;定時器T0高位初始化 MOV TL0,#68H ;定時器T0低位初始化 LCALL KEY_STATE ;調(diào)用鍵掃程序 CJNE R1,#0,ZZ ;寄存器R1為零則轉(zhuǎn)到ZZ段執(zhí)行 CJNE R3,#0,STOP ;寄存器R3為零則轉(zhuǎn)到STOP段執(zhí)行 CJNE R4,#0,RESET ;寄存器R4為零則轉(zhuǎn)到RESET段執(zhí)行 CJNE R7,#0,LOOP11 ;寄存器R7為零則轉(zhuǎn)到LOOP11段執(zhí)行 CJNE R2,#0,MM ;寄存器R2為零則轉(zhuǎn)到MM段執(zhí)行 RETIMM: AJMP LOO

35、P12 ;調(diào)到LOOP12,確定單價,并恢復(fù)起始價HH: AJMP LL ZZ: MOV R5,#0 ;價格標(biāo)志寄存器清零 AJMP RUN ;轉(zhuǎn)各數(shù)碼管顯示方式的功能程序RESET: ;E復(fù)位功能程序段,恢復(fù)起始價6元 MOV 71H,#00H ;數(shù)碼管1內(nèi)容為0 MOV 72H,#00H ;數(shù)碼管2內(nèi)容為0 MOV 73H,#00H ;數(shù)碼管3內(nèi)容為0 MOV 74H,#00H ;數(shù)碼管4內(nèi)容為0 MOV 75H,#06H ;數(shù)碼管5內(nèi)容為6 MOV 76H,#00H ;數(shù)碼管6內(nèi)容為0 MOV 50H,#10 ;數(shù)碼管1循環(huán)次數(shù)為10 MOV 51H,#10 ;數(shù)碼管2循環(huán)次數(shù)為10 M

36、OV 52H,#10 ;數(shù)碼管3循環(huán)次數(shù)為10 MOV 53H,#10 ;數(shù)碼管4循環(huán)次數(shù)為10 MOV 54H,#10 ;數(shù)碼管5循環(huán)次數(shù)為10 MOV 55H,#10 ;數(shù)碼管6循環(huán)次數(shù)為10 LJMP SHOW ;調(diào)顯示 RET ;返回主循環(huán)STOP: LJMP STOP1 ;調(diào)到暫停程序LOOP11: ;設(shè)置2鍵晚上單價為2.00功能程序 MOV 71H,#00H ;數(shù)碼管1內(nèi)容為0 MOV 72H,#00H ;數(shù)碼管2內(nèi)容為0 MOV 73H,#00H ;數(shù)碼管3內(nèi)容為0 MOV 74H,#00H ;數(shù)碼管4內(nèi)容為0 MOV 75H,#02H ;數(shù)碼管5內(nèi)容為2,顯示單價2元/公里

37、MOV 76H,#00H ;數(shù)碼管6內(nèi)容為0 MOV 50H,#10 ;數(shù)碼管1循環(huán)次數(shù)為10 MOV 51H,#10 ;數(shù)碼管2循環(huán)次數(shù)為10 MOV 52H,#10 ;數(shù)碼管3循環(huán)次數(shù)為10 MOV 53H,#10 ;數(shù)碼管4循環(huán)次數(shù)為10 MOV 54H,#10 ;數(shù)碼管5循環(huán)次數(shù)為10 MOV 55H,#10 ;數(shù)碼管6循環(huán)次數(shù)為10 LJMP SHOW ;調(diào)顯示 RET ;返回主循環(huán)LOOP12: ;設(shè)置3鍵起步價功能程序 MOV 71H,#00H ;數(shù)碼管1內(nèi)容為0 MOV 72H,#00H ;數(shù)碼管2內(nèi)容為0 MOV 73H,#00H ;數(shù)碼管3內(nèi)容為0 MOV 74H,#00H

38、 ;數(shù)碼管4內(nèi)容為0 MOV 75H,#06H ;數(shù)碼管5內(nèi)容為6 MOV 76H,#00H ;數(shù)碼管6內(nèi)容為0 MOV 50H,#10 ;數(shù)碼管1循環(huán)次數(shù)為10 MOV 51H,#10 ;數(shù)碼管2循環(huán)次數(shù)為10 MOV 52H,#10 ;數(shù)碼管3循環(huán)次數(shù)為10 MOV 53H,#10 ;數(shù)碼管4循環(huán)次數(shù)為10 MOV 54H,#10 ;數(shù)碼管5循環(huán)次數(shù)為10 MOV 55H,#10 ;數(shù)碼管6循環(huán)次數(shù)為10 LJMP SHOW ;調(diào)顯示 MOV R5,#01H ;單價標(biāo)志寄存器賦值1(即單價+1) RET ;返回主循環(huán)STOP1:LJMP SHOW ;暫停程序KEY_STATE: ;鍵掃程序

39、段 KEY_0: ;判斷0鍵是否按下的功能程序段 MOV R2,#0FDH ;0鍵對應(yīng)鍵值放寄存器R2 MOV DPTR,#0FF20H ;取8255PA口地址 MOV A,R2 MOVX DPTR,A ;通過PA口對8255初始化 MOV DPTR,#0FF22H ;取8255 PC口地址 MOVX A,DPTR ;取8255 PC口地址 JB ACC.1,KEY_F ;累加器第二位為高電平則0鍵沒按下,判斷下個鍵 SJMP KEY_DOWN0 ;0按下則轉(zhuǎn)去相應(yīng)寄存器賦值程序段 RET ;返回主循環(huán)KEY_F: ; 判斷F鍵是否按下程序段 MOV R2,#0F7H ;F鍵對應(yīng)鍵值放寄存器R

40、2 MOV DPTR,#0FF20H ;取8255PA口地址 MOV A,R2 MOVX DPTR,A ;通過PA口對8255初始化 MOV DPTR,#0FF22H ;取8255 PC口地址 MOVX A,DPTR ;取8255 PC口地址 JB ACC.1,KEY_2 ;累加器第二位為高電平則F鍵沒按下,判斷下個鍵 SJMP KEY_DOWNF ;F按下則轉(zhuǎn)去相應(yīng)寄存器賦值程序段 RET ;返回主循環(huán)KEY_2: ;2鍵鍵掃程序段 MOV R2,#0B0H ;2鍵對應(yīng)鍵值放寄存器R2 MOV DPTR,#0FF20H ;取8255PA口地址 MOV A,R2 ;通過PA口對8255初始化

41、MOVX DPTR,A ;通過PA口對8255初始化 MOV DPTR,#0FF22H ;取8255 PC口地址 MOVX A,DPTR ;取8255 PC口地址 JB ACC.1,KEY_3 ;累加器第二位為高電平則2鍵沒按下,判斷下個鍵 SJMP KEY_DOWN2 ;2按下則轉(zhuǎn)去相應(yīng)寄存器賦值程序段 RET ;返回主循環(huán)KEY_3: ;3鍵鍵掃程序段 MOV R2,#0AFH ;3鍵對應(yīng)鍵值放寄存器R2 MOV DPTR,#0FF20H ;取8255PA口地址 MOV A,R2 ;通過PA口對8255初始化 MOVX DPTR,A ;通過PA口對8255初始化 MOV DPTR,#0FF

42、22H ;取8255 PC口地址 MOVX A,DPTR ;取8255 PC口地址 JB ACC.1,KEY_E ;累加器第二位為高電平則3鍵沒按下,判斷下個鍵 SJMP KEY_DOWN3 ;3按下則轉(zhuǎn)去相應(yīng)寄存器賦值程序段 RET ;返回主循環(huán)KEY_E: ; 判斷E鍵是否按下的功能程序段 MOV R2,#0DFH ;E鍵對應(yīng)鍵值放寄存器R2 MOV DPTR,#0FF20H ;取8255PA口地址 MOV A,R2 ;通過PA口對8255初始化 MOVX DPTR,A ;通過PA口對8255初始化 MOV DPTR,#0FF22H ; 取8255 PC口地址 MOVX A,DPTR ;取8255 PC口地址 JB ACC.1,RETURN2 ;累加器

溫馨提示

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

評論

0/150

提交評論