GY-30感光模块_第1页
GY-30感光模块_第2页
GY-30感光模块_第3页
GY-30感光模块_第4页
GY-30感光模块_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字光强度检测模块:GY-30采用ROHM原装BH1750FVI芯片供电电源 :3-5v光照度范围:0-65535 lx传感器内置16bitAD转换器直接数字输出,省略复杂的计算,省略标定不区分环境光源接近于视觉灵敏度的分光特性可对广泛的亮度进行1勒克斯的高精度测定标准NXP IIC通信协议模块内部包含通信电平转换,与5v单片机io直接连接送STC 51 C语言测试代码送AVR M16 C语言测试代码有关知识背景1967年法国第十三届国际计量大会规定了以坎德拉、坎德拉/平方米、流明、勒克斯分别作为发光强度、光亮度、光通量和光照度等的单位,为统一工程技术中使用的光学度量单位有重要意义。为使您了解和使用便利,以下将有关知识做一简单介绍:1.candela的定义1.烛光、国际烛光、坎德拉(candela)的定义在每平方米101325牛顿的标准大气压下,面积等于1/60平方厘米的绝对“黑体”(即能够吸收全部外来光线而毫无反射的理想物体),在纯铂(Pt)凝固温度(约2042K获1769)时,沿垂直方向的发光强度为1 坎德拉。并且,烛光、国际烛光、坎德拉 三个概念是有区别的,不宜等同。从数量上看,60 坎德拉等于58.8国际烛光,亥夫纳灯的1烛光等于0.885国际烛光或0.919坎德拉。2.发光强度与光亮度发光强度简称光强,国际单位是candela(坎德拉)简写cd。Lcd是指光源在指定方向的单位立体角内发出的光通量。光源辐射是均匀时,则光强为I=F/,为立体角,单位为球面度(sr),F为光通量,单位是流明,对于点光源由I=F/4 。光亮度是表示发光面明亮程度的,指发光表面在指定方向的发光强度与垂直且指定方向的发光面的面积之比,单位是坎德拉/平方米。对于一个漫散射面,尽管各个方向的光强和光通量不同,但各个方向的亮度都是相等的。电视机的荧光屏就是近似于这样的漫散射面,所以从各个方向上观看图像,都有相同的亮度感。以下是部分光源的亮度值:单位cd/m²太阳:1.5*10 ;日光灯:(510)*10³;月光(满月):2.5*10³;黑白电视机荧光屏:120左右;彩色电视机荧光屏:80左右。3.光通量与流明光源所发出的光能是向所有方向辐射的,对于在单位时间里通过某一面积的光能,称为通过这一面积的辐射能通量。各色光的频率不同,眼睛对各色光的敏感度也有所不同,即使各色光的辐射能通量相等,在视觉上并不能产生相同的明亮程度,在各色光中,黄、绿色光能激起最大的明亮感觉。如果用绿色光作水准,令它的光通量等于辐射能通量,则对其它色光来说,激起明亮感觉的本领比绿色光为小,光通量也小于辐射能通量。光通量的单位是流明,是英文lumen的音译,简写为lm。绝对黑体在铂的凝固温度下,从5.305*10³cm²面积上辐射出来的光通量为1lm。为表明光强和光通量的关系,发光强度为1坎德拉的点光源在单位立体角(1球面度)内发出的光通量为1流明。一只40W的日光灯输出的光通量大约是2100流明。4.光照度与勒克斯光照度可用照度计直接测量。光照度的单位是勒克斯,是英文lux的音译,也可写为lx。被光均匀照射的物体,在1平方米面积上得到的光通量是1流明时,它的照度是1勒克斯。有时为了充分利用光源,常在光源上附加一个反射装置,使得某些方向能够得到比较多的光通量,以增加这一被照面上的照度。例如汽车前灯、手电筒、摄影灯等。以下是各种环境照度值:单位lux黑夜:0.0010.02;月夜:0.020.3;阴天室内:550;阴天室外:50500;晴天室内:1001000;夏季中午太阳光下的照度:约为10*6次方;阅读书刊时所需的照度:5060;家用摄像机标准照度:1400相关知识:背景 1967年法国第十三届国际计量大会规定了以 坎德拉、坎德拉/平方米、流明、勒克斯分别作为发光强度、光亮度、光通量和光照度等的单位,为统一工程技术中使用的光学度量单位有重要意义。为使您了解和使用便利,以下将有关知识做一简单介绍:1. candela的定义1. 烛光、国际烛光、坎德拉(candela)的定义在每平方米101325牛顿的标准大气压下,面积等于1/60平方厘米的绝对“黑体”(即能够吸收全部外来光线而毫无反射的理想物体),在纯铂(Pt)凝固温度(约2042K获1769)时,沿垂直方向的发光强度为1 坎德拉。并且,烛光、国际烛光、坎德拉 三个概念是有区别的,不宜等同。从数量上看,60 坎德拉等于58.8国际烛光,亥夫纳灯的1烛光等于0.885国际烛光或0.919坎德拉。2. 发光强度与光亮度发光强度简称光强,国际单位是candela(坎德拉)简写cd。Lcd是指光源在指定方向的单位立体角内发出的光通量。光源辐射是均匀时,则光强为I=F/,为立体角,单位为球面度(sr),F为光通量,单位是流明,对于点光源由I=F/4 。光亮度是表示发光面明亮程度的,指发光表面在指定方向的发光强度与垂直且指定方向的发光面的面积之比,单位是坎德拉/平方米。对于一个漫散射面,尽管各个方向的光强和光通量不同,但各个方向的亮度都是相等的。电视机的荧光屏就是近似于这样的漫散射面,所以从各个方向上观看图像,都有相同的亮度感。以下是部分光源的亮度值:单位cd/m²太阳:1.5*10 ;日光灯:(510)*10³;月光(满月):2.5*10³;黑白电视机荧光屏:120左右;彩色电视机荧光屏:80左右。3. 光通量与流明光源所发出的光能是向所有方向辐射的,对于在单位时间里通过某一面积的光能,称为通过这一面积的辐射能通量。各色光的频率不同,眼睛对各色光的敏感度也有所不同,即使各色光的辐射能通量相等,在视觉上并不能产生相同的明亮程度,在各色光中,黄、绿色光能激起最大的明亮感觉。如果用绿色光作水准,令它的光通量等于辐射能通量,则对其它色光来说,激起明亮感觉的本领比绿色光为小,光通量也小于辐射能通量。光通量的单位是流明,是英文lumen的音译,简写为lm。绝对黑体在铂的凝固温度下,从5.305*10³cm²面积上辐射出来的光通量为1lm。为表明光强和光通量的关系,发光强度为1坎德拉的点光源在单位立体角(1球面度)内发出的光通量为1流明。一只40W的日光灯输出的光通量大约是2100流明。4. 光照度与勒克斯光照度可用照度计直接测量。光照度的单位是勒克斯,是英文lux的音译,也可写为lx。被光均匀照射的物体,在1平方米面积上得到的光通量是1流明时,它的照度是1勒克斯。有时为了充分利用光源,常在光源上附加一个反射装置,使得某些方向能够得到比较多的光通量,以增加这一被照面上的照度。例如汽车前灯、手电筒、摄影灯等。以下是各种环境照度值:单位lux黑夜:0.0010.02;月夜:0.020.3;阴天室内:550;阴天室外:50500;晴天室内:1001000;夏季中午太阳光下的照度:约为10*6次方;阅读书刊时所需的照度:5060;家用摄像机标准照度:1400分类: C/C+/*/ BH1750FVI IIC测试程序/ 使用单片机STC89C52/ 晶振:11.0592M,这里采用12M/ 显示:串口打印,4800/ 编译环境 Keil uVision2/ 参考宏晶网站24c04通信程序/ 时间:2012年11月27日/ 修改:Mr Lee/*#include #include /Keil library#include /Keil library#include #define uchar unsigned char#define uint unsigned int#define SlaveAddress 0x46 /定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改/ALT ADDRESS引脚接地时地址为0x46,接电源时地址为0xB8sbit SCL=P10; /IIC时钟引脚定义sbit SDA=P11; /IIC数据引脚定义typedef unsigned char BYTE;typedef unsigned short WORD;BYTE BUF8; /接收数据缓存区 uchar ge,shi,bai,qian,wan; /显示变量int dis_data; /变量void delay_nms(unsigned int k);void Init_BH1750(void);void conversion(uint temp_data);void Single_Write_BH1750(uchar REG_Address); /单个写入数据uchar Single_Read_BH1750(uchar REG_Address); /单个读取内部寄存器数据void Multiple_Read_BH1750(); /连续的读取内部寄存器数据/-void Delay5us();void Delay5ms();void BH1750_Start(); /起始信号void BH1750_Stop(); /停止信号void BH1750_SendACK(bit ack); /应答ACKbit BH1750_RecvACK(); /读ackvoid BH1750_SendByte(BYTE dat); /IIC单个字节写BYTE BH1750_RecvByte(); /IIC单个字节读/-/*void conversion(uint temp_data) / 数据转换出 个,十,百,千,万wan=temp_data/10000+0x30 ;temp_data=temp_data%10000; /取余运算qian=temp_data/1000+0x30 ;temp_data=temp_data%1000; /取余运算bai=temp_data/100+0x30 ;temp_data=temp_data%100; /取余运算shi=temp_data/10+0x30 ;temp_data=temp_data%10; /取余运算ge=temp_data+0x30; /毫秒延时*void delay_nms(unsigned int k)unsigned int i,j;for(i=0;ik;i+)for(j=0;j121;j+);/*延时5毫秒(STC90C52RC12M)不同的工作环境,需要调整此函数当改用1T的MCU时,请调整此延时函数*/void Delay5ms()WORD n = 560;while (n-);/*延时5微秒(STC90C52RC12M)不同的工作环境,需要调整此函数,注意时钟过快时需要修改当改用1T的MCU时,请调整此延时函数*/void Delay5us()_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/*起始信号*/void BH1750_Start()SDA = 1; /拉高数据线SCL = 1; /拉高时钟线Delay5us(); /延时SDA = 0; /产生下降沿Delay5us(); /延时SCL = 0; /拉低时钟线/*停止信号*/void BH1750_Stop()SDA = 0; /拉低数据线SCL = 1; /拉高时钟线Delay5us(); /延时SDA = 1; /产生上升沿Delay5us(); /延时/*发送应答信号入口参数:ack (0:ACK 1:NAK)*/void BH1750_SendACK(bit ack)SDA = ack; /写应答信号SCL = 1; /拉高时钟线Delay5us(); /延时SCL = 0; /拉低时钟线Delay5us(); /延时/*接收应答信号*/bit BH1750_RecvACK()SCL = 1; /拉高时钟线Delay5us(); /延时CY = SDA; /读应答信号SCL = 0; /拉低时钟线Delay5us(); /延时return CY;/*向IIC总线发送一个字节数据*/void BH1750_SendByte(BYTE dat)BYTE i;for (i=0; i8; i+) /8位计数器dat = 1; /移出数据的最高位SDA = CY; /送数据口SCL = 1; /拉高时钟线Delay5us(); /延时SCL = 0; /拉低时钟线Delay5us(); /延时BH1750_RecvACK();/*从IIC总线接收一个字节数据*/BYTE BH1750_RecvByte()BYTE i;BYTE dat = 0;SDA = 1; /使能内部上拉,准备读取数据,for (i=0; i8; i+) /8位计数器dat = 1;SCL = 1; /拉高时钟线Delay5us(); /延时dat |= SDA; /读数据SCL = 0; /拉低时钟线Delay5us(); /延时return dat;/*void Single_Write_BH1750(uchar REG_Address)BH1750_Start(); /起始信号BH1750_SendByte(SlaveAddress); /发送设备地址+写信号BH1750_SendByte(REG_Address); /内部寄存器地址,/ BH1750_SendByte(REG_data); /内部寄存器数据,BH1750_Stop(); /发送停止信号/*单字节读取*/*uchar Single_Read_BH1750(uchar REG_Address) uchar REG_data;BH1750_Start(); /起始信号BH1750_SendByte(SlaveAddress); /发送设备地址+写信号BH1750_SendByte(REG_Address); /发送存储单元地址,从0开始BH1750_Start(); /起始信号BH1750_SendByte(SlaveAddress+1); /发送设备地址+读信号REG_data=BH1750_RecvByte(); /读出寄存器数据BH1750_SendACK(1);BH1750_Stop(); /停止信号return REG_data;*/*/连续读出BH1750内部数据/*void Multiple_read_BH1750(void) uchar i;BH1750_Start(); /起始信号BH1750_SendByte(SlaveAddress+1); /发送设备地址+读信号for (i=0; i3; i+) /连续读取2个地址数据,存储中BUFBUFi = BH1750_RecvByte(); /BUF0存储0x32地址中的数据if (i = 3)BH1750_SendACK(1); /最后一个数据需要回NOACKelseBH1750_SendACK(0); /回应ACKBH1750_Stop(); /停止信号Delay5ms();/初始化BH1750,根据需要请参考pdf进行修改*void Init_BH1750()Single_Write_BH1750(0x01);void uart_init()TMOD=0x20; /TMOD0TH1=0xf3; /12MHZ ,BPS:4800,N,8,1,0xf3=243TL1=0xf3;PCON=0x80; /方式一,8位数据位,一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论