做它的目的是提示厕所内有人 不用走近后才被里面的人提示 其他人在远处看到装在外面的灯亮了就知道里面有人 红外接收头遮挡后重新接收到38khz信号会有一个低脉冲 通过判断两个接收头遮挡的先后顺序判断进出 按键可以切换进出判断
缺点是发射的38khz信号里不含有加密数据 接收端没有解码判断 容易受到太阳光干扰造成进出不亮不灭
进去时蜂鸣器响一声 出来响两声 如果受到太阳光干扰就沿着进或出的方向靠近接收端挥手就能开灯或关灯 灯开启后延时七八分钟自动熄灭
制作出来的实物图如下:
电路原理图如下:
单片机源程序如下:
发射38khz方波
;12MHZ
ORG 0000H
SJMP STA
ORG 000BH
LJMP T0ISR
ORG 0030H
STA:
; MOV TMOD,#02H ;AT89C2051 12MHZ
; MOV TL0,#0B2H;#064H ;
; MOV TH0,#0FFH;#0FFH ;
; SETB TR0
; SETB ET0
; SETB EA
; SJMP $
MOV TMOD,#00010010B ;STC15F104W 12MHZ
MOV TH0,#0F4H
MOV TL0,#0F4H
SETB ET1
SETB ET0
SETB EA
SETB TR1
SETB TR0
SJMP $
T0ISR:
CPL P3.4
CPL P3.5
RETI
END
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
接收
;12MHZ
SETB P3.3;IN1 红外接收头输入端
SETB P3.4;IN2 红外接收头输入端
SETB P3.5;LED 遮挡、延时指示
CLR P3.1;OUT 输出控制电器
SETB P3.0;蜂鸣器
SETB P3.2;切换 A<=>B
X EQU 04H;切换标志位
SETB X
LCALL DELAY;
LCALL DELAY;
CLR P3.0;蜂鸣器
MOV 60H,#00
MOV 61H,#00
MOV 62H,#00
MOV 63H,#00 ;自动熄灭延时
MAIN1: MOV 66H,#00
MOV 67H,#00
MOV 68H,#00
SETB P3.5;LED 遮挡、延时指示
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
LCALL DELAY;
MAIN0: JNB P3.4,KK111; IN1; 关灯
JNB P3.3,KK222; IN2 开灯
JNB P3.2,QIEHUAN;切换 A<=>B
DJNZ 62H,MAIN0
DJNZ 61H,MAIN0
DJNZ 60H,MAIN0
DJNZ 63H,MAI ;自动熄灭延时
CLR P3.1; OUT 输出关闭
MAIN: JNB P3.4,KK111; IN1; 关灯
JNB P3.3,KK222; IN2 开灯
JNB P3.2,QIEHUAN;切换 A<=>B
LJMP MAIN;
MAI: MOV 60H,#240
MOV 61H,#240
MOV 62H,#240
LJMP MAIN0;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
QIEHUAN:LCALL DELAY;
LCALL DELAY;
JNB P3.2,MAIN;
CPL X;
SETB P3.0;蜂鸣器
JNB P3.2,$
LCALL DELAY;
CLR P3.0;蜂鸣器
LJMP MAIN1
////////////////////////////////////
KK111: MOV 66H,#50
MOV 67H,#240
MOV 68H,#240
CLR P3.5;LED 遮挡、延时指示
RLA: JB P3.3,RLL; IN2
JNB X,QH1;切换 A<=>B
QH2: CLR P3.1; OUT 输出关闭
SETB P3.0;蜂鸣器
LCALL DELAY;
CLR P3.0;蜂鸣器
LCALL DELAY;
SETB P3.0;蜂鸣器
LCALL DELAY;
CLR P3.0;蜂鸣器
LJMP MAIN1;
////////////////////////////////////////////
RLL: DJNZ 68H,RLA
DJNZ 67H,RLA
DJNZ 66H,RLA
LJMP MAIN1;
////////////////////////////////////
KK222: MOV 66H,#50
MOV 67H,#240
MOV 68H,#240
CLR P3.5; LED 遮挡、延时指示
RRA: JB P3.4,RRR; IN1
JNB X,QH2;切换 A<=>B
QH1: SETB P3.1; OUT 输出开启
SETB P3.0;蜂鸣器
LCALL DELAY;
CLR P3.0;蜂鸣器
MOV 60H,#240
MOV 61H,#240
MOV 62H,#240
MOV 63H,#20
LJMP MAIN1;
///////////////////////////////////////
RRR: DJNZ 68H,RRA
DJNZ 67H,RRA
DJNZ 66H,RRA
LJMP MAIN1;
////////////////////////////////////////
;秒延时子程序
DELAY: MOV R4,#5;10
MOV R5,#248;248
MOV R6,#248;
D10: DJNZ R6,D10;
DJNZ R5,D10;$
DJNZ R4,D10
RET
END;
|