145 基于单片机的自动红外检测洗手器控制设计【毕设课设】

本设计由STC89C52单片机电路+红外避障传感器模块电路+DS18B20温度传感器电路+继电器控制电路+风扇控制电路+电源电路组成。

1、当温度低于40℃时,继电器1闭合,否则继电器1断开。

2、如果红外避障传感器检测到障碍物,则继电器2闭合5秒后断开,同时风扇启动,10秒后风扇停转。

3、在此期间一旦没有红外,洗手器立马停止。

    资料下载地址

https://pan.baidu.com/s/175sqJJjcBRURj5kNQnf4Cw?pwd=8888

 

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<stdio.h>
#include "18b20.h"
#include "1602.h"
#include "delay.h"		 
	
sbit key1=P2^0;	//引脚定义
sbit key2=P2^1;
sbit key3=P2^2;	  

sbit fan =P1^1;
sbit relay1 =P1^2;
sbit relay2 =P1^3;
sbit hot =P3^2;

unsigned long time20ms=0;	//定时计数

unsigned char ReadTempFlag=0;//定义读时间标志
int temp1;		//温度读取值
float temperature; //实际温度

char dis0[16];//定义显示区域临时存储数组
char dis1[16];			  //温度显示

unsigned int yunTime = 0;   //运行时间
unsigned char runStep = 1; //运行步骤

void Init_Timer0(void);//定时器初始化
void CheckKey(void);

void main (void)
{                 
	Init_Timer0();
	DelayMs(20);          //延时有助于稳定
	  relay2 = 1;    
	  fan = 1;     
	while (1)        //主循环
	{
		
		
		if(hot == 0)
		{
		  if(runStep == 1) //运行步骤
		  {
			relay2 = 0;  //打开继电器5s
			fan = 1;    
		   			
		  }
		  else if(runStep == 2)	//运行步骤
		  {
			relay2 = 1;  //风扇运行10s
			fan = 0;  
		   							
		  }				
		}
		else
		{
		      runStep = 1;
		      yunTime = 50;//运行时间 5s
			  relay2 = 1;    //停止
			  fan = 1;     	
		}

	}
}

void Init_Timer0(void)
{
	TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     
	//TH0=0x00;	      //给定初值
	//TL0=0x00;
	EA=1;            //总中断打开
	ET0=1;           //定时器中断打开
	TR0=1;           //定时器开关打开
}

void Timer0_isr(void) interrupt 1 
{
	TH0=(65536-20000)/256;		  //重新赋值 20ms
	TL0=(65536-20000)%256;
	time20ms++;						   
	if(time20ms%5==0)	//更新显示
	{
		if(yunTime > 0)	yunTime-- ;	//运行时间--	
		if(time20ms%45==0)	 	//读取温度
		{
			ReadTempFlag=1; //读标志位置1	
		}
	}
}


    资料下载地址

https://pan.baidu.com/s/175sqJJjcBRURj5kNQnf4Cw?pwd=8888

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值