51单片机温湿度数据管理系统

51单片机温湿度数据管理系统

1.硬件准备

开发板:51单片机 显示:lcd1602 温湿度模块:DHT11 通信模块:HC-08蓝牙

2.代码实现

uart.c

#include "reg52.h"
#include "config.h"
#include <string.h>sfr AUXR = 0x8E;
sbit D6 = P3^6;
char buffer[12];void UartInit(void)		//9600bps@11.0592MHz
{AUXR = 0x01;SCON = 0x50; //配置串口工作方式1,REN使能接收TMOD &= 0xF0;TMOD |= 0x20;//定时器1工作方式位8位自动重装TH1 = 0xFD;TL1 = 0xFD;//9600波特率的初值TR1 = 1;//启动定时器EA = 1;//开启总中断ES = 1;//开启串口中断
}
void sendByte(char data_msg)
{SBUF = data_msg;while(!TI);TI = 0;
}void sendString(char* str)
{while( *str != '\0'){sendByte(*str);str++;}
}void Uart_Handler() interrupt 4
{char tmp;char i;if(RI)//中断处理函数中,对于接收中断的响应{RI = 0;//清除接收中断标志位tmp = SBUF;if(tmp == ':'){i = 0;}buffer[i++] = tmp;if(buffer[0] == ':' && buffer[1] =='o' && buffer[2] == 'p'){fengshan = 0;memset(buffer,'\0',12);}if(buffer[0] == ':' && buffer[1] == 'c' && buffer[2] == 'l'){fengshan = 1;D6 = 0;Delay1000ms();Delay1000ms();memset(buffer,'\0',12);}}if(TI);
}

uart.h

#ifndef _UART_H
#define _UART_Hvoid UartInit(void);		//9600bps@11.0592MHzvoid sendByte(char data_msg);void sendString(char* str);#endif

lcd1602.c

#include "reg52.h"
#include "intrins.h"
#include "delay.h"#define databuffer  P0 //定义8位数据线,Po端口组
sbit RS = P1^0;
sbit RW = P1^1;
sbit EN = P1^4;void check_busy()
{char tmp = 0x80;databuffer = 0x80;while(tmp & 0x80){//1000 0000RS = 0;RW = 1;EN = 0;_nop_();EN = 1;_nop_();_nop_();tmp = databuffer;EN = 0;_nop_();}
}void Write_Cmd_Func(char cmd)
{check_busy();RS = 0;RW = 0;EN = 0;_nop_();databuffer = cmd;_nop_();EN = 1;_nop_();_nop_();EN = 0;_nop_();	
}void Write_Data_Func(char dataShow)
{check_busy();RS = 1;RW = 0;EN = 0;_nop_();databuffer = dataShow;_nop_();EN = 1;_nop_();_nop_();EN = 0;_nop_();	
}void LCD1602_INIT()
{//(1)延时 15msDelay15ms();
//(2)写指令 38H(不检测忙信号) Write_Cmd_Func(0x38);
//(3)延时 5msDelay5ms();
//(4)以后每次写指令,读/写数据操作均需要检测忙信号
//(5)写指令 38H:显示模式设置Write_Cmd_Func(0x38);
//(6)写指令 08H:显示关闭Write_Cmd_Func(0x08);
//(7)写指令 01H:显示清屏Write_Cmd_Func(0x01);
//(8)写指令 06H:显示光标移动设置Write_Cmd_Func(0x06);
//(9)写指令 0CH:显示开及光标设置}Write_Cmd_Func(0x0c);
}void LCD1602_showLine(char row, char col, char *string)
{switch(row){case 1:Write_Cmd_Func(0x80+col);while(*string){Write_Data_Func(*string);string++;}break;case 2:Write_Cmd_Func(0x80+0x40+col);while(*string){Write_Data_Func(*string);string++;}break;}
}

lcd1602.h

#ifndef _LCD1602_H
#define _LCD1602_Hvoid LCD1602_INIT();void LCD1602_showLine(char row, char col, char *string);#endif

dht11.c

#include "reg52.h"
#include "delay.h"sbit dht = P3^3;//模块的data插在p3.3char datas[5];void DHT11_Start()
{dht = 1;dht = 0;//延时30msDelay30ms();dht = 1;//卡d点;while(dht1); 卡e点 while(!dht) 卡f点:while(dht)while(dht);while(!dht);while(dht);
}void Read_Data_From_DHT()
{int i;//轮int j;//每一轮读多少次char tmp;char flag;DHT11_Start();for(i= 0;i < 5;i++){//卡g点:while(!dht)       有效数据都是高电平,持续时间不一样,50us读,低电平0 高电平for(j=0;j<8;j++){while(!dht);//等待卡g点Delay40us();if(dht == 1){flag = 1;while(dht);}else{flag = 0;} tmp = tmp << 1;tmp |= flag;}datas[i] = tmp;}}

dht11.h

#ifdenf _DHT11_H
#define _DHT11_Hvoid Read_Data_From_DHT();#endif

delay.c

#include "intrins.h"
void Delay30ms()		//@11.0592MHz
{unsigned char i, j;i = 54;j = 199;do{while (--j);} while (--i);
}void Delay40us()		//@11.0592MHz
{unsigned char i;_nop_();i = 15;while (--i);
}void Delay1000ms()		//@11.0592MHz
{unsigned char i, j, k;_nop_();i = 8;j = 1;k = 243;do{do{while (--k);} while (--j);} while (--i);
}void Delay15ms()		//@11.0592MHz
{unsigned char i, j;i = 27;j = 226;do{while (--j);} while (--i);
}
void Delay5ms()		//@11.0592MHz
{unsigned char i, j;i = 9;j = 244;do{while (--j);} while (--i);
}

delay.h

#ifndef _DELAY_H
#define _DELAY_H#include "intrins.h"
void Delay30ms();		//@11.0592MHzvoid Delay40us();		//@11.0592MHzvoid Delay1000ms();		//@11.0592MHzvoid Delay15ms();		//@11.0592MHzvoid Delay5ms();		//@11.0592MHz#endif

config.h

#ifndef _CONFIG_H
#define _CONFIG_Hsbit ledOne = P3^7;
sbit fengshan = P1^6;#endif

main.c

#include "reg52.h"
#include "intrins.h"
#include "delay.h"
#include "lcd1602.h"
#include "uart.h"
#include "dht11.h"
#include "config.h"char temp[8];
char huma[8];
extern char datas[5];void Build_Datas()
{huma[0] = 'H';huma[1] = datas[0]/10 + 0x30;huma[2] = datas[0]%10 + 0x30;huma[3] = '.';huma[4] = datas[1]/10 + 0x30;huma[5] = datas[1]%10 + 0x30;huma[6] = '%';huma[7] = '\0';temp[0] = 'T';temp[1] = datas[2]/10 + 0x30;temp[2] = datas[2]%10 + 0x30;temp[3] = '.';temp[4] = datas[3]/10 + 0x30;temp[5] = datas[3]%10 + 0x30;temp[6] = 'C';temp[7] = '\0';}void main()
{Delay1000ms();UartInit();LCD1602_INIT();Delay1000ms();Delay1000ms();ledOne = 0;while(1){Delay1000ms();Read_Data_From_DHT();	if(datas[2] >= 24){fengshan = 0;}else{fengshan = 1;}Build_Datas();sendString(huma);sendString("\r\n");sendString(temp);sendString("\r\n");LCD1602_showLine(1,2,huma);LCD1602_showLine(2,2,temp);}
}

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

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

相关文章

排序之计数排序

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

简述MinewSemi的GNSS模块引领体育与健康科技革新

体育与健康科技领域的创新一直在推动人们更健康、更活跃的生活方式。创新微公司的GNSS模块正成为这一变革的关键推动力。本文将深入研究MinewSemi的GNSS模块在体育和健康追踪领域的创新应用&#xff0c;探讨其如何帮助个体更全面地了解和改善自己的身体状态。 1. 个性化运动轨迹…

爬什么值得买的榜单——爬虫练习题目一(问)

爬虫题目你敢试试吗&#xff1f; 引言具体原因网站思路总体 我让AI给个框架1. **项目初始化与依赖安装**2. **定义数据模型**3. **网络请求模块**4. **页面解析模块**5. **数据存储模块**6. **主程序流程** 结尾 引言 最近在做什么呢 建立一套完整的信息输入输出系统 在我上一…

从0搭建一个springboot web系统

要从头开始搭建一个Spring Boot Web系统&#xff0c;你需要遵循以下步骤&#xff1a; 安装Java开发环境&#xff08;JDK&#xff09;和Maven&#xff08;构建工具&#xff09;。创建一个新的Maven项目。在项目的pom.xml文件中添加Spring Boot相关依赖。创建一个主类&#xff0…

Vue之状态管理的简单使用(事件总线(Event Bus),Vuex和若依前端示例)

文章目录 Vue之状态管理的简单使用&#xff08;事件总线&#xff08;Event Bus&#xff09;&#xff0c;Vuex和若依前端示例&#xff09;Vue之事件总线&#xff08;Event Bus&#xff09;的简单使用Vuex进行状态管理的简单使用若依前端代码store状态管理&#xff1a; Vue之状态…

云原生时代下,操作系统生态的挑战与机遇

在云计算快速发展的背景下&#xff0c;服务器操作系统的产业升级&#xff0c;不再局限于物理服务器层面&#xff0c;市场边界扩张&#xff0c;人工智能、大数据、云计算等新技术的发展也对操作系统的灵活度和智能化提出新的要求。在 2023 龙蜥操作系统大会上&#xff0c;龙蜥社…

pytorch学习笔记(十二)

以下代码是以CIFAR10这个10分类的图片数据集训练过程的完整的代码。 训练部分 train.py主要包含以下几个部件&#xff1a; 准备训练、测试数据集用DateLoader加载两个数据集&#xff0c;要设置好batchsize创建网络模型&#xff08;具体模型在model.py中&#xff09;设置损失函…

深入了解C++:底层编译原理

进程的虚拟空间划分 任何编程语言&#xff0c;都会产生两样东西&#xff0c;指令和数据。 .exe程序运行的时候会从磁盘被加载到内存中&#xff0c;但是不能直接加载到物理内存中。Linux会给当前进程分配一块空间&#xff0c;比如x86 32位linux环境下会给进程分配2^32(4G)大小…

vue3页面跳转产生白屏,刷新后能正常展示的解决方案

可以依次检查以下问题&#xff1a; 1.是否在根组件标签最外层包含了个最大的div盒子包裹内容。 2.看看是否在template标签下面直接有注释&#xff0c;如果有需要把注释写到div里面。&#xff08;即根标签下不要直接有注释&#xff09; 3.在router-view 中给路由添加key标识。 …

c# cass10 获取宗地内所有封闭线段的面积

获取面积的主要流程如下&#xff1a; 获取当前AutoCAD应用中的活动文档、数据库和编辑器对象。创建一个选择过滤器&#xff0c;限制用户只能选择"宗地"图层上的LWPOLYLINE对象作为外部边界。提示用户根据上述规则进行实体选择&#xff0c;并获取选择结果。检查用户是…

前端下载导出文件流,excel/word/pdf/zip等

** 一、导入导出接口增加responseType:‘blob’ ** axios({url: 接口,method: post,data&#xff1a;{},responseType: blob });二、导出方法封装 //data 文件流 //fileName 文件名称 /* mineType 文件类型例如&#xff1a;* 下载 Excel : "application/vnd.m…

(附源码)ssm 招聘信息管理系统-计算机毕设 78049

ssm 招聘客户管理系统 摘 要 由于数据库和数据仓库技术的快速发展&#xff0c;招聘客户管理系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。招聘客户系统对处理对象和服务对象&#xff0c;自身的系统结构&#xff0c;处理能力&#xff0c;都将适应技术发展的…

逃避自由是所有成长的前提

《逃避自由》是埃里希弗洛姆的一部重要作品&#xff0c;首次出版于1941年。该书主要探讨了现代人在面对自由和独立时所表现出的逃避倾向。在这部作品中&#xff0c;弗洛姆分析了自由的心理学基础&#xff0c;并论证了自由不仅仅是一个政治和经济的概念&#xff0c;更是一个深刻…

脚本工具 mktemp 和 install

1.创建临时文件 mktemp 1.1 介绍 mktemp 命令用于创建并显示临时文件&#xff0c;可避免冲突 使用mktemp命令时&#xff0c;它会根据指定的模板在临时目录&#xff08;默认为/tmp&#xff09;中创建一个唯一的临时文件或目录&#xff0c;并返回该文件或目录的完整路径。临时…

2023年12月CCF-GESP编程能力等级认证Python编程一级真题解析

一、单选题(共15题,共30分) 第1题 某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。( )(2023年12月py一级) A:麦克风 B:扬声器 C…

工作中的小记录

1、在element的el-dialog中上传附件后在另一个el-form-item下的input输入框中获取该附件名 使用v-model无法双向绑定。使用this.$set this.$set(this.formData,"属性名","属性值")2、后端传来文件地址&#xff0c;点击直接下载 getCaseId(this.$route.quer…

datawhale 大模型学习 第十一章-大模型法律篇

简介 新技术与法律关系&#xff1a;大型语言模型&#xff08;LLM&#xff09;的出现引发了对现有法律适用性的探讨&#xff0c;尤其是在版权、隐私和公平使用等方面。互联网法律挑战&#xff1a;互联网的匿名性和无国界特性对法律的管辖权提出了挑战。法律与道德区分&#xff…

在线UI设计工具有哪些?这5个包你满意

随着 UI 设计行业的蓬勃发展&#xff0c;越来越多的设计师进入 UI 设计&#xff0c;选择一款方便的 UI 设计工具尤为重要&#xff01;除了传统的 UI 设计工具&#xff0c;在线 UI 设计工具也受到越来越多设计师的青睐。这种不受时间、地点和计算机配置限制的工作方法真的很刺激…

Python处理图片生成天际线(2024.1.29)

1、天际线简介 天际线&#xff08;SkyLine&#xff09;顾名思义就是天空与地面的边界线&#xff0c;人站在不同的高度&#xff0c;会看到不同的景色和地平线&#xff0c;天空与地面建筑物分离的标记线&#xff0c;不得不说&#xff0c;每天抬头仰望天空&#xff0c;相信大家都可…

屈子祠镇黑鱼岭,不可移动文物预防性保护系统守遗珍

一、何止秦俑 秦陵苑囿青铜水禽等文物集中展出 文物保护&#xff0c;尤其是不可移动文物的保护&#xff0c;一直都是文化遗产的重要环节。湖南省汨罗市屈子祠镇双楚村黑鱼岭墓地&#xff0c;作为长江中游地区的重大考古发现&#xff0c;其商朝晚期的历史背景赋予其不可估量的历…