基于51单片机的智能温控器设计与实现

一、前言

基于51单片机的智能温控器,使用DS18B20温度传感器来测量温度,并通过驱动风扇降温,同时使用LCD1602显示屏显示当前温度和设定温度。

二、51单片机代码

#include <reg52.h>
//显示
#include <lcd.h>#define uchar unsigned char
#define uint unsigned intsbit DQ = P2^7; // 温度传感器引脚sbit fan = P3^3; // 风扇
sbit LED = P3^5; // LED指示灯sbit Key4 = P2^1;	 // 开机/关机键uchar Mode = 0; // 0表示确定状态,1表示设置温度上限状态,2表示设置温度下限状态
uchar MODE_OK = 0;
uchar MODE_SET_TEMP_UP = 1;
uchar MODE_SET_TEMP_DOWN = 1;uint dat = 0; // 温度值// 温度
char wendu;
uchar down =30; //温度下限
uchar wendu_up =50; //温度上限uchar status_machine = 1; 
uchar status_shutdown = 1; // 关机
uchar status_power_on = 2; // 开机// 初始化温度传感器
void init_ds18b20() {uint i;DQ = 0;			// 拉低电平i = 80;			// 延时约732uswhile(i > 0)i--;DQ = 1;			// 拉高总线i = 4;			// 延时约40uswhile(i > 0)i--;
}// 读取一位温度传感器的数据
bit read_bit() {uint i;bit dat;DQ = 0;i++; // 延时DQ = 1;i++; // 延时i++;dat = DQ;i = 8;while(i > 0)i--;return dat;
}// 读取一个字节温度传感器的数据
uchar read_byte() {uchar i, j, dat;dat = 0;for (i = 1; i <= 8; i++) {j = read_bit();dat = (j << 7) | (dat >> 1);}return dat;
}// 向温度传感器写入一个字节
void write_byte(uchar dat) {uint i;uchar j;bit testbit;for (j = 1; j <= 8; j++) {testbit = dat & 0x01;dat = dat >> 1;if (testbit) {DQ = 0;i++; // 延时DQ = 1;i = 8; // 延时while(i > 0)i--;} else {DQ = 0;i = 8;while(i > 0)i--;DQ = 1;i++;	// 延时i++;}}
}// 读取温度
unsigned int read_temperature(void) {uchar a = 0;uchar b = 0;uint u_temp = 0;float f_temp = 0;init_ds18b20();delay(1);write_byte(0xCC);  //跳过读序号列号的操作write_byte(0x44);  //启动温度转换init_ds18b20();delay(1);write_byte(0xCC);  //跳过读序号列号的操作write_byte(0xBE);  //读取温度寄存器a = read_byte();   //读低8位b = read_byte();   //读高8位u_temp = b;u_temp <<= 8;u_temp = u_temp | a;f_temp = u_temp * 0.0625; // 获取实际温度u_temp = f_temp * 10;return u_temp;
}// 按键控制
void Key() {// 开机/关机键if(Key4 == 0){while(Key4 == 0);// 如果是关机状态if (status_machine == status_shutdown){// 开机status_machine = status_power_on;}// 如果是开机状态else if (status_machine == status_power_on){// 关机status_machine = status_shutdown;}}
}// 主函数
void main() {init_lcd(); // 初始化lcd1602init_ds18b20(); // 初始化ds18b20// 第一次读取温度read_temperature();delay(2000);while(1) {// 获取温度dat = read_temperature(); if (Mode == MODE_OK) {// 水温显示在液晶显示屏上display(dat, wendu_up, down);wendu = dat / 10; // 取温度值得整数位}// 按键控制Key();// 判断当前机器状态// 如果是要关机if (status_machine == status_shutdown){LED = 1;fan =  1;}// 如果是开机状态else if (status_machine == status_power_on){// 如果当前温度小于温度上限if (wendu < wendu_up){fan =  1;LED = 1;} else {fan =  0;LED = 0;}}}
}

三、Proteus仿真

四、完整资料下载

基于51单片机的智能温控器: https://url83.ctfile.com/d/45573183-65297122-ca5848?p=7526 (访问密码: 7526)
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26866.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不要升级,Flutter Debug 在 iOS 18.4 beta 无法运行,提示 mprotect failed: Permission denied

近期如果有开发者的 iOS 真机升级到 18.4 beta&#xff0c;大概率会发现在 debug 运行时会有 Permission denied 的相关错误提示&#xff0c;其实从 log 可以很直观看出来&#xff0c;就是 Dart VM 在初始化时&#xff0c;对内核文件「解释运行&#xff08;JIT&#xff09;」时…

架构师面试(九):缓存一致性

问题 关于【数据库和缓存】一致性&#xff0c;下面哪几项是在线上生产环境中相对合理的处理方式&#xff1f; A. 对于查询操作&#xff0c;先查缓存&#xff0c;如果为空则查 DB&#xff0c;然后将数据带入缓存&#xff1b; B. 对于插入操作&#xff0c;只写 DB 即可&#…

【CSS—前端快速入门】CSS 选择器

CSS 1. CSS介绍 1.1 什么是CSS? CSS(Cascading Style Sheet)&#xff0c;层叠样式表&#xff0c;用于控制页面的样式&#xff1b; CSS 能够对网页中元素位置的排版进行像素级精确控制&#xff0c;实现美化页面的效果&#xff1b;能够做到页面的样式和 结构分离&#xff1b; 1…

使用DeepSeek+KIMI生成高质量PPT

一、使用DeepSeek DeepSeek官网&#xff1a;DeepSeek 点击“开始对话”&#xff0c;进入交互页面。 在上图中&#xff0c;输入问题&#xff0c;即可获取AI生成的结果。 基础模型&#xff08;V3&#xff09;&#xff1a;通用模型&#xff08;2024.12&#xff09;&#xff0c;高…

学习笔记:IC存储总结(ROM,RAM, EEPROM, Flash, SRAM, DRAM, DDL)

一&#xff0c;概述 半导体存储器是一种可以存储大量二值信息的半导体器件。在电子计算机及一些其他的数字系统的工作过程中&#xff0c;需要对大量的数据进行储存。由于数据处理的数据量和运算速度的要求&#xff0c;因此把存储量和存取速度作为衡量存储器的重要指标。 在电子…

大语言模型学习

大语言模型发展历程 当前国内外主流LLM模型 ‌一、国外主流LLM‌ ‌LLaMA2‌ Meta推出的开源模型&#xff0c;参数规模涵盖70亿至700亿&#xff0c;支持代码生成和多领域任务适配‌57。衍生版本包括Code Llama&#xff08;代码生成优化&#xff09;和Llama Chat&#xff08;对…

【Block总结】EfficientViT中的多尺度线性注意力模块即插即用

论文信息 标题: EfficientViT: Multi-Scale Linear Attention for High-Resolution Dense Prediction作者: Han Cai, Junyan Li, Muyan Hu, Chuang Gan, Song Han&#xff08;MIT/浙江大学/清华大学/MIT-IBM Watson AI Lab&#xff09;[3][7]GitHub: mit-han-lab/efficientvit…

unsloth报错FileNotFoundError: [WinError 3] 系统找不到指定的路径。

运行平台 Windows 报错信息 Traceback (most recent call last): File “C:\Python312\Lib\site-packages\IPython\core\interactiveshell.py”, line 3577, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File “”, line 1, in runfile(‘D:\python_pr…

【清华大学】DeepSeek从入门到精通完整版pdf下载

DeepSeek从入门到精通.pdf 一共104页完整版 下载链接: https://pan.baidu.com/s/1-gnkTTD7EF2i_EKS5sx4vg?pwd1234 提取码: 1234 或 链接&#xff1a;https://pan.quark.cn/s/79118f5ab0fd 一、DeepSeek 概述 背景与定位 DeepSeek 的研发背景 核心功能与技术特点&#xff08…

如何使用ArcGIS Pro制作横向图例:详细步骤与实践指南

ArcGIS Pro&#xff0c;作为Esri公司推出的新一代地理信息系统&#xff08;GIS&#xff09;平台&#xff0c;以其强大的功能和灵活的操作界面&#xff0c;在地理数据处理、地图制作和空间分析等领域发挥着重要作用。 在地图制作过程中&#xff0c;图例作为地图的重要组成部分&…

监督学习单模型—线性模型—LASSO回归、Ridge回归

目标变量通常有很多影响因素&#xff0c;通过各类影响因素构建对目标变量的回归模型&#xff0c;能够实现对目标的预测。但根据稀疏性的假设&#xff0c;即使影响一个变量的因素有很多&#xff0c;其关键因素永远只会是少数。在这种情况下&#xff0c;还用传统的线性回归方法来…

【QT】QLinearGradient 线性渐变类简单使用教程

目录 0.简介 1&#xff09;qtDesigner中 2&#xff09;实际执行 1.功能详述 3.举一反三的样式 0.简介 QLinearGradient 是 Qt 框架中的一个类&#xff0c;用于定义线性渐变效果&#xff08;通过样式表设置&#xff09;。它可以用来填充形状、背景或其他图形元素&#xff0…

攻防世界GFSJ1184_welcome_CAT_CTF

题目 附件&#xff1a; 两个文件client和server Get Flag Exeinfo File分析 file client client: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]6045aa1ba5…

EL表达式和JSTL标签

目录 1. EL表达式 1.1. EL表达式概述 1.2. EL表达式运算 1.3. EL表达式操作对象 1.4. EL表达式内置对象 jsp 9个 11个 1.4.1. 参数隐藏对象 1.4.2. 域隐藏对象 1.4.3. PageContext对象 2. JSTL标签 2.1. JSTL概述 2.1.1. 什么是JSTL 2.1.2. 导入标签库 2.2. JSTL核…

PhotoShop学习01

了解Photoshop 这里省略了Photoshop的软件安装&#xff0c;请自行查找资源下载。 1.打开图片 下图为启动photoshop后出现的界面&#xff0c;我们可以通过创建新文件或打开已有文件来启用photoshop的工作界面。 可以通过左边的按钮进行新文件的创建或打开已有文件。 也可以点…

LabVIEW虚拟弗兰克赫兹实验仪

随着信息技术的飞速发展&#xff0c;虚拟仿真技术已经成为教学和研究中不可或缺的工具。开发了一种基于LabVIEW平台开发的虚拟弗兰克赫兹实验仪&#xff0c;该系统不仅能模拟实验操作&#xff0c;还能实时绘制数据图形&#xff0c;极大地丰富了物理实验的教学内容和方式。 ​ …

【TI毫米波雷达】DCA1000的ADC原始数据C语言解析及FMCW的Python解析2D-FFT图像

【TI毫米波雷达】DCA1000的ADC原始数据C语言解析及FMCW的Python解析2D-FFT图像 文章目录 ADC原始数据C语言解析Python的2D-FFT图像附录&#xff1a;结构框架雷达基本原理叙述雷达天线排列位置芯片框架Demo工程功能CCS工程导入工程叙述Software TasksData PathOutput informati…

【数据结构】堆与二叉树

一、树的概念 1.1 什么是树&#xff1f; 树是一种非线性的数据结构&#xff0c;其由 n 个 ( n > 0 ) 有限节点所组成的一个有层次关系的集合。之所以称其为树&#xff0c;是因为其逻辑结构看起来像是一颗倒挂的树。 在树中&#xff0c;有一个特殊的节点称为根节点&#xf…

从零开始开发纯血鸿蒙应用之语音朗读

从零开始开发纯血鸿蒙应用 〇、前言一、API 选型1、基本情况2、认识TextToSpeechEngine 二、功能集成实践1、改造右上角菜单2、实现语音播报功能2.1、语音引擎的获取和关闭2.2、设置待播报文本2.3、speak 目标文本2.4、设置语音回调 三、总结 〇、前言 中华汉字洋洋洒洒何其多…

8 SpringBoot进阶(上):AOP(面向切面编程技术)、AOP案例之统一操作日志

文章目录 前言1. AOP基础1.1 AOP概述: 什么是AOP?1.2 AOP快速入门1.3 Spring AOP核心中的相关术语(面试)2. AOP进阶2.1 通知类型2.1.1 @Around:环绕通知,此注解标注的通知方法在目标方法前、后都被执行(通知的代码在业务方法之前和之后都有)2.1.2 @Before:前置通知,此…