基于51单片机的温控风扇-数码管显示-风扇人体感应

一.硬件方案

系统采用51单片机作为控制平台对风扇转速进行控制。可由用户设置高、低温度值,测得温度值在高低温度之间时打开风扇弱风档,当温度升高超过所设定的温度时自动切换到大风档,当温度小于所设定的温度时自动关闭风扇。风扇控制状态随外界温度而定,并通过PWM的方式控制风扇的转速。电路主要由51单片机+最小系统+数码管显示模块+数码管驱动模块+温度采集模块+人体感应模块+风扇模块+按键模块等构成:

二.设计功能

(1)采用DS18B20温度传感器测温,三级管驱动数码管显示温度和风扇的档位,人体感应模块检测是否有人。
(2)共3个按键:1设置、2键加、3键减。按一下设置可以设置上限值,再按下设置下限,均可以按键加减调整;
(3)利用PWM调速,当温度低于下限时,风扇步转动,当温度处于上下限之间时,1档转动(风速50%转速转动),当温度超过上限时,风扇全速转动。
(4)红外人体传感器检测周围是否有人,当周围无人时,风扇停止转动。

三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:
在这里插入图片描述

(2)Protues仿真图如下:
在这里插入图片描述

四.软件设计

主程序源码

/****************主函数***************/
void main()
{
	static uchar value;
	time_init();                    //初始化定时器 
	pwm=1;
	hw = 1;
	while(1)
	{		
		key();					//按键程序
		if(key_can < 10)
		{
			key_with();			//设置温度	
		}
		if(flag_200ms == 1)	    //200ms 处理一次温度程序
		{	   
			flag_200ms = 0;	
			temperature = read_temp()%1000;	//先读出温度的值
			if(menu_1 == 0)
			{	
				smg_i = 3;
				dis_smg[0] = smg_du[temperature % 10];	 //取温度的小数显示
				dis_smg[1] = smg_du[temperature / 10 % 10] & 0xdf; //取温度的个位显示
				dis_smg[2] = smg_du[temperature / 100 % 10] ;	   //取温度的十位显示
			}
			fengshan_kz();        //风扇控制函数
			value ++;
			if(value >= 4)
			{
				value = 0;
				if(miao != 0)
				{
					miao --;    //时间减1
				}
				if(miao == 0)
					flag_en = 0;
			}
			if(hw == 1)  //感应到人
			{
				miao = 30;
				flag_en = 1;
			}
		}

		
	}
}

/*************定时器0中断服务程序***************/
void time0_int() interrupt 1
{	
	static uchar value;			 //定时2ms中断一次
	TH0 = 0xf8;
	TL0 = 0x30;     //2ms
	value++;	  
	display();		//数码管显示函数
	if(value >= 150)
	{
		value = 0;	  
		flag_200ms = 1;
	}
	if(flag_lj_en == 1)	   //按下按键使能
	{
		key_time ++;
		if(key_time >= 250) //500ms
		{
			key_time = 0;
			key_500ms = 1; //500ms
			key_value ++;
			if(key_value > 3)
			{
				key_value = 10;
				flag_lj_3_en = 1; //3次后1.5秒连加大些
			}						
		}
	}
}


资料链接:https://pan.baidu.com/s/1o8zRxoETzARNyNBTpz3vWA?pwd=57gd

最近更新

  1. TCP协议是安全的吗?

    2024-06-15 21:24:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-15 21:24:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-15 21:24:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-15 21:24:01       20 阅读

热门阅读

  1. Android中的KeyEvent详解

    2024-06-15 21:24:01       10 阅读
  2. python把一个整数列表转为字符串

    2024-06-15 21:24:01       6 阅读
  3. .快速了解Django:核心概念解析与实践指南

    2024-06-15 21:24:01       9 阅读
  4. python写一个机器学习的案例

    2024-06-15 21:24:01       8 阅读
  5. 如何清理docker build的缓存

    2024-06-15 21:24:01       9 阅读
  6. 力扣(2024.06.12)

    2024-06-15 21:24:01       8 阅读
  7. #000 game development

    2024-06-15 21:24:01       6 阅读
  8. 如何为微信小程序添加人脸识别和身份验证功能

    2024-06-15 21:24:01       7 阅读
  9. C++day4

    C++day4

    2024-06-15 21:24:01      7 阅读