可远程遥控的倒计时定时器

    电子制作实验室网站推出的单片机试验板还有比较灵活的可变型,比如购买套件的网友可以根据实际需要安装上需要的电子元件,只要稍作改动就能实现其他功能。
    应一位网友的要求,要站长设计并制作一个能够遥控的倒计时定时器,用来控制水泵。站长经过考虑,决定采用800米遥控距离的遥控组件再配合单片机试验板上的一些硬件,比较快速地制作完成了。

;电子制作实验室http://paintitblacklondon.com
;可设定时间的遥控倒计时定时器,可选择15/30/45分钟倒计时
;倒计时时间由800米遥控器来控制

a_bit equ 20h ;数码管个位数存放内存位置
b_bit equ 21h ;数码管十位数存放内存位置
temp equ 22h ;计数器数值存放内存位置

;开机初始化
MOV P0,#0FFH;使显示时间数码管熄灭
MOV P1,#0FFH;将P1口设定为输入口
CLR P1.7;点亮LED

;等待键盘输入
START:JNB P1.5,$;循环判断遥控接收头第17脚是否有高电平信号输出?
ACALL DELAY10;延时10毫秒触点消抖
JNB P1.5,START;如果是干扰就返回
CLR P2.5;蜂鸣器鸣叫一声,表示遥控指令接收到
ACALL DELAY
SETB P2.5;蜂鸣器停止
;读遥控接收头四路数据,获得倒计时时间的子程序
K1:JNB P1.0,K2;判断数据A是否有信号输出?
ACALL DELAY10;延时10毫秒触点消抖
JNB P1.0,K1;如果是干扰就返回
MOV TEMP,#15;设定倒计时时间为15分钟
K2:JNB P1.1,K3;判断数据B是否有信号输出?
ACALL DELAY10;延时10毫秒触点消抖
JNB P1.1,K2;如果是干扰就返回
MOV TEMP,#30;设定倒计时时间为30分钟
K3:JNB P1.2,DISPLAY;判断数据C是否有信号输出?
ACALL DELAY10;延时10毫秒触点消抖
JNB P1.2,K3;如果是干扰就返回
MOV TEMP,#45;设定倒计时时间为45分钟
K4:JNB P1.3,DISPLAY;判断数据C是否有信号输出?
ACALL DELAY10;延时10毫秒触点消抖
JNB P1.3,K4;如果是干扰就返回
AJMP OVER

;数码管显示定时时间的程序
display:CLR P2.4;使继电器1释放,开始定时(开机时继电器处于吸合状态)
CLR P2.3;使继电器2释放,开始定时(开机时继电器处于吸合状态)
MOV R2,#120
AB:MOV R3,#250
TIME1:mov a,temp ;将temp中的十六进制数转换成10进制
mov b,#10 ;10进制/10=10进制
div ab
mov b_bit,a ;十位在a
mov a_bit,b ;个位在b

mov dptr,#numtab ;指定查表启始地址
mov r0,#4
dpl1: mov r1,#250 ;
dplop: mov a,a_bit ;取个位数
MOVC A,@A+DPTR ;查个位数的7段代码
mov p0,a ;送出个位的7段代码
clr p2.7 ;开个位显示
ACALL DELY1;显示1毫秒
setb p2.7;关闭个位显示,防止鬼影
mov a,b_bit ;取十位数
MOVC A,@A+DPTR ;查十位数的7段代码
mov p0,a ;送出十位的7段代码
clr p2.6 ;开十位显示
ACALL DELY1;显示1毫秒
setb p2.6;关闭十位显示,防止鬼影

;插入一段判断定时过程中是否有遥控信号输入的程序段
G1:JNB P1.5,M33;循环判断遥控接收头的第17脚是否有高电平信号输出?
ACALL DELAY10;延时10毫秒触点消抖
JNB P1.5,G1;如果是干扰就返回
CLR P2.5;蜂鸣器鸣叫一声,表示遥控接收收到
ACALL DELAY
SETB P2.5
;读遥控接收头四路数据,获得倒计时时间的子程序
K11:JNB P1.0,K21;判断遥控接收头的第10脚是否有信号输出?
ACALL DELAY10;延时10毫秒触点消抖
JNB P1.0,K11;如果是干扰就返回
MOV TEMP,#15;设定倒计时时间为15分钟
K21:JNB P1.1,K31;判断遥控接收头的第11脚是否有信号输出?
ACALL DELAY10;延时10毫秒触点消抖
JNB P1.1,K21;如果是干扰就返回
MOV TEMP,#30;设定倒计时时间为30分钟
K31:JNB P1.2,K41;判断遥控接收头的第12脚是否有信号输出?
ACALL DELAY10;延时10毫秒触点消抖
JNB P1.2,K31;如果是干扰就返回
MOV TEMP,#45;设定倒计时时间为45分钟
K41:JNB P1.3,M33;判断遥控接收头的第13脚是否有信号输出?
ACALL DELAY10;延时10毫秒触点消抖
JNB P1.3,K41;如果是干扰就返回
AJMP OVER

M33:djnz r3,TIME1;2毫秒循环执行250次,时间约0.5秒
CPL P1.7;使LED闪光,表示在定时过程中
djnz r2,AB ;循环执行120次,时间为1分钟

DEC TEMP;满一分钟对定时时间减1
MOV A,TEMP
JNZ DISPLAY;判断TEMP的数值是否为0?不为0循环

;结束定时,对端口恢复开机初始化
OVER:MOV P0,#0FFH
MOV TEMP,#0
MOV P2,#0FFH
SETB P1.7;使LED不再闪光,常亮
JB P1.5,$;等待遥控信号消失
AJMP START;退到开机初始化状态

;1毫秒延时子程序
DELY1:MOV R4,#2
D1:MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
RET

;10毫秒延时子程序
DELAY10:MOV R4,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET

DELAY:MOV R4,#02H;延时子程序,12M晶振延时约1秒
L3: MOV R2 ,#0FAH
L1: MOV R3 ,#0FAH
L2: DJNZ R3 ,L2
DJNZ R2 ,L1
DJNZ R4 ,L3
RET

;实验板上的两位一体的数码管0~9各数字的显示代码
numtab: DB 30H,0FCH,0A2H,0A4H,06CH,25H,21H,0BCH,20H,24H

end

这是上面程序汇编以后获得的编程器烧写文件:ykds.hex

    下载烧写文件的方法:将鼠标移到烧写文件的超级键连处,点击鼠标的右键,选择“目标另存为(A)...”保存文件类型中不要选择“文本文件”,应该选择“所有文件”,这样就能获得*.hex文件了。

    备注:如果不需要AT89C51实验开发板中的12伏电源变压器,价格可以降低10元

点击查看详细品种!

银行帐号及邮购需知    立即进入订货系统!    查看全部邮购清单

邮局汇款地址:邮编226200 江苏省启东市江海中路511号水晶苑 A-1 谢刚 收

电话/传真: 小灵通: 联系人:谢刚

电子信箱:

电子制作实验室网站主页 http:www.xie-gang.com