|
前面介绍的温度大气压传感器相近,光照强度传感器BH1750也是一种I2C接口的器件。 除了具体的功能处理不同外,其它的基本差不多。 BH1750方式与接收字节数据的函数如下:
- void BH1750_SendByte(char data1)
- {
- char i;
- OUTPUT_MODE_SET();
- SCLK=0;
- Delay_us(2);
- for (i=0;i<8;i++)
- {
- if(data1&0x80) SDIN=1;
- else SDIN=0;
- data1 <<= 1;
- SCLK=1;
- Delay_us(2);
- SCLK=0;
- Delay_us(2);
- }
- }
- char BH1750_RecvByte()
- {
- char i;
- char data1 = 0;
- INPUT_MODE_SET();
- for (i=0;i<8;i++)
- {
- SCLK=0;
- Delay_us(2);
- SCLK=1;
- data1 <<= 1;
- SCLK=1;
- if(SDA_IN ) data1|=0x01;
- Delay_us(2);
- }
- SCLK=0;
- return data1;
- }
写入寄存器的函数为: - void Single_Write_BH1750(char REG_Address)
- {
- BH1750_Start();
- BH1750_SendByte(SlaveAddress);
- BH1750_RecvACK();
- BH1750_SendByte(REG_Address);
- BH1750_RecvACK();
- BH1750_Stop();
- }
读取BH1750数据的函数为:
- void Multiple_Read_BH1750()
- {
- BH1750_Start();
- BH1750_SendByte(SlaveAddress+1);
- BH1750_RecvACK();
- BUF[0] = BH1750_RecvByte();
- BH1750_SendACK(0);
- BUF[1] = BH1750_RecvByte();
- BH1750_SendACK(1);
- BH1750_Stop();
- Delay(5);
- }
读取并显示光照强度的函数为:
|