void BH1750_Cmd_Write(uint8_t cmd)
{
    I2C_Start();                  //起始信号
    I2C_Send_Byte(BH1750_Addr+0);   //发送设备地址+写信号
	while(I2C_Wait_Ack())__NOP;;
    I2C_Send_Byte(cmd);    //内部寄存器地址
	while(I2C_Wait_Ack())__NOP;;
    I2C_Stop();                   //发送停止信号
	Delay_NOP_ms(5);
}
void BH1750_Read(void)
{   	
    I2C_Start();                          //起始信号
    I2C_Send_Byte(BH1750_Addr+1);         //发送设备地址+读信号
	while(I2C_Wait_Ack());
	BH1750_Data_Buf[0]=I2C_Read_Byte(1);  //发送ACK
	BH1750_Data_Buf[1]=I2C_Read_Byte(0);  //发送NACK

    I2C_Stop();                          //停止信号
    Delay_NOP_ms(5);
}
Ejemplo n.º 3
0
/************************************************ 
* 函  数: AT24CXX_ReadByte(u16)
* 功  能: 从AT24CXX指定地址读出一个字节数据
*
* 参  数: addr - 开始读取的地址
*
* 返回值: 读取到的字节数据
*************************************************/
u8 AT24CXX_ReadByte(u16 addr)
{
  u8 ret_data = 0x00; 

  I2C_Start();  
  if (AT24CXX > AT24C16)
  {
    I2C_Send_Byte(0XA0); // 发送写命令
    I2C_Wait_Ack();
    I2C_Send_Byte(addr>>8); // 发送高地址
    I2C_Wait_Ack();    
  } else {  // 发送器件地址0XA0, 写数据