打印
[活动专区]

【AutoChips MCU评测报告】+BH1750光强检测

[复制链接]
1199|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2020-6-12 07:51 编辑

BH1750是一款可测量光强的I2C器件,它具有体积小,并于使用的特点。

BH1750与MCU的连接关系为:
SCL——PA7
SDA——PA8

为了使 BH1750工作,它的SDA接 PB8,SCLA接 PB7,所作的相关定义语句如下:
#define IIC_SDA_IN                 GPIO_GetPinValue(GPIO_PA8)

#define IIC_INPUT_MODE_SET()       GPIO_SetDir(GPIO_PA8, 0)
#define IIC_OUTPUT_MODE_SET()   GPIO_SetDir(GPIO_PA8, 1)

#define SCL_Set()        GPIO_SetPinBits(GPIO_PA7)      // PA7
#define SCL_Clr()        GPIO_ResetPinBits(GPIO_PA7)        

#define SDA_Set()       GPIO_SetPinBits(GPIO_PA8)      // PA8
#define SDA_Clr()       GPIO_ResetPinBits(GPIO_PA8)

#define IIC_WRITE      0     
#define IIC_READ       1     
#define        SlaveAddress   0x46

相关辅助函数有:
void BH1750_Start()
{
IIC_OUTPUT_MODE_SET();
SDA_Set();         
SCL_Set();         
udelay(5);            
SDA_Clr();        
udelay(5);            
SCL_Clr();           
}

void BH1750_Stop()
{
IIC_OUTPUT_MODE_SET();
SDA_Clr();
SCL_Set();
udelay(5);
SDA_Set();
udelay(5);
}

void BH1750_SendACK(char ack)
{
IIC_OUTPUT_MODE_SET();  
SCL_Clr();
if(ack) SDA_Set();
else SDA_Clr();
udelay(2);           
SCL_Set();           
udelay(5);           
SCL_Clr();           
}

BH1750初始化函数:
void BH1750_Init(void)
{
GPIO_SetDir(GPIO_PA7, 1);
GPIO_SetDir(GPIO_PA8, 1);
}

读取光强的函数为:
void Get_Sunlight_Value()
{
int dis_data=0;
float temp;
char i=0;
unsigned int sd;
Single_Write_BH1750(0x01);
Single_Write_BH1750(0x10);
mdelay(180);
Multiple_Read_BH1750();
for(i=0;i<3;i++)
dis_data=BUF[0];
dis_data=(dis_data<<8)+BUF[1];
temp=(float)dis_data/1.2;
sd=temp;
OLED_ShowNum(0,4,sd,5,16);
}

实现图示效果的主程序为:
int main(void)
{
InitDelay();
OLED_Init();
OLED_Clear();
OLED_ShowString(0,0,"AC8711 TEST",16);
OLED_ShowString(0,2,"BH1750:",16);
OLED_ShowString(48,4,"lx",16);
BH1750_Init();
while (1)
{
Get_Sunlight_Value();
mdelay(1000);
}

}

光强显示效果图

使用特权

评论回复

相关帖子

沙发
Cjy_JDxy| | 2020-6-11 14:46 | 只看该作者
小模块真多,感觉你可以获奖

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2020-6-11 15:20 | 只看该作者
本帖最后由 jinglixixi 于 2020-6-11 15:22 编辑
Cjy_JDxy 发表于 2020-6-11 14:46
小模块真多,感觉你可以获奖

哈哈,但愿吧那就又可以增添些小模块了,如测PM2.5的模块、6轴检测模块、激光测距模块等,会更有意思的!也能够与大家分享更多的内容,以拓展设计的思路和实现方式。

使用特权

评论回复
地板
wowu| | 2020-7-7 14:31 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
5
xiaoqizi| | 2020-7-7 14:34 | 只看该作者
如何验证数值的正确性呢

使用特权

评论回复
6
木木guainv| | 2020-7-7 14:34 | 只看该作者
恶劣环境下可以使用吗

使用特权

评论回复
7
磨砂| | 2020-7-7 14:34 | 只看该作者
代码非常详细

使用特权

评论回复
8
晓伍| | 2020-7-7 14:35 | 只看该作者
楼主辛苦了

使用特权

评论回复
9
jinglixixi|  楼主 | 2020-7-8 00:18 | 只看该作者
xiaoqizi 发表于 2020-7-7 14:34
如何验证数值的正确性呢

它是数字化产品,采用的是出产标称值,是个人难达到的。

使用特权

评论回复
10
jinglixixi|  楼主 | 2020-7-8 00:21 | 只看该作者
木木guainv 发表于 2020-7-7 14:34
恶劣环境下可以使用吗

只要保证没有强的电、磁场,应该问题不大,当然也不能对器件有直接腐蚀、浸泡等的损伤了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

464

主题

2780

帖子

38

粉丝