出租車計(jì)價(jià)器的畢業(yè)設(shè)計(jì)_第1頁
出租車計(jì)價(jià)器的畢業(yè)設(shè)計(jì)_第2頁
出租車計(jì)價(jià)器的畢業(yè)設(shè)計(jì)_第3頁
出租車計(jì)價(jià)器的畢業(yè)設(shè)計(jì)_第4頁
出租車計(jì)價(jià)器的畢業(yè)設(shè)計(jì)_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、前言單片機(jī)是指在一個(gè)芯片上集成了中央處理器、存貯器和各種I/O接口的微型計(jì)算機(jī)(MCU),它主要面向控制性應(yīng)用領(lǐng)域,因此又稱嵌入式控制器。單片機(jī)的應(yīng)用技術(shù)是一項(xiàng)新型的軟硬件工程技術(shù),不僅要掌握單片機(jī)應(yīng)用的基本原理和基本指令,還應(yīng)具備較強(qiáng)的分析程序和編制程序的能力以及單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)、綜合分析與調(diào)試能力。出租車計(jì)價(jià)器從最初只能進(jìn)行簡(jiǎn)單的價(jià)格計(jì)算,發(fā)展到價(jià)格、距離獨(dú)立計(jì)量并顯示,可根據(jù)特殊情況設(shè)定相應(yīng)的收費(fèi)標(biāo)準(zhǔn),能打印營運(yùn)發(fā)票,可使用IC卡結(jié)算等功能。目前市場(chǎng)上的計(jì)價(jià)器越來越趨向于集成多種功能。例如,產(chǎn)品上提供數(shù)碼管顯示及液晶屏顯示器,可設(shè)置時(shí)間距離分別顯示、等候收費(fèi),永久時(shí)鐘,晝夜自動(dòng)切

2、換,能自動(dòng)打印票據(jù)等等。本次課程設(shè)計(jì)報(bào)告包括硬件設(shè)計(jì)和軟件設(shè)計(jì),軟件設(shè)計(jì)主要包括程序結(jié)構(gòu)設(shè)計(jì)和程序代碼編寫及調(diào)試。本次設(shè)計(jì)由一個(gè)主程序及相關(guān)中斷子程序組成。主程序中完成的是整個(gè)模塊的控制,即初始值的調(diào)顯功能及鍵掃功能,檢查是否有啟動(dòng)鍵,切換鍵,暫停鍵,復(fù)位鍵中任意一者按下,有則轉(zhuǎn)入相應(yīng)的功能區(qū)去完成實(shí)現(xiàn)。否則繼續(xù)監(jiān)控按鍵程序直到有鍵按下。中斷程序則是利用T0來計(jì)算外界進(jìn)來的脈沖數(shù)(模擬為車輛行駛的路程),根據(jù)此路程加價(jià),最終完成所要求的出租車計(jì)價(jià)功能。第一章 設(shè)計(jì)內(nèi)容及要求出租車計(jì)價(jià)器的設(shè)計(jì)基本要求(1)里程顯示為:*.*公里(2)能預(yù)置起步價(jià)及單價(jià):如起步3公里6.00元;1.60/公里。提

3、高要求 (1)起步價(jià)和單價(jià)能夠調(diào)整參考原理框圖脈沖產(chǎn)生電路變換電路單片機(jī)顯示器鍵盤圖1.1 原理框圖第二章 系統(tǒng)組成及工作原理2.1 系統(tǒng)的組成本次設(shè)計(jì)的出租車計(jì)價(jià)器系統(tǒng)是由四部分組成,包括信號(hào)源、由三極管和反相器74LS14組成變換電路、單片機(jī)8031系統(tǒng)和HD7279顯示模塊。設(shè)計(jì)結(jié)構(gòu)框圖如圖2.1所示。信號(hào)源整形電路單片機(jī)顯示器鍵盤圖2.1 設(shè)計(jì)結(jié)構(gòu)框圖其中,1.NE555多諧振蕩電路輸出矩形脈沖作為信號(hào)源,經(jīng)過放大整形電路,輸出標(biāo)準(zhǔn)脈沖信號(hào)。2.8031單片機(jī)模塊是以8031作為微處理器的控制系統(tǒng)。它主要實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)的控制管理,完成數(shù)據(jù)的處理等。該模塊使用單片機(jī)8031,128字節(jié)的

4、內(nèi)部RAM數(shù)據(jù)存儲(chǔ)器,2個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)串行口,5個(gè)中斷源、2個(gè)中斷優(yōu)先級(jí),時(shí)鐘頻率在1.2MHZ12MHZ。由于其內(nèi)部沒有程序存儲(chǔ)器,內(nèi)部數(shù)據(jù)存儲(chǔ)器容量不夠,必須外部擴(kuò)展程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。3.7279可編程數(shù)碼管/鍵盤串行接口芯片是一片具有串行接口的,能同時(shí)驅(qū)動(dòng)八位共陰式數(shù)碼管的智能顯示驅(qū)動(dòng)芯片,該芯片同時(shí)還可以連接多達(dá)64鍵的強(qiáng)大鍵盤矩陣,單片即可完成LED顯示,鍵盤接口的全部功能,它是單片機(jī)應(yīng)用系統(tǒng)中常用的一種外圍接口電路。本機(jī)用HD7279管理16個(gè)鍵和八位數(shù)碼管。2.2工作原理出租車計(jì)價(jià)是根據(jù)車所行駛的路程以及乘客乘車的時(shí)間段綜合決定的。出租車行駛總路程可以通過車輪

5、的周長乘以車輪旋轉(zhuǎn)圈數(shù)得到,即可計(jì)算得到車輪旋轉(zhuǎn)幾周出租車能行駛一公里的路程。在本次課程設(shè)計(jì)中采用555多諧振蕩電路輸出脈沖模仿出租車計(jì)價(jià)器計(jì)量車輪旋轉(zhuǎn)的圈數(shù)。信號(hào)源輸出電脈沖,經(jīng)過放大整形電路,輸出標(biāo)準(zhǔn)TTL信號(hào)。輸出的脈沖信號(hào)被接入到8031單片機(jī)系統(tǒng)中,通過計(jì)算接收到的脈沖個(gè)數(shù),計(jì)算出當(dāng)前所行駛的路程。同時(shí),根據(jù)不同的收費(fèi)標(biāo)準(zhǔn),選擇相應(yīng)的起步價(jià)、單價(jià)等收費(fèi)標(biāo)準(zhǔn)進(jìn)行計(jì)算。HD7279管理鍵盤和數(shù)碼顯示,通過鍵盤能夠?qū)崿F(xiàn)啟動(dòng)、暫停、停止計(jì)價(jià)器、切換顯示當(dāng)前的行駛里程和需支付的車費(fèi),還能夠?qū)蝺r(jià)、起步價(jià)、起步公里進(jìn)行設(shè)置。第三章 硬件電路設(shè)計(jì)3.1微處理器系統(tǒng) 1、以8031為核心的微處理系統(tǒng)

6、8031單片機(jī)模塊是以8031作為微處理器的控制系統(tǒng)。它主要實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)的控制管理,完成數(shù)據(jù)的處理等。該模塊使用單片機(jī)8031、數(shù)據(jù)存儲(chǔ)器6116、程序存儲(chǔ)器27128、地址鎖存器74LS373、74LS138譯碼器等芯片構(gòu)成單片機(jī)的基本系統(tǒng)。本系統(tǒng)在設(shè)計(jì)中,通過輸入外部信號(hào)作為T0計(jì)數(shù),完成數(shù)據(jù)處理。本次設(shè)計(jì)中使用的微處理系統(tǒng)是以8031為核心的最小開發(fā)系統(tǒng)板,如圖3.1所示。圖 3.1最小下載系統(tǒng)3.2整形電路信號(hào)源輸出矩形脈沖,經(jīng)過放大整形電路,輸出標(biāo)準(zhǔn)脈沖信號(hào)。放大整形電路如圖3.2所示。參數(shù)計(jì)算:由15V V 取值1=40110取=50的取值范圍是343。所以取為5.6。圖3.2

7、放大整形電路3.3鍵盤、顯示接口在本次硬件電路的設(shè)計(jì)中,在處理鍵盤和顯示部分中曾考慮兩個(gè)芯片,即芯片8279和芯片7279。1、 8279鍵盤、顯示接口8279是一種有鍵盤/顯示接口電路的集成塊??捎?279管理28個(gè)鍵和6個(gè)顯示器。由74LS138譯碼器對(duì)SLZ譯出的鍵掃描線,由另一個(gè)3-8譯碼器譯出顯示器的位掃描線8279與單片機(jī)的硬件連接(如圖3.3)。圖3.3 8279與單片機(jī)的硬件連接概圖:2、7279鍵盤、顯示接口HD7279A是一片具串行接口的,可同時(shí)驅(qū)動(dòng)8位共陰式數(shù)碼管的智能顯示驅(qū)動(dòng)芯片,該芯片同時(shí)還可以連接多達(dá)64鍵的鍵盤矩陣,單片即可完成LED顯示,鍵盤接口的全部功能。HD

8、7279主要特性有:(1).串行接口,無需外圍元件可直接驅(qū)動(dòng)LED。 (2).各位獨(dú)立控制譯碼/不譯碼及消隱和閃爍屬性。 (3).(循環(huán))左移/(循環(huán))右移指令。 (4).具有段尋址指令,方便控制獨(dú)立LED。 (5).64鍵鍵盤控制器,內(nèi)含去抖動(dòng)電路。HD7279接口電路如圖3.4所示。圖3.4 7279鍵盤、顯示接口電路經(jīng)過比較,采用7279芯片,它可有效地提高編程的效率。3、555多諧振蕩電路用555定時(shí)器構(gòu)成的多諧振蕩器電路如圖3.5所示:圖中電容C、電阻R1和R2作為振蕩器的定時(shí)元件,決定著輸出矩形波正、負(fù)脈沖的寬度。定時(shí)器的觸發(fā)輸入端(2腳)和閥值輸入端(6腳)與電容相連;集電極開路

9、輸出端(7腳)接R1、R2相連處,用以控制電容C的充、放電;外界控制輸入端(5腳)通過0.01uF電容接地。圖3.5 555多諧振蕩電路其中振蕩周期T=T1+T2=0.7(R1+2R2)C,振蕩頻率f=1/T。正向脈沖寬度T1與振蕩周期T之比稱矩形波的占空比D=(R1+R2)/(R1+2R2),若使R2>>R1,則D1/2,即輸出信號(hào)的正負(fù)向脈沖寬度相等的矩形波(方波)。在設(shè)計(jì)的具體方案中將R1和R2使用100K電位器,使得輸出的方波占空比可調(diào)。第四章 系統(tǒng)軟件設(shè)計(jì)4.1軟件設(shè)計(jì)說明本系統(tǒng)的軟件設(shè)計(jì)主要可分為主程序模塊、定時(shí)計(jì)數(shù)中斷程序、里程計(jì)數(shù)中斷服務(wù)程序、中途等待中斷服務(wù)程序、

10、顯示子程序服務(wù)程序、鍵盤服務(wù)程序六大模塊。下面對(duì)各部分模塊作介紹。1.程序模塊中,需要完成對(duì)各接口芯片的初始化、出租車起價(jià)和單價(jià)的初始化、中斷向量的設(shè)計(jì)以及開中斷、循環(huán)等待等工作。并設(shè)計(jì)相應(yīng)標(biāo)志位及對(duì)它們進(jìn)行初始化。2.在里程計(jì)數(shù)中斷服務(wù)程序設(shè)計(jì)中,需要完成當(dāng)前行駛里程數(shù)和總額的累加操作,并將結(jié)果存入里程和總額寄存器中。并調(diào)用顯示子程序顯示總金額或總路程。3.顯示子程序服務(wù)程序設(shè)計(jì)中通過編寫6個(gè)顯示子程序來完成其功能的。4.在鍵盤服務(wù)程序設(shè)計(jì)中,鍵盤采用查詢的方式,放在主程序中,當(dāng)沒有按鍵按下的時(shí)候,單片機(jī)循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。本設(shè)計(jì)通過讀8031

11、芯片的T0口的輸入脈沖數(shù)目來確定里程,為了便于計(jì)算,規(guī)定T0口來1個(gè)脈沖為1米(即車輪周長)。程序運(yùn)行時(shí),先通過鍵掃程序判斷是否開始啟動(dòng)TO計(jì)里程。在這里程序中設(shè)定開始運(yùn)行顯示HELLO??;設(shè)定S0為啟動(dòng)鍵、S1為單價(jià)顯示鍵、S2鍵為起步公里顯示鍵、S3為起步價(jià)顯示鍵、S4鍵為復(fù)位鍵、S5鍵為切換顯示總金額、總路程鍵。在鍵掃描之后,調(diào)用計(jì)數(shù)子程序,T0口第一次接收累積到100個(gè)脈沖后,主程序進(jìn)入T0中斷,開始根據(jù)單價(jià)進(jìn)行加價(jià)。為使出租車計(jì)價(jià)器能夠切換顯示總金額、總路程問題,在程序中設(shè)置了顯示切換鍵S5,按下此鍵能顯示總路程,再按一次顯示總金額。當(dāng)再次有乘客上車時(shí),司機(jī)可按下S4鍵(復(fù)位鍵),所

12、有計(jì)數(shù)內(nèi)存單元清零,程序重新運(yùn)行。此外為使起步價(jià),起步公里和單價(jià)能夠調(diào)整,本程序增加6個(gè)鍵:起步價(jià)調(diào)整鍵:S6和S7;起步公里調(diào)整鍵:S11和S10;單價(jià)調(diào)整鍵:S15和S14。另外增加等待的時(shí)候切換成等待時(shí)間換算成公里數(shù)以及特殊情況下暫停,對(duì)應(yīng)該功能增加兩個(gè)鍵:S12等待,S13暫停。4.2 7279鍵盤功能設(shè)計(jì) 單價(jià)顯示起步價(jià)顯示啟動(dòng)出租車計(jì)價(jià)器起步公里顯示單價(jià)減一起步公里減一暫停起步公里加一復(fù)位路程金額切換起步價(jià)減一單價(jià)加一起步價(jià)加一等待4.3存儲(chǔ)單元及關(guān)鍵字介紹 存儲(chǔ)單元介紹30H,31H起步價(jià)存儲(chǔ)單元32H,33H起步公里存儲(chǔ)單元34H,35H單價(jià)存儲(chǔ)單元36H,37H,38H總路程

13、存儲(chǔ)單元39H,3AH,3BH總金額存儲(chǔ)單元50H,51H,52H,53H,54H,55H,56H,57H,58H,59H顯示緩沖區(qū)00H標(biāo)志位切換顯示總金額和總路程表 存儲(chǔ)單元4.3.2 關(guān)鍵字介紹MAIN主程序KEY1讀鍵值子程序STFS發(fā)送一字節(jié)子程序STJS接收一字節(jié)子程序DTR7279顯示子程序LUC定時(shí)器0中斷子程序BEG7279初始化子程序TAB0“0”到“9”字形表TAB1“0.”到“9.”字形表TAB2其它所用到的功能顯示字形表TABR鍵值表T0口8031芯片脈沖輸入口表 關(guān)鍵字介紹4.4程序結(jié)構(gòu)設(shè)計(jì)4.4.1、主程序結(jié)構(gòu)設(shè)計(jì)程序開始運(yùn)行時(shí)對(duì)存儲(chǔ)區(qū)及7279初始化,對(duì)計(jì)數(shù)器T

14、0初始化,判斷是否有按鍵按下,無鍵按下,重新進(jìn)行鍵盤掃描;有鍵按下,判斷是哪個(gè)鍵按下,并進(jìn)行相應(yīng)的操作,如下圖所示。開始7279初始化,各單元初始化T0初始化,計(jì)數(shù),中斷允許初始值送顯緩區(qū)調(diào)顯示子程序并調(diào)鍵掃描程序有鍵按下求鍵號(hào)并保存啟動(dòng)鍵S0?T0計(jì)數(shù)切換鍵S5?起步價(jià)調(diào)整調(diào)整公里數(shù)調(diào)整單價(jià)調(diào)整調(diào)整復(fù)位鍵?調(diào)整調(diào)整等待計(jì)時(shí)NYYNN切換顯示總金額、總路程N(yùn)NNYNNNN NY N圖4.1 主程序流程圖4.4.2中斷程序結(jié)構(gòu)設(shè)計(jì)每100個(gè)脈沖信號(hào)到來的時(shí)候使得總路程加1.00,一直加下去,若總路程超過起步公里數(shù)時(shí),則總金額加1.60。如下圖所示。開始返回存入總路程每來1個(gè)脈沖路程加0.01總路

15、程是否超過起步公里數(shù)單價(jià)加一是否顯示總金額顯示總金額顯示總路程調(diào)顯示程序YNYN圖 4.2 中斷程序框圖4.4.3 其他子程序結(jié)構(gòu)設(shè)計(jì)7279顯示子程序設(shè)計(jì)如圖4.3所示。子程序開始設(shè)定循環(huán)次數(shù)=8、顯緩首址CS=0,選通7279調(diào)用STFS發(fā)送工作方式字將鍵號(hào)發(fā)送給7279顯示顯緩區(qū)加一,方式字減一循環(huán)次數(shù)> 8? 返回將鍵號(hào)送給顯緩單元圖4.3 顯示子程序框圖第五章 實(shí)驗(yàn)調(diào)試與測(cè)試結(jié)果5.1實(shí)驗(yàn)調(diào)試根據(jù)系統(tǒng)設(shè)計(jì)方案,本系統(tǒng)的調(diào)試共分為三大部分:硬件調(diào)試,軟件調(diào)試和軟硬件聯(lián)調(diào)。硬件調(diào)試:使用的儀器儀表 :數(shù)字萬用表DT9203單片機(jī)仿真器WAVE6000燒寫器 GF2100雙蹤穩(wěn)壓穩(wěn)流

16、電源DH1718E-5數(shù)字示波器 TDS1002本次課程設(shè)計(jì)中硬件電路有放大整形電路如圖3.2所示和555多諧振蕩電路如圖3.2(b)。焊接完成后,將多諧振蕩電路輸出的脈沖接入到放大整形電路的輸入端,用示波器測(cè)量整形電路的輸出端,輸出為反向放大的脈沖信號(hào)。用示波器觀察555電路輸出波形,并且調(diào)節(jié)電位器實(shí)現(xiàn)了產(chǎn)生0到100HZ可調(diào)的方波信號(hào)。輸出的方波接入整形電路輸入端,實(shí)現(xiàn)了較好的輸出可調(diào)占空比的方波信號(hào)。硬件調(diào)試比較順利。軟件調(diào)試:在本次設(shè)計(jì)中,程序的調(diào)試并不是雜亂無章的,而是分別對(duì)每個(gè)子程序進(jìn)行調(diào)試,使每個(gè)功能都可以實(shí)現(xiàn)后才進(jìn)行整體的調(diào)試。在開始對(duì)主程序的調(diào)試時(shí),遇到了一點(diǎn)小麻煩,就是讀鍵

17、調(diào)轉(zhuǎn)塊程序時(shí),由于按鍵過多,調(diào)轉(zhuǎn)時(shí)老是出問題,要么不轉(zhuǎn),要么轉(zhuǎn)錯(cuò)。后來經(jīng)仔細(xì)地檢查每條指令,逐條修改,終于使讀鍵部分調(diào)試成功。在T0中斷程序中,36H,37H,38H單元中存放總路程,39H,3AH,3BH單元存儲(chǔ)總金額。當(dāng)進(jìn)行一次T0中斷,存儲(chǔ)總路程的低位38H單元自動(dòng)加1,從而會(huì)引起37H,36H單元內(nèi)容的改變,即總路程的個(gè)位,十位和百位的進(jìn)位,要通過與32H,33H中存儲(chǔ)的起步公里數(shù)相比較,看是否超過起步公里,若未超過起步公里,則39H,3AH,3BH單元存儲(chǔ)總金額為起步價(jià);若超過起步公里,則總金額要按照34H,35H中存儲(chǔ)的單價(jià)進(jìn)行累加。因而可能會(huì)引起總金額39H,3AH單元(即總金額

18、的高位存儲(chǔ)單元)的進(jìn)位。在調(diào)試中,發(fā)現(xiàn)總金額的增加未按照單價(jià)進(jìn)行累加,導(dǎo)致總金額計(jì)價(jià)不正確,后來發(fā)現(xiàn)總路程與起步公里不能正確比較造成的,于是增加程序LUC0,通過修改完成其功能。此外,新增加等待計(jì)時(shí)功能時(shí)也不是很順利,在調(diào)試程序時(shí),按下相應(yīng)的功能鍵時(shí),程序總會(huì)跳到初始化里去,起初以為是標(biāo)志位出了問題,后來經(jīng)過多次調(diào)試及查閱相關(guān)資料才知道,是中斷出了問題,初始化時(shí)應(yīng)先關(guān)閉前面的相應(yīng)中斷。最終經(jīng)調(diào)試本設(shè)計(jì)基本完成相關(guān)功能。5.2測(cè)試結(jié)果出租車計(jì)價(jià)器開機(jī)顯示“HELLO!”,按S0鍵啟動(dòng)計(jì)價(jià)器,計(jì)價(jià)器計(jì)數(shù),每100個(gè)脈沖信號(hào)到來的時(shí)總路程加1.00,一直加下去,若總路程超過起步公里數(shù)時(shí),總金額加1.

19、60;按鍵S5切換顯示總路程、總金額;按鍵S7和S6為起步價(jià)調(diào)整鍵,S7鍵為起步價(jià)加1.00元,S6鍵為起步價(jià)減1.00元;按鍵S11和S10為起步公里調(diào)整鍵,S10鍵為起步公里加1.00,S11鍵為起步公里減1.00;按鍵S15和S14為單價(jià)調(diào)整鍵,S15為單價(jià)加0.1,S14為單價(jià)減0.1;S4鍵為復(fù)位鍵;按鍵S3為起步價(jià)顯示鍵,S2鍵為起步公里顯示鍵,S1為單價(jià)顯示鍵,S12為啟動(dòng)時(shí)間計(jì)算金額數(shù),S13為暫停鍵。最小系統(tǒng)板7279鍵盤設(shè)計(jì)達(dá)到預(yù)期的效果。結(jié)論本款出租車計(jì)價(jià)器比目前市場(chǎng)現(xiàn)在的增加了不少功能,其中包括單價(jià)輸出、單價(jià)調(diào)整、路程輸出、顯示當(dāng)前的系統(tǒng)時(shí)間等功能。另外,多功能出租車計(jì)

20、價(jià)器還具有性能可靠、電路簡(jiǎn)單、成本低、實(shí)用性強(qiáng)等特點(diǎn),加上經(jīng)過優(yōu)化的程序,使其有很高的智能化水平。在本次課程設(shè)計(jì)過程中,我學(xué)會(huì)了在網(wǎng)絡(luò)上查找有關(guān)本設(shè)計(jì)的各硬件的資源,其中包括:8031單片機(jī)及其引腳說明、7279引腳圖及其引腳功能等,為本次課程設(shè)計(jì)提供了一定的資料。在硬件的選擇上用了7279而沒有選擇8279雖然用并行通信的8279芯片可以提高其速度,但7279在功能上更加強(qiáng)大。軟件設(shè)計(jì)是首要任務(wù),所以首先要明確程序所要完成的任務(wù),確定輸入/輸出,對(duì)輸入數(shù)據(jù)應(yīng)進(jìn)行哪些處理,以及發(fā)生錯(cuò)誤后該如何處理等。再結(jié)合硬件結(jié)構(gòu),進(jìn)一步弄清軟件程序所承擔(dān)的一個(gè)個(gè)任務(wù)細(xì)節(jié),確實(shí)具體實(shí)施的方法。通過本次課程設(shè)計(jì)

21、,我學(xué)到了許多書本上無法學(xué)到的知識(shí),同時(shí)也深該體會(huì)到單片機(jī)技術(shù)應(yīng)用領(lǐng)域的廣泛,不僅使我對(duì)單片機(jī)的相關(guān)應(yīng)用及匯編語言有了更進(jìn)一步的理解,同時(shí)提高了動(dòng)手能力,實(shí)踐和理論的得到很好的結(jié)合。為我們今后的畢業(yè)設(shè)計(jì)的制作奠定了一定的基礎(chǔ)。參考文獻(xiàn)1、戴梅萼、史嘉權(quán)編微型計(jì)算機(jī)技術(shù)及應(yīng)用(第三版)清華大學(xué)出版社,2003年8月2、張友德、趙志英、涂時(shí)亮編單片微型機(jī)原理、應(yīng)用與實(shí)驗(yàn)(第三版)復(fù)旦大學(xué)出版社,2000年11月3、王福瑞等編單片微機(jī)測(cè)控系統(tǒng)設(shè)計(jì)大全 北京航空航天大學(xué)出版社 1999年3月 4、涂時(shí)亮編單片機(jī)微機(jī)控制技術(shù) 復(fù)旦大學(xué)出版社 1994年5、高傳善等編接口與通訊 復(fù)旦大學(xué)出版社 1989年

22、6、徐君毅等編 單片微型計(jì)算機(jī)原理與應(yīng)用上??茖W(xué)出版社 1988年附錄1. 程序清單及注釋ORG 0000H LJMP MAINORG 000BHLJMP LUCORG 001BHLJMP YYMAIN:MOV SP,#67H ACALL BEG ;調(diào)7279初始化程序 MOV TMOD,#16H ;TO工作在計(jì)數(shù),中斷允許 MOV TH0,#0F6H ;計(jì)數(shù)從F6H到FFH MOV TL0,#0F6HMOV TH1,#0F6H ;計(jì)數(shù)從F6H到FFH MOV TL1,#0F6H MOV TCON,#00H MOV IE,#8AH ;T0的溢出中允許 MOV 30H,#06H ;初始化起步價(jià)6

23、.00元,30H31H單元存起步價(jià) MOV 31H,#00H MOV 32H,#03H ;初始化起步公里數(shù)3.00公里,32H33H存起步公里數(shù) MOV 33H,#00H MOV 34H,#01H ;初始化單價(jià)1.60元,34H35H存單價(jià) MOV 35H,#60H MOV 36H,#00H ;初始化路程數(shù),36H37H38H存總路程 MOV 37H,#00H MOV 38H,#00H MOV 39H,#00H ;初始化總金額,39H3AH3BH存總金額 MOV 3AH,#06H MOV 3BH,#00H MOV 52H,#16H ;初始化顯示,50H到59H為顯示緩沖區(qū) MOV 53H,#1

24、7H ;開機(jī)顯示HELLO!,說明工作正常 MOV 54H,#18H ;其中特殊字符造字表為查表程序中的TAB2 MOV 55H,#18H MOV 56H,#00H MOV 57H,#1bH MOV 58H,#0bH MOV 59H,#1BHLP:ACALL DIR ;調(diào)用顯示程序,顯示顯緩區(qū)數(shù)據(jù)LP0:ACALL KEY ;調(diào)用讀鍵子程序,鍵值存在A中 CJNE A,#0FFH,LP1 ;判斷是否有鍵按下 SJMP LP0 LP1:ACALL CJH ;調(diào)用求鍵號(hào)子程序 CJNE A,#00H,LP2 SJMP L0 ;鍵值為00H轉(zhuǎn)到L0LP2:CJNE A,#01H,LP3 SJMP L

25、1 ;鍵值為01H轉(zhuǎn)到L1LP3:CJNE A,#02H,LP4 LJMP L2 ;鍵值為02H轉(zhuǎn)到L2LP4:CJNE A,#03H,LP5 lJMP L3 ;鍵值為03H轉(zhuǎn)到L3LP5:CJNE A,#04H,LP6 SJMP L4 ;鍵值為04H轉(zhuǎn)到L4LP6:CJNE A,#05H,LP7 SJMP L5 ;鍵值為05H轉(zhuǎn)到L5LP7:CJNE A,#06H,LP8 lJMP L6 ;鍵值為08H轉(zhuǎn)到L8LP8:CJNE A,#08H,LP9 SJMP L8 ;鍵值為02H轉(zhuǎn)到L2LP9:CJNE A,#09H,LP10 SJMP L9 ;鍵值為09轉(zhuǎn)到L9LP10:CJNE A,#0

26、CH,LP11 SJMP L12 ;鍵值為0CH轉(zhuǎn)到L12LP11:CJNE A,#0DH,LP12 lJMP L13 ;鍵值為0DH轉(zhuǎn)到13LP12:CJNE A,#07H,LP15 lJMP L14 ;鍵值為07H轉(zhuǎn)到L14LP15:CJNE A,#0BH,LP16 lJMP L15LP16:CJNE A,#0AH,LP17LJMP L16LP17:CJNE A,#0EH,LP13LJMP L17LP13:SJMP LP0 ;再轉(zhuǎn)LP0重新讀鍵L0:ACALL QBJ ;調(diào)用QBJ,起步價(jià)顯示 SJMP LP0L4:INC 30H ;起步價(jià)調(diào)整,加1 MOV R1,30HCJNE R1,#

27、10,TPTP:JC TPP MOV 30H,#00H TPP:ACALL QBJ ;調(diào)整后再顯示起步價(jià) SJMP LP0L5:DEC 30H ;起步價(jià)調(diào)整,減1MOV R1,30HCJNE R1,#1,TP11TP11:JNC TPP1 MOV 30H,#9TPP1: ACALL QBJ ;再次顯示起步價(jià) AJMP LP0L1:ACALL QBGL ;調(diào)用QBGL,起步公里數(shù)顯示 AJMP LP0L8:INC 32H ;起步公里數(shù)調(diào)整,加1MOV R2,32HCJNE R2,#10,LLPP1JNC LLPP2LLPP2:MOV 32H,#00H LLPP1:ACALL QBGL ;調(diào)整后顯

28、示 lJMP LP0L9:DEC 32H ;起步公里數(shù)調(diào)整,減1MOV R3,32HCJNE R3,#0,LLPP3JC LLPP4LLPP4:MOV 32H,#09HLLPP3: ACALL QBGL LJMP LP0 ;轉(zhuǎn)LP0,重新讀鍵 L2:ACALL DANJIA ;調(diào)用DANJIA,顯示單價(jià) lJMP LP0L12:MOV A,35H ;單價(jià)調(diào)整 ADD A,#10H ;每次加0.10元 DA A ;BCD碼調(diào)整 MOV 35H,A MOV A,34H ;34H存儲(chǔ)單價(jià)的高位 ADDC A,#00H ;調(diào)整有進(jìn)位加1 DA A ;BCD碼調(diào)整 MOV 34H,A ACALL DAN

29、JIA ;調(diào)整完,再次顯示單價(jià) LJMP LP0L13:MOV A,35H ;單價(jià)調(diào)整,減0.10元; CLR C SUBB A,#10H JNC LLLL0 MOV A,#090H SETB C DEC 34hLLLL0: ADD A,#0 DA A MOV 35H,A MOV A,34H SUBB A,#00H ADD A,#0 DA A MOV 34H,A ACALL DANJIA ;調(diào)整完畢,單價(jià)顯示 LJMP LP0 ;轉(zhuǎn)LP0,重新讀鍵L3:SETB TR0 ;TR0置"1",TO開始計(jì)數(shù) LJMP LP0L14:AJMP MAIN ;復(fù)位,程序重新運(yùn)行L15:

30、CPL TR0 ;暫停,程序停止計(jì)數(shù)和定時(shí)LJMP LP0L16:CLR 30H ;啟動(dòng)T0計(jì)數(shù)器,開T0中斷 MOV IE,#82H SETB TR0CLR TR1LJMP LP0L17: SETB 30H ;啟動(dòng)T1定時(shí)器,暫停T0計(jì)數(shù)器MOV IE,#88H SETB TR1 CLR TR0ACALL SHIJIAN ;顯示等待的時(shí)間ACALL DIRLJMP LP0 L6:CPL 00H ;切換顯示總金額和總路程 JNB 00H,LC_1 ;其中00H為標(biāo)志位,用來記憶ACALL LC_XS ;顯示總路程 ACALL DIR LJMP LP0LC_1:ACALL JE_XS ;顯示總金

31、額 ACALL DIR LJMP LP0STFS:MOV R7,#08H ;發(fā)送一字節(jié)子程序 B1:RLC A MOV P1.2,C SETB P1.1 MOV R6,#02H B2:DJNZ R6,B2 ;循環(huán)2次,作用為延時(shí)約8US CLR P1.1 MOV R6,#02HB3:DJNZ R6,B3 DJNZ R7,B1 RETSTJS:MOV R7,#08H ;接收一字節(jié)子程序A1:SETB P1.1 SETB P1.2 MOV R6,#02HA2:DJNZ R6,A2 ;延時(shí)約10US MOV C,P1.2 ;鍵盤值讀入CY RLC A CLR P1.1 MOV R6,#01HA3:D

32、JNZ R6,A3 DJNZ R7,A1 RETKEY:SETB P1.3 ;P1口作為輸入 MOV C,P1.3 JC TP2 ;為1轉(zhuǎn)LP2 JB 01H,TP1 LCALL KEY1 ; 鍵盤指令 SETB 01H RETTP2:CLR 01H ;位清零,無鍵按下TP1:MOV A,#0FFH RETKEY1:CLR P1.0 ;CS無效 MOV R6,#0CH ;延時(shí)LLP1:DJNZ R6,LLP1 MOV A,#15H ACALL STFS ;發(fā)送一字節(jié)子程序 MOV R6,#06H ;延時(shí)LLP2:DJNZ R6,LLP2 ACALL STJS ;接收一字節(jié)子程序 SETB P1

33、.0 RETDIR:MOV R5,#08H ;顯示程序,循環(huán)8次(8個(gè)數(shù)碼管) MOV R0,#52H ;52H為顯示緩沖區(qū)首址 MOV R1,#97H ;顯示碼D1:CLR P1.0 ;CS有效,P1.0接CS MOV R6,#0CHD2:DJNZ R6,D2 ;延時(shí),大于25US MOV A,R1 ACALL STFS;輸出指令碼 MOV R6,#06HD3:DJNZ R6,D3;延時(shí) MOV A,R0 ADD A,#0DH MOVC A,A+PC;查表指令 ACALL STFS ;發(fā)送顯示數(shù)據(jù),即查表后的顯示碼 MOV R6,#02HD4:DJNZ R6,D4 ;延時(shí) SETB P1.0

34、;一個(gè)數(shù)碼管顯示完 INC R0 DEC R1 DJNZ R5,D1 ;延時(shí) RETTAB0: DB 7EH,30H,6DH,79H,33H,5BH,5FH,70H,7FH,7BHTAB1: DB 0FEH,0B0H,0EDH,0F9H,0B3H,0DBH,0DFH,0F0H,0FFH,0FBHTAB2: DB 67H,0EH,37H,4FH,0EH,3DH,09H,00HCHE:MOV B,A ;CHE子程序, SWAP A ;用來提取一字節(jié)存儲(chǔ)的兩個(gè)BCD碼 ANL A,#0FH MOV 42H,A MOV A,B ANL A,#0FH MOV 41H,A RETBEG:CLR P1.0

35、;P1.0清零,7279初始化子程序 MOV R6,#0CH ;延時(shí)G0:DJNZ R6,G0 MOV A,#0A4H ACALL STFS ;發(fā)送一字節(jié)子程序 MOV R6,#02H ;延時(shí)G1:DJNZ R6,G1 SETB P1.0 ;CS有效 RETQBJ:MOV A,30H ;起步價(jià)顯示,起步價(jià)存儲(chǔ)在30H,31H單元 ACALL CHE ;調(diào)用CHE后使以BCD碼形式存儲(chǔ) MOV A,41H ADD A,#0AH MOV 43H,A MOV A,31H ACALL CHE MOV 52H,#1BH ;送入顯示緩沖區(qū),52H-59H MOV 53H,#1BH ;初始顯示為"

36、6.00元" MOV 54H,#1BH MOV 55H,#1BH MOV 56H,#1BH MOV 57H,43H MOV 58H,42H MOV 59H,41H ACALL DIR ;調(diào)用顯示子程序 RETQBGL:MOV A,32H ;起步公里顯示, 起步公里數(shù)存儲(chǔ)在 ACALL CHE MOV A,41H ADD A,#0AH MOV 43H,A MOV A,33H ACALL CHE MOV 52H,#1BH ;送入顯示緩沖區(qū) MOV 53H,#1BH ;初始顯示"3.00公里" MOV 54H,#1BH MOV 55H,#1BH MOV 56H,#1BH

37、 MOV 57H,43H MOV 58H,42H MOV 59H,41H ACALL DIR ;調(diào)用顯示子程序 RETDANJIA:MOV A,34H ;單價(jià)顯示, 單價(jià)存儲(chǔ)在34H,35H單元 ACALL CHE MOV A,41H ADD A,#0AH MOV 43H,A MOV A,35H ACALL CHE MOV 52H,#1BH ;送入顯示緩沖區(qū) MOV 53H,#1BH ; 初始顯示"1.60元" MOV 54H,#1BH MOV 55H,#1BH MOV 56H,#1BH MOV 57H,43H MOV 58H,42H MOV 59H,41H ACALL D

38、IR ;調(diào)用顯示子程序 RETLC_XS:MOV A,36H ;總路程顯示,總路程存儲(chǔ)在36H,37H,38H ACALL CHE MOV 46H,42HMOV 45H,41H MOV A,37H ACALL CHE MOV 44H,42H MOV A,41H ADD A,#0AH MOV 43H,A MOV A,38H ACALL CHE MOV 52H,#15H ;送入顯示緩沖區(qū) MOV 53H,#1AH ; 初始顯示"L=0000.00公里" MOV 54H,46H MOV 55H,45H MOV 56H,44H MOV 57H,43H MOV 58H,42H MOV

39、 59H,41H ACALL DIR ;調(diào)用顯示子程序 RETJE_XS:MOV A,39H ;總金額顯示,存儲(chǔ)在39H,3AH,3BH單元 ACALL CHE MOV 46H,42H MOV 45H,41HMOV A,3AHACALL CHE MOV 44H,42H MOV A,41H ADD A,#0AH MOV 43H,A MOV A,3BH ACALL CHE MOV 52H,#14H ;送入顯示緩沖區(qū) MOV 53H,#1AH ;初始顯示"P=0006.00元" MOV 54H,46H MOV 55H,45H MOV 56H,44H MOV 57H,43H MOV

40、 58H,42H MOV 59H,41H ACALL DIR ;調(diào)用顯示子程序 RETSHIJIAN: MOV IE,88HCLR TR0SETB TR1MOV A,3EH ;總金額顯示,存儲(chǔ)在39H,3AH,3BH單元 ACALL CHE MOV 46H,42H MOV 45H,41H MOV A,3DHACALL CHE MOV 44H,42H MOV A,41HMOV 43H,A MOV A,3CH ACALL CHE MOV 52H,#05H ;送入顯示緩沖區(qū) MOV 53H,#1AH ;初始顯示"P=0006.00元" MOV 54H,46H MOV 55H,45

41、H MOV 56H,44H MOV 57H,43H MOV 58H,42H MOV 59H,41H ACALL DIR ;調(diào)用顯示子程序 RETCJH: MOV B,A ;保存,求鍵號(hào)子程序 MOV R2,#00H ;00放項(xiàng)號(hào) MOV R7,#0FH ;循環(huán)15次CJH1:MOV A,R2 ADD A,#0AH ;查表 MOVC A,A+PC CJNE A,B,CJH2 ;A,B不等轉(zhuǎn)CJH2 SJMP CJH3CJH2:INC R2 DJNZ R7,CJH1CJH3:MOV A,R2 RETTABR: DB 1FH,1EH,1DH,1CH,17H,16H,15H,14H,0FH DB 0EH,0DH,0CH,07H,06H,05H,04HLUC: CLR C ;LUC為T0中斷子程序 MOV A,38H ADD A,#01H ;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論