數(shù)碼管數(shù)字時(shí)鐘電路的設(shè)計(jì)_第1頁(yè)
數(shù)碼管數(shù)字時(shí)鐘電路的設(shè)計(jì)_第2頁(yè)
數(shù)碼管數(shù)字時(shí)鐘電路的設(shè)計(jì)_第3頁(yè)
數(shù)碼管數(shù)字時(shí)鐘電路的設(shè)計(jì)_第4頁(yè)
數(shù)碼管數(shù)字時(shí)鐘電路的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(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)介

10.3.2數(shù)碼管數(shù)字時(shí)鐘電路的設(shè)計(jì)1.系統(tǒng)硬件電路的設(shè)計(jì)單片機(jī)限制的數(shù)碼管時(shí)鐘電路如圖10-6所示,它接受的是AT89C51單片機(jī),只用了P1口和P2口,P0、P3口可用于擴(kuò)展顯示年、月、日等功能。為了簡(jiǎn)化硬件電路,LED顯示接受動(dòng)態(tài)掃描方式實(shí)現(xiàn),P1口輸出段碼數(shù)據(jù),P2.0~P2.5端作掃描輸出限制端,P2.7作功能轉(zhuǎn)換按鍵輸入端。LED接受共陽(yáng)極數(shù)碼管,由三極管9012供應(yīng)驅(qū)動(dòng)電流。為了提高計(jì)時(shí)精度,所接受的晶振頻率為12MHz。圖10-6AT89C51數(shù)字時(shí)鐘電路圖2.系統(tǒng)軟件的設(shè)計(jì)1)主程序主程序功能主要是初始化、正常顯示時(shí)間和推斷功能轉(zhuǎn)換鍵。顯示時(shí)間調(diào)用顯示子程序。當(dāng)P2.7端口按鍵按下時(shí),轉(zhuǎn)入調(diào)時(shí)功能程序。主程序流程圖如圖10-7所示。圖10-7主程序流程圖2)顯示子程序數(shù)碼管顯示的數(shù)據(jù)存放在50H~55H內(nèi)存單元中,其中50H、51H單元存放秒數(shù)據(jù),52H、53H單元存放分?jǐn)?shù)據(jù),54H、55H單元存放時(shí)數(shù)據(jù)。時(shí)間數(shù)據(jù)接受BCD碼表示,對(duì)應(yīng)的顯示用段碼表存放在ROM中。3)定時(shí)器T0中斷服務(wù)程序時(shí)鐘的最小計(jì)時(shí)單位是秒,60s進(jìn)位1min,60min進(jìn)位1h。定時(shí)器T0用于產(chǎn)生最小單位1s,定時(shí)時(shí)間為50ms,中斷累計(jì)20次即為1s。計(jì)數(shù)單元中的十進(jìn)制BCD數(shù)每逢60進(jìn)位。程序流程圖如圖10-8所示。圖10-8T0中斷服務(wù)程序4)定時(shí)器T1中斷服務(wù)程序進(jìn)行時(shí)間調(diào)整時(shí),正在被調(diào)整的時(shí)間以閃爍形式表現(xiàn),定時(shí)器T1用于產(chǎn)生閃爍的時(shí)間間隔,每隔0.3s閃爍一次。程序流程圖略。5)調(diào)時(shí)功能程序調(diào)整時(shí)間程序的方法是:按下功能鍵,當(dāng)按下時(shí)間小于1?s時(shí),進(jìn)入省電狀態(tài),大于1s時(shí),進(jìn)入調(diào)分狀態(tài),等待操作,此時(shí)計(jì)時(shí)器停止走動(dòng)。6)延時(shí)程序系統(tǒng)運(yùn)用三個(gè)延時(shí)程序。因?yàn)橄到y(tǒng)是動(dòng)態(tài)顯示,為了確保系統(tǒng)在有效顯示時(shí)間范圍內(nèi)(約50ms)必需執(zhí)行顯示程序,所以0.5s的延時(shí)程序是通過(guò)執(zhí)行顯示程序約81遍實(shí)現(xiàn)的。程序如下: ORG 0000H AJMP MAINT ;轉(zhuǎn)主程序 NOP ORG 000BH AJMP INT01 ;轉(zhuǎn)定時(shí)器T0中斷程序 NOP ORG 001BH AJMP INT11 ;轉(zhuǎn)定時(shí)器T1中斷程序NOP******主程序******MAINT: MOV R0,#7FH ;00H~7FH單元清零 CLR AWZ1:MOV@R0,A DJNZ R0,WZ1 MOV SP,#30H ;置堆棧指針 MOV 5AH,#0AH ;放入“熄滅符”數(shù)據(jù) MOV TMOD,#11H ;設(shè)T0,T1為16位定時(shí)器MOVTL0,#0B0H ;置50ms定時(shí)初值 MOV TH0,#3CH MOV TL1,#0B0H MOV TH1,#3CH SETB EA ;開中斷 SETB ET0 ;允許T0中斷 SETB TR0 ;啟動(dòng)T0 MOV R4,#14H;用于產(chǎn)生1s定時(shí)MAINT1: LCALL XSZCX ;調(diào)用顯示子程序 JNB P2.7,SJTZ0 ;功能鍵按下,進(jìn)入調(diào)時(shí)程序 SJMP MAINT1SJTZ0: LCALL XSZCX ;通過(guò)調(diào)用顯示時(shí)間程序延時(shí)消抖動(dòng) JNB P2.7,SJTZ1 SJMP MAINT1 ;功能鍵沒(méi)有按下,顯示時(shí)間SJTZ1: CLR ET0;關(guān)閉T0中斷 CLR TR0;關(guān)閉T0 LCALLYS1S;調(diào)用1s延時(shí)程序 JB P2.7,KMTES ;按鍵時(shí)間小于1s,進(jìn)入省電狀態(tài) MOV R2,#06H ;進(jìn)入調(diào)時(shí)狀態(tài),置閃爍定時(shí)初值 SETB ET1 ;允許T1中斷 SETB TR1 ;啟動(dòng)T1XYZ2:JNBP2.7,XYZ1 ;P2.7端為0,等待 CLR01H ;置調(diào)分標(biāo)記位為1XYZ4:JBP2.7,XYZ3 ;等待鍵按下 LCALL YS05S ;延時(shí)0.5s JNB P2.7,XYZHH ;按鍵時(shí)間大于0.5s,轉(zhuǎn)到調(diào)小時(shí)狀態(tài) MOV R0,#53H ;按鍵時(shí)間小于0.5s,進(jìn)入調(diào)分狀態(tài) LCALL ADD1 ;調(diào)時(shí)間加1子程序MOVA,R3 ;取要調(diào)整的單元數(shù)據(jù)CLR CCJNEA,#60,QWE;調(diào)整單元數(shù)據(jù)與60比較JCXYZ4 ;小于60轉(zhuǎn)到XYZ4循環(huán)QWE:CLR A;大于或等于60,清零 MOV @R0,A DEC R0 MOV @R0,A CLR C AJMP XYZ4 ;轉(zhuǎn)到XYZ4循環(huán)KMTES: SETBET0;省電狀態(tài),開T0中斷 SETBTR0;啟動(dòng)T0(開時(shí)鐘)KMA:JBP2.7,$;無(wú)按鍵按下,等待 LCALLXSZCX;通過(guò)調(diào)用顯示時(shí)間程序延時(shí)消抖動(dòng) JBP2.7,KMA;是干擾返回等待KMA1: JNBP2.7,$;等待鍵釋放 LJMPMAINT1;返回主程序,顯示時(shí)間XYZHH: JNBP2.7,XYZ5;等待鍵釋放 SETB01H;置調(diào)小時(shí)標(biāo)記位XYZ6: JB P2.7,XYZ7;等待鍵按下 LCALLYS05S;有鍵按下,延時(shí)0.5s JNBP2.7,XYZOUT ;按下時(shí)間大于0.5s,退出調(diào)整狀態(tài) MOVR0,#55H ;小于0.5s,調(diào)整小時(shí) LCALLADD1;調(diào)加1子程序 MOVA,R3CLRC CJNEA,#24,KMB1 ;計(jì)時(shí)單元與24比較 JC XYZ6,;小于24轉(zhuǎn)XYZ6循環(huán)KMB1: CLRA;大于或等于24,則清零 MOV @R,A DEC R0 MOV @R0,A AJMP XYZ6 ;轉(zhuǎn)XYZ6循環(huán)XYZOUT: JNB P2.7,XYZOUT1 ;退出調(diào)時(shí)狀態(tài),等待鍵釋放 LCALL XSZCX;通過(guò)調(diào)用顯示程序延時(shí)消抖動(dòng) JNB P2.7,XYZOUT ;是抖動(dòng),返回XYZOUT等待 MOV 20H,#00H ;清調(diào)時(shí)標(biāo)記位 CLR TR1 ;關(guān)閉T1 CLR ET1 ;關(guān)T1中斷 SETB TR0 ;啟動(dòng)T0 SETB ET0 ;開T0中斷 LJMP MAINT1 ;返回主程序XYZ1: LCALL XSZCX ;鍵釋放等待時(shí),調(diào)用顯示子程序 AJMP XYZ2 ;防止此時(shí)無(wú)時(shí)鐘顯示XYZ3: LCALL XSZCX AJMP XYZ4XYZ5: LCALL XSZCX AJMP XYZHHXYZ7: LCALL XSZCX AJMP XYZ6XYZOUT1:LCALLXSZCX AJMP XYZOUT

******顯示子程序******

XSZCX:MOVR1,#50H;顯示數(shù)據(jù)首址 MOV R5,#0FEH ;掃描限制字初值MAXY: MOV A,R5;掃描限制字送A MOV P2,A ;輸出掃描限制字 MOV A,@R1 ;取顯示數(shù)據(jù) MOV DPTR,#ABC;取段碼表首地址 MOVCA,@A+DPTR;取對(duì)應(yīng)段碼 MOV P1,A ;P1口輸出段碼 LCALLYS1MS ;延時(shí)1msINC R1;顯示地址增1 MOV A,R5;掃描限制字送A JNB ACC.5,ENDOUT ;ACC.5為0時(shí)一次顯示結(jié)束 RL A ;限制字左移 MOV R5,A ;制字送回R5中 AJMP MAXY ;循環(huán)顯示下一個(gè)數(shù)據(jù)ENDOUT:MOVP2,#0FFH;一次顯示結(jié)束,P2口復(fù)位 MOV P1,#0FFH ;P1口復(fù)位 RET ;子程序返回

******T0中斷服務(wù)程序******

INT01:PUSHACC;疼惜現(xiàn)場(chǎng) PUSHPSW CLR ET0 ;關(guān)T0中斷 CLR TR0 ;關(guān)定時(shí)器T0 MOV A,#0B7H;修正中斷響應(yīng)時(shí)間 ADD A,TL0 MOV TL0,AMOV A,#3CH ADDC A,TH0 SETB TR0 ;啟動(dòng)定時(shí)器T0 DJNZ R4,INT0U ;20次中斷未到退出中斷AD1: MOV R4,#14H ;R4重新賦值 MOV R0,#51H ;指向秒計(jì)時(shí)單元(50H,51H) LCALLADD1;調(diào)用加1s程序 MOV A,R3 ;秒數(shù)據(jù)放入A CLR C ;清進(jìn)位標(biāo)記CJNE A,#60,AD2;小于60s嗎 JC INT0U ;小于60s退出中斷AD2: CLR A;大于或等于60s,清秒計(jì)數(shù)單元 MOV @R0,A DEC R0 MOV @R0,A MOV R0,#57H ;指向分計(jì)時(shí)單元(56H,57H) ACALLADD1;調(diào)用加1min程序 MOV A,R3;分?jǐn)?shù)據(jù)放入A CLR C CJNE A,#60,AD3;小于60min嗎 JC INT0U ;小于60min退出中斷AD3: CLR A;大于或等于60min,清分計(jì)數(shù)單元 MOV @R0,A DEC R0 MOV @R0,A MOV R0,#59H ;指向小時(shí)計(jì)時(shí)單元(58H,59H) ACALLADD1 ;調(diào)用加1h程序 MOV A,R3 ;小時(shí)數(shù)據(jù)放入A CLR C CJNE A,#24,AD4 ;小于24h嗎 JC INT0U ;小于24h退出中斷AD4: CLR A ;大于或等于24h清小時(shí)計(jì)數(shù)單元 MOV @R0,A DEC R0 MOV @R0,AINT0U: MOV 52H,56H ;中斷退出時(shí)將分、時(shí)計(jì)時(shí)單元數(shù)據(jù) MOV 53H,57H ;移入對(duì)應(yīng)顯示單元 MOV 54H,58H MOV 55H,59HPOP PSW ;復(fù)原現(xiàn)場(chǎng) POP ACC SETBET0 ;開放T0中斷 RETI ;中斷返回******T1中斷服務(wù)程序******

INT11: PUSH ACC ;疼惜現(xiàn)場(chǎng) PUSH PSW MOV TL1,#0B0H ;裝定時(shí)器T1初值 MOV TH1,#3CH DJNZ R2,INT1U ;0.3s未到退出中斷 MOV R2,#06H ;重裝0.3s定時(shí)用初值 CPL 02H ;0.3s定時(shí)到,對(duì)閃爍標(biāo)記取反JB 02H,CCC1 ;02H位為1時(shí)顯示單元“熄滅” MOV 52H,56H ;02H位為0時(shí)顯示正常 MOV 53H,57H MOV 54H,58H MOV 55H,59HINT1U: POP PSW ;復(fù)原現(xiàn)場(chǎng) POP ACCRETI ;退出中斷

CCC1: JB 01H,CCC2 ;01H位為1時(shí)轉(zhuǎn)小時(shí)熄滅限制 MOV 52H,5AH ;01H位為0時(shí)“熄滅符”放入分計(jì)時(shí)單元 MOV 53H,5AH MOV 54H,58H MOV 55H,59H AJMP INT1U ;轉(zhuǎn)中斷退出CCC2: MOV 52H,56H ;01H位為1時(shí)“熄滅符”放入小時(shí)計(jì)時(shí)單元 MOV 53H,57H MOV 54H,5AH MOV 55H,5AH AJMP INT1U ;轉(zhuǎn)中斷退出ADD1: MOV A,@R0 ;取出現(xiàn)計(jì)時(shí)數(shù)據(jù)放入A DEC R0;指向前一單元SWAP A;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)論