STC15系列通用-STC15F2K60S2/STCW4K32S4读取DHT11温湿度传感器数据串口输出代码实例工程免费下载
//为了方便大家调试,另附程序工程共大家下载,下载地址:https://www.90pan.com/b1908750
//************************** //程序说明:stc15f2k60s2采集dht11温湿度传感器数据,并从串口输出,实测可用,
//选择内部22.1184M晶振
//************************** #include<stc15fxxxx.h> //调用stc15f系列头文件,下载地址: http://pan.baidu.com/s/1eRUbjLS //IO口声明 #define dht11_io P20 //P2.0口作为数据读取接口 //常量声明 #define MAIN_Fosc 22118400L//主时钟
#define baud_rate 115200L//波特率
#define Timer1_Reload(65536UL -(MAIN_Fosc / 4 / baud_rate))//Timer1重装值 //变量定义 u16 U8FLAG;
u8 U8temp;
u8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
u8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
u8 U8comdata;
u8 datas=; //函数声明 void Delay30us(); //22.1184M晶振精确延时30微秒
void Delay40us(); //22.1184M晶振精确延时40微秒
void Delay18ms(); //22.1184M晶振精确延时30毫秒
void Delay1000ms();//22.1184M晶振精确延时1000毫秒 void read_byte(); //读取一字节的数据,并赋值给U8comdata
u8 read_temp();//读取温度,返回温度值
u8 read_humi();//读取湿度,返回湿度值 void serial_init();//串口初始化
void serial_send_byte(u8 dat);//串口发送一个字节的数据
void serial_send_string(u8 *dat);//串口发送字符串 void main()
{
Delay1000ms();
serial_init();//串口初始化
dht11_io = ;
while()
{
datas=read_temp();
serial_send_string("温度:");
serial_send_byte(datas%/+'');//十位
serial_send_byte(datas%+'');//个位
serial_send_byte(' ');
datas=read_humi();
serial_send_string("湿度:");
serial_send_byte(datas%/+'');//十位
serial_send_byte(datas%+'');//个位
serial_send_string("\r\n");
Delay1000ms();
} } void read_byte()
{
u8 i;
for(i=;i<;i++)
{
U8FLAG=;
while((!dht11_io)&&U8FLAG++);//超时3毫秒跳出
Delay30us();
U8temp=;
if(dht11_io)U8temp=;
U8FLAG=;
while((dht11_io)&&U8FLAG++);//超时3毫秒跳出
if(U8FLAG==)break;
U8comdata<<=;
U8comdata|=U8temp;
}
} u8 read_temp()
{
dht11_io=;
Delay18ms();
dht11_io=;
Delay40us();
dht11_io=;
if(!dht11_io)
{
U8FLAG=;
while((!dht11_io)&&U8FLAG++);//超时3毫秒跳出
U8FLAG=;
while((dht11_io)&&U8FLAG++);//超时3毫秒跳出
read_byte();
U8RH_data_H_temp=U8comdata;
read_byte();
U8RH_data_L_temp=U8comdata;
read_byte();
U8T_data_H_temp=U8comdata;
read_byte();
U8T_data_L_temp=U8comdata;
read_byte();
U8checkdata_temp=U8comdata;
dht11_io=; U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
if(U8temp==U8checkdata_temp)
{
U8RH_data_H=U8RH_data_H_temp;
U8RH_data_L=U8RH_data_L_temp;
U8T_data_H=U8T_data_H_temp;
U8T_data_L=U8T_data_L_temp;
U8checkdata=U8checkdata_temp;
}
}
return U8T_data_H;
} u8 read_humi()
{
dht11_io=;
Delay18ms();
dht11_io=;
Delay40us();
dht11_io=;
if(!dht11_io)
{
U8FLAG=;
while((!dht11_io)&&U8FLAG++);//超时3毫秒跳出
U8FLAG=;
while((dht11_io)&&U8FLAG++);//超时3毫秒跳出
read_byte();
U8RH_data_H_temp=U8comdata;
read_byte();
U8RH_data_L_temp=U8comdata;
read_byte();
U8T_data_H_temp=U8comdata;
read_byte();
U8T_data_L_temp=U8comdata;
read_byte();
U8checkdata_temp=U8comdata;
dht11_io=; U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
if(U8temp==U8checkdata_temp)
{
U8RH_data_H=U8RH_data_H_temp;
U8RH_data_L=U8RH_data_L_temp;
U8T_data_H=U8T_data_H_temp;
U8T_data_L=U8T_data_L_temp;
U8checkdata=U8checkdata_temp;
}
}
return U8RH_data_H;
} void serial_init()
{
S1_8bit(); //8位数据
S1_USE_P30P31();//UART1 使用P30 P31口默认
TR1 = ;
AUXR &= ~0x01;//S1 BRT Use Timer1;
TMOD &= ~(<<);//Timer1 set As Timer
TMOD &= ~0x30;//Timer1_16bitAutoReload;2
AUXR |= (<<);//Timer1 set as 1T mode
TH1 = (u8)(Timer1_Reload >> );
TL1 = (u8)Timer1_Reload;
TR1 = ;
PS = ; //高优先级中断
REN = ; //允许接收
ES = ; //允许中断 EA = ; //允许全局中断
} void serial_send_byte(u8 dat)
{
SBUF=dat;
while(!TI);
TI=;
} void serial_send_string(u8 *dat)
{
while(*dat)
{
serial_send_byte(*dat++);
}
} /********************* 串口1中断函数************************/
void UART1_int (void) interrupt UART1_VECTOR
{
if(RI)
{
RI = ;
} if(TI)
{
}
} void Delay30us() //@22.1184MHz精确延时30微秒
{
unsigned char i, j; i = ;
j = ;
do
{
while (--j);
} while (--i);
} void Delay40us() //@22.1184MHz精确延时40微秒
{
unsigned char i, j; _nop_();
i = ;
j = ;
do
{
while (--j);
} while (--i);
} void Delay18ms() //@22.1184MHz精确延时18毫秒
{
unsigned char i, j, k; _nop_();
i = ;
j = ;
k = ;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
} void Delay1000ms() //@22.1184MHz
{
unsigned char i, j, k; _nop_();
_nop_();
i = ;
j = ;
k = ;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
STC15系列通用-STC15F2K60S2/STCW4K32S4读取DHT11温湿度传感器数据串口输出代码实例工程免费下载的更多相关文章
- 在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)
最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...
- DHT11温湿度传感器编程思路以及代码的实现(转载)
源自:https://blog.csdn.net/qq_34952376/article/details/81193938 在我们刚开始进入单片机的学习中,练习写传感器的时序是必不可少的,其实我比较推 ...
- Arduino和C51开发DHT11温湿度传感器
技术:51单片机.Arduino.DHT11.温湿度传感器.传感器 概述 学习单片机离不开对传感器的学习,本文主要介绍DHT11温湿度传感器的使用方法,同学也可以了解更多的传感器,这对你以后开发产 ...
- DHT11温湿度传感器模块使用方法和驱动代码实现
DHT11模块简介 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器.它具有超小体积.极低功耗的特点.它使用单根总线与单片机进行双向的串行数据传输,信号传输距离可达20米以上.非常适用于对 ...
- STM32驱动DHT11温湿度传感器
DHT11 是一款湿温度一体化的数字传感器.该传感器包括一个电阻式测湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接.通过单片机等微处理器简单的电路连接就能够 实时的采集本地湿度和温 ...
- 树莓派使用DHT11温湿度传感器
一.相关介绍 DHT11介绍: DHT11是一款比较便宜的温湿度传感器模块.读取数据只需要占用一个IO口.能够同时测量温度和相对湿度. DHT11的数据手册可以看这里:http://wenku.bai ...
- 玩转X-CTR100 l STM32F4 l DHT11温湿度传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] DHT11数字温湿度传感器是一款含有已校准数字信号输 ...
- 【雕爷学编程】Arduino动手做(55)--DHT11温湿度传感器
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...
- NPOI 2.1.1 系列(2) 使用NPOI读取List或者datatable数据生成 Excel文档 ;Npoi生成 xlsx 2007以上文档
结合上一篇文章 NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx ...
随机推荐
- 给大家发个Python和Django的福利吧,不要钱的那种~~~
前言一: 这篇是一个发放福利的文章,但是发放之前,我还是想跟大家聊聊我为什么要发这样的福利. 我第一份工作是做的IT桌面支持,日常工作就是给同事修修电脑.装装软件.开通账号.维护内部系统之类的基础工作 ...
- Angular 从入坑到挖坑 - Router 路由使用入门指北
一.Overview Angular 入坑记录的笔记第五篇,因为一直在加班的缘故拖了有一个多月,主要是介绍在 Angular 中如何配置路由,完成重定向以及参数传递.至于路由守卫.路由懒加载等&quo ...
- Cassandra数据建模
1. 概述 Apache Cassandra将数据存储在表中,每个表都由行和列组成.CQL(Cassandra查询语言)用于查询存储在表中的数据.Apache Cassandra数据模型基于查询并针 ...
- Crash-fix-2:org.springframework.http.converter.HttpMessageNotReadableException
最近开始对APP上的Crash进行对应,发现有好多常见的问题,同一个问题在多个APP都类似的出现了,这里记录下这些常见的错误. crash Log: org.springframework.http. ...
- SpringMVC 类型转换错误自定义返回
在SpringMVC捕获异常只需要实现接口org.springframework.web.servlet.HandlerExceptionResolver,即可自定义返回异常,如:属性转换异常 @Re ...
- springmvc 校验---spring校验
springmvc提供了灵活的可拓展的校验方式,根据不同的项目可选择适合的校验方式,首先介绍下springmvc中内置的校验实现方式! 1.实现 org.springframework.validat ...
- 题解 P4296 【[AHOI2007]密码箱】
由题意有 \(x^2\equiv 1\;mod\;n\) 对题目的公式进行变形 \(x^2-1=k\times n\) \((x+1)(x-1)=k\times n\) 由唯一分解定理,我们构造\(a ...
- Python-AES加密算法接口测试
前言 先前已经学过了Python-SHA256加密算法接口测试,今天我跟大家讲解一下AES加密算法的接口如何写python脚本进行测试. 一:安装pycryptodome模块 pip install ...
- 轻松解决python异常处理,你值得拥有
目录 python中常见的异常信息+处理方法 常见异常类型 异常处理 python中常见的异常信息+处理方法 常见异常类型 异常类名 功能描述 Exception 所有异常的基类 ValueError ...
- python3.x 基础一:str字符串方法
*字符串不能更改值 数据类型字符串str | capitalize(...) 返回字符串中第一个字母大写 | S.capitalize() -> str | | ...