【上海航芯 ACM32F070开发板+触控功能评估板测评】+环境光照强度检测
[复制链接]
本帖最后由 jinglixixi 于 2022-10-24 19:02 编辑
BH1750是一款环境光照强度检测器件,它是以I2C接口来工作。相较于I2C接口的OLED屏驱动来说,它会稍为复杂些。因为OLED屏的显示驱动,只是以输出的模式来发送数据,而BH1750则是既发送数据,又接收数据,需要在不同的使用阶段加以相应地模式切换。
BH1750所使用的引脚为:
PD4---SCL
PD6---SDA
设置BH1750为输入模式的函数为:
void IIC_INPUT_MODE()
{
GPIOD_Handle.Pin = GPIO_PIN_6;
GPIOD_Handle.Mode = GPIO_MODE_INPUT;
GPIOD_Handle.Pull = GPIO_PULLUP;
GPIOD_Handle.Alternate = GPIO_FUNCTION_0;
HAL_GPIO_Init(GPIOD, &GPIOD_Handle);
}
设置BH1750为输出模式的函数为:
void IIC_OUTPUT_MODE()
{
GPIOD_Handle.Pin = GPIO_PIN_6;
GPIOD_Handle.Mode = GPIO_MODE_OUTPUT_PP;
GPIOD_Handle.Pull = GPIO_PULLUP;
GPIOD_Handle.Alternate = GPIO_FUNCTION_0;
HAL_GPIO_Init(GPIOD, &GPIOD_Handle);
}
BH1750发送字节数据的函数为:
void BH1750_SendByte(char data)
{
char i;
IIC_OUTPUT_MODE();
SCL_Clr();
SysTick_Delay_Us(2);
for (i=0;i<8;i++)
{
if(data&0x80) SDA_Set();
else SDA_Clr();
data <<= 1;
SCL_Set();
SysTick_Delay_Us(2);
SCL_Clr();
SysTick_Delay_Us(2);
}
}
BH1750接收字节数据的函数为:
char BH1750_RecvByte()
{
char i;
char data = 0;
IIC_INPUT_MODE();
for (i=0;i<8;i++)
{
SCL_Clr();
SysTick_Delay_Us(2);
SCL_Set();
data <<= 1;
SCL_Set();
if(IIC_SDA_IN) data|=0x01;
SysTick_Delay_Us(2);
}
SCL_Clr();
return data;
}
显示检测数据所使用的函数为:
void LCD_DisplayNum_YR1618A(uint32_t Num)
{
uint32_t ram_buff[4];
ram_buff[0]=0;
ram_buff[1]=0;
ram_buff[2]=0;
ram_buff[3]=0;
if(Num>9999) Num=9999; //4位数,最大显示9999
Get_RAM_NUM_DATA(ram_buff,Num,Num);
HAL_LCD_Write(&lcdhandle_YR1618A,0,ram_buff[0]);
HAL_LCD_Write(&lcdhandle_YR1618A,1,ram_buff[1]);
HAL_LCD_Write(&lcdhandle_YR1618A,2,ram_buff[2]);
HAL_LCD_Write(&lcdhandle_YR1618A,3,ram_buff[3]);
}
实现光强显示的函数为:
void Get_Sunlight_Value()
{
int dis_data=0;
float temp;
uint32_t sd;
Single_Write_BH1750(0x01);
Single_Write_BH1750(0x10);
SysTick_Delay_Us(180000);
Multiple_Read_BH1750();
dis_data=BUF[0];
dis_data=(dis_data<<8)+BUF[1];
temp=(float) dis_data/1.2;
sd=temp;
LCD_DisplayNum(sd);
}
环境光照强度检测的主程序为:
int main(void)
{
System_Init();
LCD_Config();
GPIO_config();
while(1)
{
Get_Sunlight_Value();
System_Delay_MS(500);
}
}
经程序的编译和下载,其检测效果如图1至图3所示。
图1 面向阳光检测
图2 常规检测
图3 遮光检测
|