我是靠谱客的博主 感动哈密瓜,最近开发中收集的这篇文章主要介绍基于51单片机驱动BH1750采集光强度 LCD1602显示一、基本参数二、接线三、部分代码四、实验现象五、注意事项,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

基于51单片机驱动BH1750采集光强度 LCD1602显示

  • 一、基本参数
  • 二、接线
  • 三、部分代码
    • 引脚定义
    • IIC通信
      • 地址
      • IIC 时序对用代码
  • 四、实验现象
  • 五、注意事项

一、基本参数

供电电源 :3-5v
光照度范围:0-65535 lx
传感器内置16bitAD转换器
直接数字输出,省略复杂的计算,省略标定
不区分环境光源
接近于视觉灵敏度的分光特性
可对广泛的亮度进行1勒克斯的高精度测定

二、接线

BH1750模块STC89C52RC
VCC5V
GNDGND
SCLP1.0
SDAP1.1
ADDRADDRESS引脚接地时地址为0x46,接电源时地址为0xB8 此处悬空 默认0x46

三、部分代码

引脚定义

sbit	  		SCL=P1^0;      //IIC时钟引脚定义
sbit  	 	 SDA=P1^1;      //IIC数据引脚定义

IIC通信

在这里插入图片描述
在这里插入图片描述

地址

#define	  SlaveAddress   0x46 

IIC 时序对用代码

/**************************************
起始信号
**************************************/
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; i<8; 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; i<8; i++)         //8位计数器
    {
        dat <<= 1;
        SCL = 1;                //拉高时钟线
        Delay5us();             //延时
        dat |= SDA;             //读数据               
        SCL = 0;                //拉低时钟线
        Delay5us();             //延时
    }
    return dat;
}

四、实验现象

在这里插入图片描述

五、注意事项

1、VCC GND切勿接反 接反易烧
2、ADDRESS引脚接地时地址为0x46,接电源时地址为0xB8

最后

以上就是感动哈密瓜为你收集整理的基于51单片机驱动BH1750采集光强度 LCD1602显示一、基本参数二、接线三、部分代码四、实验现象五、注意事项的全部内容,希望文章能够帮你解决基于51单片机驱动BH1750采集光强度 LCD1602显示一、基本参数二、接线三、部分代码四、实验现象五、注意事项所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部