我是靠谱客的博主 光亮钻石,这篇文章主要介绍IIC通信进行数据传输的温湿度传感器,现在分享给大家,希望可以做个参考。

温湿度节点概括:
I2C通信协议
1.数据传送:
SDA引脚用于传感器的数据输入和输出。当向传感器发送命令时,SDA 在串行时钟(SCL)的上升沿有效,且当 SCL为高电平时,SDA 必须保持稳定。在下降沿之后,SDA值可被改变。
![在这里插入图片描述](
2.起始和终止信号 :
SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
发送命令:
在启动传输后,随后传输的 I2C 首字节包括 7 位的I2C 设备地址(B-范例地址‘1000’000’)和一个 SDA方向位(读 R: ‘1’,写 W: ‘0’)。在第8 个 SCL时钟下降沿之后,通过拉低 SDA 引脚(ACK 位),指示传感器数据接收正常。在发出测量命令之后( ‘1110’0011’代表温度测量,‘1110’0101’
代表相对湿度测量), MCU 必须等待测量完成。基本的命令在下表 中进行概述。有两种不同的方式可选,主机模式或非主机模式。
在这里插入图片描述

温湿度代码流程:
1.进行对延时函数、串口1、串口3、LED、RS485 、HC-12、定时器2、温湿度模块以及LCD1602显示屏的初始化。读取网关ID、节点ID、节点名字以及节点状态.
2.定时器2的中断,若定时器2未被重置,进行对HC-12发送到的数据进行解析,即函数receiveuart3();receiveuart3()里面含有对消息头、消息体与
命令的解析,不同的指令执行不同的代码:
void receiveuart3(void)
{

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while(read_COM_HC12_data_cp!=COM_HC12_data_cp) { ND_time_count=1; temp = COM_HC12_data[read_COM_HC12_data_cp]; read_COM_HC12_data_cp++; if(read_COM_HC12_data_cp>=U3bufsize) read_COM_HC12_data_cp=0; printf(" %02x ",temp); if(bbbb==0) { bbbb=1; ccoouunntt++; }

switch(receive_check_ndmsgheadok)
{
case receive_msghead:
receive_msghead_nd();
break;
case receive_msgbody:
receive_msgbody_nd();
if(receive_check_ndmsgheadok==receive_command)
{
Execute_command_nd();
}
break;
default:
break;
}

}

}
3.命令的执行:
①Execute_command(); 命令的执行,温湿度模块采集数据,进行对数据的处理、打印;
void Execute_command()
{
u8 EEPROM[4];
if(Command_exe_flag==ON_command)
{

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
SHT2x_Test(); temperature=g_sht2x_param.TEMP_POLL*100; humidity=g_sht2x_param.HUMI_POLL*100; B2G_NodeStation.kid1_Value0=(temperature>>8) & 0x00ff; B2G_NodeStation.kid1_Value1=temperature; B2G_NodeStation.kid2_Value0=(humidity>>8) & 0x00ff; B2G_NodeStation.kid2_Value1=humidity; printf("rn读取DHT11成功!rnrn湿度为%d%RH,温度为%d°Crn",humidity,temperature);

②switch (ND_station) ; 分析节点状态,并将状态进行重新赋值,与采集的温湿度数据一起打包上传给网关;
③LCD1602显示数据对消息头,消息体进行打包,并存储与eeprom指定地址中sub_toND_msghead(ND_Command_Id);
sub_toND_msgbody();
④通过串口3进行数据回传至网关:
USART3_Send_str(B2G_NDsta_send_ msghead,9);
USART3_Send_str(B2G_NDsta_send_ msgbody,18);

最后

以上就是光亮钻石最近收集整理的关于IIC通信进行数据传输的温湿度传感器的全部内容,更多相关IIC通信进行数据传输内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部