?? 單片機自動報時控制器 .txt
字號:
第1123篇:單片機自動報時控制器
發布時間:2005年12月27日
點擊次數:894
詳細內容:單片機自動報時控制器
李紅萍 馬應魁
摘 要 介紹一種由8031單片機組成的自動報時控制器系統的硬件結構和程序設計。
關鍵詞 單片機 定時器 中斷 控制碼
Single-chip Computer Automatic Chronopher
Li Hongping Ma Yingkui
Abstract:This paper presents the hardware composition and software design of automatic chronopher system controlled by 8031.
Key words:single-chip computer timer interruption control code
電腦時鐘可模擬電子鐘顯示時、分、秒,此外還可根據學校的作息時間按時打鈴,播放音樂和廣播操節目。本系統設制了二個按鈕,分別用來調時調分,以保證時鐘與標準時間相吻合,打開電源開關即可運行。
本系統是通過MCS-51內部定時器T0產生中斷來實現計時的。T0工作在定時器工作方式1,每100 ms產生一次中斷,利用軟件將基準100 ms(1/10 s)單元進行累加計數。當定時器產生10次中斷后就產生了1秒信號,這時秒單元加1,同理,可對分單元和時單元計數,從而產生秒、分、時的時間值,并通過連接在8155A口、B口上的六位七段顯示器進行顯示。系統硬件框圖如圖1所示。
把學校的作息時間預先制成表格存入EPROM數據區中,利用軟件每過1秒將當前時間與數據區時間相比較,相等說明要進行某一控制,從而可完成打鈴、息鈴、放廣播操等控制。 數據區中每一項時間控制字需要占用8個存儲單元:
8031單片機的P1.0用作電鈴的開啟和關閉,P1.4用作廣播的開啟和關閉,控制碼的定義如表1。
表1
控制碼 功 能 對應輸出口
FEH 起動電鈴 P0.1控制電鈴
EFH 起動廣播操出 P1.4控制廣播
FFH 關閉裝置 P1.0 P1.4均輸出關閉信號
00H 數據區結束
圖1
參考源程序 ORG 0000H
LJMP MAIN; 轉主程序
ORG 0003H
LJMP INT0; 轉INT0中斷
ORG 000BH
LJMP CLOCK; 轉定時器T0中斷
ORG 0013H
LJMP INT1; 轉INT1中斷
INT0中斷服務程序:
ORG 0050H
INT0: CLR EX0
JNB P3.2,$
INC 28H
MOV A,28H
ADD A,#00H
DA A
MOV 28H,A
SUBB A,#60H
JC DSUP2
MOV 28H,#00H
DSUP2:LCALL DSUP
SETB EX0
RETI
INT1中斷服務程序:
INT1:CLR EX1
JNB P3.3,$
INC 29H
MOV A,29H
ADD A,#00H
DA A
MOV 29H,A
SUBB A,#24H編
JC DSUP3
MOV 29H,#00H
DSUP3:LCALL DSUP
SETB EX1
RETI
主程序:
MAIN:MOV A,#03H
MOV R0,#20H
MOVX @R0,A
MOV SP,#5AH
MOV 2BH,#60H
MOV 2CH,#60H
MOV 2DH,#24H
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
MOV IE,#87H
SETB TR0
LOOP:LCALL DSUP
LJMP LOOP
顯示程序:
DSUP:MOV R0,#4FH
MOV A,27H
ACALL PTDS
MOV A,28H
ACALL PTDS
MOV A,29H
ACALL PTDS
MOV R0,#4AH
MOV R2,#0DFH
MOV DPTR,#SEGPT
DSUP1:MOV A,#00H
MOV R1,#21H
MOVX @R1,A
MOV A,@R0
MOVC A,@A+DPTR
MOVX @R1,A
MOV A,R2
MOV R1,#22H
MOVX @R1,A
MOV R3,#00H
DSUP4:DJNZ R3,DSUP4
INC R0
CLR C
MOV A,R2
RR A
MOV R2,A
JB ACC.7,DSUP1
RET
PTDS:MOV R1,A
ACALL PTDS1
MOV A,R1
SWAP A
PTDS1:ANL A,#OFH
MOV @R0,A
DEC R0
RET
T0中斷服務程序:
CLOCK:PUSH PSW
PUSH ACC
SETB RS0
MOV TL0,#0B7H
MOV TH0,#3CH
INC 26H
MOV A,26H
CJNE A,#0AH,DONE
MOV 26H,#00H
MOV R0,#27H
MOV R1,#28H
MOV R3,#03H
LOOP0:MOV A,@R0
ADD A,#01H
DA A
MOV @R0,A
MOV 38H,@R1
CJNE A,38H,DONE0
MOV @R0,#00H
INC R0
INC R1
DJNZ R3,LOOP0
DONE0:ACALL LOOP1
DONE:POP ACC
POP PSW
RETI
控制程序:
LOOP1:MOV DPTR,#100CH
MOV 2EH,DPL
LOOP4:MOV DPL,2EH
MOV R3,#04H
MOV R1,#2AH
LOOP2:INC DPTR
DJNZ R3,LOOP2
MOV 2EH,DPL
MOV R3,#03H
CLR A
MOVC A,@A+DPTR
JZ LOOP3
MOV 3AH,A
LOOP5:INC DPTR
DEC R1
CLR A
MOVC A,@A+DPTR
MOV 3BH,A
MOV A,@R1
CJNE A,3BH,LOOP4
DJNZ R3,LOOP5
MOV A,3AH
CPL A
MOV P1,A
LOOP3:RET
李紅萍(蘭州石化職業技術學院 730060)
馬應魁(蘭州石化職業技術學院 730060)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -