单片机自动报时控制器

[复制链接]
查看1836 | 回复0 | 2011-9-7 22:52:12 | 显示全部楼层 |阅读模式
<





摘 要 介绍一种由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


热帖推荐
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则