功能:
(1)模式切换按键,绿灯亮代表冷风模式,红灯亮代表热风模式。
(2)当手靠近时,红外传感器感应到手,继电器吸合,同时风扇工作,模拟吹风。
(3)当检测到手离开3秒继电器才停止工作,因为在吹手时会来回晃动,避免重复启动。
(4)为了保护电器和节约资源,每次干手器工作超过5秒就会自己停止工作,之后如果仍有手在附近就会继续工作。
完整版 电路图和程序代码 下载地址
https://pan.baidu.com/s/1BNwMt61ll-onBLyw62iAkg?pwd=8888
部分代码展示
#include <reg52.h>
#include <intrins.h>
#include <string.h>
#include "temp.h"
#include "main.h"
#include "LCD1602.h"
#define uchar unsigned char
#define uint unsigned int
char count,miao_count,miao_tingzhi;//计时变量
uchar flag_led;
#include "wannianli.h"
//键盘处理变量
//****************************************************
//主函数
//****************************************************
void main()
{
Init_LCD1602(); //初始化LCD1602
TH0=0x4c;
TL0=0x00;
TMOD=0x21;
ET0=1;
TR0=0;
EA=1;
while(1)
{
if(key4==0)
{
delay(20);
if(key4==0)
{
flag_led=!flag_led;
while(key4==0);
}
}
if(flag_led)
{
LED_L=1;
LED_R=0;
}
else
{
LED_L=0;
LED_R=1;
}
if(JDQ==0)
{
if(flag_led)
JDQ_J=0;
else
JDQ_J=1;
}
else
JDQ_J=1;
if(keynum==0)
{
if(HY==0)
{
delay(20);
if(HY==0)
{
miao_tingzhi=miao_count;
TR0=1;
JDQ=0;
}
}
else if(HY==1&&JDQ==0)
{
if(miao_count-miao_tingzhi>3)
{
miao_count=0;
JDQ=1;
TR0=0;
count=0;
miao_count=0;
}
}
display();
}
keyscan();
}
}
void Timer0() interrupt 1
{
TH0=0x4c;
TL0=0x00; //50ms
count++;
if(count>=20)
{
miao_count++;
if(miao_count>=15)
{
miao_count=0;
JDQ=1;
TR0=0;
}
count=0;
}
}