基于AT89C51單片機(jī)的出租車(chē)計(jì)價(jià)器系統(tǒng)設(shè)計(jì)綜述_第1頁(yè)
基于AT89C51單片機(jī)的出租車(chē)計(jì)價(jià)器系統(tǒng)設(shè)計(jì)綜述_第2頁(yè)
基于AT89C51單片機(jī)的出租車(chē)計(jì)價(jià)器系統(tǒng)設(shè)計(jì)綜述_第3頁(yè)
基于AT89C51單片機(jī)的出租車(chē)計(jì)價(jià)器系統(tǒng)設(shè)計(jì)綜述_第4頁(yè)
基于AT89C51單片機(jī)的出租車(chē)計(jì)價(jià)器系統(tǒng)設(shè)計(jì)綜述_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、華蛀也力*孑課程設(shè)計(jì)(綜合實(shí)驗(yàn))報(bào)告(2013- 2014 年度第2學(xué)期)名稱:?jiǎn)纹瑱C(jī)與嵌入式系統(tǒng)課程設(shè)計(jì)題 目:基于51單片機(jī)的出租車(chē)計(jì)價(jià)器設(shè)計(jì)院系:控制與計(jì)算機(jī)工程學(xué)院班級(jí):測(cè)控1101班學(xué) 號(hào):1111160108學(xué)生姓名:李 權(quán)指導(dǎo)教師:呂躍剛設(shè)計(jì)周數(shù):一周成 績(jī):日期:2014年06月19日普*L- 力人* 課程設(shè)計(jì)(綜合實(shí)驗(yàn))報(bào)告、課程設(shè)計(jì)的目的與要求1. 每三人一組,按學(xué)號(hào)排列分組。2. 每組同學(xué)可按題目自行合理分工合作完成,答辯時(shí)可分別負(fù)責(zé)回答其中一部分,如資料查詢、總體設(shè)計(jì)、外圍器件研究、傳感器研究、電路設(shè)計(jì)、硬件制版圖繪制、軟件編程等。3. 每組課設(shè)只給出題目,而沒(méi)有給出具

2、體技術(shù)功能要求。同學(xué)可以充分發(fā)揮、完善設(shè)計(jì)。4. 建議每組應(yīng)有一個(gè)同學(xué)學(xué)習(xí)掌握protel 99SE 制版軟件,并負(fù)責(zé)電路板設(shè)計(jì)。5. 建議認(rèn)真查閱資料,多參考別人的成果,但設(shè)計(jì)的內(nèi)容要有自己的獨(dú)立見(jiàn)解。6. 課設(shè)報(bào)告按學(xué)校格式要求書(shū)寫(xiě)。二、設(shè)計(jì)正文1.1.1單片機(jī)的概念單片機(jī)(microcontroller,又稱微控制器)是在一塊硅片上集成了各種部件的微型計(jì)算機(jī)。這些部件包括中央處理器 CPU數(shù)據(jù)存儲(chǔ)器 RAM程序存儲(chǔ)器 ROM定時(shí)器/計(jì)數(shù)器和多種I/O接口電路。 圖1是80C51單片機(jī)的基本結(jié)構(gòu)圖圖1 89C51結(jié)構(gòu)方框圖a. 89C51單片機(jī)的結(jié)構(gòu)特點(diǎn)有以下幾點(diǎn):8 位 CPU片內(nèi)振蕩器

3、及時(shí)鐘電路;32根I/O線;外部存儲(chǔ)器ROM和RAM尋址范圍各64KB;兩個(gè)16位的定時(shí)器/計(jì)數(shù)器;5個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí)全雙工串行口布爾處理器b. 定時(shí)器/計(jì)數(shù)器89C51內(nèi)部有兩個(gè)16位可編程定時(shí)器/計(jì)數(shù)器,記為T(mén)O和T1。16位是指它們都是由16個(gè)觸發(fā)器 構(gòu)成,故最大計(jì)數(shù)模值為 2-1??删幊淌侵杆麄兊墓ぷ鞣绞接芍噶顏?lái)設(shè)定,或者當(dāng)計(jì)數(shù)器來(lái)用,或者 當(dāng)定時(shí)器來(lái)用,并且計(jì)數(shù)(定時(shí))的范圍也可以由指令來(lái)設(shè)置。這種控制功能是通過(guò)定時(shí)器方式控制 寄存器TMOD來(lái)完成的.如果需要,定時(shí)器在計(jì)到規(guī)定的定時(shí)值時(shí)可以向CPU發(fā)出中斷申請(qǐng),從而完成某種定時(shí)的控制功能。在計(jì)數(shù)狀態(tài)下同樣也可以申請(qǐng)中斷。定時(shí)

4、器控制寄存器 TCON用來(lái)負(fù)責(zé)定時(shí)器的啟動(dòng)、停止以及中斷管理在定時(shí)工作時(shí),時(shí)鐘由單片機(jī)內(nèi)部提供,即系統(tǒng)時(shí)鐘經(jīng)過(guò)12分頻后作為定時(shí)器的時(shí)鐘。技術(shù)工作 時(shí),時(shí)鐘脈沖由TO和 T1輸入。c. 中斷系統(tǒng)89C51的中斷系統(tǒng)允許接受五個(gè)獨(dú)立的中斷源,即兩個(gè)外部中斷申請(qǐng), 兩個(gè)定時(shí)器/計(jì)數(shù)器中斷以及一個(gè)串行口中斷。外部中斷申請(qǐng)通過(guò)INTO和INT1 (即P3.2和P3.3 )輸入,輸入方式可以是電平觸發(fā) (低電平有效), 也可以是邊沿觸發(fā) (下降沿有效)。兩個(gè)定時(shí)器中斷請(qǐng)求是當(dāng)定時(shí)器溢出時(shí)向CPU提出的,即當(dāng)定時(shí)器由狀態(tài)1轉(zhuǎn)為全零時(shí)提出的。第五個(gè)中斷請(qǐng)求是由串行口發(fā)出的,串行口每發(fā)送完一個(gè)數(shù)據(jù)或接收完 一

5、個(gè)數(shù)據(jù),就可提出一次中斷請(qǐng)求。1.1.2 89C51的芯片引腳圖如圖2所示VCC供電電壓。GND接地。P0 口: P0 口為一個(gè)8位漏極開(kāi)路雙向I/O 口,每腳可吸收8TTL門(mén)電流。當(dāng)P1 口的管腳第一次寫(xiě) 1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口, 當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。Pl. 0Pl. 1C L124039VccJ P0. O/ADOFl. 2C3PO.1/AD1Pl. 3C43TPO.2/AD2Pl. 4c53&P0.3/AD3Pl. 5c635P0.4/A

6、D4Pl. 6cT34J PO. 5/AD5Pl. 7cE:33P0. 6/AD6RESETc932P0.7/ADTKXD/P3. 0c1031ea/vppTKD/P3. 1c1130ALE/PROGIHT0/P3. 2c1229PSENIBTI/P3. 3c1328J P2.7/AD1ST0/P3. 4c142TJ P藝G/AD14T1/P3. 5c1526J P2.5/AD13WP3- &c16251 F2.4/AD12RS/P3. 7c1?24J P2.3/AD11XTAL2c1823P2.2/AD10XTAL1c1922?2.1/AD9PDIPVssc2021P2.0/AD8圖2P1

7、口: P1 口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O 口,P1 口緩沖器能接收輸出 4TTL門(mén)電流。P1 口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1 口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在 FLASH編程和校驗(yàn)時(shí),P1 口作為第八位地址接收。P2 口: P2 口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O 口,P2 口緩沖器可接收,輸出 4個(gè)TTL門(mén)電流,當(dāng)P2 口被寫(xiě)“ 1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。因此作為輸入時(shí),P2 口的管腳被外部拉低,將輸出電流,這是由于內(nèi)部上拉的緣故。P2 口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2 口輸出地

8、址的高八位。當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2 口輸出其特殊功能寄存器的內(nèi)容。P2 口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3 口: P3 口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向 I/O 口,可接收輸出 4個(gè)TTL門(mén)電流。當(dāng)P3 口寫(xiě) 入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3 口將輸出電流(ILL )這是由于上拉的緣故。 P3 口也可作為AT89C51的一些特殊功能口,如下表所示:P3.0 RXD (串行輸入口)P3.1 TXD (串行輸出口)P3.2 /INTO (外部中斷 0)P3.3 /INT1 (外部中斷1)P3.4 T0

9、 (定時(shí)器/計(jì)數(shù)器0外部輸入)P3.5 T1 (定時(shí)器/計(jì)數(shù)器1外部輸入)P3.6 /WR (外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 /RD (外部數(shù)據(jù)存儲(chǔ)器讀選通)P3 口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。FLASHALE/PROG當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想

10、禁止 ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVXMOVC旨令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。PSEN外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSE N信號(hào)將不出現(xiàn)。EA/VPP當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器( 0000H-FFFFH),不管是否有內(nèi)部程 序存儲(chǔ)器。注意加密方式 1時(shí),/EA將內(nèi)部鎖定為 RESET當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ) 器。在FLASH編程期間,此引腳也用于施加 12V編程電

11、源(VPF)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2來(lái)自反向振蕩器的輸出。1.1.3使用I/O 口的注意事項(xiàng)(1) P1,P2,P3 口的輸出緩沖器可驅(qū)動(dòng) 4個(gè)LSTTL電路。對(duì)于HCMO芯片單片機(jī)的I/O 口,在正 常情況下,可任意由TTL或NMOSfe路驅(qū)動(dòng)。HMO及CMO性的單片機(jī)I/O 口有集電極開(kāi)路或漏極開(kāi)路 的輸出來(lái)驅(qū)動(dòng)時(shí),不必外加上拉電阻(2) 對(duì)于74LS系列,CD4000系列以及一些大規(guī)模集成電路芯片(如8155, 8253, 8279等),都 可以和MCS-51系列單片機(jī)直接接口。具體使用時(shí),可以查閱有關(guān)器件手冊(cè)或參考典型電路(3) 對(duì)一些線性

12、組件,特別是應(yīng)用鍵盤(pán)、碼盤(pán)、LED顯示器等輸入/輸出設(shè)備時(shí),應(yīng)當(dāng)盡量增加驅(qū)動(dòng)部分的容量,否則,單片機(jī)將提供不出足夠的驅(qū)動(dòng)電流供給負(fù)載使用1.2 89C51中斷系統(tǒng)所謂中斷,是指當(dāng)計(jì)算機(jī)執(zhí)行正常程序時(shí),系統(tǒng)中出現(xiàn)某些急需處理的異常情況和特殊情求,CPU暫停執(zhí)行現(xiàn)行程序,轉(zhuǎn)去對(duì)隨機(jī)發(fā)生地更緊迫事件進(jìn)行處理;處理完畢后,CPU自動(dòng)返回原來(lái)的程序繼續(xù)執(zhí)行。中斷允許軟件設(shè)計(jì)不需要關(guān)心系統(tǒng)其他部分定時(shí)要求,算術(shù)程序不需要考慮隔幾個(gè)指令檢查I/O設(shè)備是否需要服務(wù)。相反,算術(shù)程序編寫(xiě)時(shí)好像有無(wú)限的時(shí)間作算術(shù)運(yùn)算而無(wú)其他工作在進(jìn)行。若其 它事件需要服務(wù)時(shí),則通過(guò)中斷告訴系統(tǒng)。89C51單片機(jī)有5個(gè)中斷源,有兩個(gè)

13、中斷優(yōu)先級(jí),每個(gè)中斷源的優(yōu)先級(jí)可以編程控制。中斷允許 受到CPU開(kāi)中斷和中斷源開(kāi)中斷的兩級(jí)控制。1.2.1 中斷源中斷源是指任何引起計(jì)算機(jī)中斷的事件,一般一臺(tái)機(jī)器允許有許多個(gè)中斷源。89C51系列單片機(jī)至少有5個(gè)中斷源。增加很少的硬件就可把各種硬件中斷源“線或”成為一個(gè)外部中斷輸入,然后再 順序檢索一起中斷的特定源。89C51單片機(jī)的5個(gè)中斷源是: 外部中斷請(qǐng)求0,由(P3.2 )輸入; 外部中斷請(qǐng)求1,由(P3.3 )輸入;3普*L- 力人* 課程設(shè)計(jì)(綜合實(shí)驗(yàn))報(bào)告 片內(nèi)定時(shí)器/計(jì)數(shù)器0益處中斷請(qǐng)求; 片內(nèi)定時(shí)器/計(jì)數(shù)器1溢出中斷請(qǐng)求; 片內(nèi)串行口發(fā)送/接收中斷請(qǐng)求;為了了解每個(gè)中斷源是否

14、產(chǎn)生了中斷請(qǐng)求,中斷系統(tǒng)應(yīng)設(shè)置許多個(gè)中斷請(qǐng)求觸發(fā)器(標(biāo)志位)實(shí)現(xiàn)記憶。這些中斷源請(qǐng)求標(biāo)志位分別有特殊功能寄存器Tcor和scon勺相應(yīng)位鎖存定時(shí)器/計(jì)數(shù)器控制寄存器 TCON它是一個(gè)八位的寄存器,各位如表1所示:表1定時(shí)器/計(jì)數(shù)器控制寄存器 TCONTF1TF0IE1IT1IE0IT0IT0,IT1 :外部中斷0、1觸發(fā)方式選擇位,由軟件設(shè)置。 1是下降沿觸發(fā),0是電平觸發(fā)。IE0,IE1 :外部終端0、1請(qǐng)求標(biāo)志位。TF0,TF1 :定時(shí)器/計(jì)數(shù)器0、1溢出中斷請(qǐng)求標(biāo)志。1.2.2 中斷的控制中斷的控制主要實(shí)現(xiàn)中斷的開(kāi)關(guān)管理和中斷優(yōu)先級(jí)的管理。這個(gè)管理主要通過(guò)對(duì)特殊功能寄存器IE和IP的編程

15、實(shí)現(xiàn)。(1)中斷允許寄存器IE 表2中斷允許寄存器IEEA-ET2ESET1EX1ET0EX0EX0,EX1 :外部終端0, 1的中斷允許位。1是中斷開(kāi),0是中斷關(guān)ET0,ET1:定時(shí)器/計(jì)數(shù)器0、1溢出中斷允許位。1是開(kāi)中斷,0是關(guān)中斷ES:串行口中斷允許位。1是中斷開(kāi),0是中斷關(guān)ET2:定時(shí)器/計(jì)數(shù)器2溢出中斷位EA CPU開(kāi)/關(guān)中斷控制位。1是開(kāi)中斷,0是關(guān)中斷(2)中斷優(yōu)先級(jí)寄存器IP 表3中斷優(yōu)先級(jí)寄存器IPPSPT1PX1PT0PX0若系統(tǒng)中多個(gè)中斷源同時(shí)請(qǐng)求中斷,則CPU按中斷源的優(yōu)先級(jí)別,由高到低分別響應(yīng)。89C51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí):高優(yōu)先級(jí)和低優(yōu)先級(jí)。每個(gè)中斷源都可以編

16、程為高優(yōu)先級(jí)。這可以實(shí)現(xiàn)兩級(jí)中斷嵌套。嵌套的原則:一個(gè)正在執(zhí)行的中斷服務(wù)程序可以被高級(jí)的中斷請(qǐng)求中斷,而不能被同級(jí)或較低級(jí)的中斷請(qǐng)求中斷。兩級(jí)中斷通過(guò)使用IP寄存器設(shè)置,相應(yīng)的位置1,則優(yōu)先級(jí)高,0則優(yōu)先級(jí)低。PX0 PX1:終端0、1中斷優(yōu)先級(jí)控制;PT0 PT1:定時(shí)器/計(jì)數(shù)器0、1中斷優(yōu)先級(jí)控制。PS:串行口中斷優(yōu)先級(jí)控制。89C51復(fù)位時(shí),IP被清零,5個(gè)中斷源都在同一個(gè)優(yōu)先級(jí)。這時(shí)若其中幾個(gè)中斷源同時(shí)產(chǎn)生中斷請(qǐng)求,則CPU按照片內(nèi)硬件優(yōu)先級(jí)鏈路的順序相應(yīng)中斷,硬件優(yōu)先級(jí)由高到低的順序是:外部終端0, 定時(shí)器/計(jì)數(shù)器0,外部中斷1定時(shí)器/計(jì)數(shù)器1串行口中斷。1.2.3 中斷響應(yīng)89C5

17、1的CPU在每個(gè)機(jī)器周期采樣中斷源的中斷請(qǐng)求標(biāo)志位,如果沒(méi)有上述阻止條件,則將在下 一個(gè)機(jī)器周期響應(yīng)被激活的最高級(jí)中斷請(qǐng)求。阻止條件如下: CPU正在處理同級(jí)或更高級(jí)的中斷; 現(xiàn)行機(jī)器周期不是所執(zhí)行指令的最后一個(gè)機(jī)器周期; 正在執(zhí)行的是 RETI或者是訪問(wèn)IE或IP的指令;CPU在中斷響應(yīng)之后完成如下操作: 硬件清除相應(yīng)的中斷標(biāo)志位; 執(zhí)行一條硬件子程序,保護(hù)斷點(diǎn),并轉(zhuǎn)向中斷服務(wù)程序入口。 結(jié)束中斷時(shí)執(zhí)行 RETI指令,恢復(fù)斷點(diǎn),返回主程序。89C51的CPU在相應(yīng)中斷請(qǐng)求時(shí),由硬件電路自動(dòng)形成轉(zhuǎn)向與該中斷源對(duì)應(yīng)的中斷的服務(wù)程序入 口地址。這種方法為硬件向量中斷法。各中斷源的中斷服務(wù)程序入口地

18、址如下:表4中斷源的中斷服務(wù)程序入口地址編號(hào)中斷源入口地址0外部終端00003H1定時(shí)器/計(jì)數(shù)器0000BH2外部終端10013H3定時(shí)器/計(jì)數(shù)器1001BH4串行口中斷0023H各中斷服務(wù)程序入口地址僅隔8個(gè)字節(jié),編譯器在這些地址放入無(wú)條件轉(zhuǎn)移指令,跳到服務(wù)程序的實(shí)際地址。向量中斷包括把先前的程序計(jì)數(shù)指針推入堆棧,中斷服務(wù)程序很像其他子程序。當(dāng)向量中斷發(fā)生 時(shí),硬件禁止所有中斷。此時(shí)表明外部中斷或定時(shí)器溢出的標(biāo)志位由硬件清除。中斷服務(wù)程序的不同 分支取決于中斷源。 在重新允許全局 CPU中斷EA之前,必須仔細(xì)清除各種標(biāo)志。標(biāo)志會(huì)引起立即地重復(fù)中斷。89C51對(duì)終端實(shí)際上有特殊的返回指令-RE

19、TI 。不是RET RETI重新允許系統(tǒng)識(shí)別其他中斷。因而,沒(méi)必要在正常使用中斷時(shí)復(fù)位EA,只要在程序初始化時(shí)開(kāi)中斷一次就可以了。1.3單片機(jī)定時(shí)器/計(jì)數(shù)器的使用89C51系列單片機(jī)至少有兩個(gè) 16位內(nèi)部定時(shí)器/計(jì)數(shù)器。8952有三個(gè)定時(shí)器/計(jì)數(shù)器,其中連個(gè)基 本定時(shí)器/計(jì)數(shù)器是定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1。他們既可以編程為定時(shí)器使用,也可以編程為計(jì)數(shù)器使用。若是計(jì)數(shù)內(nèi)部晶振驅(qū)動(dòng)時(shí)鐘,則它是定時(shí)器;若是計(jì)數(shù)89C51的輸入引腳的脈沖信號(hào),則它是計(jì)數(shù)器。89C51的T/C時(shí)加一計(jì)數(shù)的。定時(shí)器實(shí)際上也是工作在技術(shù)方式下的,只不過(guò)對(duì)固定頻率的脈沖 計(jì)數(shù);由于脈沖周期固定,由計(jì)數(shù)值可以計(jì)算出時(shí)間

20、,有定時(shí)功能。當(dāng)T/C工作在定時(shí)器時(shí),對(duì)振蕩源12分頻的脈沖計(jì)數(shù),即每個(gè)機(jī)器周期計(jì)數(shù)值加一,頻率加 =fosc/12。晶振為6MHz計(jì)數(shù)頻率=500KHz每2uS計(jì)數(shù)加一。當(dāng)T/C工作在計(jì)數(shù)器時(shí),計(jì)數(shù)脈沖來(lái)自外部脈沖輸入引腳TO或T1。當(dāng)TO或T1腳上負(fù)跳變需2個(gè)機(jī)器周期,即24個(gè)振蕩周期。所以 TO或T1腳輸入的計(jì)數(shù)外部脈沖的最高頻率為 fosc/12。當(dāng)晶振 為12MHz時(shí),最高技術(shù)頻率為 500KHz高于此頻率將計(jì)數(shù)出錯(cuò)。1.3.1與T/C有關(guān)的特殊功能寄存器(1)計(jì)數(shù)寄存器TH和TLT/C是16位的,計(jì)數(shù)寄存器有TH高8位TL低8位構(gòu)成。在特殊功能寄存器中,對(duì)應(yīng)T/C0為T(mén)H0和TLO

21、;對(duì)應(yīng)T/C1為T(mén)H1和TL1。定時(shí)器/計(jì)數(shù)器的初始值通過(guò) TH1/TL1和THO/TLO設(shè)置(2)定時(shí)器/計(jì)數(shù)器控制寄存器 TCON表5定時(shí)器/計(jì)數(shù)器控制寄存器 TCONTR1TR0TRO TR1:定時(shí)器/計(jì)數(shù)器0、1啟動(dòng)控制位。1是啟動(dòng),0是停止TCOF復(fù)位后清零,T/C需要受到軟件控制才能啟動(dòng)計(jì)數(shù);當(dāng)計(jì)數(shù)計(jì)滿時(shí),產(chǎn)生向高位的進(jìn)位TF,即溢出中斷請(qǐng)求標(biāo)志T/C的方式控制寄存器 TMOD表6 T/C的方式控制寄存器 TMODGATEC/TM1M0GATEC/TM1M0C/T:計(jì)數(shù)器或定時(shí)器選擇位。1位計(jì)數(shù)器,0位定時(shí)器GATE門(mén)控信號(hào)。1時(shí)T/C的啟動(dòng)控制受到雙重控制,即要求 TR0/TR1

22、和INT0/INT1同時(shí)為高;0時(shí)T/C的啟動(dòng)僅受TR0/TR1控制。表7 M1和M0工作方式選擇位M1M0方式功能000為13位定時(shí)器/計(jì)數(shù)器,TL存低5位,TH存高8位011為16定時(shí)器/計(jì)數(shù)器,TL存低8, TH存高8位102常數(shù)自動(dòng)裝入的8位定時(shí)器/計(jì)數(shù)器113僅適用于T/C0 ,兩個(gè)8為定時(shí)器/計(jì)數(shù)器1.3.2定時(shí)器/計(jì)數(shù)器的初始化(1)初始化步驟在使用89C51的定時(shí)器/計(jì)數(shù)器前,應(yīng)對(duì)它進(jìn)行編程初始化,主要是對(duì)TCOF和 TMOD編程,還需要計(jì)算和裝載T/C的計(jì)數(shù)初值。一般完成以下幾個(gè)步驟:確定T/C的工作方式-編程TMOD寄存器。計(jì)算T/C中的計(jì)數(shù)初值,并裝載到TH和TL。T/C

23、在中斷方式工作時(shí),須開(kāi)CPU中斷和源中斷-編程IE寄存器。啟動(dòng)定時(shí)器/計(jì)數(shù)器-編程TCOh中 TR1和TR0位(2)計(jì)數(shù)初值的計(jì)算在定時(shí)器方式下,T/C是對(duì)機(jī)器周期脈沖計(jì)數(shù)的,如果fosc=6MHz,一個(gè)機(jī)器周期為 2us,貝U方式0 13位定時(shí)器最大時(shí)間間隔(2-1) x 2us=16.384ms ;方式1 16位定時(shí)器最大時(shí)間間隔方式2 8位定時(shí)器最大時(shí)間間隔=(2-1 ) x 2us=131.072ms ;=(2-1 ) x 2us=512us若使T/C工作在定時(shí)器方式1,要求定時(shí)1ms,求計(jì)數(shù)初值。如設(shè)計(jì)數(shù)初值為x,則有(2-1 )x2us=1000usx=2-500因此,TH,TL

24、可置 65536-500。2、計(jì)價(jià)器系統(tǒng)設(shè)計(jì)2.1硬件設(shè)計(jì)2.1.1 整體硬件電路圖匚丨丄圖3整體硬件電路圖由上圖我們可以看到,本電路控制核心是AT89C51芯片。該方案我們采用動(dòng)態(tài)顯示的方法。動(dòng)態(tài)顯示的優(yōu)點(diǎn)是,它占用 CPU的時(shí)間少,每次只把一個(gè)數(shù)據(jù)送到外部接口,雖然我們仿真看到的是全部 數(shù)碼管都亮著,那是因?yàn)閯?dòng)態(tài)顯示的時(shí)間比較快,超過(guò)我們?nèi)搜鄣谋鎰e能力。若我們?cè)诜抡娴臅r(shí)候暫 停一下,就可以清楚地看到,時(shí)間單元和價(jià)格單元分別只顯示一位。靜態(tài)顯示,是每一個(gè)數(shù)碼管不論 在什么時(shí)候都點(diǎn)亮,占用CPU的時(shí)間很多。按鍵主要控制系統(tǒng)的初始化、開(kāi)始工作、數(shù)據(jù)鎖存三項(xiàng)工作。剛開(kāi)始上電,則所有的數(shù)碼管同時(shí)顯示

25、全0狀態(tài),當(dāng)?shù)谝淮伟聪麻_(kāi)關(guān),價(jià)格從起步價(jià)005.0元開(kāi)始計(jì)費(fèi),等待是否超過(guò)三公里以及計(jì)算,時(shí)間單元?jiǎng)t從00.00.00開(kāi)始計(jì)時(shí),一秒一秒往上加。P0 口作為數(shù)據(jù)總線口,分別把數(shù)據(jù)輸送到4個(gè)74LS273地址鎖存器中,而鎖存器的工作需要等待脈沖的到來(lái)。脈沖通過(guò)寫(xiě)地址有些端口p3.6和端口 p2.0-p2.3經(jīng)過(guò)或非門(mén)來(lái)產(chǎn)生。只有當(dāng)把數(shù)據(jù)送到外部接口時(shí),p3.6 口才為低電平,p2.0-p2.3用來(lái)控制到底是把數(shù)據(jù)送往哪一個(gè)鎖存器。算法公式是:費(fèi)用=起步價(jià)+ (路程-3 )X 1.3路程=速度x時(shí)間(速度恒定,60Km/h,也就是1Km/min)若路程小于等于3,則收起步價(jià)5元,否則按費(fèi)用公式算。

26、由于速度恒定,所以計(jì)算的核心是時(shí)間,只要判斷時(shí)間超出2分鐘,則費(fèi)用公式就開(kāi)始計(jì)算,每多出一公里,費(fèi)用就加上1.5元,一分鐘一公里來(lái)計(jì)算,因此本設(shè)計(jì)比較簡(jiǎn)單。時(shí)間單元由單片機(jī)的定時(shí)器/計(jì)數(shù)器來(lái)計(jì)算,延時(shí) 1ms時(shí)間的初值由程序來(lái)設(shè)定。2.1.2 74LS273 和 74LS02 簡(jiǎn)介Vqq Q 了 內(nèi) D Qg Qs Dj 為 Q* CP莎而 而 而 百 puipiri nriijrT2 | J 11 4 11 6 11 T | R | 9 | IDW Q) Cfe Di Qz D2 D3 Qa GND圖4 74LS273管腳圖引腳功能:74LS273是8位數(shù)據(jù)/地址鎖存器。74LS273是一種

27、帶清除功能的 8D觸發(fā)器,1D8D 為數(shù)據(jù)輸入端,1C8Q為數(shù)據(jù)輸出端,正脈沖觸發(fā),低電平清除,常用作8位地址鎖存器。ftB 1A 3B 3AI Lp? II圖5 74LS02管腳圖引腳功能:74LS02是四二輸入或非門(mén)。該芯片有四個(gè)或非門(mén)公選擇,如1A或1B后,經(jīng)過(guò)非門(mén)再輸出,只有當(dāng)輸入的兩個(gè)變量同時(shí)為0時(shí),輸出才為1。具有緩沖倒相功能。2.2軟件設(shè)計(jì)2.2.1模塊介紹該計(jì)費(fèi)器系統(tǒng)的軟件設(shè)計(jì)分為一下幾個(gè)模塊:(1)主程序模塊在主程序模塊中,需要完成對(duì)個(gè)接口芯片的初始化、出租車(chē)起步價(jià)和單價(jià)、中斷向量的設(shè)計(jì)以及開(kāi)中斷、循環(huán)等待等工作。另外,在主程序模塊中還需要設(shè)置啟動(dòng) /清除標(biāo)志寄存器、里程寄存

28、器和價(jià) 格寄存器,并對(duì)它們進(jìn)行初始化。然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動(dòng)、清除、 計(jì)程和計(jì)價(jià)等不同的操作。流程圖如3-4所示。當(dāng)按下輕觸開(kāi)關(guān)時(shí),開(kāi)始對(duì)系統(tǒng)初始化,價(jià)格和時(shí)間都顯示0、0,再次按下開(kāi)關(guān),時(shí)間單元開(kāi)始計(jì)時(shí),并計(jì)算時(shí)間是否超過(guò)2分鐘,超過(guò)2分鐘,則從第3分鐘開(kāi)始計(jì)費(fèi)。價(jià)格單元從起步價(jià)5.0元開(kāi)始計(jì)費(fèi),每多一分鐘,價(jià)格單元多加1.5元。(2)顯示子程序模塊由于顯示是由顯示時(shí)間子程序DIS1和顯示價(jià)格子程序 DIS組成的,時(shí)間由小時(shí)、分、秒三個(gè)單元19999.9 元。組成,共六個(gè)數(shù)碼管。價(jià)格由元和角兩個(gè)單元組成,最大可以顯示2.2.2程序流程圖223 匯編程序ORG 00

29、00H;初始化段地址LJMP MAIN;長(zhǎng)跳轉(zhuǎn)到主函數(shù) MAI N處ORG 000BH;TT0開(kāi)始地址LJMP TTO;長(zhǎng)跳轉(zhuǎn)到TT0處ORG 0030H;主函數(shù)開(kāi)始地址,避開(kāi)0030敏感段MAIN MOV SP,#40H;設(shè)堆棧底指針,下一個(gè)數(shù)據(jù)將放在41H單元MOV 70H,#60;價(jià)格單元的起步價(jià)MOV 71H,#00;價(jià)格單元的十位和百位MOV 72H,#00;秒單元清零MOV 74H,#00;時(shí)單元清零MOV 75H,#00;75H單元清零備用CLR 00HCLR 01H;將00H, 01H單元清零MOV 6BH,#0AH;將0AH(既十進(jìn)制10)放入6B單兀MOV R1,#76H;

30、把76H放到R1中KKK MOV R1,#00H;將76H單元的內(nèi)容清零INC R1DJNZ 6BH,KKK;76H 7FH單兀全部清零,備用LCALL DIS;調(diào)用價(jià)格顯示子程序LCALL DIS1;調(diào)用時(shí)間顯示子程序MOV TMOD,#11H;定時(shí)器/計(jì)數(shù)器工作方式設(shè)置MOV TH0,#3CHMOV TL0,#0B0H;這句和上一句設(shè)置延時(shí)50msMOV 6EH,#20;將6EH單元設(shè)置20,達(dá)到1s的延時(shí)G2: LCALL DIS;長(zhǎng)調(diào)用價(jià)格顯示子程序LCALL DIS1;長(zhǎng)調(diào)用時(shí)間顯示子程序JB P1.0,G2;開(kāi)關(guān)沒(méi)按下,等待按下,顯示初始狀態(tài),全部為零LCALL TIME1;調(diào)用T

31、IME1延時(shí)子程序JB P1.0,G2;開(kāi)關(guān)沒(méi)按下,跳到G2,否則轉(zhuǎn)到下一步G1: LCALL DISLCALL DIS1JNB P1.0,G1;開(kāi)關(guān)按下,繼續(xù)顯示價(jià)格和時(shí)間,并轉(zhuǎn)到中斷SETB EA;開(kāi)中斷SETB ET0;定時(shí)器0中斷允許,向CPU申請(qǐng)中斷SETB TR0;定時(shí)器0工作允許SETB 01H;01H單兀置位LLL: LCALL CHAI;調(diào)用現(xiàn)場(chǎng)保護(hù)子程序LCALL DISLCALL JISUAN;調(diào)用計(jì)算子程序LCALL DIS1JB P1.0,G3;開(kāi)關(guān)沒(méi)按下,則返回LCALL TIME1JB P1.0,G3CPL 01H;01H單元此時(shí)為零JNB 01H,G5;01H;

32、單元內(nèi)容為0,跳到G5SETB ET0;定時(shí)器0中斷允許,向CPU申請(qǐng)中斷G6: LCALL DISLCALL DIS1JNB P1.0,G6;開(kāi)關(guān)按下,顯示所走的時(shí)間及費(fèi)用LJMP MAIN;重新等待下一個(gè)工作狀態(tài)G5: CLR ET0G4: LCALL DISLCALL DIS1JNB P1.0,G4G3: LJMP LLLTT0: CLR ET0/*定時(shí)一秒*/CLRTR0MOVTH0,#3CHMOVTL0,#0B0HSETBTR0SETBET0DJNZ6EH,JJJLCALLADD1MOV6EH,#20JJJ: RETIDIS: MOV 6DH,#06H/*價(jià)格顯示子程序*/MOV R

33、0,#7AHMOV 6CH,#0FEHHHH: MOV DPTR,#0FDFFH /數(shù)據(jù)指針出口地址,低 8位給P0 口,高8給/位P2 口MOVA,6CHMOVXDPTR,AMOVA,R0MOVDPTR,#TAB;查表首地址MOVCA,A+DPTR;查表值送AMOV DPTR,#OFEFFHMOVX DPTR,ALCALL TIME1MOV A,6CHRL AMOVR0,#72HMOV6CH,#0FEHHHH1: MOV DPTR,#0F7FFHMOVA, 6CHMOVXDPTR,AMOVA,R0MOVDPTR,#TABMOVCAA+DPTRMOVDPTR,#0FBFFHMOVR1,6DHC

34、JNER1,#03H,K1ORLA,#80HDIS1: MOV 6DH,#04H/*時(shí)間顯示子程序*/;FF給 P0 口 ,F7 給 P1.0 P1.3 口;將6CH的內(nèi)容放到 0F7FFH中;查表首地址;查表值送AMOV6CH,AINCR0DJNZ6DH,HHHRETK1: MOVX DPTR,ALCALL TIME1MOV A, 6CHRL AMOV 6CH,AINC RODJNZ 6DH,HHH1RETTIME1: MOV 6AH,#0AH /*延時(shí)子程序 */FFF: MOV 69H,#0AHGGG: DJNZ 69H,GGGDJNZ 6AH,FFFRETJISUAN:JB 00H,K

35、2/*判斷是否超過(guò) 3公里及計(jì)算價(jià)格子程序 */MOVA,78HCLRCSUBBA,#03HMOV73H,#06HJCK3SETB00HLJMPK3K2: MOV R3,71HMOVR4,70HMOVR2,#00HMOVR5,#00HMOV R6,#03HMOV R7,#0E8HLCALLNDIV42MOV75H,R4MOVA,R6MOVR3,AMOVA,R7MOVR4,AMOVR2,#00HMOVR7,#100LCALLNDIV31MOV74H,R4MOVA,R7MOV B,#10DIV ABMOV 73H,AMOV 72H,BK3:RETCHAI: MOV 6FH,#03H/*保護(hù)現(xiàn)場(chǎng)子程

36、序*/MOVR0,#77HMOVR1,#7AHZZZ: MOV A,R0ANLA,#0FHMOVR1,AMOVA,R0SWAPAANLA,0FHINCR1MOVR1,AINCROINCR1DJNZ6FH,ZZZRET;保存77H單元中的低4位;循環(huán)三次ADD1: MOV A,77H/*加一子程序*/CJNEA,#59H, L18LJMPL19L18: ADDA,#01HDA AMOV77H,ALJMPL24L19: MOV77H,#00HJNB00H,S1CLRCMOVA,70HADDA,#12MOV70H,AMOVA,71HADDCA,#00HMOV71H,AS1: MOVA,78HCJNE

37、A,#59H,L20LJMPL21L20: ADDA,#01HDA AMOV78H,ALJMPL24L21: MOV 78H,#00HMOVA,79HCJNEA,#23H, L22LJMPL23L22: ADDA,#01HDA AMOV79H,AL23: MOV 79H,#00HL24: RETNDIV42:MOV A,R1/*四除二子程序 */PUSHACCMOVB,#00HNDV421:MOV A,R2CLRCSUBBA,R7MOVR1,AMOVA,R5SUBBA,R6JC NDV422MOVR5,AMOVA,R1MOVR2,AINC BSJMPNDV421NDV422:PUSH BMOV B,#10HNDV423:CLR CMOVA, R4RLCAMOVR4,AMOVA,R3RLCAMOVR3,AMOVA, R2RLCAMOVR2,AXCHA,R5RLCAXCHA,R5MOVF0,CCLRCSUBBA,R7MOVR1,AMOVA,R5SUBBA,R6JBF0,NCV424JCNDV425NCV424:MOV R5,AMOVA,R1MOVR2,AINCR4NDV425:DJNZ B,NDV423POPACCCLROVJNZNDV426SETBOVNDV426:XCH A,R2MOVR7,A普*L- 力人* 課程設(shè)計(jì)(綜合實(shí)驗(yàn))報(bào)告MOV R7,A

溫馨提示

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

評(píng)論

0/150

提交評(píng)論