• 大小: 3KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-13
  • 语言: 其他
  • 标签: MSP430  BH1750代码  

资源简介

一一份在MSP430F149上完美运行的1750驱动,经过项目严格测测试

资源截图

代码片段和文件信息

#include 
#include “SysDelay.H“
#include “BH1750.H“
unsigned int  Lignt_Value;               //存储读取光照数据
unsigned char Lignt[5]={0};              //存放各位分离数据
unsigned char BH_LossFlag;             //BH1750损坏或者连接异常标志
void Start_BH1750(void)                  //开始BH1750总线
{
 DATA_OUT;                               //设置输出
 CLK_OUT;
 DATA_OUT1 ;
 _NOP();_NOP();
 CLK_OUT1  ;
  delay_us(4);                           //~5us
 DATA_OUT0 ;
  delay_us(4);
 CLK_OUT0  ;
 _NOP();

}
void Stop_BH1750(void)                  //结束BH1750总线
{
   DATA_OUT0 ;
  _NOP();
   CLK_OUT1  ;
  delay_us(4);                          //~5us
    DATA_OUT1 ; 
  delay_us(4);                          //~5us  
   CLK_OUT0  ;
}


void MS_ACK(unsigned char ack1)        //主机向从机发确认信号
{
 DATA_OUT; 
 if(ack1)
 DATA_OUT1;                           //发送高电平  
 else  
 DATA_OUT0;                           //确认信号为低电平
  CLK_OUT1  ;
  delay_us(4);
  CLK_OUT0  ;
  delay_us(4);                        //~5us
}
/*接收从器件的应答信号

ACK=0 接收到应答信号
ACK=1;接收信号失败
*/
unsigned char SM_ACK( void )
{
  unsigned char ack;
 
  CLK_OUT1  ;                         //拉高时钟线
  delay_us(4);
  DATA_IN   ;                         //数据线设置为输入
  ack=BH1750_OUT_DATA;                 //接受输入数据
  CLK_OUT0  ;                         //拉低时钟线
  delay_us(4);
  DATA_OUT  ;                         //数据线重新设置为输出 

 return ack;

}
/*
功能   :向I2C总线写入字节(数据或命令字)
参数   :COM
返回值 :ACK应答 是否写入成功
      0: 成功  1:失败
*/
unsigned char Write_BYTE_I2C( unsigned char Com)
{
  unsigned char iack;
for(i=0; i<8; i++)        //8位循环 
{
 if(Com&0x80)                    //发送高电平
   DATA_OUT1; 
 else
   DATA_OUT0;                 //发送低电平
  Com<<=1;                     //右移一位
    CLK_OUT1  ;               //拉高
delay_us(5);
    CLK_OUT0  ;               //拉低
delay_us(5);

}
ack=SM_ACK();                //接收从器件应答                           //写完之后要接受从器件应答信号 
return ack;
}

/*
功能   :从I2C读取一个字节
参数   :无
返回值 :读取的数据Data
*/
unsigned char Read_BYTE_I2C(void)
{
  unsigned char iData ;
  
for(i=0; i<8;i++)                  //8位循环
{
    DATA_IN   ;                    //数据线设置为输入 
    CLK_OUT1  ;                    //拉高
    delay_us(5);
    Data<<=1;
    if(BH1750_OUT_DATA)            //读到高电平
    Data|=1;                       //相应的位置高
    CLK_OUT0 ;                     //拉低时钟线
    delay_us(5);
    DATA_OUT  ;                   //数据线重新设为输出
}                       
return  Data ;                   //
}
/*
功能   :向BH1750写一个字节
参数   :Data
返回值 :无
*/
unsigned char Write_BYTE_BH1750(unsigned char Addr_Or_Data)

{
  unsigned char Error=0;
  Start_BH1750();                      //起始总线信号
  Error+=Write_BYTE_I2C(SlaveAddress); //发送设备地址+写信号(0)
  Error+=Write_BYTE_I2C(Addr_Or_Data); //写入数据(写入的是对应的指令)
  Stop_BH1750();                       //结束I2C总线
  return Error ;
}
/***************************************************************************
向BH1750中写多个字节
A

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1939  2013-04-20 16:48  新建文件夹\BH1750.H
     文件        6954  2013-04-22 18:17  新建文件夹\BH1750.c
     目录           0  2013-06-14 20:46  新建文件夹\

评论

共有 条评论