当前位置: 首页 > ops >正文

光线传感器BH1750

软件IIC:软件I2C master2-CSDN博客

SoftI2C_Port:SoftI2C_Port-CSDN博客

BH1750.h

#ifndef BH1750_h
#define BH1750_h
#include"SoftI2CMaster.h"
extern void Single_Write_BH1750(SoftI2CMasterWireObj wireObj,unsigned char instaruction);
extern int BH1750Read(SoftI2CMasterWireObj wireObj);
#endif

BH1750.c

#include"BH1750.h"
#define AddrPin 0
#if AddrPin
#define SlaveADDR 0xB8
#else
#define SlaveADDR 0x46
#endif
void Single_Write_BH1750(SoftI2CMasterWireObj wireObj,unsigned char instaruction)
{int i,j;SoftI2CMaster_Start(wireObj);SoftI2CMaster_LoadOutByte(wireObj,SlaveADDR);j=0;while(SoftI2CMaster_WaitAck(wireObj)==1){j++;if(j==15000){SoftI2CMaster_Stop(wireObj);return;}};SoftI2CMaster_LoadOutByte(wireObj,instaruction);j=0;while(SoftI2CMaster_WaitAck(wireObj)==1){j++;if(j==15000){SoftI2CMaster_Stop(wireObj);return;}};SoftI2CMaster_Stop(wireObj);
}
int BH1750Read(SoftI2CMasterWireObj wireObj)
{unsigned char rxBuff[2];int i,j;SoftI2CMaster_Start(wireObj);SoftI2CMaster_LoadOutByte(wireObj,SlaveADDR|1);j=0;while(SoftI2CMaster_WaitAck(wireObj)==1){j++;if(j==15000){SoftI2CMaster_Stop(wireObj);return -1;}};for(i=0;i<sizeof(rxBuff);i++){rxBuff[i]=SoftI2CMaster_WaitData(wireObj);if(i+1==sizeof(rxBuff)){SoftI2CMaster_LoadOutACK(wireObj,0);//NACK}else{SoftI2CMaster_LoadOutACK(wireObj,1);//ACK}}SoftI2CMaster_Stop(wireObj);return rxBuff[0]<<8|rxBuff[1];
}
#ifdef XC
#ifdef Debug
#include"XCOSnTh.h"
#include"I2CPort.h"
static void BH1750_Init(AutoCallObj obj,void *cThis)
{Single_Write_BH1750(&I2CPort002,0x01);// power onSingle_Write_BH1750(&I2CPort002,0x10);// H- resolution mode//Single_Write_BH1750(&I2CPort002,0x23);// L- resolution mode//{volatile int i=1000000;while(i--);}//延迟180ms后才能读取数据
}
AutoCall_InitDef(100,V_BH1750_Init,BH1750_Init,"");
static int BH1750Read_CMD(CmdObj obj, char* str, int len)
{unsigned short int temp;float lx;
//	Single_Write_BH1750(&I2CPort002,0x01);
//	Single_Write_BH1750(&I2CPort002,0x10);
//	{volatile int i=1000000;while(i--);}temp=BH1750Read(&I2CPort002);lx=(float)temp/1.2;obj->printf("\r\n%f",lx);return 1;
}
CmdDef(BH1750, 0, BH1750Read_CMD, "");
#endif
#endif

http://www.xdnf.cn/news/5455.html

相关文章:

  • springboot3学习
  • 部署Superset BI(五)连接oracle数据库失败
  • LangChain入门(七) 提取和输出结构化数据
  • 【计算机视觉】基于深度学习的实时情绪检测系统:emotion-detection项目深度解析
  • Day116 | 灵神 | 二叉树 | 二叉搜索树中第K小的元素
  • 软件测试复习第五章
  • 利用类型别名定义复杂联合类型和交叉类型
  • cheat engine: Scan error no readable memory found
  • 学习通刷课稳定版(美化面板+完全免费)
  • 【RP2350】香瓜树莓派RP2350之新建工程
  • JAVA 锁—— synchronized
  • linux 三剑客命令学习
  • C++基本知识 —— 缺省参数·函数重载·引用
  • 蓝桥杯14届国赛 合并数列
  • 【Python 算法零基础 2.模拟 ⑤ 基于栈和队列】
  • 【JEECG 组件扩展】JSwitch开关组件扩展单个多选框样式
  • 【AI智能推荐系统】第八篇:可解释AI在推荐系统中的实践与价值
  • 深度优先与广度优先:如何用算法思维优化学习策略?
  • 250510-Linux离线配置N8N环境+屏蔽外网请求
  • python使用AES进行加密和解密
  • JavaSE基础
  • python: 为项目创建单独的虚拟环境步骤
  • QSS样式表的选择器
  • 蓝牙RFCOMM协议概述
  • 第二十一节:图像金字塔-高斯金字塔
  • TTS-Web-Vue系列:移动端侧边栏与响应式布局深度优化
  • OSCP备战-kioptrixvm3详细解法
  • [Java实战]Spring Boot 中Starter机制与自定义Starter实战(九)
  • Linux为啥会重新设置中断请求号与中断向量号之间的关系?
  • vector--OJ1