bh1750光照传感器代码stc15w
时间: 2023-06-24 14:08:45 浏览: 129
以下是使用STC15W微控制器读取BH1750光照传感器的示例代码:
```
#include "reg51.h"
#include "intrins.h"
typedef unsigned char uchar;
typedef unsigned int uint;
sbit SDA = P2^0;
sbit SCL = P2^1;
void Delay5us(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void Start()
{
SDA = 1;
Delay5us();
SCL = 1;
Delay5us();
SDA = 0;
Delay5us();
SCL = 0;
Delay5us();
}
void Stop()
{
SDA = 0;
Delay5us();
SCL = 1;
Delay5us();
SDA = 1;
Delay5us();
}
void WriteByte(uchar dat)
{
uchar i, temp;
for (i = 0; i < 8; i++)
{
temp = dat & 0x80;
SDA = temp >> 7;
dat <<= 1;
Delay5us();
SCL = 1;
Delay5us();
SCL = 0;
Delay5us();
}
SDA = 1;
Delay5us();
SCL = 1;
Delay5us();
temp = SDA;
SCL = 0;
Delay5us();
}
uchar ReadByte()
{
uchar i, dat = 0;
SDA = 1;
Delay5us();
for (i = 0; i < 8; i++)
{
dat <<= 1;
SCL = 1;
Delay5us();
dat |= SDA;
SCL = 0;
Delay5us();
}
return dat;
}
void Init_BH1750()
{
Start();
WriteByte(0x46);
Stop();
Delay5us();
Start();
WriteByte(0x40);
Stop();
}
uint Read_BH1750()
{
uint dat;
Start();
WriteByte(0x40);
Stop();
Delay5us();
Start();
WriteByte(0x01);
Stop();
Delay5us();
Start();
dat = ReadByte();
dat <<= 8;
dat |= ReadByte();
Stop();
dat = dat * 10 / 12;
return dat;
}
void main()
{
uint lux;
Init_BH1750();
while (1)
{
lux = Read_BH1750();
// 进行相应的处理
}
}
```
其中,函数`Init_BH1750()`用于初始化BH1750传感器,函数`Read_BH1750()`用于读取BH1750传感器的光照强度值。在`main()`函数中可以调用这两个函数来获取光照强度值,并进行相应的处理。注意,此代码仅供参考,具体实现需要根据实际情况进行调整。
阅读全文