STM32文件传输远端服务器,STM32+DHT22+BH1750+8266透传数据到远端网络服务器

//*******************************************************

//BH1750FVI光照强度

//时间: 2020.4

//*******************************************************

#include "myiic.h"

#include "delay.h"

#include "bh1750.h"

#include "common.h"

void Cmd_Send_BH1750(u8 cmd)

{

IIC_Start();

IIC_Send_Byte(BH1750_Addr_Write);   //发送设备地址+写信号

while(IIC_Wait_Ack())

{;};

IIC_Send_Byte(cmd);    //写数据到内部寄存器地址

while(IIC_Wait_Ack())

{;};

IIC_Stop();

}

void BH1750_Start(void)

{

Cmd_Send_BH1750(BH1750_ON);

Cmd_Send_BH1750(BH1750_RSET);

Cmd_Send_BH1750(BH1750_OFF);

}

u8 BH1750_RecvByte(void)

{

u8 i;

u8 dat = 0;

SDA_IN();

//使能内部上拉,准备读取数据,

for (i=0; i<8; i++)         //8位计数器

{

dat <<= 1;

IIC_SCL = 1;                //拉高时钟线

delay_us(5);             //延时

dat |= READ_SDA;             //读数据

IIC_SCL = 0;                //拉低时钟线

delay_us(5);             //延时

}

return dat;

}

/**************************************

发送应答信号

入口参数:ack (0:ACK 1:NAK)

**************************************/

void BH1750_SendACK(u8 ack)

{

SDA_OUT();

IIC_SDA = ACK;                  //写应答信号

IIC_SCL = 1;                    //拉高时钟线

delay_us(5);                 //延时

IIC_SCL = 0;                    //拉低时钟线

delay_us(5);                 //延时

}

int BH1750_Read(void)

{

u8 BUF[3]={0};

u16 result=0;

u8 i=0;

//BH1750_Start();

IIC_Start();

IIC_Send_Byte(BH1750_Addr_Write);   //发送设备地址+写信号

while(IIC_Wait_Ack())

{;};

IIC_Send_Byte(BH1750_CON_1);

while(IIC_Wait_Ack())

{;};

IIC_Stop();

delay_ms(180);

IIC_Start();

IIC_Send_Byte(BH1750_Addr_Read);        //发送设备地址+读信号

while(IIC_Wait_Ack())

{;};

for (i=0; i<2; i++)                    //连续读取6个地址数据,存储中BUF

{

BUF[i] = BH1750_RecvByte();          //BUF[0]存储0x32地址中的数据

if (i == 2)

{

BH1750_SendACK(1);                //最后一个数据需要回NOACK

IIC_Stop();

}

else

{

BH1750_SendACK(0);                //回应ACK

}

}

delay_ms(5);

result = BUF[0];

light_intensity = ((result<<8)+BUF[1])/1.2;

light_intensity = light_intensity - (light_intensity%1);

return light_intensity;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值