|
需要的硬件:STM32f103rct6開發(fā)板、BH1750光照傳感器、IIC接口的0.96oled顯示屏
使用BH1750光照傳感器采集光照信息,然后通過oled顯示屏顯示光照值/lx
BH1750的硬件連接:
SCL——PC12
SDA——PC11
ADDR——GND (注:本程序AD地址為0x46為接地地址,如果把該引腳接VCC就需要修改bh1750.h文件中BH1750_Addr的值為0xB8,具體見數(shù)據(jù)手冊(cè)P13)
oled顯示屏的硬件連接:
SCL——PB0
SDA——PB1
電路原理圖如下:
GY-302原理圖.jpg (44.92 KB, 下載次數(shù): 73)
下載附件
2022-3-10 20:50 上傳
代碼包含main.c、bh1750.h、bh1750.c、oled.h、oled.c、oledfont.h
制作出來(lái)的實(shí)物圖如下:
測(cè)試視頻.gif (4.66 MB, 下載次數(shù): 64)
下載附件
2022-3-10 15:59 上傳
程序如下:
bh1750.h
- #ifndef __BH1750_H
- #define __BH1750_H
- #include "sys.h"
-
- #define BH1750_OFF 0x00 //斷電
- #define BH1750_Addr 0x46 //ALT ADDRESS引腳接地時(shí)地址為0x46,接電源時(shí)地址為0xB8
- #define BH1750_ON 0x01 //通電
- #define BH1750_CON 0x10 //連續(xù)H分辨率模式
- #define BH1750_ONE 0x20 //一次H分辨率模式
- #define BH1750_RSET 0x07 //重置
-
- //IO方向設(shè)置
- #define SDA_IN() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;}
- #define SDA_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;}
- //IO操作函數(shù)
- #define IIC_SCL PCout(12) //SCL
- #define IIC_SDA PCout(11) //SDA
- #define READ_SDA PCin(11) //輸入SDA
- extern u32 result_lx;
- //IIC所有操作函數(shù)
- void IIC_Init(void); //初始化IIC的IO口
- void IIC_Start(void); //發(fā)送IIC開始信號(hào)
- void IIC_Stop(void); //發(fā)送IIC停止信號(hào)
- void IIC_Send_Byte(u8 txd); //IIC發(fā)送一個(gè)字節(jié)
- u8 IIC_Read_Byte(unsigned char ack);//IIC讀取一個(gè)字節(jié)
- u8 IIC_Wait_Ack(void); //IIC等待ACK信號(hào)
- void IIC_Ack(void); //IIC發(fā)送ACK信號(hào)
- void IIC_NAck(void); //IIC不發(fā)送ACK信號(hào)
- void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data);
- u8 IIC_Read_One_Byte(u8 daddr,u8 addr);
- void Start_BH1750(void); //上電,設(shè)置清除數(shù)據(jù)寄存器
- void Read_BH1750(void); //連續(xù)的讀取內(nèi)部寄存器數(shù)據(jù)
- void Convert_BH1750(void);
- #endif
復(fù)制代碼 bh1750.c
main.c
- #include "led.h"
- #include "oled.h"
- #include "bh1750.h"
- #include "sys.h"
- #include "delay.h"
- int main(void)
- {
- delay_init();
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- OLED_Init();
- IIC_Init();
- LED_Init();
- OLED_Clear();
- OLED_Refresh();
- //Start_BH1750();
- while(1)
- {
- Start_BH1750();
- Read_BH1750();
- Convert_BH1750();
- Convert_BH1750();
- OLED_ShowString(0,2,"lightval:",12);
- OLED_ShowNum(60,2,result_lx,6,12);
- OLED_ShowString(110,2,"lx",12);
- OLED_Refresh();
- LED0=!LED0;
- delay_ms(200);
- }
- }
復(fù)制代碼 由于oled相關(guān)程序過長(zhǎng),限于篇幅此處沒有粘貼出來(lái),如果需要可以下載以下工程文件。
工程文件夾如下:
工程文件夾.png (23.34 KB, 下載次數(shù): 54)
下載附件
2022-3-10 16:06 上傳
Keil代碼下載:
STM32f103RCT6+BH1750光照傳感器+IIC通信oled顯示.7z
(605.07 KB, 下載次數(shù): 134)
2022-3-10 20:49 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|