標(biāo)題: HC32L072開發(fā)板驅(qū)動(dòng) I2C接口光照傳感器 [打印本頁]
作者: jinglixixi 時(shí)間: 2020-9-16 11:19
標(biāo)題: HC32L072開發(fā)板驅(qū)動(dòng) I2C接口光照傳感器
單有了顯示單元還只是解決了人機(jī)交互的部分問題,要讓機(jī)器具備感知能力就離不開傳感器。傳感器的種類有許多種,BH1750光照傳感器就是其中的一種,它是一種基于I2C接口的數(shù)字式傳感器,因此無需對(duì)獲取的數(shù)據(jù)進(jìn)行標(biāo)度處理。
該傳感器與MCU的連接關(guān)系如下:
SCL ---PB6
SDA---PB7
為使該傳感器工作,其相應(yīng)引腳輸出高低電平的語句為:
#define SCL_Set() Gpio_SetIO(GpioPortB, GpioPin6)
#define SCL_Clr() Gpio_ClrIO(GpioPortB, GpioPin6)
#define SDA_Set() Gpio_SetIO(GpioPortB, GpioPin7)
#define SDA_Clr() Gpio_ClrIO(GpioPortB, GpioPin7)
定義數(shù)據(jù)引腳為輸入、輸出功能的函數(shù)為:
- void IIC_INPUT_MODE_SET()
- {
- stc_gpio_cfg_t stcGpioCfg;
- Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
- stcGpioCfg.enDir = GpioDirIn;
- stcGpioCfg.enDrv = GpioDrvL;
- stcGpioCfg.enPu = GpioPuDisable;
- stcGpioCfg.enPd = GpioPdDisable;
- stcGpioCfg.enOD = GpioOdDisable;
- stcGpioCfg.enCtrlMode = GpioAHB;
- Gpio_Init(GpioPortB, GpioPin7, &stcGpioCfg);
- }
-
- void IIC_OUTPUT_MODE_SET()
- {
- stc_gpio_cfg_t stcGpioCfg;
- Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
- stcGpioCfg.enDir = GpioDirOut;
- stcGpioCfg.enPu = GpioPuDisable;
- stcGpioCfg.enPd = GpioPdEnable;
- Gpio_Init(GpioPortB, GpioPin7, &stcGpioCfg);
- }
復(fù)制代碼
BH1750的初始化函數(shù)為:
- void BH1750_Init(void)
- {
- stc_gpio_cfg_t stcGpioCfg;
- Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
- stcGpioCfg.enDir = GpioDirOut;
- stcGpioCfg.enPu = GpioPuDisable;
- stcGpioCfg.enPd = GpioPdEnable;
- Gpio_Init(GpioPortB, GpioPin6, &stcGpioCfg);
- Gpio_Init(GpioPortB, GpioPin7, &stcGpioCfg);
- }
復(fù)制代碼
獲取光照值得函數(shù)為:
- void Get_Sunlight_Value()
- {
- int dis_data=0;
- float temp;
- char i=0;
- unsigned int sd;
- Single_Write_BH1750(0x01);
- Single_Write_BH1750(0x10);
- delay1ms(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,2,sd,5,16);
- }
復(fù)制代碼
顯示演示效果的主函數(shù)為:
- int32_t main(void)
- {
- App_OLEDInit();
- OLED_Init();
- OLED_Clear();
- OLED_ShowString(0,0,"HC32l072_BH1750",16);
- OLED_ShowString(48,2,"lx",16);
- BH1750_Init();
- while (1)
- {
- Get_Sunlight_Value();
- delay1ms(1000);
- }
- }
復(fù)制代碼
經(jīng)程序的編譯和下載,其運(yùn)行效果如下圖所示。
1.jpg (25.38 KB, 下載次數(shù): 46)
下載附件
2020-9-16 11:17 上傳
光照度測量效果圖
演示代碼:
-
-
bh1750.rar
2020-9-16 11:18 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
6.27 KB, 下載次數(shù): 7, 下載積分: 黑幣 -5
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |