首页 > 其他分享 >基于51单片机的温控风扇-数码管显示-风扇人体感应

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

时间:2024-06-13 22:30:33浏览次数:22  
标签:51 value 风扇 单片机 flag key smg 温度

一.硬件方案

系统采用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

标签:51,value,风扇,单片机,flag,key,smg,温度
From: https://blog.csdn.net/eletronicfish/article/details/139665537

相关文章

  • Day18 | 513. 找树左下角的值 | 112.路径总和、113.路径总和ii
    513.找树左下角的值本题递归偏难,反而迭代简单属于模板题,两种方法掌握一下题目链接/文章讲解/视频讲解:https://programmercarl.com/0513.找树左下角的值.html思考层序遍历秒了#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left......
  • 用立创EDA绘制一个使用51单片机P3口进行八位流水灯的控制的PCB板。
    文章目录概要整体架构流程技术名词解释小结概要使用立创EDA绘制一个使用51单片机最小系统,并使用P3口进行八位流水灯的控制的PCB板。整体架构流程整体由四部分构成:51单片机选择STC89C52RC,价格便宜,下图为51单片机的端口图。EA端为高电平(优先读取内部存储)。上拉电......
  • 学习日志-C51-串口通信
    学习日志-C51-串口通信串口控制LED灯亮灭1.常见通信串口比较分类1:单工:只能由甲向乙传输信号,一根传输线。半双工:数据可以在双方传输,但同一时刻只能单方传输,发送数据的同时不能接收数据,一根传输线。全双工:数据可以在双方传输,发送数据的同时也能接收数据,需两根传输线。......
  • AP5101C高压线性LED恒流驱动芯片 6-100V 2A LED灯电源驱动
    产品描述AP5101C是一款高压线性LED恒流芯片,简单、内置功率管,适用于6-100V输入的高精度降压LED恒流驱动芯片。电流2.0A。AP5101C可实现内置MOS做2.0A,外置MOS可做3.0A的。AP5101C内置温度保护功能,温度保护点为130度,温度达到130度时,输出电流慢慢减小,达到保护芯片电......
  • 如何在Labview中添加自定义动态控件(旋转风扇控件)
     前言:    使用labview做了一个自定义的labview控件在Labview中添加自定义动态控件(旋转风扇控件)下面具体介绍步骤:1.打开Labview,新建VI项目,在前面板“文件”->“新建”->“自定义控件”2.接着,转到“新建”->“自定义控件”3.然后,右击添加一个布尔......
  • 基于STM32单片机的无线智能窗户报警系统的设计与实现
    目录前言 一、设计任务 二、系统硬件设计1.元器件选用2.Android功能界面展示三、系统程序流程设计前言为解决传统智能家居在使用过程中缺少的人机交互功能、数据不可见、缺少控制、无法智能化处理事件等问题。因此,本文设计了以STM32单片机为核心的无线智能窗户报警......
  • HX519 防倒流数据线芯片IC
    一般概述    苹果iPhone防倒流数据线芯片,可完美支持iPhone、iPad、iPod等8针闪电接口的数据传输同步功能及充电功能。特点❥集成度高,极少的外围元器件。❥电路简单,价格优势明显。❥稳定性高,兼容性强。❥与市面上普通的芯片相比,可以防止手机电流从数据线逆流❥......
  • C51学习归纳11 --- PWM原理、应用案例
        本节进入到一个更加常用的环节PWM的产生与应用,日常生活中,电机的使用非常普及,如何控制转速?其实就可以应用我的PWM。一、PWM的产生原理    PWM(PulseWidthModulation)即脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需......
  • CSCI-UA.0480-051: Parallel Computing
    CSCI-UA.0480-051:ParallelComputingFinalExam(May 15th,2023)Total:100 pointsProblem 1Supposewehavethe followingtwo DAGs. Each DAG represents a process. That is, DAG 1 is a process and DAG 2 is another process. The two DAG......
  • 一次讲透单片机毕业设计全过程
    毕业设计一般分以下几个过程选题(重中之重如何选题、罗列功能、避免给自己挖坑)写开题报告和任务书(最重要是功能实现介绍)实物设计或仿真设计(电路设计、代码编写)撰写论文(架构如何设计、几部分组成以及阐述什么内容)制作答辩PPT、参加毕设答辩(PPT怎么写,如何通过答辩)恭喜毕业以下......