您当前的位置:五五电子网电子知识电子制作自动控制-单片机倒计时课程设计 正文
倒计时课程设计

倒计时课程设计

点击数:7357 次   录入时间:03-04 11:59:12   整理:http://www.55dianzi.com   自动控制-单片机
倒数定时器课程设计

功能说明:

倒数定时器基本功能如下:
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.按键控制
  
程序如下:
LO EQU 24;定时器0计时中断低字节
HI EQU 99;定时器0计时中断高字节
CO EQU 200
;-----------------------------------------------
RY1 EQU P3.7
ALB EQU 20H.0;定时设置标志
BUF EQU 30H;30H~33H连续4字节存放七段显示器数据
HOUR EQU 34H;存放小时变量
MIN EQU 35H;存放分钟变量
SEC EQU 36H;存放秒钟变量
DEDA EQU 37H;5ms计数值
SECO EQU 38H;存放旧的秒数
HH EQU 39H;定时1小时变量
MM EQU 3AH;定时1分钟变量
HHS EQU 3BH;定时2小时变量
MMS EQU 3CH;定时2分钟变量
;-----------------------------------------------
K1 EQU P3.4;按键1引脚定义
K2 EQU P3.5;按键2引脚定义
RY1 EQU p3.7;继电器控制引脚

ORG 0000H;程序代码由地址0开始执行
JMP BEGIN
ORG 0BH;定时器0中断地址设置
JMP T0_INT
;-----------------------------------------------
BEGIN:
CLR RY1
MOV HH,#8;内定时间为12点
MOV MM,#0
MOV HHS,#22
MOV MMS,#0

CALL INIT;初始化变量
CALL INIT_TIMER;初始化定时器


;-----------------------------------------------
LOOP;无穷循环
CALL TIME_PRO;时间计时处理
CALL SCAN1;扫描显示器
;-----------------------------------------------
JB K1 M1;未按下K1则继续扫描
JNB K1,$
;K1按下-----------------------------------------
CALL SET_TIME;设置目前时间
JMP LOOP
;-----------------------------------------------
M1:JB K2,LOOP; 未按下K2则继续扫描
JNB K2,LOOP
;K2按下----------------------------------------
CALL SET_ATIME;设置定时时间
JMP LOOP
;延时子程序-------------------------------------
DELAY:;总延时R5*10ms
MOV R6,#50
D1:MOV R7,#100
   DJNZ R7,$
   DJNZ R6,D1
   DJNZ R5,DELAY
   RET
;短暂延时子程序---------------------------------
DELAY1:;控制七段显示器延迟时间
MOV R6,#1
D2:MOV R7,#100
   DJNZ R7,$
   DJNZ R6,D1
   DJNZ R5,DELAY1
   RET
;七段显示器字型数据-----------------------------
TLBLE:
DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
DB 77H,7CH,58H,5EH,79H
DB 71H
;-----------------------------------------------
SCAN1:
   MOV R0,#BUF;指向显示器显示缓冲起始地址
   MOV R2,#4;循环4次
   MOV ACC,#0FEH;加载扫描输出信号初值
S1:
   PUSH ACC
   MOV A,@R0;取出七段显示器数据
   MOV P1,ACC;由P1口送出七段显示器数据

   POP ACC
   MOV P3,ACC;由P3口送出扫描输出信号

   MOV R5,#5;延时
   CALL DELAY1

;改变扫描码 EX:XXXX1101
   RL A;累加器左移一位
   INC R0;显示器显示缓冲区地址加1
   DJNZ R2,S1;循环判断是否继续
   RET

;-----------------------------------------------
INIT:;初始化控制变量
MOV DEDA,#0;5ms计数值清0
MOV SECO,#0;旧秒数清0
MOV SEC,#0;秒钟变量清0
MOV MIN,#0;分钟变量清0
MOV HOUR,#12;时钟变量显示12
RET
;-----------------------------------------------
INIT_TIMER:;初始化定时器接口,使用定时器0模式0计时
   MOV TMOD,#00H;设置定时器0工作模式为模式0
   MOV IE,#10000010B;启用定时器0中断产生
   MOV TL0,#LO;加载低字节
   MOV TH0,#HI;加载高字节
   SETB TR0;启用定时器0开始计时
   RET
;-----------------------------------------------
T0_INT:;定时器0计时中断程序每隔5ms中断一次
   PUSH ACC;将累加器放入堆栈
   MOV TL0,#LO;加载低字节
   MOV TH0,#HI;加载高字节
   INC DEDA;5ms计数加1

MOV A,DEDA
CJNE A,#CO,TT1;是否1s到了?
MOV DEDA,#0;计数值清0
INC SEC

MOV A,SEC
CJNE A,#60,TT1;是否1min到了?
MOV SEC,#0;计秒数值清0
INC MIN

MOV A,MIN
CJNE A,#60,TT1;是否1h到了?
MOV MIN,#0;计分数值清0
INC HOUR

MOV A,HOUR
CJNE A,#24,TT1;是否24h到了?
MOV SEC,#0;计秒数值清0
MOV MIN,#0;计分数值清0
MOV HOUR,#0;计时数值清0

TT1:
   POP ACC;将累加器由堆栈取出
   RETI

;转换小时分钟数据-------------------------------
CONV:
   MOV A,HOUR
   MOV B,#10
   DIV AB
   
   MOV DPTR,#TABLE
   MOVC A,@A+DPTR
   MOV BUF,A

   MOV A,B
   MOVC A,#A+DPTR
   MOV BUF+1,A

   MOV A,MIN
   MOV B,#10
   DIV AB
   
   MOV DPTR,#TABLE 
   MOVC A,@A+DPTR
   MOV BUF+2,A

   MOV A,B
   MOVC A,#A+DPTR
   MOV BUF+3,A
   RET
;-----------------------------------------------
SET_TIME:
   CALL CONV
   CALL SCAN1
   JB K1,X1
   JNB K1,$
   JMP LOOK_ATIME
X1:
   JB K2,X2
   JNB K2,$
   CLR TR0;定时器动作暂停
   MOV SEC,#0;秒钟数清0
L0:
   CALL SCAN1;扫描显示器
   JB K1,L1;未按下K1则继续扫描
   INC HOUR
   MOV A,HOUR
   CJNE A,#24,L11
   MOV HOUR,#0
      
L11:
   CALL CONV
   CALL SCANS
   JMP L0

L1:   
   JB K2,L0;未按下K2则继续扫描
   JNB K2,$
L2:
   CALL SCAN1;扫描显示器
   JB K1,L3;未按下K1则继续扫描
   INC MIN
   MOV A,MIN
   CJNE A,#60,L21
   MOV MIN,#0 
L21: 
   CALL CONV
   CALL SCANS

L3:JB K2,L2;未按下K2则继续扫描
   JNB K2,$
   SETB TR0

[1] [2]  下一页


本文关键字:课程  自动控制-单片机电子制作 - 自动控制-单片机

《倒计时课程设计》相关文章>>>