bh1750fvi电路图可以测红光的强度吗

基于BH1750 的实时光照强度监测系统_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于BH1750 的实时光照强度监测系统
|0|0|文档简介
电子爱好者|
总评分4.0|
浏览量2286
&&本次课题研究基于BH1750 的实时光强检测系统,目的在于设计并制作一款实时检测环境光强的传感器。本文从原理分析与实际制作两个方面,阐述了实时光照强度监测系统的设计原理与实现方法。从软、硬件设计到实现所有功能。
此系统具有成本低、体积小、可靠性高、低功耗、操作方便等特点。本文叙述了该系统的硬件开发过程及相关软件设计,以51 单片机为核心,系统模块包括按键
模块、LCD 液晶、BH1750 光感测模块、USB 模块等。
试读已结束,如果需要继续阅读,敬请购买
注:购买后,该文档仅支持在线阅读
定制HR最喜欢的简历
你可能喜欢
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。【提问】化学试剂品红的颜色与等强度的蓝光和红光混合的是否相同_化学吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:469,405贴子:
【提问】化学试剂品红的颜色与等强度的蓝光和红光混合的是否相同收藏
请问化学试剂品红的颜色与等强度的蓝光和红光混合的是否相同(上图是我制作的,不是出于任何资料)。
化学精锐哈佛北大精英创立,3000学霸导师针对学科薄弱点,量身定制辅导课程化学1对1冲刺/1对3互动,满足不同学生的学习需求.400-637-0082
请大家关注。
原理就不一样。。。
光的三原色和颜料的三原色就不一样,所以这不好比吧
陪过试剂的都知道,和浓度有关   —— (来自iPhone 10S 1TB土豪金镶钻开光防弹立体全息投影版钻石 VIP贴吧客户端1分钟前 阿联酋迪拜帆船酒店正在享用〔茶叶蛋〕)
据说在新资料上:物理上的品红:“#FF00FF”也就是255‘000’255品红:“#FF0070”也就是255‘000’112
如果你的浓度配对了,液层厚度对了,器皿也对了,还有诸如此类n多的条件也对了,那就有可能一样。
根本没有可比性
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或基于BH1750的光照度检测)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于BH1750的光照度检测)
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩22页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢BH1750FVI+光强度传感器IC系列中文翻译_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
BH1750FVI+光强度传感器IC系列中文翻译
上传于|0|0|文档简介
&&一种光强度传感器的中文数据手册
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩14页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢查看: 2342|回复: 1
BH1750FVI数字光线强度传感器 51单片机源程序
//***************************************
// BH1750FVI IIC测试程序
// 使用单片机STC89C51
// 晶振:11.0592M
// 显示:LCD1602
// 编译环境 Keil uVision2
// 参考宏晶网站24c04通信程序
// 时间:日
//****************************************
#include&&&REG51.H&& && &&&
#include&&&math.h&& & //Keil library&&
#include&&&stdio.h&& &//Keil library& && &&&
#include&&&INTRINS.H&
#define& &uchar unsigned char
#define& &uint unsigned int& && &&&
#define& &DataPort P0& && && &//LCD1602数据端口
sbit& && && & SCL=P1^0;& && &//IIC时钟引脚定义
sbit& && && && &SDA=P1^1;& && &//IIC数据引脚定义
sbit& && &LCM_RS=P2^0;& &//LCD1602命令端口& && && && && &
sbit& && &LCM_RW=P2^1;& &//LCD1602命令端口& && && && && &
sbit& && &LCM_EN=P2^2;& &//LCD1602命令端口
#define& && && & SlaveAddress& &0x46 //定义器件在IIC总线中的从地址,根据ALT&&ADDRESS地址引脚不同修改
& && && && && && && && && && &//ALT&&ADDRESS引脚接地时地址为0x46,接电源时地址为0xB8
typedef& &unsigned char BYTE;
typedef& &unsigned short WORD;
BYTE& & BUF[8];& && && && && && && && & //接收数据缓存区& && && && &&&
uchar& &ge,shi,bai,qian,& && && && &//显示变量
int& &&&dis_& && && && && && && &&&//变量
void delay_nms(unsigned int k);
void InitLcd();
void Init_BH1750(void);
void WriteDataLCM(uchar dataW);
void WriteCommandLCM(uchar CMD,uchar Attribc);
void DisplayOneChar(uchar X,uchar Y,uchar DData);
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);& && && &&&//应答ACK
bit&&BH1750_RecvACK();& && && && && && &//读ack
void BH1750_SendByte(BYTE dat);& && && &//IIC单个字节写
BYTE BH1750_RecvByte();& && && && && &&&//IIC单个字节读
//-----------------------------------
//*********************************************************
void conversion(uint temp_data)&&//&&数据转换出 个,十,百,千,万
& & wan=temp_data/ ;
& & temp_data=temp_data%10000;& &//取余运算
& && &&&qian=temp_data/ ;
& & 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;i&k;i++)
{& && && && && && && && &
for(j=0;j&121;j++)& && && && && && && && &
{;}}& && && && && && && && && && && && && && && && &
/*******************************/
void WaitForEnable(void)& && &&&
{& && && && && && && && && && && && && &
DataPort=0& && && && && &
LCM_RS=0;LCM_RW=1;_nop_();
LCM_EN=1;_nop_();_nop_();
while(DataPort&0x80);& && &&&
LCM_EN=0;& && && && && && && && && && &&&
}& && && && && && && && && && && && && &
/*******************************/
void WriteCommandLCM(uchar CMD,uchar Attribc)
{& && && && && && && && && && && && && &
if(Attribc)WaitForEnable();& && &&&
LCM_RS=0;LCM_RW=0;_nop_();
DataPort=CMD;_nop_();& && &&&
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}& && && && && && && && && && && && && &
/*******************************/
void WriteDataLCM(uchar dataW)
{& && && && && && && && && && && && && &
WaitForEnable();& && && && && &
LCM_RS=1;LCM_RW=0;_nop_();
DataPort=dataW;_nop_();& && &&&
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}& && && && && &
/***********************************/
void InitLcd()& && && && && && && && && && &&&
{& && && && && && && && &
WriteCommandLCM(0x38,1);& && &&&
WriteCommandLCM(0x08,1);& && &&&
WriteCommandLCM(0x01,1);& && &&&
WriteCommandLCM(0x06,1);& && &&&
WriteCommandLCM(0x0c,1);
}& && && && && && && && &
/***********************************/
void DisplayOneChar(uchar X,uchar Y,uchar DData)
{& && && && && && && && && && && && && && && && &
Y&=1;& && && && && && && && && && && && && && && && &
X&=15;& && && && && && && && && && && && && && && && &
if(Y)X|=0x40;& && && && && && && && && && && && && &
X|=0x80;& && && && && && && && &
WriteCommandLCM(X,0);& && && && && &
WriteDataLCM(DData);& && && && && &
}& && && && && && && && && && && && && && && && &
/**************************************
延时5微秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数,注意时钟过快时需要修改
当改用1T的MCU时,请调整此延时函数
**************************************/
void Delay5us()
& & _nop_();_nop_();_nop_();_nop_();
& & _nop_();_nop_();_nop_();_nop_();
& && &&&_nop_();_nop_();_nop_();_nop_();
& && &&&_nop_();_nop_();_nop_();_nop_();
/**************************************
延时5毫秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数
当改用1T的MCU时,请调整此延时函数
**************************************/
void Delay5ms()
& & WORD n = 560;
& & while (n--);
/**************************************
**************************************/
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 =& && && && && && &//写应答信号
& & 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)
& & for (i=0; i&8; i++)& && && &//8位计数器
& && &&&dat &&= 1;& && && && &&&//移出数据的最高位
& && &&&SDA = CY;& && && && && &//送数据口
& && &&&SCL = 1;& && && && && & //拉高时钟线
& && &&&Delay5us();& && && && & //延时
& && &&&SCL = 0;& && && && && & //拉低时钟线
& && &&&Delay5us();& && && && & //延时
& & BH1750_RecvACK();
/**************************************
从IIC总线接收一个字节数据
**************************************/
BYTE BH1750_RecvByte()
& & BYTE dat = 0;
& & SDA = 1;& && && && && && &&&//使能内部上拉,准备读取数据,
& & for (i=0; i&8; i++)& && && &//8位计数器
& && &&&dat &&= 1;
& && &&&SCL = 1;& && && && && & //拉高时钟线
& && &&&Delay5us();& && && && & //延时
& && &&&dat |= SDA;& && && && & //读数据& && && && && &
& && &&&SCL = 0;& && && && && & //拉低时钟线
& && &&&Delay5us();& && && && & //延时
//*********************************
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_
& & 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_
//*********************************************************
//连续读出BH1750内部数据
//*********************************************************
void Multiple_read_BH1750(void)
{& && && &&&
& & BH1750_Start();& && && && && && && && &&&//起始信号
& & BH1750_SendByte(SlaveAddress+1);& && && &//发送设备地址+读信号
& && && &for (i=0; i&3; i++)& && && && && && && & //连续读取2个地址数据,存储中BUF
& && &&&BUF[ i] = BH1750_RecvByte();& && && & //BUF[0]存储0x32地址中的数据
& && &&&if (i == 3)
& && && &&&BH1750_SendACK(1);& && && && && & //最后一个数据需要回NOACK
& && &&&else
& && &&&{& && && && && &
& && && & BH1750_SendACK(0);& && && && && & //回应ACK
& & BH1750_Stop();& && && && && && && && &&&//停止信号
& & Delay5ms();
//初始化BH1750,根据需要请参考pdf进行修改****
void Init_BH1750()
& &Single_Write_BH);&&
//*********************************************************
//主程序********
//*********************************************************
void main()
& &delay_nms(100);& && && && &//延时100ms& && &&&
& &InitLcd();& && && &&&//初始化LCD
& &Init_BH1750();& && & //初始化BH1750
&&while(1)& && && && &&&//循环
& & Single_Write_BH);& &// power on
& & Single_Write_BH);& &// H- resolution mode
& &&&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);& && && &//计算数据和显示
& && &&&DisplayOneChar(0,0,'L');
& && &&&DisplayOneChar(1,0,'i');
& && &&&DisplayOneChar(2,0,'g');
& && &&&DisplayOneChar(3,0,'h');
& && &&&DisplayOneChar(4,0,'t');
& & DisplayOneChar(5,0,':');
& & DisplayOneChar(7,0,wan); //显示数据
& & DisplayOneChar(8,0,qian);&&
& & DisplayOneChar(9,0,bai);
& & DisplayOneChar(10,0,shi);
& && &&&DisplayOneChar(11,0,ge);
& && &&&DisplayOneChar(13,0,'l'); ////显示数单位
& && &&&DisplayOneChar(14,0,'x');&&
 为什么显示00000???
Powered by}

我要回帖

更多关于 bh1750完整的测试程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信