GY30感光模块Word文档格式.docx
- 文档编号:20501064
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:13
- 大小:18.84KB
GY30感光模块Word文档格式.docx
《GY30感光模块Word文档格式.docx》由会员分享,可在线阅读,更多相关《GY30感光模块Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
3.
光通量与流明光源所发出的光能是向所有方向辐射的,对于在单位时间里通过某一面积的光能,称为通过这一面积的辐射能通量。
各色光的频率不同,眼睛对各色光的敏感度也有所不同,即使各色光的辐射能通量相等,在视觉上并不能产生相同的明亮程度,在各色光中,黄、绿色光能激起最大的明亮感觉。
如果用绿色光作水准,令它的光通量等于辐射能通量,则对其它色光来说,激起明亮感觉的本领比绿色光为小,光通量也小于辐射能通量。
光通量的单位是流明,是英文lumen的音译,简写为lm。
绝对黑体在铂的凝固温度下,从5.305*10&
cm&
面积上辐射出来的光通量为1lm。
为表明光强和光通量的关系,发光强度为1坎德拉的点光源在单位立体角(1球面度)内发出的光通量为1流明。
一只40W的日光灯输出的光通量大约是2100流明。
4.
光照度与勒克斯 光照度可用照度计直接测量。
光照度的单位是勒克斯,是英文lux的音译,也可写为lx。
被光均匀照射的物体,在1平方米面积上得到的光通量是1流明时,它的照度是1勒克斯。
有时为了充分利用光源,常在光源上附加一个反射装置,使得某些方向能够得到比较多的光通量,以增加这一被照面上的照度。
例如汽车前灯、手电筒、摄影灯等。
以下是各种环境照度值:
单位lux 黑夜:
0.001—0.02;
月夜:
0.02—0.3;
阴天室内:
5—50;
阴天室外:
50—500;
晴天室内:
100—1000;
夏季中午太阳光下的照度:
约为10*6次方;
阅读书刊时所需的照度:
50—60;
家用摄像机标准照度:
1400
相关知识:
背景
1967年法国第十三届国际计量大会规定了以坎德拉、坎德拉/平方米、流明、勒克斯分别作为发光强度、光亮度、光通量和光照度等的单位,为统一工程技术中使用的光学度量单位有重要意义。
为使您了解和使用便利,以下将有关知识做一简单介绍:
1.candela的定义
1.烛光、国际烛光、坎德拉(candela)的定义
在每平方米101325牛顿的标准大气压下,面积等于1/60平方厘米的绝对“黑体”(即能够吸收全部外来光线而毫无反射的理想物体),在纯铂(Pt)凝固温度(约2042K获1769℃)时,沿垂直方向的发光强度为1坎德拉。
2.发光强度与光亮度
发光强度简称光强,国际单位是candela(坎德拉)简写cd。
太阳:
3.光通量与流明
光源所发出的光能是向所有方向辐射的,对于在单位时间里通过某一面积的光能,称为通过这一面积的辐射能通量。
4.光照度与勒克斯
光照度可用照度计直接测量。
单位lux
黑夜:
分类:
C/C++
//***************************************
//BH1750FVIIIC测试程序
//使用单片机STC89C52
//晶振:
11.0592M,这里采用12M
//显示:
串口打印,4800
//编译环境KeiluVision2
//参考宏晶网站24c04通信程序
//时间:
2012年11月27日
//修改:
MrLee
//****************************************
#include<
REG51.H>
math.h>
//Keillibrary
stdio.h>
//Keillibrary
INTRINS.H>
#defineucharunsignedchar
#defineuintunsignedint
#defineSlaveAddress0x46//定义器件在IIC总线中的从地址,根据ALTADDRESS地址引脚不同修改
//ALTADDRESS引脚接地时地址为0x46,接电源时地址为0xB8
sbitSCL=P1^0;
//IIC时钟引脚定义
sbitSDA=P1^1;
//IIC数据引脚定义
typedefunsignedcharBYTE;
typedefunsignedshortWORD;
BYTEBUF[8];
//接收数据缓存区
ucharge,shi,bai,qian,wan;
//显示变量
intdis_data;
//变量
voiddelay_nms(unsignedintk);
voidInit_BH1750(void);
voidconversion(uinttemp_data);
voidSingle_Write_BH1750(ucharREG_Address);
//单个写入数据
ucharSingle_Read_BH1750(ucharREG_Address);
//单个读取内部寄存器数据
voidMultiple_Read_BH1750();
//连续的读取内部寄存器数据
//------------------------------------
voidDelay5us();
voidDelay5ms();
voidBH1750_Start();
//起始信号
voidBH1750_Stop();
//停止信号
voidBH1750_SendACK(bitack);
//应答ACK
bitBH1750_RecvACK();
//读ack
voidBH1750_SendByte(BYTEdat);
//IIC单个字节写
BYTEBH1750_RecvByte();
//IIC单个字节读
//-----------------------------------
//*********************************************************
voidconversion(uinttemp_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;
}
//毫秒延时**************************
voiddelay_nms(unsignedintk)
{
unsignedinti,j;
for(i=0;
i<
k;
i++)
{
for(j=0;
j<
121;
j++)
{;
}}
/**************************************
延时5毫秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数
当改用1T的MCU时,请调整此延时函数
**************************************/
voidDelay5ms()
WORDn=560;
while(n--);
延时5微秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数,注意时钟过快时需要修改
voidDelay5us()
_nop_();
_nop_();
起始信号
voidBH1750_Start()
SDA=1;
//拉高数据线
SCL=1;
//拉高时钟线
Delay5us();
//延时
SDA=0;
//产生下降沿
SCL=0;
//拉低时钟线
停止信号
voidBH1750_Stop()
//拉低数据线
//产生上升沿
发送应答信号
入口参数:
ack(0:
ACK1:
NAK)
voidBH1750_SendACK(bitack)
SDA=ack;
//写应答信号
接收应答信号
bitBH1750_RecvACK()
CY=SDA;
//读应答信号
returnCY;
向IIC总线发送一个字节数据
voidBH1750_SendByte(BYTEdat)
BYTEi;
for(i=0;
i<
8;
i++)//8位计数器
dat<
<
=1;
//移出数据的最高位
SDA=CY;
//送数据口
BH1750_RecvACK();
从IIC总线接收一个字节数据
BYTEBH1750_RecvByte()
BYTEdat=0;
//使能内部上拉,准备读取数据,
dat|=SDA;
//读数据
returndat;
//*********************************
voidSingle_Write_BH1750(ucharREG_Address)
BH1750_Start();
BH1750_SendByte(SlaveAddress);
//发送设备地址+写信号
BH1750_SendByte(REG_Address);
//内部寄存器地址,
//BH1750_SendByte(REG_data);
//内部寄存器数据,
BH1750_Stop();
//发送停止信号
//********单字节读取*****************************************
/*
ucharSingle_Read_BH1750(ucharREG_Address)
{ucharREG_data;
//发送存储单元地址,从0开始
BH1750_SendByte(SlaveAddress+1);
//发送设备地址+读信号
REG_data=BH1750_RecvByte();
//读出寄存器数据
BH1750_SendACK
(1);
BH1750_Stop();
returnREG_data;
*/
//
//连续读出BH1750内部数据
voidMultiple_read_BH1750(void)
{uchari;
for(i=0;
3;
i++)//连续读取2个地址数据,存储中BUF
BUF[i]=BH1750_RecvByte();
//BUF[0]存储0x32地址中的数据
if(i==3)
BH1750_SendACK
(1);
//最后一个数据需要回NOACK
else
{
BH1750_SendACK(0);
//回应ACK
Delay5ms();
//初始化BH1750,根据需要请参考pdf进行修改****
voidInit_BH1750()
Single_Write_BH1750(0x01);
voiduart_init()
TMOD=0x20;
//TMOD=0
TH1=0xf3;
//12MHZ,BPS:
4800,N,8,1,0xf3=243
TL1=0xf3;
PCON=0x80;
//方式一,8位数据位,一位起始位和一位结束位
TR1=1;
//
SCON=0x40;
//串口通信控制寄存器模式一
voiduart_putchar(unsignedchardat)
SBUF=dat;
//把数据送给sbuf缓存器中
while(TI!
=1);
//发送标志位TI如果发送了为1,没发送为0,没发送等待,到了退出循环
TI=0;
//到了,TI清为0
voiduart_printf(unsignedchar*buff)
while(*buff)
uart_putchar(*buff++);
//主程序********
voidmain()
floattemp;
unsignedcharstr[5];
//delay_nms(100);
//延时100ms
uart_init();
Init_BH1750();
//初始化BH1750
while
(1)//循环
//poweron
Single_Write_BH1750(0x10);
//H-resolutionmode
delay_nms(180);
//延时180ms
Multiple_Read_BH1750();
//连续读出数据,存储在BUF中
dis_data=BUF[0];
dis_data=(dis_data<
8)+BUF[1];
//合成数据,即光照数据
temp=(float)dis_data/1.2;
conversion(temp);
//计算数据和显示
str[0]=wan;
str[1]=qian;
str[2]=bai;
str[3]=shi;
str[4]=ge;
uart_printf("
light:
"
);
uart_printf(str);
lx\r\n"
广电电器网云中华
(资料素材和资料部分来自网络,供参考。
可复制、编制,期待你的好评与关注)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GY30 感光 模块
![提示](https://static.bdocx.com/images/bang_tan.gif)