基于单片机的温控风扇的设计摘要温控风扇在现代社会中的生产以及人们的日常生活中都有广泛的应用,如工业生产中大型机械散热系统中的风扇、现在笔记本电脑上的广泛应用的智能CPU风扇等。
本文设计了基于单片机的温控风扇系统,采用单片机作为控制器,利用温度传感器DS18B20作为温度采集元件,并根据采集到的温度,通过一个达林顿反向驱动器ULN2803驱动风扇电机。
根据检测到的温度与系统设定的温度的比较实现风扇电机的自动启动和停止,并能根温度的变化自动改变风扇电机的转速,同时用LED八段数码管显示检测到的温度与设定的温度。
关键词:单片机、DS18B20、温控、风扇第一章整体方案设计1.1前言在现代社会中,风扇被广泛的应用,发挥着举足轻重的作用,如夏天人们用的散热风扇、工业生产中大型机械中的散热风扇以及现在笔记本电脑上广泛使用的智能CPU风扇等。
而随着温度控制技术的发展,为了降低风扇运转时的噪音以及节省能源等,温控风扇越来越受到重视并被广泛的应用。
在现阶段,温控风扇的设计已经有了一定的成效,可以使风扇根据环境温度的变化进行自动无级调速,当温度升高到一定时能自动启动风扇,当温度降到一定时能自动停止风扇的转动,实现智能控制。
随着单片机在各个领域的广泛应用,许多用单片机作控制的温度控制系统也应运而生,如基于单片机的温控风扇系统。
它使风扇根据环境温度的变化实现自动启停,使风扇转速随着环境温度的变化而变化,实现了风扇的智能控制。
它的设计为现代社会人们的生活以及生产带来了诸多便利,在提高人们的生活质量、生产效率的同时还能节省风扇运转所需的能量。
本文设计了由ATMEL公司的8052系列单片机AT89C52作为控制器,采用DALLAS公司的温度传感器DS18B20作为温度采集元件,并通过一个达林顿反向驱动器ULN2803驱动风扇电机的转动。
同时使系统检测到得环境温度以及系统预设的温度动态的显示在LED数码管上。
根据系统检测到得环境温度与系统预设温度的比较,实现风扇电机的自动启停以及转速的自动调节。
1.2系统整体设计本设计的整体思路是:利用温度传感器DS18B20检测环境温度并直接输出数字温度信号给单片机AT89C52进行处理,在LED数码管上显示当前环境温度值以及预设温度值。
其中预设温度值只能为整数方式,检测到的当前环境温度可精确到小数点后一位。
同时采用PWM脉宽调制方式来改变直流风扇电机的转速。
并通过两个按键改变预设温度值,一个提高预设温度,另一个降低预设温度值。
系统结构框图如下:结论本次设计的系统以单片机为控制核心,以温度传感器DS18B20检测环境温度,实现了根据环境温度变化调节不同的风扇电机转速,在一定范围能能实现转速的连续调节,LED数码管能连续稳定的显示环境温度和设置温度,并能通过两个独立按键调节不同的设置温度,从而改变环境温度与设置温度的差值,进而改变电机转速。
实现了基于单片机的温控风扇的设计。
本系统设计可推广到各种电动机的控制系统中,实现电动机的转速调节。
在生产生活中,本系统可用于简单的日常风扇的智能控制,为生活带来便利;
在工业生产中,可以改变不同的输入信号,实现对不同信号输入控制电机的转速,进而实现生产自动化,如在电力系统中可以根据不同的负荷达到不同的电压信号,再由电压信号调节不同的发电机转速,进而调节发电量,实现电力系统的自动化调节。
综上所述,该系统的设计和研究在社会生产和生活中具有重要地位。
附录2:程序代码#include#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^7;sbitkey1=P1^3;sbitkey2=P1^4;sbitdianji=P3^1;floatff;uinty3;ucharshi,ge,xiaoshu,sheding=20,gaonum,dinum;ucharcodedispcode[]={//段码0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodetablel[]={//带小数点的段码0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};uchardispbitcode[]={//位选0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchardispbuf[8]={0,0,0,0,0,0,0,0};voidDe
2018/6/1 19:43:36 624KB 单片机 温度控制 风扇
1
基于opencv官网opencv-2.4.13.exe编译出来的Qt可用的opencv库。
使用阐明:Qtcreator为例,1.在.pro配置文件中添加:头文件路径和lib路径:INCLUDEPATH+=C:\Qt\opencvfile\include\opencv\C:\Qt\opencvfile\include\opencv2\C:\Qt\opencvfile\includeLIBS+=-LC:\Qt\opencvfile\lib\libopencv_*.a2.在环境变量path中添加dll路径:C:\Qt\opencvfile\bin即可。
/*authorJackLi*/
2016/8/10 16:24:29 13.63MB opencv2
1
#include#includeusingnamespacestd;intchoice;inta=0,b=0,c=0,d=0;intuser_input;voidS(intColor){HANDLEhCon=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hCon,Color);}voidwait(){Sleep(100);user_input=getchar();}voidcls(){Sleep(100);system("cls");}intmain(intargc,char*argv[]){S(172);start:cls();gotoa1;gameover:printf("游戏结束。
");printf("按回车键继续");user_input=getchar();gotostart;a1:printf("现在游戏开始。
");user_input=getchar();printf("一天,你正在开飞机经过一片雪山区。
");wait();printf("忽然你的操作系统失控了,飞机直直地坠入山中。
");wait();printf("你朝两旁看了看,左边是雪地,右边是树林。
而你正前方是悬崖,所以你不得不转弯。
\n1-左转。
\n2-右转。
\n");s1:wait();switch(user_input){case'1':gotoa8;case'2':gotoa13;default:gotos1;}a2:cls();printf("你下了飞机,走向树林。
");wait();printf("过了一会儿,你感到又饿又冷,就喝了一点威士忌,坐下休息。
");wait();printf("但是,威士忌并没有让你觉得温暖。
你只是觉得很冷、很冷。
\n");gotogameover;a3:cls();printf("你吃了一些果实,还摘了一些放在口袋,想晚一点吃。
");wait();printf("过了一会儿,你的肚子剧烈的痛起来。
这时,你才意识到,果子有毒!\n");gotogameover;a4:cls();printf("你能否要继续往隧道里走?\n1-是。
\n2-不了。
\n");s4:wait();switch(user_input){case'1':gotoa18;case'2':gotoa22;default:gotos4;}a5:cls();printf("你能带三件东西下飞机。
请选择:\n1-香蕉、打火机、外套。
\n2-威士忌、外套、匕首。
\n");s5:wait();switch(user_input){case'1':gotoa10;case'2':gotoa2;default:gotos5;}a6:cls();printf("你走到了隧道里,隧道里很黑,忽然你被一个东西绊倒了。
\n");wait();printf("你爬起来,看了看地上的东西,原来是一条麻绳。
\n1-捡起来。
\n2-置之不理。
\n");s6:wait();switch(user_input){case'1':gotoa11;case'2':gotoa23;default:gotos6;}a7:cls();printf("你呆在飞机里,感到越来越冷,你不得不离开了飞机。
\n");gotoa5;a8:cls();printf("随着“噗”地一声闷响,你的飞机安全降落在雪地上。
");wait();printf("你要离开飞机去找东西吗?\n1-离开。
\n2-待着。
\n");s8:wait()
2020/2/14 7:27:53 1.84MB C++ 代码类 游戏 生存
1
创建工程时需求先安装winpcap的驱动程序,并将winpcap开发包中的include、lib文件夹分别导入到我们工程的附加包含目录和附加库目录。
2017/4/24 1:16:48 81KB 安装winpcap ARP cmd界面
1
opengl摩天轮建模纹理光照#include#include#include#include#include#include#include
2016/5/9 21:11:32 23KB opengl;摩天轮
1
《数据结构》(C语言版)算法源码及运行演示系统使用说明一、启动演示系统双击演示系统应用程序文件“DS_VC_ALGO.EXE”启动演示系统,出现图1所示界面。
图1《数据结构》(C语言版)算法源码及运行演示系统主界面二、演示系统使用步骤除了个别算法之外,演示系统给出了《数据结构》(C语言版)书中算法对应的程序代码(CPP文件)和测试运行程序(VC++6.0的EXE文件)。
通过本系统,可以显示算法的源代码以及运行结果。
具体操作步骤如下:1.选择相应章单击演示系统界面右侧章选择按钮。
例如,要选择第6章,则单击“第6章”选择按钮。
当相应章被选择后,窗口的右侧部分将列出本章的算法选择按钮。
例如,选择第6章后,窗口的右侧部分将显示第6章中的算法6.1-6.13和6.15的选择按钮。
由于书中的算法6.14和6.16只是示意性算法,故未给出源码,其按钮上的文字为灰色,处于“无效”状态。
2.选择相应章中的算法单击窗口右侧部分所列举的本章某个算法选择按钮,被选择的算法的源码将在窗口左侧空白区域中显示。
对于较长的源码,单击显示区域后,可用键盘的光标键和翻页键浏览源码。
例如,选择了第6章中的算法6.5后界面如图2所示:图2选择算法6.53.运行测试程序单击窗口上部的“运行”按钮,将弹出运行窗口,运行所选算法的测试程序。
若运行按钮为灰色,表示该算法无单独测试程序。
例如,算法6.5的测试运行窗口如图3所示:图3测试运行窗口测试运行说明:测试运行窗口显示程序的执行过程及结果。
若在显示过程中出现运行窗口无法正常演示的情况,只需调节运行窗口大小即可正常显示(调节最小化按钮或窗口最大化/还原按钮“”)。
三、退出演示系统使用完毕后,单击窗口右上角关闭按钮“”退出演示系统。
四、测试程序示例在《数据结构》的课程教学中,各抽象数据类型的设计与实现是重要的学习和实践环节。
为此,本系统只给出了各算法源码的测试程序的可执行文件。
在此,给出算法6.5的测试程序示例,以供参考。
算法6.5是中序遍历线索二叉树的非递归算法,要对其源码进行测试,可首先调用算法6.6及6.7建立中序线索二叉树。
以下是测试程序的源码,相关类型和辅助函数定义在文件include06.h和include06.cpp中,此略。
//test0605.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include"include06.h"//相关类型和辅助函数的定义BiThrTreepre;//线索二叉树遍历辅助变量#include"algo0607.cpp"//算法6.7源码#include"algo0606.cpp"//算法6.6源码#include"algo0605.cpp"//算法6.5源码intmain(intargc,char*argv[]){chargl_str[64];BiThrTreeT;BiThrTreeThrt;printf("*******************************************\n");printf("*《数据结构》(C语言版)严蔚敏,吴伟民*\n");printf("*算法6.5,6.6&6.7*\n");printf("*******************************************\n");srand((unsigned)time(NULL));//随机函数初始化T=NULL;//空二叉树Tfor(intpass=0;pass<5;pass++){//测试运行5次,第一次为空树outBiThrTree(T,gl_str);//以类广义表的方式输出二叉树T到gl_strprintf("T=%s\n",gl_str);//显示pre=NULL;Statusr=InOrderThreading(Thrt,T);//算法6.6,6.7,中序线索化printf("InOrderThreading(Thrt,T):%s\n",(r)?"OK":"ERROR");initVisitStr();//将visitStr清为空串InOrderTraverse_Thr(Thrt,v
2018/10/26 23:48:18 2.92MB 严蔚敏 数据结构 C语言 源代码
1
linq2db.EntityFrameworkCorelinq2db.EntityFrameworkCore是LINQToDB与现有EntityFrameworkCore项目的集成。
它受到EF.Core存储库中启发。
建造状态提要NuGet湛蓝神器()独特的功能快速快速加载(在大规模Include查询中无法比拟的更快)全局查询过滤器优化更好SQL优化表提示快速数百万条记录通过LINQ查询更新,删除,插入记录的本机SQL操作临时表支持跨数据库/链接服务器查询。
全文搜索扩展许多扩展涵盖了ANSISQL如何使用在您的代码中,您需要使用以下调用来初始化集成:LinqToDBForEFTools.Initialize();之后,您只需调用LINQToDB提供的DbContext和IQueryable扩展方法即可。
香草EF中缺少许多CRUD操作扩展(请)://fastinsertbigrecordsetsctx.BulkCopy(newBulkCopyOptions{...},items);
2022/9/8 16:22:40 323KB linq sql orm entity-framework
1
OpenCV4.3+Contrib使用VS2019已编译好,opencv4.3版本发布了,现将opencv_contrib一起编译好放上来,opencv4.3是一个比较稳定的版本,文件中有lib、dll、include,配置好即可运转。
2022/9/8 8:05:07 84.26MB opencv c++
1
非常强大的功能并有注释#include<windowsh>#include<mathh>#include<conioh>#include<stdioh>#include<stdlibh>#include<stringh>#include<timeh>timet函数头文件structStudent{charname[20]; 姓名chargender[20]; 性别chartel[20]; 电话 charemail[50]; 邮箱charaddress[100]; 地址};typedefstructStudentSS;给structStudent赋别名voidlogin; 登入模块voiddisplaymenu; 主菜单voidshowMenu; 汇总统计菜单voidsystemmenuSSstudentintlength; 菜单选择intinputInfoSSstudentintlength; 输入信息intcheckcharstring;"ESC"判断函数voidprintSSfind[]inti; 根据"i"输出特定成员信息voidoutputInfoSSstudentintlength; 输出信息intqueryInfoSSfindintlength; 查询信息voidqueryOutputSSfindintindex; voidqueryOutputInfoSSfindinti;voidstatisticSSstudentintlength; 汇总统计选择voidsingeloutputSSstudentintlength; 输出部分学生信息intreadsaveSSstudentintlength; 读取写入文件voidreadSSstudentintlength; 读取文件voidsaveSSstudentintlength; 保存文件voidcopyFileSSstudentintlength; 备份文件voidsavetime;保存登入时间voidCursorPositionintxinty; 设置光标位置voidshowwelcome;显示欢迎使用系统页面voidloginfocharname[]intn; 记录操作日志name用户名n操作方式voidDateoperate; 查看操作日志voiduser; 用户信息模块voidchangepw; 更改密码voidregistercontrol; 注册控制voidsourcetake; 资源占用voidlogout;intchangedlength0; 总共录入多少人intN1001; 数组的局限之处数组在分配空间的时候需要常量来计算不能确定大小不能分配所需空间大小charshowtime[30]; 时间存放字符数组intfirst1; 能否刚刚登入系统1代表是intflagread0; 能否已从文件读入信息0代表不是">非常强大的功能并有注释#include<windowsh>#include<mathh>#include<conioh>#include<stdioh>#includ
2022/9/7 21:57:01 28KB C语言 通讯录
1
#include#include#include#include#include#includeusingnamespacestd;classPOINT{public:floatx,y,z;};conststaticintNumOfVertex=11610;//顶点数conststaticintNumOfTriangle=23216;//三角形个数
2022/9/7 15:56:21 4KB Opengl作图 文件读取
1
共 253 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡