倒数定时器课程设计指导书.docx
- 文档编号:27267260
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:16
- 大小:16.91KB
倒数定时器课程设计指导书.docx
《倒数定时器课程设计指导书.docx》由会员分享,可在线阅读,更多相关《倒数定时器课程设计指导书.docx(16页珍藏版)》请在冰豆网上搜索。
倒数定时器课程设计指导书
倒数定时器课程设计指导书
功能说明:
倒数定时器基本功能如下:
1.七段LED显示器来显示目前倒数时间,显示格式为“分分:
秒秒”;
2.具有2个按键操作来设置现在想要倒数的时间,中途可作调整;
3.开始倒数计时结束后,继电器会做出相应判断。
4.重置后内定倒数时间为1min,显示“01:
00”。
操作键动作如下:
1.操作键K1:
可调整1min~99min及停止或中途调整定时;
2.操作键K2:
设置倒数为调整分钟的十位还是个位及确认设置完成。
具体操作:
1.复位后,按K1暂停定时,同时秒数为“1”;
2.按K1调整倒数定时器分钟的十位数,按K2调整结束;
3.再按K1调整倒数定时器分钟的个位数,按K2确认设置完成;
4.如需再次调整可重复1~3步骤,但无需复位。
倒数定时器的控制电路分为以下几部分:
1.单片机2051
2.七段LED显示器
3.按键控制
程序如下:
LOEQU24;定时器0计时中断低字节
HIEQU99;定时器0计时中断高字节
COEQU200
;-----------------------------------------------
RY1EQUP3.7
ALBEQU20H.0;定时设置标志
BUFEQU30H;30H~33H连续4字节存放七段显示器数据
HOUREQU34H;存放小时变量
MINEQU35H;存放分钟变量
SECEQU36H;存放秒钟变量
DEDAEQU37H;5ms计数值
SECOEQU38H;存放旧的秒数
HHEQU39H;定时1小时变量
MMEQU3AH;定时1分钟变量
HHSEQU3BH;定时2小时变量
MMSEQU3CH;定时2分钟变量
;-----------------------------------------------
K1EQUP3.4;按键1引脚定义
K2EQUP3.5;按键2引脚定义
RY1EQUp3.7;继电器控制引脚
ORG0000H;程序代码由地址0开始执行
JMPBEGIN
ORG0BH;定时器0中断地址设置
JMPT0_INT
;-----------------------------------------------
BEGIN:
CLRRY1
MOVHH,#8;内定时间为12点
MOVMM,#0
MOVHHS,#22
MOVMMS,#0
CALLINIT;初始化变量
CALLINIT_TIMER;初始化定时器
;-----------------------------------------------
LOOP;无穷循环
CALLTIME_PRO;时间计时处理
CALLSCAN1;扫描显示器
;-----------------------------------------------
JBK1M1;未按下K1则继续扫描
JNBK1,$
;K1按下-----------------------------------------
CALLSET_TIME;设置目前时间
JMPLOOP
;-----------------------------------------------
M1:
JBK2,LOOP;未按下K2则继续扫描
JNBK2,LOOP
;K2按下----------------------------------------
CALLSET_ATIME;设置定时时间
JMPLOOP
;延时子程序-------------------------------------
DELAY:
;总延时R5*10ms
MOVR6,#50
D1:
MOVR7,#100
DJNZR7,$
DJNZR6,D1
DJNZR5,DELAY
RET
;短暂延时子程序---------------------------------
DELAY1:
;控制七段显示器延迟时间
MOVR6,#1
D2:
MOVR7,#100
DJNZR7,$
DJNZR6,D1
DJNZR5,DELAY1
RET
;七段显示器字型数据-----------------------------
TLBLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
DB77H,7CH,58H,5EH,79H
DB71H
;-----------------------------------------------
SCAN1:
MOVR0,#BUF;指向显示器显示缓冲起始地址
MOVR2,#4;循环4次
MOVACC,#0FEH;加载扫描输出信号初值
S1:
PUSHACC
MOVA,@R0;取出七段显示器数据
MOVP1,ACC;由P1口送出七段显示器数据
POPACC
MOVP3,ACC;由P3口送出扫描输出信号
MOVR5,#5;延时
CALLDELAY1
;改变扫描码EX:
XXXX1101
RLA;累加器左移一位
INCR0;显示器显示缓冲区地址加1
DJNZR2,S1;循环判断是否继续
RET
;-----------------------------------------------
INIT:
;初始化控制变量
MOVDEDA,#0;5ms计数值清0
MOVSECO,#0;旧秒数清0
MOVSEC,#0;秒钟变量清0
MOVMIN,#0;分钟变量清0
MOVHOUR,#12;时钟变量显示12
RET
;-----------------------------------------------
INIT_TIMER:
;初始化定时器接口,使用定时器0模式0计时
MOVTMOD,#00H;设置定时器0工作模式为模式0
MOVIE,#10000010B;启用定时器0中断产生
MOVTL0,#LO;加载低字节
MOVTH0,#HI;加载高字节
SETBTR0;启用定时器0开始计时
RET
;-----------------------------------------------
T0_INT:
;定时器0计时中断程序每隔5ms中断一次
PUSHACC;将累加器放入堆栈
MOVTL0,#LO;加载低字节
MOVTH0,#HI;加载高字节
INCDEDA;5ms计数加1
MOVA,DEDA
CJNEA,#CO,TT1;是否1s到了?
MOVDEDA,#0;计数值清0
INCSEC
MOVA,SEC
CJNEA,#60,TT1;是否1min到了?
MOVSEC,#0;计秒数值清0
INCMIN
MOVA,MIN
CJNEA,#60,TT1;是否1h到了?
MOVMIN,#0;计分数值清0
INCHOUR
MOVA,HOUR
CJNEA,#24,TT1;是否24h到了?
MOVSEC,#0;计秒数值清0
MOVMIN,#0;计分数值清0
MOVHOUR,#0;计时数值清0
TT1:
POPACC;将累加器由堆栈取出
RETI
;转换小时分钟数据-------------------------------
CONV:
MOVA,HOUR
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVBUF,A
MOVA,B
MOVCA,#A+DPTR
MOVBUF+1,A
MOVA,MIN
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVBUF+2,A
MOVA,B
MOVCA,#A+DPTR
MOVBUF+3,A
RET
;-----------------------------------------------
SET_TIME:
CALLCONV
CALLSCAN1
JBK1,X1
JNBK1,$
JMPLOOK_ATIME
X1:
JBK2,X2
JNBK2,$
CLRTR0;定时器动作暂停
MOVSEC,#0;秒钟数清0
L0:
CALLSCAN1;扫描显示器
JBK1,L1;未按下K1则继续扫描
INCHOUR
MOVA,HOUR
CJNEA,#24,L11
MOVHOUR,#0
L11:
CALLCONV
CALLSCANS
JMPL0
L1:
JBK2,L0;未按下K2则继续扫描
JNBK2,$
L2:
CALLSCAN1;扫描显示器
JBK1,L3;未按下K1则继续扫描
INCMIN
MOVA,MIN
CJNEA,#60,L21
MOVMIN,#0
L21:
CALLCONV
CALLSCANS
L3:
JBK2,L2;未按下K2则继续扫描
JNBK2,$
SETBTR0
JMPLOOP
X2:
JMPSET_TIME
;-----------------------------------------------
SCANS:
;扫描七段显示器
MOVR4,#55
SS:
CALLSCAN1
DJNZR4,SS
RET
;-----------------------------------------------
TIME_OUT:
SETBRY1
RET
;-----------------------------------------------
TIME_OUT2:
CLRRY1
RET
;-----------------------------------------------
LOOK_ATIME:
CALLCONVA
MOVB,#0
LO1:
CALLSCAN1
DJNZB,LO1
CALLCONVB
MOVB,#0
LO2:
CALLSCAN1
DJNZB,LO2
CALLCONV
RET
;-----------------------------------------------
CONVA:
MOVA,HH
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVBUF,A
MOVA,B
MOVCA,#A+DPTR
MOVBUF+1,A
MOVA,MM
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVBUF+2,A
MOVA,B
MOVCA,#A+DPTR
MOVBUF+3,A
RET
;-----------------------------------------------
CONVB:
MOVA,HHS
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVBUF,A
MOVA,B
MOVCA,#A+DPTR
MOVBUF+1,A
MOVA,MMS
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVBUF+2,A
MOVA,B
MOVCA,#A+DPTR
MOVBUF+3,A
RET
;-----------------------------------------------
SET_ATIME:
;设置定时时间
CALLCONVA
CALLSCAN1
JBK1,V1
JNBK1,$
CALLSET_BTIME
V1:
JBK2,V2
JNBK2,$
N0:
CALLSCAN1
JBK1,N1
INCHH
MOVA,HH
CJNEA,#24,N11
MOVHH,#0
N11:
CALLCONVA
CALLSCANS
JMPN0
N1:
JBK2,N0
JNBK2,$
N2:
CALLSCAN1
JBK1,N3
INCMM
MOVA,MM
CJNEA,#60,N21
MOVMM,#0
N21:
CALLCONVA
CALLSCANS
JMPN2
N3:
JBK2,N2
JNBK2,$
;-----------------------------------------------
CALLCONVB
N4:
CALLSCAN1
JBK1,N5
INCHHS
MOVA,HHS
CJNEA,#24,N51
MOVHHS,#0
N51:
CALLCONVB
CALLSCANS
JMPN4
N5:
JBK2,N4
JNBK2,$
N6:
CALLSCAN1
JBK1,N7
INCMMS
MOVA,MMS
CJNEA,#60,N61
MOVMMS,#0
N61:
CALLCONVB
CALLSCANS
JMPN6
N7:
JBK2,N6
JNBK2,$
CALLCONV
RET
;-----------------------------------------------
SET_BTIME:
JBK1,B1
JNBK1,$
CPLALB
JMPLOOP
B1:
JBK2,B2
JNBK2,$
JMPLOOP
B2:
JMPSET_BTIME
;-----------------------------------------------
TIME_PRO:
MOVA,SEC
MOVB,SEC0
CJNEA,B,TI1
JMPTI2
TI1:
CALLCONV
MOVSEC0,SEC
TI2:
JBALB,TI3
JBALB,T14
RET
TI3:
MOVA,HOUR
MOVB,HH
CJNEA,B,BK
MOVA,MIN
MOVB,MM
CJNEA,B,BK
CALLTIME_OUT
BK:
RET
;-----------------------------------------------
TI4:
MOVA,HOUR
MOVB,HHS
CJNEA,B,BK
MOVA,MIN
MOVB,MMS
CJNEA,B,BK1
CALLTIME_OUT
BK1:
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 倒数 定时器 课程设计 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)