BH1750FVI光强度传感器IC系列中文翻译
- 格式:pdf
- 大小:1.32 MB
- 文档页数:17
摘要BH1750是一款新型的测光芯片,本设计系统就是基于BH1750设计的测光系统,它可以自动检测光照强度的强弱并显示让人们知道此时光照强度的强弱。
人们可以通过看此装置的显示了解现在的光照状态,做合理的光照调节。
该设计可分为三部分:即光照检测部分、信号处理部分、光强显示部分。
对于光照检测部分是利用BH1750作为检测元件及信号处理元件,其内部集成了AD转换芯片。
它可以完成从光强到电信号的转换并将信号处理进行处理。
对输入信号处理后,就可以用来显示了。
对于显示部分可利用LCD1602来显示,不同的光强对应于不同的数值,就能简单的显示出不同的光强了。
本设计就是由单片机STC89C52RC芯片,BH1750模块和1602液晶为核心,辅以必要的电路,构成了一个单片机光照强度检测系统。
该光照强度检测系统可以通过检测光照强度,使得光照在低于或高于一定强度的时候发出警示,是一种常用的测试仪器。
关键词:51单片机,LM7805,BH1750,1602液晶目录0 引言 (1)1设计内容与要求 (1)1.1 设计任务 (1)1.2 设计要求 (1)2 方案总体设计 (1)2.1 光照强度采集方案设计 (2)2.2 控制芯片及实现方案 (3)2.3 数据显示方案 (3)2.4 系统总体框图 (4)3 硬件设计 (5)3.1 单片机最小系统 (5)3.2 BH1750采集模块 (6)3.3 液晶显示模块 (6)3.4 系统电源 (7)3.5 整体电路和PCB图 (8)4 软件设计 (9)4.1 keil软件介绍 (9)4.2 程序流程图 (10)4.3 各模块程序 (10)5 仿真与实现 (15)5.1 Proteus软件介绍 (15)5.2 仿真过程 (16)5.3 实物制作与调试 (17)6 总结 (18)7 参考文献 (19)0 引言随着改革开放的不断深化和城镇化的不断发展,越来越多的人移居到城市生活,而这需要足够的食物作为支撑。
bh1750FVI中文数据手册对于硬件开发者和制造商而言,BH1750FVI数字光照传感器是一个重要的元器件,其广泛应用于智能家居、智能照明、智能车辆以及各种智能设备中。
随着市场需求的不断增长,越来越多的开发者和制造商开始关注BH1750FVI数字光照传感器。
在使用这种传感器之前,了解其数据手册是非常必要的,本文就是一篇介绍BH1750FVI数字光照传感器中文数据手册的文章。
一、BH1750FVI简介BH1750FVI数字光照传感器是测量环境的光照强度的数字传感器,它能够通过I2C接口与MCU连接,输出数字信号。
该传感器采用亮度校准和温度校准的先进技术,能够在各种光线条件下提供准确的光照测量结果。
其超小的封装和低功耗特性,使得它成为了广泛应用于各种便携式智能设备、LED照明以及室内智能家居与办公环境的理想选择。
二、BH1750FVI特性BH1750FVI传感器特性如下:1.补偿功能:传感器采用了先进亮度校准和温度校准技术,能够提供高精度的光照测量结果。
2.数字接口:传感器具有I2C数字接口,可与微控制器(MCU)直接连接。
3.全面量程:传感器测量范围为0到65535(等于0.11到100000lx)。
4.低功耗特性:传感器在低功耗模式下只需消耗1uA的电流。
5.小型封装:BH1750FVI使用极小的封装,可在小型的智能设备中使用。
以上特性是BH1750FVI数字光照传感器非常重要的功能点。
三、BH1750FVI使用方法BH1750FVI数字光照传感器使用方法如下:1.将传感器连接到MCU的I2C总线上,并在MCU中使用相应的库函数初始化传感器。
2.读取传感器的光照强度值,这个值是一个16位的数字数据,可以直接在MCU上进行处理。
3.将读取到的数据转换为光照强度值(单位lx),具体转换公式可以参考BH1750FVI数据手册。
4.根据应用场景灵活调整读数器的分辨率和采样率。
四、BH1750FVI数据手册在使用BH1750FVI数字光照传感器的过程中,数据手册是非常重要的参考资料,其详细介绍了该传感器的特性和使用方法。
//使用时,用户只需更改GPIO_Pin_14、GP IO_Pi n_15这两个引脚,并在主函数里面调用此函数即可。
voidBH1750_Get_Guan g( fl oat *Zhaod u)#inclu de "s tm32f10x_l ib.h"#d efine uc har u nsign ed ch ar#d efine ui nt un signe d int#de fine Dat aPort P0 //LCD1602数据端口#defi ne Slave Addre ss 0x46//定义器件在IIC总线中的从地址,根据ALT ADDRE SS 地址引脚不同修改 //AL T AD DRESS引脚接地时地址为0x46,接电源时地址为0xB8#def ine B H1750_SCL GPI O_Pin_14 #de fineBH1750_SDA GP IO_Pi n_15//#d efine GPIO_I2C GPIO B#d efine BH1750_SC L_0() GP IOF->BRR=B H1750_SCL#defi ne BH1750_SCL_1() GPIOF->BSR R=BH1750_S CL#d efine BH1750_SD A_0() GP IOF->BRR=B H1750_SDA#defi ne BH1750_SDA_1() GPIOF->BSR R=BH1750_S DA#d efine BH1750_SD A_STA TE() (GPI OF->I DR&BH1750_SDA) //{retur n (GP IOB->IDR & PIN_SDA)!= 0; }typ edef uns igned char BYTE;typ edef uns igned shor t WOR D;BYTE BU F[8];//接收数据缓存区uch ar ge,sh i,bai,qian,wan; //显示变量i nt dis_data; //变量void Init_BH1750(vo id);voidconve rsion(uint temp_data);vo id S ingle_Writ e_BH1750(u charREG_A ddres s); //单个写入数据uch ar Si ngle_Read_BH1750(uch ar RE G_Add ress); //单个读取内部寄存器数据void Mul tiple_Read_BH1750(vo id);//连续的读取内部寄存器数据//------------------------------------u8BH1750_Sta rt(vo id);v oid B H1750_Stop(void); u8 B H1750_Send Byte(u8 Da ta);u8BH1750_Rec eiveB yte(v oid);vo id BH1750_SendA CK(vo id);voi d BH1750_S endNA CK(vo id);voidBH1750_Nop(void );v oid B H1750_Dela y(uns igned intk) ;//-----------------------------------u8 BH1750_A CK =0;u8 BH1750_RE ADY =0;u8BH1750_NAC K =1; u8 B H1750_BUS_BUSY =2;u8 BH1750_B US_ER ROR =3;u8 BH1750_R ETRY_COUNT = 3; //重试次数vo id BH1750_Nop(v oid){ u8 i=50;whi le(i)i--; }v oid B H1750_Dela y(uns igned intk){un signe d int i,j;for(i=0;i<k;i++){for(j=0;j<121;j++);} }/******************************************************************************** 函数名称:IIC_STAR T *描述:发送启动** 输入:无*输出:无* 返回:无* 作者: *修改日期:2010年6月8日************************************************************************ *******/u8 BH1750_St art(v oid){ BH1750_SDA_1(); BH1750_Nop();BH1750_SC L_1(); BH1750_No p();if(!B H1750_SDA_STATE()) { ////Deb ugPri nt("T WI_ST ART:B USY\n"); r eturn BH1750_BU S_BUS Y; } BH1750_SD A_0();BH1750_Nop();BH1750_SCL_0();BH1750_No p();if(BH1750_SDA_STAT E()){////De bugPr int("TWI_S TART:BUS E RROR\n");retur n BH1750_B US_ER ROR;}re turnBH1750_REA DY; } /* --------------------------------------------------------------------------*/ /*** @Br ief: IIC_STOP*//* --------------------------------------------------------------------------*/ voidBH1750_Sto p(voi d) {BH1750_SDA_0();BH1750_Nop(); BH1750_SCL_1(); BH1750_Nop(); BH1750_S DA_1(); BH1750_No p();//////D ebugP rint("TWI_STOP\n");} /* --------------------------------------------------------------------------*/ /** * @Brief: II C_Sen dACK*//* --------------------------------------------------------------------------*/ voidBH1750_Sen dACK(void){BH1750_SDA_0(); BH1750_N op();B H1750_SCL_1();BH1750_Nop();BH1750_SCL_0();BH1750_Nop(); BH1750_SDA_1(); //////De bugPr int("TWI_S endAC K\n"); }/* --------------------------------------------------------------------------*//*** @Bri ef: IIC_S endNA CK */ /* --------------------------------------------------------------------------*/ vo id BH1750_SendN ACK(v oid){ BH1750_S DA_1(); BH1750_No p();BH1750_SCL_1(); BH1750_N op();B H1750_SCL_0();B H1750_Nop(); //////Deb ugPri nt("T WI_Se ndNAC K\n"); }/* --------------------------------------------------------------------------*//*** @Br ief: TWI_SendB yte * * @Param: Dat a** @Ret urns:*/ /* --------------------------------------------------------------------------*/u8 BH1750_Se ndByt e(u8Data){u8 i; BH1750_S CL_0(); for(i=0;i<8;i++) { //---------数据建立----------if(Da ta&0x80) {BH1750_SDA_1();} else{ BH1750_S DA_0(); } D ata<<=1; BH1750_Nop(); //---数据建立保持一定延时---- //----产生一个上升沿[正脉冲] BH1750_SC L_1(); BH1750_No p();B H1750_SCL_0();B H1750_Nop();//延时,防止S CL还没变成低时改变SDA,从而产生ST ART/S TOP信号 //---------------------------}//接收从机的应答BH1750_SDA_1(); BH1750_Nop();BH1750_SCL_1();B H1750_Nop(); i f(BH1750_S DA_ST ATE()){ BH1750_SC L_0(); BH1750_SD A_1(); //////Deb ugPri nt("T WI_NA CK!\n"); r eturn BH1750_NA CK; } els e{ BH1750_SC L_0(); BH1750_SD A_1(); //////Deb ugPri nt("T WI_AC K!\n"); re turnBH1750_ACK; } }/* --------------------------------------------------------------------------*/ /** * @Brief: II C_Rec eiveB yte * * @Retur ns: *//* --------------------------------------------------------------------------*/ u8 B H1750_Rece iveBy te(vo id) { u8 i,Dat;B H1750_SDA_1();BH1750_SCL_0(); Da t=0;fo r(i=0;i<8;i++){B H1750_SCL_1();//产生时钟上升沿[正脉冲],让从机准备好数据B H1750_Nop(); Da t<<=1; if(B H1750_SDA_STATE()) //读引脚状态{ D at|=0x01;} B H1750_SCL_0();//准备好再次接收数据BH1750_Nop();//等待数据准备好}//////Debug Print("TWI_Dat:%x\n",Dat); retu rn Da t; }//*********************************************************//voi d con versi on(ui nt te mp_da ta) // 数据转换出个,十,百,千,万//{ // wan=temp_data/10000+0x30 ;// temp_data=temp_data%10000; //取余运算// q ian=t emp_d ata/1000+0x30 ;// tem p_dat a=tem p_dat a%1000; //取余运算//b ai=te mp_da ta/100+0x30 ;// tem p_dat a=tem p_dat a%100; //取余运算//s hi=te mp_da ta/10+0x30;// tem p_dat a=tem p_dat a%10; //取余运算//g e=tem p_dat a+0x30; //}//*********************************void Sing le_Wr ite_B H1750(ucha r REG_Addr ess){ BH1750_St art(); //起始信号BH1750_Sen dByte(Slav eAddr ess); //发送设备地址+写信号BH1750_Sen dByte(REG_Addre ss); //内部寄存器地址, // BH1750_Sen dByte(REG_data); //内部寄存器数据, BH1750_Stop(); //发送停止信号}//********单字节读取*****************************************/*uc har S ingle_Read_BH1750(uc har R EG_Ad dress){ uchar REG_data;BH1750_Sta rt(); //起始信号 BH1750_S endBy te(Sl aveAd dress); //发送设备地址+写信号BH1750_Sen dByte(REG_Addre ss); //发送存储单元地址,从0开始B H1750_Star t();//起始信号 BH1750_Se ndByt e(Sla veAdd ress+1); //发送设备地址+读信号R EG_da ta=BH1750_RecvB yte(); //读出寄存器数据BH1750_Se ndACK(1);B H1750_Stop(); //停止信号 retu rn RE G_dat a;}*///*********************************************************////连续读出BH1750内部数据////*********************************************************voi d Mul tiple_Read_BH1750(vo id){ uc har i; BH1750_S tart(); //起始信号B H1750_Send Byte(Slave Addre ss+1); //发送设备地址+读信号for (i=0; i<3; i++) //连续读取2个地址数据,存储中B UF { BUF[i] = BH1750_Re ceive Byte(); //B UF[0]存储0x32地址中的数据 if (i ==3) {BH1750_Sen dNACK(); //最后一个数据需要回NOACK}e lse { BH1750_Se ndACK(); //回应AC K}} BH1750_St op(); //停止信号 //D elay5ms();BH1750_D elay(500);}//初始化BH1750,根据需要请参考pdf进行修改****voi d Ini t_BH1750(){ Sing le_Wr ite_B H1750(0x01); }//*********************************************************//在主程序内调用本函数********//*********************************************************v oid B H1750_Get_Guang( flo at *Z haodu){ BH1750_Delay(100) ; //延时100m sI nit_B H1750(); //初始化BH1750Singl e_Wri te_BH1750(0x01); // pow er onSingl e_Wri te_BH1750(0x10); // H-resol ution mode BH1750_De lay(200) ;//延时180msM ultip le_Re ad_BH1750(); //连续读出数据,存储在BUF中 dis_data=BUF[0]; dis_data=(dis_data<<8)+BUF[1];//合成数据,即光照数据*Zhaod u=(fl oat)d is_da ta/1.2;}。
GY-30数字光模块
SENSOR:BH1750FVI
特点
1)I2C总线接口(f/s模式支持)
2)光谱的范围是人眼相近
3)照度数字转换器
4)宽范围和高分解.(1-65535勒克斯)
5)低电流关机功能
6)50Hz/60Hz光噪声reject-function
7)1.8V逻辑输入接口
8)无需任何外部零件
9)光源的依赖性不大.(例如白炽灯.荧光灯.卤素灯.白LED.孙光)
10)是有可能的选择2类型的I C slave-address.
11)可调的光学窗口测量结果的影响
(它可以探测分钟.使用本功能0.11勒克斯,最大.100000勒克斯).
12)小测变异(+/-20%)
13)的红外线的影响很小
应用
手机,LCD TV,注意PC,便携式游戏机,数码相机,数码摄像机,车载导航,PDA,LCD显示
Pin Function Descriptions
Pin引脚名称描叙
1VCC供给电压3-5v
2SCL IIC总线时钟线
3SDA IIC总线数据线
4ADDR IIC地址引脚
5GND电源地
Table:
名称描叙
供给电压3~5V
供给电流200uA
接口IIC
工作温度-40°~85°
尺寸(长*宽*高)32.6mm×15.2mm×11.6mm。