




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、前言單片機是指在一個芯片上集成了中央處理器、存貯器和各種I/O接口的微型計算機(MCU),它主要面向控制性應(yīng)用領(lǐng)域,因此又稱嵌入式控制器。單片機的應(yīng)用技術(shù)是一項新型的軟硬件工程技術(shù),不僅要掌握單片機應(yīng)用的基本原理和基本指令,還應(yīng)具備較強的分析程序和編制程序的能力以及單片機應(yīng)用系統(tǒng)的硬件設(shè)計、綜合分析與調(diào)試能力。出租車計價器從最初只能進行簡單的價格計算,發(fā)展到價格、距離獨立計量并顯示,可根據(jù)特殊情況設(shè)定相應(yīng)的收費標(biāo)準(zhǔn),能打印營運發(fā)票,可使用IC卡結(jié)算等功能。目前市場上的計價器越來越趨向于集成多種功能。例如,產(chǎn)品上提供數(shù)碼管顯示及液晶屏顯示器,可設(shè)置時間距離分別顯示、等候收費,永久時鐘,晝夜自動切
2、換,能自動打印票據(jù)等等。本次課程設(shè)計報告包括硬件設(shè)計和軟件設(shè)計,軟件設(shè)計主要包括程序結(jié)構(gòu)設(shè)計和程序代碼編寫及調(diào)試。本次設(shè)計由一個主程序及相關(guān)中斷子程序組成。主程序中完成的是整個模塊的控制,即初始值的調(diào)顯功能及鍵掃功能,檢查是否有啟動鍵,切換鍵,暫停鍵,復(fù)位鍵中任意一者按下,有則轉(zhuǎn)入相應(yīng)的功能區(qū)去完成實現(xiàn)。否則繼續(xù)監(jiān)控按鍵程序直到有鍵按下。中斷程序則是利用T0來計算外界進來的脈沖數(shù)(模擬為車輛行駛的路程),根據(jù)此路程加價,最終完成所要求的出租車計價功能。第一章 設(shè)計內(nèi)容及要求出租車計價器的設(shè)計基本要求(1)里程顯示為:*.*公里(2)能預(yù)置起步價及單價:如起步3公里6.00元;1.60/公里。提
3、高要求 (1)起步價和單價能夠調(diào)整參考原理框圖脈沖產(chǎn)生電路變換電路單片機顯示器鍵盤圖1.1 原理框圖第二章 系統(tǒng)組成及工作原理2.1 系統(tǒng)的組成本次設(shè)計的出租車計價器系統(tǒng)是由四部分組成,包括信號源、由三極管和反相器74LS14組成變換電路、單片機8031系統(tǒng)和HD7279顯示模塊。設(shè)計結(jié)構(gòu)框圖如圖2.1所示。信號源整形電路單片機顯示器鍵盤 圖2.1 設(shè)計結(jié)構(gòu)框圖其中,1.NE555多諧振蕩電路輸出矩形脈沖作為信號源,經(jīng)過放大整形電路,輸出標(biāo)準(zhǔn)脈沖信號。2.8031單片機模塊是以8031作為微處理器的控制系統(tǒng)。它主要實現(xiàn)對整個系統(tǒng)的控制管理,完成數(shù)據(jù)的處理等。該模塊使用單片機8031,128字節(jié)
4、的內(nèi)部RAM數(shù)據(jù)存儲器,2個16位定時器/計數(shù)器,一個串行口,5個中斷源、2個中斷優(yōu)先級,時鐘頻率在1.2MHZ12MHZ。由于其內(nèi)部沒有程序存儲器,內(nèi)部數(shù)據(jù)存儲器容量不夠,必須外部擴展程序存儲器和數(shù)據(jù)存儲器。3.7279可編程數(shù)碼管/鍵盤串行接口芯片是一片具有串行接口的,能同時驅(qū)動八位共陰式數(shù)碼管的智能顯示驅(qū)動芯片,該芯片同時還可以連接多達64鍵的強大鍵盤矩陣,單片即可完成LED顯示,鍵盤接口的全部功能,它是單片機應(yīng)用系統(tǒng)中常用的一種外圍接口電路。本機用HD7279管理16個鍵和八位數(shù)碼管。2.2工作原理出租車計價是根據(jù)車所行駛的路程以及乘客乘車的時間段綜合決定的。出租車行駛總路程可以通過車
5、輪的周長乘以車輪旋轉(zhuǎn)圈數(shù)得到,即可計算得到車輪旋轉(zhuǎn)幾周出租車能行駛一公里的路程。在本次課程設(shè)計中采用555多諧振蕩電路輸出脈沖模仿出租車計價器計量車輪旋轉(zhuǎn)的圈數(shù)。信號源輸出電脈沖,經(jīng)過放大整形電路,輸出標(biāo)準(zhǔn)TTL信號。輸出的脈沖信號被接入到8031單片機系統(tǒng)中,通過計算接收到的脈沖個數(shù),計算出當(dāng)前所行駛的路程。同時,根據(jù)不同的收費標(biāo)準(zhǔn),選擇相應(yīng)的起步價、單價等收費標(biāo)準(zhǔn)進行計算。HD7279管理鍵盤和數(shù)碼顯示,通過鍵盤能夠?qū)崿F(xiàn)啟動、暫停、停止計價器、切換顯示當(dāng)前的行駛里程和需支付的車費,還能夠?qū)蝺r、起步價、起步公里進行設(shè)置。第三章 硬件電路設(shè)計3.1微處理器系統(tǒng) 1、以8031為核心的微處理系
6、統(tǒng)8031單片機模塊是以8031作為微處理器的控制系統(tǒng)。它主要實現(xiàn)對整個系統(tǒng)的控制管理,完成數(shù)據(jù)的處理等。該模塊使用單片機8031、數(shù)據(jù)存儲器6116、程序存儲器27128、地址鎖存器74LS373、74LS138譯碼器等芯片構(gòu)成單片機的基本系統(tǒng)。本系統(tǒng)在設(shè)計中,通過輸入外部信號作為T0計數(shù),完成數(shù)據(jù)處理。本次設(shè)計中使用的微處理系統(tǒng)是以8031為核心的最小開發(fā)系統(tǒng)板,如圖3.1所示。圖 3.1最小下載系統(tǒng)3.2整形電路信號源輸出矩形脈沖,經(jīng)過放大整形電路,輸出標(biāo)準(zhǔn)脈沖信號。放大整形電路如圖3.2所示。參數(shù)計算:由15V V 取值1 =40110取=50的取值范圍是343。所以取為5.6。圖3.
7、2 放大整形電路3.3鍵盤、顯示接口在本次硬件電路的設(shè)計中,在處理鍵盤和顯示部分中曾考慮兩個芯片,即芯片8279和芯片7279。1、 8279鍵盤、顯示接口8279是一種有鍵盤/顯示接口電路的集成塊??捎?279管理28個鍵和6個顯示器。由74LS138譯碼器對SLZ譯出的鍵掃描線,由另一個3-8譯碼器譯出顯示器的位掃描線8279與單片機的硬件連接(如圖3.3)。圖3.3 8279與單片機的硬件連接概圖:2、7279鍵盤、顯示接口HD7279A是一片具串行接口的,可同時驅(qū)動8位共陰式數(shù)碼管的智能顯示驅(qū)動芯片,該芯片同時還可以連接多達64鍵的鍵盤矩陣,單片即可完成LED顯示,鍵盤接口的全部功能。
8、HD7279主要特性有: (1).串行接口,無需外圍元件可直接驅(qū)動LED。 (2).各位獨立控制譯碼/不譯碼及消隱和閃爍屬性。 (3).(循環(huán))左移/(循環(huán))右移指令。 (4).具有段尋址指令,方便控制獨立LED。 (5).64鍵鍵盤控制器,內(nèi)含去抖動電路。HD7279接口電路如圖3.4所示。圖3.4 7279鍵盤、顯示接口電路經(jīng)過比較,采用7279芯片,它可有效地提高編程的效率。3、555多諧振蕩電路用555定時器構(gòu)成的多諧振蕩器電路如圖3.5所示:圖中電容C、電阻R1和R2作為振蕩器的定時元件,決定著輸出矩形波正、負(fù)脈沖的寬度。定時器的觸發(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,即輸出信號的正負(fù)向脈沖寬度相等的矩形波(方波)。在設(shè)計的具體方案中將R1和R2使用100K電位器,使得輸出的方波占空比可調(diào)。第四章 系統(tǒng)軟件設(shè)計4.1軟件設(shè)計說明 本系統(tǒng)的軟件設(shè)計主要可分為主程序模塊、定時計數(shù)中斷程序、里程計數(shù)中斷服務(wù)程序、中途等待中
10、斷服務(wù)程序、顯示子程序服務(wù)程序、鍵盤服務(wù)程序六大模塊。下面對各部分模塊作介紹。1.程序模塊中,需要完成對各接口芯片的初始化、出租車起價和單價的初始化、中斷向量的設(shè)計以及開中斷、循環(huán)等待等工作。并設(shè)計相應(yīng)標(biāo)志位及對它們進行初始化。2.在里程計數(shù)中斷服務(wù)程序設(shè)計中,需要完成當(dāng)前行駛里程數(shù)和總額的累加操作,并將結(jié)果存入里程和總額寄存器中。并調(diào)用顯示子程序顯示總金額或總路程。3. 顯示子程序服務(wù)程序設(shè)計中通過編寫6個顯示子程序來完成其功能的。4. 在鍵盤服務(wù)程序設(shè)計中,鍵盤采用查詢的方式,放在主程序中,當(dāng)沒有按鍵按下的時候,單片機循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。本設(shè)
11、計通過讀8031芯片的T0口的輸入脈沖數(shù)目來確定里程,為了便于計算,規(guī)定T0口來1個脈沖為1米(即車輪周長)。程序運行時,先通過鍵掃程序判斷是否開始啟動TO計里程。在這里程序中設(shè)定開始運行顯示HELLO??;設(shè)定S0為啟動鍵、S1為單價顯示鍵、S2鍵為起步公里顯示鍵、S3為起步價顯示鍵、S4鍵為復(fù)位鍵、S5鍵為切換顯示總金額、總路程鍵。在鍵掃描之后,調(diào)用計數(shù)子程序,T0口第一次接收累積到100個脈沖后,主程序進入T0中斷,開始根據(jù)單價進行加價。為使出租車計價器能夠切換顯示總金額、總路程問題,在程序中設(shè)置了顯示切換鍵S5,按下此鍵能顯示總路程,再按一次顯示總金額。當(dāng)再次有乘客上車時,司機可按下S4
12、鍵(復(fù)位鍵),所有計數(shù)內(nèi)存單元清零,程序重新運行。此外為使起步價,起步公里和單價能夠調(diào)整,本程序增加6個鍵:起步價調(diào)整鍵:S6和S7;起步公里調(diào)整鍵:S11和S10;單價調(diào)整鍵:S15和S14。另外增加等待的時候切換成等待時間換算成公里數(shù)以及特殊情況下暫停,對應(yīng)該功能增加兩個鍵:S12等待,S13暫停。4.2 7279鍵盤功能設(shè)計 單價顯示起步價顯示啟動出租車計價器起步公里顯示單價減一起步公里減一暫停起步公里加一復(fù)位路程金額切換起步價減一單價加一起步價加一等待4.3存儲單元及關(guān)鍵字介紹 存儲單元介紹30H,31H起步價存儲單元32H,33H起步公里存儲單元34H,35H單價存儲單元36H,37
13、H,38H總路程存儲單元39H,3AH,3BH總金額存儲單元50H,51H,52H,53H,54H,55H,56H,57H,58H,59H顯示緩沖區(qū)00H標(biāo)志位切換顯示總金額和總路程表 存儲單元4.3.2 關(guān)鍵字介紹MAIN主程序KEY1讀鍵值子程序STFS發(fā)送一字節(jié)子程序STJS接收一字節(jié)子程序DTR7279顯示子程序LUC定時器0中斷子程序BEG7279初始化子程序TAB0“0”到“9”字形表TAB1“0.”到“9.”字形表TAB2其它所用到的功能顯示字形表TABR鍵值表T0口8031芯片脈沖輸入口表 關(guān)鍵字介紹4.4程序結(jié)構(gòu)設(shè)計4.4.1、主程序結(jié)構(gòu)設(shè)計程序開始運行時對存儲區(qū)及7279初
14、始化,對計數(shù)器T0初始化,判斷是否有按鍵按下,無鍵按下,重新進行鍵盤掃描;有鍵按下,判斷是哪個鍵按下,并進行相應(yīng)的操作,如下圖所示。開始7279初始化,各單元初始化T0初始化,計數(shù),中斷允許初始值送顯緩區(qū)調(diào)顯示子程序并調(diào)鍵掃描程序有鍵按下求鍵號并保存啟動鍵S0?T0計數(shù)切換鍵S5?起步價調(diào)整調(diào)整公里數(shù)調(diào)整單價調(diào)整調(diào)整復(fù)位鍵?調(diào)整調(diào)整等待計時NYYNN切換顯示總金額、總路程NNNYN NNN NY N圖4.1 主程序流程圖4.4.2中斷程序結(jié)構(gòu)設(shè)計每100個脈沖信號到來的時候使得總路程加1.00,一直加下去,若總路程超過起步公里數(shù)時,則總金額加1.60。如下圖所示。開始返回存入總路程每來1個脈沖
15、路程加0.01總路程是否超過起步公里數(shù)單價加一是否顯示總金額顯示總金額顯示總路程調(diào)顯示程序YNYN圖 4.2 中斷程序框圖4.4.3 其他子程序結(jié)構(gòu)設(shè)計 7279顯示子程序設(shè)計如圖4.3所示。子程序開始設(shè)定循環(huán)次數(shù)=8、顯緩首址CS=0,選通7279調(diào)用STFS發(fā)送工作方式字將鍵號發(fā)送給7279顯示顯緩區(qū)加一,方式字減一循環(huán)次數(shù)> 8? 返回將鍵號送給顯緩單元圖4.3 顯示子程序框圖第五章 實驗調(diào)試與測試結(jié)果5.1實驗調(diào)試根據(jù)系統(tǒng)設(shè)計方案,本系統(tǒng)的調(diào)試共分為三大部分:硬件調(diào)試,軟件調(diào)試和軟硬件聯(lián)調(diào)。硬件調(diào)試:使用的儀器儀表 :數(shù)字萬用表DT9203單片機仿真器WAVE6000燒寫器 GF
16、2100雙蹤穩(wěn)壓穩(wěn)流電源DH1718E-5數(shù)字示波器 TDS1002本次課程設(shè)計中硬件電路有放大整形電路如圖3.2所示和555多諧振蕩電路如圖3.2(b)。焊接完成后,將多諧振蕩電路輸出的脈沖接入到放大整形電路的輸入端,用示波器測量整形電路的輸出端,輸出為反向放大的脈沖信號。用示波器觀察555電路輸出波形,并且調(diào)節(jié)電位器實現(xiàn)了產(chǎn)生0到100HZ可調(diào)的方波信號。輸出的方波接入整形電路輸入端,實現(xiàn)了較好的輸出可調(diào)占空比的方波信號。硬件調(diào)試比較順利。軟件調(diào)試:在本次設(shè)計中,程序的調(diào)試并不是雜亂無章的,而是分別對每個子程序進行調(diào)試,使每個功能都可以實現(xiàn)后才進行整體的調(diào)試。在開始對主程序的調(diào)試時,遇到了
17、一點小麻煩,就是讀鍵調(diào)轉(zhuǎn)塊程序時,由于按鍵過多,調(diào)轉(zhuǎn)時老是出問題,要么不轉(zhuǎn),要么轉(zhuǎn)錯。后來經(jīng)仔細地檢查每條指令,逐條修改,終于使讀鍵部分調(diào)試成功。在T0中斷程序中,36H,37H,38H單元中存放總路程,39H,3AH,3BH單元存儲總金額。當(dāng)進行一次T0中斷,存儲總路程的低位38H單元自動加1,從而會引起37H,36H單元內(nèi)容的改變,即總路程的個位,十位和百位的進位,要通過與32H,33H中存儲的起步公里數(shù)相比較,看是否超過起步公里,若未超過起步公里,則39H,3AH,3BH單元存儲總金額為起步價;若超過起步公里,則總金額要按照34H,35H中存儲的單價進行累加。因而可能會引起總金額39H,
18、3AH單元(即總金額的高位存儲單元)的進位。在調(diào)試中,發(fā)現(xiàn)總金額的增加未按照單價進行累加,導(dǎo)致總金額計價不正確,后來發(fā)現(xiàn)總路程與起步公里不能正確比較造成的,于是增加程序LUC0,通過修改完成其功能。此外,新增加等待計時功能時也不是很順利,在調(diào)試程序時,按下相應(yīng)的功能鍵時,程序總會跳到初始化里去,起初以為是標(biāo)志位出了問題,后來經(jīng)過多次調(diào)試及查閱相關(guān)資料才知道,是中斷出了問題,初始化時應(yīng)先關(guān)閉前面的相應(yīng)中斷。最終經(jīng)調(diào)試本設(shè)計基本完成相關(guān)功能。5.2測試結(jié)果出租車計價器開機顯示“HELLO!”,按S0鍵啟動計價器,計價器計數(shù),每100個脈沖信號到來的時總路程加1.00,一直加下去,若總路程超過起步公
19、里數(shù)時,總金額加1.60;按鍵S5切換顯示總路程、總金額;按鍵S7和S6為起步價調(diào)整鍵,S7鍵為起步價加1.00元,S6鍵為起步價減1.00元;按鍵S11和S10為起步公里調(diào)整鍵,S10鍵為起步公里加1.00,S11鍵為起步公里減1.00;按鍵S15和S14為單價調(diào)整鍵,S15為單價加0.1,S14為單價減0.1;S4鍵為復(fù)位鍵;按鍵S3為起步價顯示鍵,S2鍵為起步公里顯示鍵,S1為單價顯示鍵,S12為啟動時間計算金額數(shù),S13為暫停鍵。最小系統(tǒng)板7279鍵盤設(shè)計達到預(yù)期的效果。結(jié) 論本款出租車計價器比目前市場現(xiàn)在的增加了不少功能,其中包括單價輸出、單價調(diào)整、路程輸出、顯示當(dāng)前的系統(tǒng)時間等功能
20、。另外,多功能出租車計價器還具有性能可靠、電路簡單、成本低、實用性強等特點,加上經(jīng)過優(yōu)化的程序,使其有很高的智能化水平。在本次課程設(shè)計過程中,我學(xué)會了在網(wǎng)絡(luò)上查找有關(guān)本設(shè)計的各硬件的資源,其中包括:8031單片機及其引腳說明、7279引腳圖及其引腳功能等,為本次課程設(shè)計提供了一定的資料。在硬件的選擇上用了7279而沒有選擇8279雖然用并行通信的8279芯片可以提高其速度,但7279在功能上更加強大。軟件設(shè)計是首要任務(wù),所以首先要明確程序所要完成的任務(wù),確定輸入/輸出,對輸入數(shù)據(jù)應(yīng)進行哪些處理,以及發(fā)生錯誤后該如何處理等。再結(jié)合硬件結(jié)構(gòu),進一步弄清軟件程序所承擔(dān)的一個個任務(wù)細節(jié),確實具體實施的
21、方法。通過本次課程設(shè)計,我學(xué)到了許多書本上無法學(xué)到的知識,同時也深該體會到單片機技術(shù)應(yīng)用領(lǐng)域的廣泛,不僅使我對單片機的相關(guān)應(yīng)用及匯編語言有了更進一步的理解,同時提高了動手能力,實踐和理論的得到很好的結(jié)合。為我們今后的畢業(yè)設(shè)計的制作奠定了一定的基礎(chǔ)。參考文獻1、戴梅萼、史嘉權(quán)編微型計算機技術(shù)及應(yīng)用(第三版)清華大學(xué)出版社,2003年8月2、張友德、趙志英、涂時亮編單片微型機原理、應(yīng)用與實驗(第三版)復(fù)旦大學(xué)出版社,2000年11月3、王福瑞等編單片微機測控系統(tǒng)設(shè)計大全 北京航空航天大學(xué)出版社 1999年3月 4、涂時亮編單片機微機控制技術(shù) 復(fù)旦大學(xué)出版社 1994年5、高傳善等編接口與通訊 復(fù)旦
22、大學(xué)出版社 1989年6、徐君毅等編 單片微型計算機原理與應(yīng)用 上??茖W(xué)出版社 1988年附錄1. 程序清單及注釋 ORG 0000H LJMP MAIN ORG 000BH LJMP LUC ORG 001BH LJMP YYMAIN: MOV SP,#67H ACALL BEG ;調(diào)7279初始化程序 MOV TMOD,#16H ;TO工作在計數(shù),中斷允許 MOV TH0,#0F6H ;計數(shù)從F6H到FFH MOV TL0,#0F6HMOV TH1,#0F6H ;計數(shù)從F6H到FFH MOV TL1,#0F6H MOV TCON,#00H MOV IE,#8AH ;T0的溢出中允許 MOV
23、 30H,#06H ;初始化起步價6.00元,30H31H單元存起步價 MOV 31H,#00H MOV 32H,#03H ;初始化起步公里數(shù)3.00公里,32H33H存起步公里數(shù) MOV 33H,#00H MOV 34H,#01H ;初始化單價1.60元,34H35H存單價 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到59
24、H為顯示緩沖區(qū) MOV 53H,#17H ;開機顯示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)用求鍵號子程序 CJNE A,#00H,LP2 SJMP L0 ;鍵值為00H轉(zhuǎn)到L0LP2:CJNE
25、 A,#01H,LP3 SJMP L1 ;鍵值為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
26、轉(zhuǎn)到L9LP10:CJNE A,#0CH,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,起步價顯示 SJMP LP0L4:INC 30H ;起步價調(diào)整,加1 M
27、OV R1,30HCJNE R1,#10,TPTP:JC TPP MOV 30H,#00H TPP:ACALL QBJ ;調(diào)整后再顯示起步價 SJMP LP0L5:DEC 30H ;起步價調(diào)整,減1 MOV R1,30HCJNE R1,#1,TP11TP11:JNC TPP1 MOV 30H,#9TPP1: ACALL QBJ ;再次顯示起步價 AJMP LP0 L1:ACALL QBGL ;調(diào)用QBGL,起步公里數(shù)顯示 AJMP LP0L8:INC 32H ;起步公里數(shù)調(diào)整,加1MOV R2,32HCJNE R2,#10,LLPP1JNC LLPP2LLPP2:MOV 32H,#00H LL
28、PP1:ACALL QBGL ;調(diào)整后顯示 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,顯示單價 lJMP LP0L12:MOV A,35H ;單價調(diào)整 ADD A,#10H ;每次加0.10元 DA A ;BCD碼調(diào)整 MOV 35H,A MOV A,34H ;34H存儲單價的高位 ADDC A,#00H ;調(diào)整有進位加1 DA A ;BCD碼調(diào)整
29、 MOV 34H,A ACALL DANJIA ;調(diào)整完,再次顯示單價 LJMP LP0L13:MOV A,35H ;單價調(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)整完畢,單價顯示 LJMP LP0 ;轉(zhuǎn)LP0,重新讀鍵L3:SETB TR0 ;TR0置"1",TO開始計數(shù) LJMP LP0L14:AJMP
30、 MAIN ;復(fù)位,程序重新運行L15:CPL TR0 ;暫停,程序停止計數(shù)和定時LJMP LP0L16:CLR 30H ;啟動T0計數(shù)器,開T0中斷 MOV IE,#82H SETB TR0 CLR TR1 LJMP LP0L17: SETB 30H ;啟動T1定時器,暫停T0計數(shù)器 MOV IE,#88H SETB TR1 CLR TR0 ACALL SHIJIAN ;顯示等待的時間 ACALL DIR LJMP LP0 L6:CPL 00H ;切換顯示總金額和總路程 JNB 00H,LC_1 ;其中00H為標(biāo)志位,用來記憶 ACALL LC_XS ;顯示總路程 ACALL DIR LJM
31、P LP0LC_1:ACALL JE_XS ;顯示總金額 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次,作用為延時約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 ;延時約10US MOV C,P1.2 ;鍵盤值讀入CY RLC
32、 A CLR P1.1 MOV R6,#01HA3:DJNZ 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 ;延時LLP1:DJNZ R6,LLP1 MOV A,#15H ACALL STFS ;發(fā)送一字節(jié)子程序 MOV R6,#06H ;延時LLP2:DJNZ R6,LLP2 A
33、CALL STJS ;接收一字節(jié)子程序 SETB P1.0 RETDIR:MOV R5,#08H ;顯示程序,循環(huán)8次(8個數(shù)碼管) MOV R0,#52H ;52H為顯示緩沖區(qū)首址 MOV R1,#97H ;顯示碼D1:CLR P1.0 ;CS有效,P1.0接CS MOV R6,#0CHD2:DJNZ R6,D2 ;延時,大于25US MOV A,R1 ACALL STFS;輸出指令碼 MOV R6,#06HD3:DJNZ R6,D3;延時 MOV A,R0 ADD A,#0DH MOVC A,A+PC;查表指令 ACALL STFS ;發(fā)送顯示數(shù)據(jù),即查表后的顯示碼 MOV R6,#02H
34、D4:DJNZ R6,D4 ;延時 SETB P1.0;一個數(shù)碼管顯示完 INC R0 DEC R1 DJNZ R5,D1 ;延時 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é)存儲的兩個BCD碼 ANL A,#0FH MOV 42H,A MOV A,B ANL A,#0FH
35、 MOV 41H,A RETBEG:CLR P1.0 ;P1.0清零,7279初始化子程序 MOV R6,#0CH ;延時G0:DJNZ R6,G0 MOV A,#0A4H ACALL STFS ;發(fā)送一字節(jié)子程序 MOV R6,#02H ;延時G1:DJNZ R6,G1 SETB P1.0 ;CS有效 RETQBJ:MOV A,30H ;起步價顯示,起步價存儲在30H,31H單元 ACALL CHE ;調(diào)用CHE后使以BCD碼形式存儲 MOV A,41H ADD A,#0AH MOV 43H,A MOV A,31H ACALL CHE MOV 52H,#1BH ;送入顯示緩沖區(qū),52H-59
36、H MOV 53H,#1BH ;初始顯示為"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ù)存儲在 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,#1B
37、H MOV 55H,#1BH MOV 56H,#1BH MOV 57H,43H MOV 58H,42H MOV 59H,41H ACALL DIR ;調(diào)用顯示子程序 RETDANJIA:MOV A,34H ;單價顯示, 單價存儲在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
38、58H,42H MOV 59H,41H ACALL DIR ;調(diào)用顯示子程序 RETLC_XS:MOV A,36H ;總路程顯示,總路程存儲在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
39、MOV 57H,43H MOV 58H,42H MOV 59H,41H ACALL DIR ;調(diào)用顯示子程序 RETJE_XS:MOV A,39H ;總金額顯示,存儲在39H,3AH,3BH單元 ACALL CHE MOV 46H,42H MOV 45H,41H MOV 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
40、 MOV 56H,44H MOV 57H,43H MOV 58H,42H MOV 59H,41H ACALL DIR ;調(diào)用顯示子程序 RETSHIJIAN: MOV IE,88H CLR TR0 SETB TR1 MOV A,3EH ;總金額顯示,存儲在39H,3AH,3BH單元 ACALL CHE MOV 46H,42H MOV 45H,41H MOV A,3DHACALL CHE MOV 44H,42H MOV A,41H MOV 43H,A MOV A,3CH ACALL CHE MOV 52H,#05H ;送入顯示緩沖區(qū) MOV 53H,#1AH ;初始顯示"P=0006.
41、00元" MOV 54H,46H MOV 55H,45H MOV 56H,44H MOV 57H,43H MOV 58H,42H MOV 59H,41H ACALL DIR ;調(diào)用顯示子程序 RETCJH: MOV B,A ;保存,求鍵號子程序 MOV R2,#00H ;00放項號 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等.壓縮文件請下載最新的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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水泥基礎(chǔ)施工方案
- 橋梁排水施工方案
- 管道拆除施工方案
- 1994年赴美考察散記
- 2025年村委會林地承包與木材加工銷售合同
- 二零二五年度實習(xí)生實習(xí)期間實習(xí)成果轉(zhuǎn)化與應(yīng)用協(xié)議
- 二零二五年度測繪成果應(yīng)用安全保護協(xié)議
- 二零二五年度風(fēng)投優(yōu)先股投資合作中的知識產(chǎn)權(quán)保護合同
- 二零二五年度股權(quán)投資顧問服務(wù)創(chuàng)新條款
- 2025股東股權(quán)協(xié)議:新能源汽車動力電池研發(fā)與生產(chǎn)
- 2024年北京電子科技職業(yè)學(xué)院高職單招筆試歷年職業(yè)技能測驗典型例題與考點解析含答案
- 家具公司合伙協(xié)議
- DL5000-火力發(fā)電廠設(shè)計技術(shù)規(guī)程
- 2025屆新高考數(shù)學(xué)沖刺復(fù)習(xí) 突破爪型三角形的八大妙手
- 《醫(yī)德醫(yī)風(fēng)學(xué)習(xí)記錄》
- 羊水穿刺的委托書
- 變電站工程的驗收規(guī)范
- CJT183-2008 鋼塑復(fù)合壓力管
- 爆破飛石控制措施
- 2024年新疆生產(chǎn)建設(shè)兵團興新職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- (高清版)JTGT M72-01-2017 公路隧道養(yǎng)護工程預(yù)算定額
評論
0/150
提交評論