單片機數(shù)碼鐘設(shè)計實例課件_第1頁
單片機數(shù)碼鐘設(shè)計實例課件_第2頁
單片機數(shù)碼鐘設(shè)計實例課件_第3頁
單片機數(shù)碼鐘設(shè)計實例課件_第4頁
單片機數(shù)碼鐘設(shè)計實例課件_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機原理及應(yīng)用

課程教案第六章:單片機應(yīng)用實例單片機原理及應(yīng)用主要內(nèi)容6.1單片機應(yīng)用系統(tǒng)設(shè)計的基本準(zhǔn)則6.2單片機應(yīng)用系統(tǒng)的設(shè)計方法6.3數(shù)碼管時鐘電路的設(shè)計主要內(nèi)容6.1單片機應(yīng)用系統(tǒng)設(shè)計的基本準(zhǔn)則6.1.1可靠性

高可靠性是單片機系統(tǒng)應(yīng)用的前提,在系統(tǒng)設(shè)計的每一個環(huán)節(jié),都應(yīng)該將可靠性作為首要的設(shè)計準(zhǔn)則。提高系統(tǒng)的可靠性通常從以下幾個方面考慮:1.使用可靠性高的元器件2.采用雙機系統(tǒng)3.設(shè)計電路板時布線和接地要合理,嚴(yán)格安裝硬件設(shè)備及電路6.1單片機應(yīng)用系統(tǒng)設(shè)計的基本準(zhǔn)則6.1.1可靠性6.1單片機應(yīng)用系統(tǒng)設(shè)計的基本準(zhǔn)則4.對供電電源采用抗干擾措施5.輸入輸出通道抗干擾措施6.進行軟硬件濾波7.系統(tǒng)自診斷功能6.1.2操作維護方便6.1.3性價比6.1.4設(shè)計周期短。4.對供電電源采用抗干擾措施6.2.1系統(tǒng)總體設(shè)計

系統(tǒng)總體設(shè)計是單片機系統(tǒng)設(shè)計的前提,合理的總體設(shè)計是系統(tǒng)成敗的關(guān)鍵??傮w設(shè)計關(guān)鍵在于對系統(tǒng)功能和性能的認識和合理分析,系統(tǒng)單片機及關(guān)鍵芯片的選型,系統(tǒng)基本結(jié)構(gòu)的確立和軟、硬件功能的劃分

6.2單片機應(yīng)用系統(tǒng)的設(shè)計方法6.2.1系統(tǒng)總體設(shè)計6.2單片機應(yīng)用系統(tǒng)的設(shè)計方法單片機系統(tǒng)的研制過程圖單片機系統(tǒng)的研制過程圖明確系統(tǒng)的功能與性能系統(tǒng)單片機選型劃分系統(tǒng)軟、硬件功能4.確定系統(tǒng)結(jié)構(gòu)組成

明確系統(tǒng)的功能與性能1.程序存儲器2.數(shù)據(jù)存儲器3.I/O接口4.譯碼電路5.總線驅(qū)動器6.抗干擾電路

6.2.2硬件設(shè)計1.程序存儲器6.2.2硬件設(shè)計

6.2.3軟件設(shè)計

軟件設(shè)計流程

6.2.3軟件設(shè)計

軟件設(shè)計流程

軟件設(shè)計通常分作系統(tǒng)定義、軟件結(jié)構(gòu)設(shè)計和程序設(shè)計等三個步驟(見上圖)。1.系統(tǒng)定義①定義說明各輸入/輸出口的功能,確定信息交換的方式、與系統(tǒng)接口方式、所占口地址、讀取和輸出方式等。②在程序存儲器和數(shù)據(jù)存儲器區(qū)域中,合理分配存儲空間,其中包括系統(tǒng)主程序、常數(shù)表格、數(shù)據(jù)暫存區(qū)域、堆棧區(qū)域和入口地址等。③對面板控制開關(guān)、按鍵等輸入量以及顯示、打印等輸出量也必須給予定義,以此作為編程依據(jù)。④針對可能出現(xiàn)的由干擾引起的錯誤進行容錯設(shè)計,給出錯誤處理方案,以達到提高軟件可靠性的目的。⑤明確所設(shè)計的用戶程序應(yīng)達到的精度、速度指標(biāo)。

軟件設(shè)計通常分作系統(tǒng)定義、軟件結(jié)構(gòu)設(shè)計和程序2.軟件結(jié)構(gòu)設(shè)計3.程序設(shè)計圖6.42.軟件結(jié)構(gòu)設(shè)計圖6.4

系統(tǒng)調(diào)試包括硬件調(diào)試、軟件調(diào)試和軟、硬件聯(lián)調(diào)。根據(jù)調(diào)試環(huán)境不同,系統(tǒng)調(diào)試又分為模擬調(diào)試與現(xiàn)場調(diào)試。各種調(diào)試所起的作用是不同的,它們所處的時間段也不一樣,不過它們的目的都是為了查出用戶系統(tǒng)中存在的錯誤或缺陷。系統(tǒng)調(diào)試的一般過程如圖6.5。

6.2.4系統(tǒng)總體調(diào)試

系統(tǒng)調(diào)試包括硬件調(diào)試、軟件調(diào)試和軟、硬件聯(lián)調(diào)。根據(jù)調(diào)試圖6.5圖6.51.單片機應(yīng)用系統(tǒng)調(diào)試工具(1)單片機開發(fā)系統(tǒng)(2)萬用表(3)邏輯筆(4)邏輯脈沖發(fā)生器與模擬信號發(fā)生器(5)示波器(6)邏輯分析儀

1.單片機應(yīng)用系統(tǒng)調(diào)試工具2.單片機應(yīng)用系統(tǒng)的一般調(diào)試方法(1)硬件調(diào)試

①靜態(tài)調(diào)試

②動態(tài)調(diào)試

(2)軟件調(diào)試

①先獨立后聯(lián)機

②先分塊后組合

③先單步后連續(xù)

2.單片機應(yīng)用系統(tǒng)的一般調(diào)試方法(3)系統(tǒng)聯(lián)調(diào)①

軟、硬件能否按預(yù)定要求配合工作。②系統(tǒng)運行中是否有潛在的設(shè)計時難以預(yù)料的錯誤。

③系統(tǒng)的動態(tài)性能指標(biāo)(包括精度、速度參數(shù))是否滿足設(shè)計要求。(4)現(xiàn)場調(diào)試(3)系統(tǒng)聯(lián)調(diào)

6.3數(shù)碼管時鐘電路的設(shè)計6.3.1系統(tǒng)設(shè)計引言

LED數(shù)碼管時鐘電路采用24h計時方式,時、分、秒用六位數(shù)碼管顯示。該電路采用AT89C2051單片機,使用3V電池供電。

6.3.2系統(tǒng)設(shè)計原理以AT89C2051單片機來實現(xiàn)時鐘計時顯示有如下幾個要點:1.計算計數(shù)初值時鐘計時的關(guān)鍵問題是秒的產(chǎn)生,因為秒是最小時鐘單位,但使用MCS-51的定時器/計數(shù)器進行定時,即使按工作方式1,其最大定時時間也只能達到131ms,離1s還差很遠。為此,我們把秒計時用硬件定時和軟件計數(shù)相結(jié)合的方法實現(xiàn),即:把定時器的定時時間定為125ms,這樣計數(shù)溢出8次就可得到1s,而8次計數(shù)可用軟件方法實現(xiàn)。

6.3數(shù)碼管時鐘電路的設(shè)計

為得到125ms定時,我們可使用定時器/計數(shù)器0,以工作方式1進行,假定單片機為6MHZ晶振,設(shè)計數(shù)初值為X,則有如下等式:(216–X)×2=125000

計算得計數(shù)初值X=3036,二進制表示為110011011100B,十六進制表示為0CDCH。2.設(shè)定定時器定時方式定時器采用中斷定時方式完成,以便于通過中斷服務(wù)程序進行溢出次數(shù)(每次125ms)的累計,計滿8次即得到秒計時。為得到125ms定時,我們可使用定時器/計數(shù)器3.實現(xiàn)方法通過在程序中的數(shù)值累加和數(shù)值比較來實現(xiàn)從秒到分和從分到時的計時。4.設(shè)置時鐘顯示及顯示緩沖區(qū)假定時鐘時間在6位LED數(shù)碼管上進行顯示(時、分、秒各占兩位)。為此,要在內(nèi)部RAM中設(shè)置顯示緩沖區(qū),共6個單元,與數(shù)碼管對應(yīng)關(guān)系如圖6.12所示。顯示緩沖區(qū)從左向右依次存放時、分、秒的數(shù)值。

LED5LED4LED3LED2LED1LED07EH7DH7CH7BH7AH79H圖6.12LED顯示器的緩沖單位

3.實現(xiàn)方法LED5LED4LED3LED2LED6.3.3系統(tǒng)硬件設(shè)計

數(shù)碼管時鐘電路如圖6.13所示,其采用AT89C2051單片機最小化應(yīng)用設(shè)計,LED顯示用動態(tài)掃描方式實現(xiàn),P1口輸出段碼數(shù)據(jù),P3.0~P3.5口作掃描輸出,P3.7接按鈕開關(guān)。了提供LED數(shù)碼管的驅(qū)動電流,用三極管9012作電源驅(qū)動輸出。為了提高秒計時的精確度,本設(shè)計中的計時采用定時器T0中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,當(dāng)P3.7端口開關(guān)按下時,轉(zhuǎn)入調(diào)時功能程序。

6.3.3系統(tǒng)硬件設(shè)計圖6.13采用AT89C2051的六位時鐘電路

供陽低電平有效低電平導(dǎo)通圖6.13采用AT89C2051的六位時鐘電路供陽低電6.3.4系統(tǒng)軟件設(shè)計1.主程序(MAIN)

主程序的主要功能是進行定時器/計數(shù)器的初始化編程,然后通過反復(fù)調(diào)用顯示子程序的方法,等待125ms定時中斷的到來。系統(tǒng)主程序流程圖如圖6.14所示。

6.3.4系統(tǒng)軟件設(shè)計調(diào)用顯示子程序設(shè)置循環(huán)次數(shù)開中斷定時開始計數(shù)初值定時器0工作方式1顯示緩沖區(qū)單元清0定義堆棧區(qū)MAIN等待定時中斷請求圖6.14主程序流程調(diào)用顯示子程序設(shè)置循環(huán)次數(shù)開中斷定時開始計數(shù)初值定時器0工作

ORG0000H;程序執(zhí)行開始地址

LJMPSTART;跳到標(biāo)號START執(zhí)行

ORG000BH;定時器0中斷程序入口

LJMPINTTO;跳到標(biāo)號INTTO執(zhí)行

ORG0030H

START:MOVSP,#60H;確立堆棧區(qū)

MOVR0,#79H;顯示緩沖區(qū)首地址

MOVR7,#06H;顯示位數(shù)ML1:MOV@R0,#00H;顯示緩沖單元清0

INCR0

DJNZR7,ML1

主程序清單如下:

ORG0000H;程序執(zhí)行開始地址

LJMPSTART;跳

MOVTMOD,#01H;設(shè)置定時器0為方式1

MOVTL0,#0DCH;裝計數(shù)器初值

MOVTH0,#0CH

SETBEA;總中斷開放

SETBET0;允許T0中斷

SETBTR0;開啟T0定時器

MOV30H,#08H;計數(shù)溢出次數(shù)ML0:LCALLDISPLAY;調(diào)用顯示子程序

JNBP3.7SETMM1;調(diào)整程序

SJMPML0

SETMM1:LJMPSETMM;轉(zhuǎn)到調(diào)整程序

MOVTMOD,#01H;設(shè)置定時器0為方式1

MOV2.加1子程序(DAADl)

加1子程序用于完成對秒、分和時的加1操作,中斷服務(wù)程序中在秒、分、時加1時共有三處調(diào)用此子程序。加l操作共包括以下三項內(nèi)容:加1子程序清單:

DAA1:MOVA,@R0;加1子程序,十位送A

DECR0

SWAPA;十位數(shù)占高4位

ORLA,@R0;個位數(shù)占低4位

ADDA,#01H;加12.加1子程序(DAADl)DAA1:MOVA

DAA;十進制調(diào)整

MOVR2,A;全值暫存R2中

ANLA,#0FH;屏蔽十位數(shù),取個位數(shù)

MOV@R0,A;個位值送顯示緩沖單元

MOVA,R2

INCR0

ANLA,#0F0H;屏蔽個位數(shù)取出十位數(shù)

SWAPA;使十位數(shù)占低4位

MOV@R0,A;十位數(shù)送顯示緩沖單元

RET

;返回

DAA;十進制調(diào)整

MOVR2,A;全值暫存R2中

ANL十位數(shù)送緩沖單元把十位數(shù)交換到低半字節(jié)個位數(shù)送緩沖單元十進制調(diào)整加1取個位數(shù),并占A低半字節(jié)使十位數(shù)占A高半字節(jié)取十位數(shù)DISPLAY圖6.5加1子程序流程十位數(shù)送緩沖單元把十位數(shù)交換到低半字節(jié)個位數(shù)送緩沖單元十進制3.中斷服務(wù)程序(PITO)

中斷服務(wù)程序的主要功能是進行計時操作。程序開始先判斷計數(shù)溢出是否滿了8次,不滿8次表明還沒達到最小計時單位秒,中斷返回;如滿8次則表明已達到最小計時單位秒,程序繼續(xù)向下執(zhí)行,進行計時操作。中斷服務(wù)程序流程如圖11.16所示。中斷子程序清單:

INTT0:PUSHACC;現(xiàn)場保護

PUSHPSW

SETBPSW.3;選1組通用寄存器

MOVTL0,#0DCH;計數(shù)器重新加載

MOVTH0,#0CH

3.中斷服務(wù)程序(PITO)INTT0:PUS

MOVA,30H;循環(huán)次數(shù)減1

DECA

MOV30H,A

JNZRET0;不滿8次轉(zhuǎn)移

MOV30H,#08H;滿8次開始計時

MOVR0,#7AH;秒顯示緩沖單元

ACALLDAAD1;秒加1

MOVA,R2;加1后秒值在R2

XRLA,#60H;判是否到60秒

JNZRET0;不到轉(zhuǎn)移

ACALLCLR0;到60S顯示單元清0

MOVR0,#7CH;分顯示緩沖單元地址

ACALLDAAD1;分加1

MOVA,R2

MOVA,30H;循環(huán)次數(shù)減1

DECA

MOV3

XRLA,#60H;判是否到60分

JNZRET0

ACALLCLR0;到60分顯示單元清0

MOVR0,#7EH;時顯示緩沖單元地址

ACALLDAAD1;時加1

MOVA,R2

XRLA,#24H;判是否24小時

JNZRET0

ACALLCLR0;到24小時清緩沖單元RET0:POPACC;現(xiàn)場恢復(fù)

POPPSW

RET1

;中斷返回

XRLA,#60H;判是否到60分

JNZRET0

ACCLR0:CLRA;清緩沖單元子程序

MOV@R0,A;十位數(shù)緩沖單元清0

DECR0

MOV@R0,A;個位數(shù)緩沖單元清0

RET

;返回4、清緩沖單元子程序:CLR0:CLRA;清緩沖單元子程序

MOV@R0,A;十

秒顯示緩沖單元清0秒加1循環(huán)次數(shù)減1計數(shù)器重新加載現(xiàn)場保護PITO是否滿8次是否60秒時顯示緩沖單元清0是否24小時是否60分分值加1現(xiàn)場恢復(fù)時值加1分顯示緩沖單元清0返回圖11.16中斷服務(wù)程序流程 秒顯示緩沖單元清0秒加1循環(huán)次數(shù)減1計數(shù)器重新加載現(xiàn)場保5.顯示子程序

數(shù)碼管顯示的數(shù)據(jù)存放在內(nèi)存單元79H一7EH中,其中79H~7AH存放秒數(shù)據(jù),7BH~7CH存放分數(shù)據(jù),7DH~7EH存放時數(shù)據(jù),每一地址單元內(nèi)均為十進制BCD碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進制BCD碼數(shù)據(jù)的對應(yīng)段碼存放在ROM表中。顯示時,先取出79H~7EH某一地址中的數(shù)據(jù),然后查得對應(yīng)的顯示用段碼從P1口輸出。P3口將對應(yīng)的數(shù)碼管選中,就能顯示該地址單元的數(shù)據(jù)值。

5.顯示子程序DISPLAY:MOVR0,#79H;建立顯示緩沖區(qū)首址

MOVR3,#FEH;從右數(shù)第一位顯示

MOVA,R3;掃描字放入ALD0:MOVP3,A;從P3口輸出

MOVA,@R0;取顯示數(shù)據(jù)到A

MOVDPTR,#TAB;取段碼表地址

MOVCA,@A+DPTR;查顯示數(shù)據(jù)對應(yīng)段碼

MOVP1,A;段碼放P1口

ACALLDL1MS;延時1ms

INCR0;指向下一地址DISPLAY:MOVR0,#79H;建立顯示緩沖區(qū)首址

MOVA,R3

JBACC.5LD1;ACC.5=0一次顯示結(jié)束

RLA;A中數(shù)據(jù)循環(huán)左移

MOVR3,A;將位控碼送R3保存

AJMPLD0;繼續(xù)掃描LD1:RET

TAB:DBC0H;字形代碼表0

DBF9H;1

DBA4H;2

DBB0H;3

DB99H;4

MOVA,R3

JBACC.5LD1;ACC.5=0ThankYou!ThankYou!單片機原理及應(yīng)用

課程教案第六章:單片機應(yīng)用實例單片機原理及應(yīng)用主要內(nèi)容6.1單片機應(yīng)用系統(tǒng)設(shè)計的基本準(zhǔn)則6.2單片機應(yīng)用系統(tǒng)的設(shè)計方法6.3數(shù)碼管時鐘電路的設(shè)計主要內(nèi)容6.1單片機應(yīng)用系統(tǒng)設(shè)計的基本準(zhǔn)則6.1.1可靠性

高可靠性是單片機系統(tǒng)應(yīng)用的前提,在系統(tǒng)設(shè)計的每一個環(huán)節(jié),都應(yīng)該將可靠性作為首要的設(shè)計準(zhǔn)則。提高系統(tǒng)的可靠性通常從以下幾個方面考慮:1.使用可靠性高的元器件2.采用雙機系統(tǒng)3.設(shè)計電路板時布線和接地要合理,嚴(yán)格安裝硬件設(shè)備及電路6.1單片機應(yīng)用系統(tǒng)設(shè)計的基本準(zhǔn)則6.1.1可靠性6.1單片機應(yīng)用系統(tǒng)設(shè)計的基本準(zhǔn)則4.對供電電源采用抗干擾措施5.輸入輸出通道抗干擾措施6.進行軟硬件濾波7.系統(tǒng)自診斷功能6.1.2操作維護方便6.1.3性價比6.1.4設(shè)計周期短。4.對供電電源采用抗干擾措施6.2.1系統(tǒng)總體設(shè)計

系統(tǒng)總體設(shè)計是單片機系統(tǒng)設(shè)計的前提,合理的總體設(shè)計是系統(tǒng)成敗的關(guān)鍵。總體設(shè)計關(guān)鍵在于對系統(tǒng)功能和性能的認識和合理分析,系統(tǒng)單片機及關(guān)鍵芯片的選型,系統(tǒng)基本結(jié)構(gòu)的確立和軟、硬件功能的劃分

6.2單片機應(yīng)用系統(tǒng)的設(shè)計方法6.2.1系統(tǒng)總體設(shè)計6.2單片機應(yīng)用系統(tǒng)的設(shè)計方法單片機系統(tǒng)的研制過程圖單片機系統(tǒng)的研制過程圖明確系統(tǒng)的功能與性能系統(tǒng)單片機選型劃分系統(tǒng)軟、硬件功能4.確定系統(tǒng)結(jié)構(gòu)組成

明確系統(tǒng)的功能與性能1.程序存儲器2.數(shù)據(jù)存儲器3.I/O接口4.譯碼電路5.總線驅(qū)動器6.抗干擾電路

6.2.2硬件設(shè)計1.程序存儲器6.2.2硬件設(shè)計

6.2.3軟件設(shè)計

軟件設(shè)計流程

6.2.3軟件設(shè)計

軟件設(shè)計流程

軟件設(shè)計通常分作系統(tǒng)定義、軟件結(jié)構(gòu)設(shè)計和程序設(shè)計等三個步驟(見上圖)。1.系統(tǒng)定義①定義說明各輸入/輸出口的功能,確定信息交換的方式、與系統(tǒng)接口方式、所占口地址、讀取和輸出方式等。②在程序存儲器和數(shù)據(jù)存儲器區(qū)域中,合理分配存儲空間,其中包括系統(tǒng)主程序、常數(shù)表格、數(shù)據(jù)暫存區(qū)域、堆棧區(qū)域和入口地址等。③對面板控制開關(guān)、按鍵等輸入量以及顯示、打印等輸出量也必須給予定義,以此作為編程依據(jù)。④針對可能出現(xiàn)的由干擾引起的錯誤進行容錯設(shè)計,給出錯誤處理方案,以達到提高軟件可靠性的目的。⑤明確所設(shè)計的用戶程序應(yīng)達到的精度、速度指標(biāo)。

軟件設(shè)計通常分作系統(tǒng)定義、軟件結(jié)構(gòu)設(shè)計和程序2.軟件結(jié)構(gòu)設(shè)計3.程序設(shè)計圖6.42.軟件結(jié)構(gòu)設(shè)計圖6.4

系統(tǒng)調(diào)試包括硬件調(diào)試、軟件調(diào)試和軟、硬件聯(lián)調(diào)。根據(jù)調(diào)試環(huán)境不同,系統(tǒng)調(diào)試又分為模擬調(diào)試與現(xiàn)場調(diào)試。各種調(diào)試所起的作用是不同的,它們所處的時間段也不一樣,不過它們的目的都是為了查出用戶系統(tǒng)中存在的錯誤或缺陷。系統(tǒng)調(diào)試的一般過程如圖6.5。

6.2.4系統(tǒng)總體調(diào)試

系統(tǒng)調(diào)試包括硬件調(diào)試、軟件調(diào)試和軟、硬件聯(lián)調(diào)。根據(jù)調(diào)試圖6.5圖6.51.單片機應(yīng)用系統(tǒng)調(diào)試工具(1)單片機開發(fā)系統(tǒng)(2)萬用表(3)邏輯筆(4)邏輯脈沖發(fā)生器與模擬信號發(fā)生器(5)示波器(6)邏輯分析儀

1.單片機應(yīng)用系統(tǒng)調(diào)試工具2.單片機應(yīng)用系統(tǒng)的一般調(diào)試方法(1)硬件調(diào)試

①靜態(tài)調(diào)試

②動態(tài)調(diào)試

(2)軟件調(diào)試

①先獨立后聯(lián)機

②先分塊后組合

③先單步后連續(xù)

2.單片機應(yīng)用系統(tǒng)的一般調(diào)試方法(3)系統(tǒng)聯(lián)調(diào)①

軟、硬件能否按預(yù)定要求配合工作。②系統(tǒng)運行中是否有潛在的設(shè)計時難以預(yù)料的錯誤。

③系統(tǒng)的動態(tài)性能指標(biāo)(包括精度、速度參數(shù))是否滿足設(shè)計要求。(4)現(xiàn)場調(diào)試(3)系統(tǒng)聯(lián)調(diào)

6.3數(shù)碼管時鐘電路的設(shè)計6.3.1系統(tǒng)設(shè)計引言

LED數(shù)碼管時鐘電路采用24h計時方式,時、分、秒用六位數(shù)碼管顯示。該電路采用AT89C2051單片機,使用3V電池供電。

6.3.2系統(tǒng)設(shè)計原理以AT89C2051單片機來實現(xiàn)時鐘計時顯示有如下幾個要點:1.計算計數(shù)初值時鐘計時的關(guān)鍵問題是秒的產(chǎn)生,因為秒是最小時鐘單位,但使用MCS-51的定時器/計數(shù)器進行定時,即使按工作方式1,其最大定時時間也只能達到131ms,離1s還差很遠。為此,我們把秒計時用硬件定時和軟件計數(shù)相結(jié)合的方法實現(xiàn),即:把定時器的定時時間定為125ms,這樣計數(shù)溢出8次就可得到1s,而8次計數(shù)可用軟件方法實現(xiàn)。

6.3數(shù)碼管時鐘電路的設(shè)計

為得到125ms定時,我們可使用定時器/計數(shù)器0,以工作方式1進行,假定單片機為6MHZ晶振,設(shè)計數(shù)初值為X,則有如下等式:(216–X)×2=125000

計算得計數(shù)初值X=3036,二進制表示為110011011100B,十六進制表示為0CDCH。2.設(shè)定定時器定時方式定時器采用中斷定時方式完成,以便于通過中斷服務(wù)程序進行溢出次數(shù)(每次125ms)的累計,計滿8次即得到秒計時。為得到125ms定時,我們可使用定時器/計數(shù)器3.實現(xiàn)方法通過在程序中的數(shù)值累加和數(shù)值比較來實現(xiàn)從秒到分和從分到時的計時。4.設(shè)置時鐘顯示及顯示緩沖區(qū)假定時鐘時間在6位LED數(shù)碼管上進行顯示(時、分、秒各占兩位)。為此,要在內(nèi)部RAM中設(shè)置顯示緩沖區(qū),共6個單元,與數(shù)碼管對應(yīng)關(guān)系如圖6.12所示。顯示緩沖區(qū)從左向右依次存放時、分、秒的數(shù)值。

LED5LED4LED3LED2LED1LED07EH7DH7CH7BH7AH79H圖6.12LED顯示器的緩沖單位

3.實現(xiàn)方法LED5LED4LED3LED2LED6.3.3系統(tǒng)硬件設(shè)計

數(shù)碼管時鐘電路如圖6.13所示,其采用AT89C2051單片機最小化應(yīng)用設(shè)計,LED顯示用動態(tài)掃描方式實現(xiàn),P1口輸出段碼數(shù)據(jù),P3.0~P3.5口作掃描輸出,P3.7接按鈕開關(guān)。了提供LED數(shù)碼管的驅(qū)動電流,用三極管9012作電源驅(qū)動輸出。為了提高秒計時的精確度,本設(shè)計中的計時采用定時器T0中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,當(dāng)P3.7端口開關(guān)按下時,轉(zhuǎn)入調(diào)時功能程序。

6.3.3系統(tǒng)硬件設(shè)計圖6.13采用AT89C2051的六位時鐘電路

供陽低電平有效低電平導(dǎo)通圖6.13采用AT89C2051的六位時鐘電路供陽低電6.3.4系統(tǒng)軟件設(shè)計1.主程序(MAIN)

主程序的主要功能是進行定時器/計數(shù)器的初始化編程,然后通過反復(fù)調(diào)用顯示子程序的方法,等待125ms定時中斷的到來。系統(tǒng)主程序流程圖如圖6.14所示。

6.3.4系統(tǒng)軟件設(shè)計調(diào)用顯示子程序設(shè)置循環(huán)次數(shù)開中斷定時開始計數(shù)初值定時器0工作方式1顯示緩沖區(qū)單元清0定義堆棧區(qū)MAIN等待定時中斷請求圖6.14主程序流程調(diào)用顯示子程序設(shè)置循環(huán)次數(shù)開中斷定時開始計數(shù)初值定時器0工作

ORG0000H;程序執(zhí)行開始地址

LJMPSTART;跳到標(biāo)號START執(zhí)行

ORG000BH;定時器0中斷程序入口

LJMPINTTO;跳到標(biāo)號INTTO執(zhí)行

ORG0030H

START:MOVSP,#60H;確立堆棧區(qū)

MOVR0,#79H;顯示緩沖區(qū)首地址

MOVR7,#06H;顯示位數(shù)ML1:MOV@R0,#00H;顯示緩沖單元清0

INCR0

DJNZR7,ML1

主程序清單如下:

ORG0000H;程序執(zhí)行開始地址

LJMPSTART;跳

MOVTMOD,#01H;設(shè)置定時器0為方式1

MOVTL0,#0DCH;裝計數(shù)器初值

MOVTH0,#0CH

SETBEA;總中斷開放

SETBET0;允許T0中斷

SETBTR0;開啟T0定時器

MOV30H,#08H;計數(shù)溢出次數(shù)ML0:LCALLDISPLAY;調(diào)用顯示子程序

JNBP3.7SETMM1;調(diào)整程序

SJMPML0

SETMM1:LJMPSETMM;轉(zhuǎn)到調(diào)整程序

MOVTMOD,#01H;設(shè)置定時器0為方式1

MOV2.加1子程序(DAADl)

加1子程序用于完成對秒、分和時的加1操作,中斷服務(wù)程序中在秒、分、時加1時共有三處調(diào)用此子程序。加l操作共包括以下三項內(nèi)容:加1子程序清單:

DAA1:MOVA,@R0;加1子程序,十位送A

DECR0

SWAPA;十位數(shù)占高4位

ORLA,@R0;個位數(shù)占低4位

ADDA,#01H;加12.加1子程序(DAADl)DAA1:MOVA

DAA;十進制調(diào)整

MOVR2,A;全值暫存R2中

ANLA,#0FH;屏蔽十位數(shù),取個位數(shù)

MOV@R0,A;個位值送顯示緩沖單元

MOVA,R2

INCR0

ANLA,#0F0H;屏蔽個位數(shù)取出十位數(shù)

SWAPA;使十位數(shù)占低4位

MOV@R0,A;十位數(shù)送顯示緩沖單元

RET

;返回

DAA;十進制調(diào)整

MOVR2,A;全值暫存R2中

ANL十位數(shù)送緩沖單元把十位數(shù)交換到低半字節(jié)個位數(shù)送緩沖單元十進制調(diào)整加1取個位數(shù),并占A低半字節(jié)使十位數(shù)占A高半字節(jié)取十位數(shù)DISPLAY圖6.5加1子程序流程十位數(shù)送緩沖單元把十位數(shù)交換到低半字節(jié)個位數(shù)送緩沖單元十進制3.中斷服務(wù)程序(PITO)

中斷服務(wù)程序的主要功能是進行計時操作。程序開始先判斷計數(shù)溢出是否滿了8次,不滿8次表明還沒達到最小計時單位秒,中斷返回;如滿8次則表明已達到最小計時單位秒,程序繼續(xù)向下執(zhí)行,進行計時操作。中斷服務(wù)程序流程如圖11.16所示。中斷子程序清單:

INTT0:PUSHACC;現(xiàn)場保護

PUSHPSW

SETBPSW.3;選1組通用寄存器

MOVTL0,#0DCH;計數(shù)器重新加載

MOVTH0,#0CH

3.中斷服務(wù)程序(PITO)INTT0:PUS

MOVA,30H;循環(huán)次數(shù)減1

DECA

MOV30H,A

JNZRET0;不滿8次轉(zhuǎn)移

MOV30H,#08H;滿8次開始計時

MOVR0,#7AH;秒顯示緩沖單元

ACALLDAAD1;秒加1

MOVA,R2;加1后秒值在R2

XRLA,#60H;判是否到60秒

JNZRET0;不到轉(zhuǎn)移

ACALLCLR0;到60S顯示單元清0

MOVR0,#7CH;分顯示緩沖單元地址

ACALLDAAD1;分加1

MOVA,R2

MOVA,30H;循環(huán)次數(shù)減1

DECA

MOV3

XRLA,#60H;判

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論