SHT30学习记录(51单片机代码)
基本数据:
供电范围:2.4V~5.5V,湿度误差±1.5,温度误差±0.2。
设备地址选择脚,ADDR(PIN2)接GND,设备写地址为0x88(0x44<<1),读地址为0x89(0x45<<1)。
读取的信息顺序是:温度数据(16位)+校验和(8位)+适度数据(16位)+校验和(8位)。
湿度:RH=100*(1.0*SRH / 65535),摄氏温度:T=-45+175*(1.0*ST / 65535);
单次数据采集模式:
可设置重复性和时钟延展。数据采集频率和重复性影响传感器测量时间和功耗。
例如:指令0x2c06,启用高重复性测量和时钟延展。
单次模式读取数据:注意单次下传感器测量时间间隙,
例如:发送0x2c06指令后,传感器工作(大概10ms)→发送“读报头”→传感器响应→SDA被拉低(大概2ms)→读出数据。
备注:时钟延展只适用于单次采集模式。
周期数据采集模式:
采用固定周期测量数据,有0.5mps,1mps,2mps,4mps,10mps。1mps采样频率,即1s采集一次。
循环模式读取数据:读取数据前要开启循环采集(指令0x2130,1mps,高重复性),
再重新发送指令0xE000,每次读完传感器数据寄存器都会清除。
如果传感器处于此模式,且正在采集数据,发送中断指令(0x3903),传感器将完成此次测量,进入单次采集模式。
下面是主要部分代码
#define SHT30_ADDR_WRITE 0x88
#define SHT30_ADDR_READ 0x89#define ONE_SHOT 0x2c06/*******************************************************/
#define PERIODIC_MODE_05S 0x2032// 0.5mps
#define PERIODIC_MODE_1S 0x2130// 1mps
#define PERIODIC_MODE_2S 0x2236// 2mps
#define PERIODIC_MODE_4S 0x2334// 4mps
#define PERIODIC_MODE_10S 0x2737// 10mps
#define FETCH_DATA 0xe000
/********************************************************/
void sht30_single_mode();
void sht30_periodic_readdata();
void sht30_periodic_init();
void sht30_readdata(uchar msb,uchar lsb);
uint sht30_data[4];
extern uchar flag_1s;//1s读取一次数据发送到串口
int main()
{usart_init();sda=1;scl=0;delayms(10);sht30_periodic_init();//sht30_single_mode();while(1){if(flag_1s==1){flag_1s=0;sht30_readdata(0xe0,0x00);}}
}void sht30_periodic_init()
{i2c_start();i2c_write_byte(SHT30_ADDR_WRITE);i2c_write_byte(0x21);i2c_write_byte(0x30);i2c_stop();
}void sht30_readdata(uchar msb,uchar lsb)
{float RH,T;i2c_start();i2c_write_byte(SHT30_ADDR_WRITE);i2c_write_byte(msb);i2c_write_byte(lsb);i2c_stop();i2c_start();i2c_write_byte(SHT30_ADDR_READ);sht30_data[0]=i2c_read_byte(1);sht30_data[0]<<=8;sht30_data[0]|=i2c_read_byte(1);sht30_data[1]=i2c_read_byte(1);sht30_data[2]=i2c_read_byte(1);sht30_data[2]<<=8;sht30_data[2]|=i2c_read_byte(1);sht30_data[3]=i2c_read_byte(0);i2c_stop();T=-45+175*(1.0*sht30_data[0] / 65535);RH=100*(1.0*sht30_data[2] / 65535);ES=0;TI=1;printf("温度:%2.2f ℃,湿度:%2.2f %%RH\n",T,RH);while(!TI);TI=0;ES=1;
}
SHT30学习记录(51单片机代码)相关推荐
- C语言极速学习开发——51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学习的精神之灯-下)
系列文章目录 提示:本文章为系列文章,系列文章的所有文章的目录后期会时刻更新,喜欢的朋友请收藏好 <第一章 C语言极速学习开发--51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学 ...
- C51汇编语言寻址方式,单片机学习:51单片机寻址方式详解
原标题:单片机学习:51单片机寻址方式详解 51单片机是对所有兼容Intel 8031指令系统的单片机的统称.该系列单片机的始祖是Intel 8031单片机,后来随着Flash rom 技术的发展,8 ...
- 51单片机c语言学习感想,51单片机实训心得体会
[www.hywsbj.com--心得体会] 单片机实训有哪些心得体会呢?下面是小编为大家收集的资料,欢迎阅读哦. 51单片机实训心得体会 通过为期一周的单片机实训,是我们对这门课有了许多新的了解,弥 ...
- 从零学习入门51单片机和STM32单片机
❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分:建议先学习51单片机,其是STM32等高级单片机的基础:这样再学习STM32时才能融会贯通. ☀️ 专栏适 ...
- 单片机学习笔记————51单片机实现带数码管显示的加法简易计算器
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 单片机学习笔记————51单片机实现在数码管中实现iphone4S开机密码锁的程序
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 单片机学习笔记————51单片机实现主机的串口收发
proteus虚拟串口的实现:https://mp.csdn.net/console/editor/html/107251649 一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 / ...
- [学习笔记]51单片机
关于51单片机入门,前提是先学一下电路,不然有的的地方不太容易理解 之前在知乎上看见一位dalao总结的单片机学习分四个层次: 第一个层次:完成单片机开发板的学习,理解单片机的工作,能够看懂单片机的程 ...
- 单片机学习笔记————51单片机实现带数码管显示的象棋比赛专用计时器
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
最新文章
- 【php增删改查实例】第十七节 - 用户登录(1)
- [Linux Mysql] Linux下Mysql的基本操作
- SEAM学习(一)-----安装运行example
- sqoop 增量导入mysql_sqoop增量导入数据库
- Linux 引入自动化测试平台 KernelC
- Docker 基础介绍及配置安装 [一]
- Ajax提交数据判断员工编号是否存在,及自动填充与员工编号所对应的员工姓名。...
- 带修改离线主席树 + 树状数组 ZOJ - 2112【Dynamic Rankings】
- linux信任公钥的配置
- 四、全卷积网络FCN详细讲解(超级详细哦)
- 个人网页制作 大学生个人网页设计 个人网站模板 简单静态HTML个人网页作品 HTML+CSS+JavaScript
- Flask打包服务器部署全攻略
- 【基础】制作word模板
- java crm 进销存 websocket即时聊天发图片文字 好友群组 SSM源码
- 视频中的音频提取如何操作?一分钟教会你
- 外行人都能看懂的SpringCloud,错过了血亏! 1
- i3 10110u和i5 10210u哪个好
- Linux服务器离线安装transformers
- VS2017链接报错:fatal error LNK1318: 非意外的 PDB 错误
- 伦艺计算机科学与技术,伦敦艺术大学专业设置汇总!