OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 1285|回复: 0

GY-30光照传感器,bh1750芯片,中文技术手册及完整程序在附件里

[复制链接]

  离线 

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2018-1-7
在线时间
22 小时
发表于 2018-1-10 13:44:46 | 显示全部楼层 |阅读模式
正点原子公众号
#include  <REG51.H>       
#include  <math.h>    //Keil library  
#include  <stdio.h>   //Keil library       
#include  <INTRINS.H>
#include  <IIC.H>
#define   uchar unsigned char
#define   uint unsigned int       
#define          address   0x46 //定义器件在IIC总线中的从地址,根据ALT  ADDRESS地址引脚不同修改
                              //ALT  ADDRESS引脚接地时地址为0x46,接电源时地址为0xB8
                                                          
typedef   unsigned char BYTE;                 //声明新的类型名来代替原有的类型名
typedef   unsigned short WORD;

BYTE    BUF[8];                         //接收数据缓存区             
uchar   ge,shi,bai,qian,wan;            //显示变量
int     dis_data;                       //变量
int w_data;


void  Multiple_Read_BH1750();                               //连续的读取内部寄存器数据
//------------------------------------
bit  BH1750_RecvACK();                  //读ack
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;        
}
//-------------------------------------------------------------------------------------//
//函数:      wr_BH1750_one_data()
//功能:      写一位bh1750数据
//address:   芯片从地址
//saddress:  写寄存器地址
//w_data:    待写数据
//-------------------------------------------------------------------------------------//
void wr_BH1750_one_data(int saddress)
{
_nop_();
iic_start();
_nop_();
iic_sendbyte(address);
_nop_();
iic_sendbyte(saddress);
_nop_();
iic_sendbyte(w_data);
_nop_();
iic_stop();
_nop_();
}
//-------------------------------------------------------------------------------------//
//函数:      rd_BH1750_one_data()
//功能:      读一位max30102数据
//address:   芯片从地址
//saddress:  读寄存器地址
//rda:       读出的数据
//-------------------------------------------------------------------------------------//
void rd_BH1750_one_data(void)
{

iic_start();
_nop_();
iic_sendbyte(address+1);
BUF[0] =iic_rcvbyte_nack();          //BUF[0]存储0x32地址中的数据
_nop_();
_nop_();
iic_start();
_nop_();
BUF[1] =iic_rcvbyte_nack();
_nop_();
_nop_();
iic_stop();


}



void uart_putchar(unsigned char dat)
{
        SBUF=dat; //把数据送给sbuf缓存器中
        while(TI!=1);//发送标志位 TI如果发送了为1,没发送为0,没发送等待,到了退出循环
        TI=0; //到了,TI清为0

       
}
void uart_printf(unsigned char *buff)
{

         while(*buff)
uart_putchar(*buff++);
}

//-------------------------------------------------------------------------------------//
//函数:      主程序
//功能:   
//-------------------------------------------------------------------------------------//
main()
{
float temp;
   unsigned char str[5];
TMOD=0x21;                  
SCON=0x50;
TH1=0xFD;
TL1=0xFD;
TR1=1;                          
TI=1;   
//设置51的波特率为 9600 N 8 1
//51主频为11.0592MHz
wr_BH1750_one_data(0x01);
while(1)
{  

wr_BH1750_one_data(0x01);   // power on
wr_BH1750_one_data(0x10);   // H- resolution mode   连续H分辨率模式        在1lx分辨率下开始测量。  测量时间一般为120ms。
delayms(180);      
rd_BH1750_one_data();




        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);
        uart_printf(" lx");
        delayms(200);
        uart_printf("\r\n");
        delayms(100);
}
}


GY-30光照传感器.rar

1004.25 KB, 下载次数: 75

中文数据手册及完整程序

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-4-19 21:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */