標題:
STM32單片機BH1750_OLED動態(tài)顯示程序
[打印本頁]
作者:
Talon.
時間:
2022-3-27 17:58
標題:
STM32單片機BH1750_OLED動態(tài)顯示程序
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "bh1750.h"
#include "oled.h"
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//設(shè)置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
delay_init(); //延時函數(shù)初始化
uart_init(115200); //串口初始化為115200
Light_Init();
bh_data_send(BHPowOn);
bh_data_send(BHReset);
bh_data_send(BHModeH1); //選擇的是分辨率是4lx,測量時間是16ms的
delay_ms(100);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
// NVIC_Configuration(); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級 LED_Init(); //LED端口初始化
// delay_ms(8000);
OLED_Clear();
OLED_Init(); //初始化OLED
while(1)
{
// OLED_Clear();
printf("%d \n",bh_data_read());
OLED_SHOW_BH1750(); //OLED動態(tài)顯示BH1750光照數(shù)值
}
}
復(fù)制代碼
#include "delay.h"
#include "bh1750.h"
#include "oled.h"
typedef unsigned char BYTE;
//BYTE BUF[8]; //接收數(shù)據(jù)緩存區(qū)
//iic接口初始化
void Single_Write_BH1750(uchar REG_Address)
{
IIC_Start(); //起始信號
IIC_Send_Byte(BHAddWrite); //發(fā)送設(shè)備地址+寫信號
IIC_Send_Byte(REG_Address); //內(nèi)部寄存器地址,
// BH1750_SendByte(REG_data); //內(nèi)部寄存器數(shù)據(jù),
IIC_Stop(); //發(fā)送停止信號
}
void Light_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能A端口時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB10,11
GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);
Single_Write_BH1750(0x01);
}
/*************************************************************************************/
void bh_data_send(u8 command)
{
do{
IIC_Start(); //iic起始信號
IIC_Send_Byte(BHAddWrite); //發(fā)送器件地址
}while(IIC_Wait_Ack()); //等待從機應(yīng)答
IIC_Send_Byte(command); //發(fā)送指令
IIC_Wait_Ack(); //等待從機應(yīng)答
IIC_Stop(); //iic停止信號
}
u16 bh_data_read(void)
{
u16 buf;
IIC_Start(); //iic起始信號
IIC_Send_Byte(BHAddRead); //發(fā)送器件地址+讀標志位
IIC_Wait_Ack(); //等待從機應(yīng)答
buf=IIC_Read_Byte(1); //讀取數(shù)據(jù)
buf=buf<<8; //讀取并保存高八位數(shù)據(jù)
buf+=0x00ff&IIC_Read_Byte(0); //讀取并保存第八位數(shù)據(jù)
IIC_Stop(); //發(fā)送停止信號
return buf;
}
void OLED_SHOW_BH1750(void)
{
OLED_ShowChar(0,0,'L',16);
OLED_ShowChar(8,0,'U',16);
OLED_ShowChar(18,0,'X',16);
OLED_ShowChar(25,0,':',16);
if(bh_data_read() > 65200)
{
OLED_ShowChar(32,0,'E',16);
OLED_ShowChar(40,0,'R',16);
OLED_ShowChar(48,0,'R',16);
OLED_ShowChar(56,0,'O',16);
OLED_ShowChar(64,0,'R',16);
delay_ms(500);
OLED_Clear();
}
else if(bh_data_read() > 10000 && bh_data_read() < 65200)
{
OLED_ShowNum(32,0,bh_data_read() % 100000 / 10000,1,16);
OLED_ShowNum(40,0,bh_data_read() % 10000 / 1000 ,1,16);
OLED_ShowNum(48,0,bh_data_read() % 1000 / 100 ,1,16);
OLED_ShowNum(56,0,bh_data_read() % 100 / 10 ,1,16);
OLED_ShowNum(64,0,bh_data_read() % 10 ,1,16);
}
else if(bh_data_read() > 1000 && bh_data_read() < 10000)
{
OLED_ShowChar(32,0,' ',16);
OLED_ShowNum(40,0,bh_data_read() % 10000 / 1000 ,1,16);
OLED_ShowNum(48,0,bh_data_read() % 1000 / 100 ,1,16);
OLED_ShowNum(56,0,bh_data_read() % 100 / 10 ,1,16);
OLED_ShowNum(64,0,bh_data_read() % 10 ,1,16);
}
else if(bh_data_read() > 100 && bh_data_read() < 1000)
{
OLED_ShowChar(32,0,' ',16);
OLED_ShowChar(40,0,' ',16);
OLED_ShowNum(48,0,bh_data_read() % 1000 / 100 ,1,16);
OLED_ShowNum(56,0,bh_data_read() % 100 / 10 ,1,16);
OLED_ShowNum(64,0,bh_data_read() % 10 ,1,16);
}
else if(bh_data_read() > 10 && bh_data_read() < 100)
{
OLED_ShowChar(32,0,' ',16);
OLED_ShowChar(40,0,' ',16);
OLED_ShowChar(48,0,' ',16);
OLED_ShowNum(56,0,bh_data_read() % 100 / 10 ,1,16);
OLED_ShowNum(64,0,bh_data_read() % 10 ,1,16);
}
else if(bh_data_read() < 10)
{
OLED_ShowChar(32,0,' ',16);
OLED_ShowChar(40,0,' ',16);
OLED_ShowChar(48,0,' ',16);
OLED_ShowChar(56,0,' ',16);
OLED_ShowNum(64,0,bh_data_read() % 10 ,1,16);
}
// else break;
delay_ms(100);
}
復(fù)制代碼
Keil代碼下載:
STM32_BH1750_OLED動態(tài)顯示.7z
(192.77 KB, 下載次數(shù): 48)
2022-4-3 02:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1