基于51单片机的智能温控风扇(程序+仿真+原理图)

2023-05-16

目录

  • 基于51单片机的智能温控风扇
    • 1、主要功能
    • 2、实验结果
    • 3、仿真工程
    • 4、原理图
    • 5、程序源码
    • 6、资源获取

基于51单片机的智能温控风扇

1、主要功能

基于51单片机的智能温控风扇,通过DS180温度传感器采集温度,并通过数码管显示温度,当温度高于20°时,开启风扇降温,当温度低于20°时风扇关闭。

2、实验结果

基于51单片机的智能温控风扇

3、仿真工程

方案验证仿真软件使用的是Proteus仿真文件,Proteus软件版本为8.8;如需下载软件,可以在公众号后台回复:Proteus
在这里插入图片描述

4、原理图

在这里插入图片描述在这里插入图片描述

5、程序源码

在这里插入图片描述

/**
  ************************************* Copyright ****************************** 
  File name: // 文件名
  Author:Kevin
  Version: //1.0
  Description: // 温控风扇,高于20度风扇开启,低于20度风扇关闭。
  Others: // 其它内容的说明
  Log: // 公众号:Kevin的学习站
  ******************************************************************************
 */

#include<reg51.h>
#include<intrins.h>			 //包含头文件
#define uchar unsigned char
#define uint unsigned int		 //宏定义

sbit dj=P1^0;//电机控制端接口
sbit DQ=P1^6;//温度传感器接口
//按键接口/
sbit key1=P3^5;//设置温度
sbit key2=P3^6;//温度加
sbit key3=P3^7;//温度减
//
sbit w1=P2^4;
sbit w2=P2^5;
sbit w3=P2^6;
sbit w4=P2^7;			  //数码管的四个位
/共阴数码管段选//
uchar table[22]=
{0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71,
0x40,0x38,0x76,0x00,0xff,0x37};//'-',L,H,灭,全亮,n	 16-21
uint wen_du;						//温度变量  
uint shang,xia; //对比温度暂存变量
uchar dang;//档位显示
uchar flag;
uchar d1,d2,d3;//显示数据暂存变量
void delay(uint ms)		//延时函数,大约延时25us
{
	uchar x;
	for(ms;ms>0;ms--)
		for(x=10;x>0;x--);
}
/***********ds18b20延迟子函数(晶振12MHz )*******/ 
void delay_18B20(uint i)
{
	while(i--);
}
/**********ds18b20初始化函数**********************/
void Init_DS18B20() 
{
	 uchar x=0;
	 DQ=1;          //DQ复位
	 delay_18B20(8);  //稍做延时
	 DQ=0;          //单片机将DQ拉低
	 delay_18B20(80); //精确延时 大于 480us
	 DQ=1;          //拉高总线
	 delay_18B20(14);
	 x=DQ;            //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
	 delay_18B20(20);
}
/***********ds18b20读一个字节**************/  
uchar ReadOneChar()
{
	uchar i=0;
	uchar dat=0;
	for (i=8;i>0;i--)
	 {
		  DQ=0; // 给脉冲信号
		  dat>>=1;
		  DQ=1; // 给脉冲信号
		  if(DQ)
		  dat|=0x80;
		  delay_18B20(4);
	 }
 	return(dat);
}
/*************ds18b20写一个字节****************/  
void WriteOneChar(uchar dat)
{
 	uchar i=0;
 	for (i=8;i>0;i--)
 	{
  		DQ=0;
 		DQ=dat&0x01;
    	delay_18B20(5);
 		DQ=1;
    	dat>>=1;
	}
}
/**************读取ds18b20当前温度************/
void ReadTemperature()
{
	uchar a=0;
	uchar b=0;
	uchar t=0;
	Init_DS18B20();
	WriteOneChar(0xCC);    	// 跳过读序号列号的操作
	WriteOneChar(0x44); 	// 启动温度转换
	delay_18B20(100);       // this message is wery important
	Init_DS18B20();
	WriteOneChar(0xCC); 	//跳过读序号列号的操作
	WriteOneChar(0xBE); 	//读取温度寄存器等(共可读9个寄存器) 前两个就是温度
	delay_18B20(100);
	a=ReadOneChar();    	//读取温度值低位
	b=ReadOneChar();   		//读取温度值高位
	wen_du=((b*256+a)>>4);    //当前采集温度值除16得实际温度值
}
void display()//显示温度
{
	w1=0;P0=table[d1];delay(10); //第1位
	P0=0x00;w1=1;delay(1);
	 
	w2=0;P0=table[16];delay(10);//第2位
	P0=0x00;w2=1;delay(1);

	w3=0;P0=table[d2]; delay(10);//第3位
	P0=0x00;w3=1;delay(1);

	w4=0;P0=table[d3];delay(10);//第4位
	P0=0x00;w4=1;delay(1);
}
void zi_keyscan()//自动模式按键扫描函数
{
	if(key1==0)							  //设置键按下
	{
		delay(30);						  //延时去抖
		if(key1==0)flag=1;				  //再次判断按键,按下的话进入设置状态
		while(key1==0);//松手检测		  //按键释放
	}
	while(flag==1)						  //进入设置上限状态
	{
		d1=18;d2=shang/10;d3=shang%10;	  //显示字母H 和上限温度值
		display();						  //调用显示函数
		if(key1==0)						  //判断设置键是否按下
		{
			delay(30);					  //延时去抖
			if(key1==0)flag=2;			  //按键按下,进入设置下限模式
			while(key1==0);//松手检测
		}
		if(key2==0)						  //加键按下
		{
			delay(30);					  //延时去抖
			if(key2==0)					  //加键按下
			{
				shang+=5;				  //上限加5
				if(shang>=100)shang=100;  //上限最大加到100
			}while(key2==0);//松手检测
		}
		if(key3==0)						  //减键按下
		{
			delay(30);					  //延时去抖
			if(key3==0)					  //减键按下
			{
				shang-=1;				  //上限减1
				if(shang<=10)shang=10;	  //上限最小减到10
			}while(key3==0);//松手检测
		}		
	}
	while(flag==2)						  //设置下限
	{
		d1=17;d2=xia/10;d3=xia%10;		  //显示字母L 显示下限温度值
		display();						  //以下注释同上
		if(key1==0)
		{
			delay(30);
			if(key1==0)flag=0;
			while(key1==0);//松手检测
		}
		if(key2==0)
		{
			delay(30);
			if(key2==0)
			{
				xia+=5;
				if(xia>=95)xia=95;	
			}while(key2==0);//松手检测
		}
		if(key3==0)
		{
			delay(30);
			if(key3==0)
			{
				xia-=1;
				if(xia<=0)xia=0;	
			}while(key3==0);//松手检测
		}		
	}
}
void zi_dong()//自动温控模式
{
	uchar i;
	d1=dang;d2=wen_du/10;d3=wen_du%10;		//显示档位,显示当前温度值
	zi_keyscan();//按键扫描函数
	display();	 //调用显示函数
	if(wen_du<xia){dj=0;dang=0;}//低于下限  档位为0 电机停止
	if((wen_du>=xia)&&(wen_du<=shang))//温度大于下限,小于上限  1挡
	{
		dang=1;											//档位置1
		for(i=0;i<3;i++){dj=0;display();zi_keyscan();}	//PWM通过延时得到
		for(i=0;i<6;i++){dj=1;display();zi_keyscan();}		
	}
	if(wen_du>shang){dj=1;dang=2;}//高温全速
}
void main()		  //主函数
{
	uchar j;
	dj=0;		  //电机开
	shang=30;
	xia=20;		  //初始上下限值
	for(j=0;j<80;j++)	  //先读取温度值,防止开机显示85
	ReadTemperature();
	while(1)			  //进入while循环
	{	
		ReadTemperature();	//读取温度值
		for(j=0;j<100;j++)zi_dong();//自动温控模式
	}
}

6、资源获取

在这里插入图片描述

项目的仿真和程序工程已经放在下面公众号里面,可以关注公众号:Kevin的学习站,输入关键字:“温控风扇”,就可以获取啦!创作不易,但您的点赞、关注、收藏就是对我最大的鼓励!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于51单片机的智能温控风扇(程序+仿真+原理图) 的相关文章

  • WinDbg 的入门经历

    WinDbg 的入门经历 WinDbg 是一款非常好用的调试工具 xff0c 针对于在win上的程序都有很好的调试效果 xff0c 相信玩逆向工程 Net 开发的同学都很熟悉 起因 在调试UCOS操作系统在windows上的仿真问题遇到的多
  • 目标检测网络中的 bottom-up 和 top-down理解

    看目标检测网络方面的论文时 xff0c 出现了一组对比词汇 xff1a bottom up和top down xff0c 查了一些资料 xff0c 结合个人理解 xff0c 得到的看法是 xff1a top down 顾名思义是自上而下进行
  • 2021.08.26学习内容 Win10+GeForce GTX1650安装NVIDIA显卡驱动及CUDA11.4+cuDNN8.2

    之前主要使用Ubuntu系统 xff0c 但是个人笔记本更多使用windows 为了方便跑一些pytorch的小代码 xff0c 所以想在windows配置一下相关环境 xff0c 达到调用GPU运算的目的 记录也是为了自己以后有安装需求少
  • vscode调试webpack-dev-server项目

    先上结果 vscode下载debugger for chrome 插件 创建launch json 添加的时候选择Chrome Launch会自动生成chrome调试模板 xff0c 主要是要加上 34 preLaunchTask 34 3
  • OpenNetworkLinux:i2c-gpio.c源码学习笔记

    OpenNetworkLinux xff1a i2c gpio c源码学习笔记 i2c gpio的init和exit i2c驱动需要首先在平台驱动上进行注册 xff0c 方可提供自身的总线供适配器进行注册 xff0c 注册流程类似于一个内核
  • 每天一个Lodash源码解析

    每天一个Lodash源码解析 chunk 方法介绍自我实现源码分析代码对比知识点补充浮点数转化为浮点数数组创建方法区别js中切割数组方法 slice 方法介绍自我实现源码分析代码对比知识点补充 96 96 gt gt gt 96 96 移位
  • conda的常用操作

    1 查看conda版本 2 更改安装第三方库的源 将国外的源改为清华镜像源 cmd窗口依次输入 xff1a conda config add channels https mirrors tuna tsinghua edu cn anaco
  • 云技术

    什么是 云 与云技术 xff1f 云技术是在分布式计算技术 网格计算基数基础上发展起来的一种计算技术 云技术基于资源虚拟化的方式 xff0c 为用户提供方便快捷的服务 xff0c 可以实现计算与存储的分布式与并行处理 云技术为其他信息技术
  • 什么是上转型对象及其基本特征

    5 12 什么是上转型对象及其基本特征 xff1f 上转型对象 子类对象赋值给父类变量 例如 xff1a package com wangxing test1 父类 public class Person public void testP
  • 【树莓派入门系列】4 树莓派安装测试torch与torchvision

    树莓派运行YOLOV5项目 安装测试torch amp torchvision 项目目录 点击跳转 0 首页 1 前期准备工作 2 配置树莓派系统 3 安装测试opencv 4 安装测试torch amp torchvision 5 测试y
  • javascript中in和includes的区别

    in的用法 遍历对象 span class token keyword let span names span class token operator 61 span span class token punctuation span n
  • centos安装java环境

    方式一 xff1a 安装java环境 1 先查看本地是否自带java环境 xff1a yum list installed grep java 2 卸载自带的java xff08 输入su xff0c 输入root超级管理员的密码 xff0
  • 计算机网络(五) 网络层(中)

    网络层 xff08 中 xff09 3 划分子网和构造超网3 1划分子网3 2使用子网时分组的转发3 3无分类编址CIDR xff08 构造超网 xff09 4 网际控制报文协议 xff08 ICMP xff09 4 1 ICMP报文的种类
  • 【软件工程学习】软件工程概论

    一 软件工程基础 软件是什么 xff1f xff08 1 xff09 软件独立于硬件 早期软件是作为计算机硬件的零件来开发的 xff0c 40年代中后期和50年代早期时 xff0c 为了利用计算机硬件进行研究 xff0c 使用针对专门的硬件
  • Hadoop (四) ——MapReduce 的原理+实现

    MapReduce简介 MapReduce是一种编程模型 xff0c 用于大规模数据集的并行运算 概念 34 Map xff08 映射 xff09 和 34 Reduce xff08 归约 xff09 xff0c 是它们的主要思想 xff0
  • 51单片机oled12864显示时间日期温度

    思路 xff1a 电源接入 第一行显示时间 第二行显示日期 xff0c 屏幕下面左边显示星期 xff0c 右边显示温度 xff0c 当k1按键第一次按下进入设置页面 xff0c 在设置页面 xff0c k1按键为确定 k2按键为循环选择 k
  • python post请求报错:{“error“:“invalid_request“,“error_description“:“Missing grant type“}

    request post请求报错信息 xff1a error invalid request error description Missing grant type 修改为 xff1a 把headers中的 Content Type 改为
  • Ubuntu下teamviewer的安装及使用

    1 到官网下载对应的安装包 xff0c 官网下载网址 xff1a https www teamviewer cn cn download linux coupon 61 CMP SEM CN 20 amp utm source 61 bai
  • 海南大学考研人,你真的马上就要上岸了

    临考前 xff0c 很多注意事项大家要提前了解 最近很多同学问到试卷拆封的问题 xff0c 今天 我们海大学长学姐们 就给大家详细地说一下考研试卷拆封的整个过程 考研并不是传统的发卷子 xff0c 而是 发信封 自己开封 xff0c 答题
  • (windows+xrdp+ubuntu16.04)远程服务器出错:“password failed error - problem connecting“

    这个问题貌似是2019年1月10日xrdp进行了系统自动更新后导致的 xff0c 有两个解决办法 xff1a 方法1 xff1a 对xrdp进行降级重新安装sudo apt get install xrdp 61 0 6 1 2 方法2 x

随机推荐

  • C# SharpGL-Material材质

    在上一节C SharpGL Light光源讲了我们身边的几个实际场景与OpenGL一些参数对应关系 xff0c 其中讲到了反射光的颜色 xff1a 4 反射的光颜色 xff1a 我们之所以能够看到不发光的物体 xff0c 是因为这些不发光的
  • 海南大学考研经验分享之(考研数学)

    提问 xff1a 2022考研数学会不会是史上最难的一年 答 xff1a 考研就是考数学 这句话对于考试科目中有数学的同学们来说 xff0c 是有一定道理的 每一年都是史上最难 xff0c 不管是不是史上最难的 xff0c 只要认真备考 x
  • 23年海南大学835上岸考研资料(历年真题)及笔记(耗时1年)

    23年 xff0c 海南大学835软件工程 上岸必备资料 xff08 历年真题 xff09 及笔记 xff08 耗时一年 xff09 xff01 首先挂一下22年考试qun图 xff0c qun里给大家每日分享考研英语和数学 xff0c 专
  • 海南大学信号与系统838考研经验(3)

    4 问 xff1a 信号与系统838复习参考书目是什么 xff1f 海大官网是没有明确的参考书籍 xff0c 往届的学长和学姐们都用吴大正 xff0c 手里有第4版的也可以 xff0c 现在是新版第5版 xff0c 当然更好一些 其次是郑君
  • 成都信息工程大学809考研【软件工程】资料笔记真题~

    软件工程考研学长学姐们考研时自己总结的笔记题库 xff0c 不断完善 xff0c 笔记资料齐全 xff0c 取其精华去其糟粕 xff0c 直接只一套到手即可 xff01 包括考前给大家编写的三套模拟押题卷 xff0c 欢迎对比 xff01
  • 【24考研数学找研友】

    24数学考研 听说今年数学考研好难呀 xff0c 有没有同学一起考研一起复习的 大家一起看图交流一下
  • 【24北京交通大学901软件工程考研】

    有没有考北京交通大学901软工的同学 xff0c 一起组个队呀 xff0c 相互监督 xff5e 每日打卡学习
  • 【2024海南大学835软件工程考研笔记】

  • python中的装饰器(基础装饰器)

    文章目录 一 前置知识 高阶函数 xff0c 闭包1 高阶函数2 闭包 二 函数装饰器1 什么是装饰器 xff08 原理 xff09 xff1f 2 装饰器的实现3 何时执行装饰器4 wraps方法 三 类装饰器 一 前置知识 高阶函数 x
  • python中的装饰器二(带参数的装饰器)

    文章目录 前言 一 被装饰函数带参数二 被装饰函数有返回值三 装饰器带参数四 多个装饰器 前言 看大佬们写的代码看的我是眼花缭乱 xff0c 不知所云啊 真是感叹 xff0c 自己还看都看不懂 xff0c 人家就能写出来了 xff0c 人与
  • STlink、Jlink驱动一直安装失败的解决办法

    STlink Jlink驱动一直安装失败的解决办法 STlink驱动安装失败问题详情 Jlink驱动安装的问题也类似 xff0c 总是有一项安装失败 xff01 xff01 xff01 在经过各种尝试完毕之后 xff0c 怀疑是系统的问题
  • 数据可视化--实验四:地理数据可视化

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 文章目录 概要实验过程Pyecharts实验结果 概要 学院 xff1a 计算机科学与技术学院实验日期 xff1a 2020 10
  • 课设-基于51单片机的智能小车(循迹+避障+APP控制)

    51单片机课设 智能小车 一 课设任务二 硬件设计及相关传感器模块1 车模2 51单片机3 红外循迹模块4 电机及驱动5 蓝牙模块6 硬件搭建 三 程序代码1 main c文件2 motor c文件 四 我的大学 造车 史 注 xff1a
  • 课设-基于51单片机+超声波模块的避障小车(源码+原理图+Protel仿真)

    基于51单片机 43 超声波模块的避障小车 xff08 源码 43 原理图 43 Protel仿真 xff09 一 功能二 模块2 1 电机驱动模块2 2 超声波模块 三 程序代码四 PCB原理图 一 功能 设计一辆利用超声波传感器来实现避
  • 路径规划(一):使用Matlab快速绘制栅格地图

    目录 一 Matlab快速绘制栅格地图1 几种常用的地图形式 xff1a 1 1 尺度地图 xff1a 1 2 拓扑地图 xff1a 1 3 语义地图 xff1a 2 栅格地图用于路径规划的优势 xff1a 3 matlab绘制栅格地图的核
  • 2、无人驾驶--路径规划算法:Dijkstra

    目录 2 Dijkstra2 1 算法简介2 2 算法思路具体流程 xff1a 2 3 算法具体实现2 3 1 程序详解 2 Dijkstra 声明 xff1a 本文是学习古月居 基于栅格地图的机器人路径规划算法指南 黎万洪 后写的笔记 x
  • 毕设--基于51单片机的温度报警器设计

    目录 1 简介2 设计要求与方案论证2 1 设计要求2 2 系统基本方案选择和论证2 2 1 单片机芯片的选择方案和论证2 2 2 温度传感器设计方案论证 2 3 电路设计最终方案决定 3 硬件设计介绍3 1 STC89C51介绍3 1 1
  • 基于51单片机的篮球比赛计时器

    目录 基于51单片机的篮球比赛计时器1 PCB原理图2 仿真图3 毕设要求 xff1a 4 总体方案设计5 程序源码6 资源下载 基于51单片机的篮球比赛计时器 注 xff1a 本毕设资源可在微信公众号 xff1a Kevin的学习站 中获
  • 毕设--基于51单片机数字电压表的设计

    目录 基于51单片机数字电压表的设计1 PCB原理图2 Proteus 仿真图3 设计目标3 1 基本功能3 2 主要技术参数 4 总设计框图5 硬件设计分析5 1 电源的设计5 2 单片机最小系统5 3 模数转换 6 软件设计的组成7 元
  • 基于51单片机的智能温控风扇(程序+仿真+原理图)

    目录 基于51单片机的智能温控风扇1 主要功能2 实验结果3 仿真工程4 原理图5 程序源码6 资源获取 基于51单片机的智能温控风扇 1 主要功能 基于51单片机的智能温控风扇 xff0c 通过DS180温度传感器采集温度 xff0c 并