需要的硬件:STM32f103rct6开发板、BH1750光照传感器、IIC接口的0.96oled显示屏
使用BH1750光照传感器采集光照信息,然后通过oled显示屏显示光照值/lx
BH1750的硬件连接:
SCL——PC12
SDA——PC11
ADDR——GND (注:本程序AD地址为0x46为接地地址,如果把该引脚接VCC就需要修改bh1750.h文件中BH1750_Addr的值为0xB8,具体见数据手册P13)
oled显示屏的硬件连接:
SCL——PB0
SDA——PB1
电路原理图如下:
代码包含main.c、bh1750.h、bh1750.c、oled.h、oled.c、oledfont.h
制作出来的实物图如下:
程序如下:
bh1750.h
- #ifndef __BH1750_H
- #define __BH1750_H
- #include "sys.h"
-
- #define BH1750_OFF 0x00 //断电
- #define BH1750_Addr 0x46 //ALT ADDRESS引脚接地时地址为0x46,接电源时地址为0xB8
- #define BH1750_ON 0x01 //通电
- #define BH1750_CON 0x10 //连续H分辨率模式
- #define BH1750_ONE 0x20 //一次H分辨率模式
- #define BH1750_RSET 0x07 //重置
-
- //IO方向设置
- #define SDA_IN() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;}
- #define SDA_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;}
- //IO操作函数
- #define IIC_SCL PCout(12) //SCL
- #define IIC_SDA PCout(11) //SDA
- #define READ_SDA PCin(11) //输入SDA
- extern u32 result_lx;
- //IIC所有操作函数
- void IIC_Init(void); //初始化IIC的IO口
- void IIC_Start(void); //发送IIC开始信号
- void IIC_Stop(void); //发送IIC停止信号
- void IIC_Send_Byte(u8 txd); //IIC发送一个字节
- u8 IIC_Read_Byte(unsigned char ack);//IIC读取一个字节
- u8 IIC_Wait_Ack(void); //IIC等待ACK信号
- void IIC_Ack(void); //IIC发送ACK信号
- void IIC_NAck(void); //IIC不发送ACK信号
- void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data);
- u8 IIC_Read_One_Byte(u8 daddr,u8 addr);
- void Start_BH1750(void); //上电,设置清除数据寄存器
- void Read_BH1750(void); //连续的读取内部寄存器数据
- void Convert_BH1750(void);
- #endif
复制代码 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);
- }
- }
复制代码 由于oled相关程序过长,限于篇幅此处没有粘贴出来,如果需要可以下载以下工程文件。
工程文件夹如下:
Keil代码下载:
STM32f103RCT6+BH1750光照传感器+IIC通信oled显示.7z
(605.07 KB, 下载次数: 134)
|