版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一共 5 个文件: BH1750FVI.c、BH1750FVI.h、 I2C.c、I2C.h、 zComDef.hBH1750FVI.c#include I2C.h#include BH1750FVI.h* MACROS*/* CONSTANTS*/* TYPEDEFS*/* GLOBAL VARIABLES*/* GLOBAL FUNCTIONS*/* LOCAL VARIABLES*/ /* LOCAL FUNCTIONS*/static void BH1750_Write_Cmd(uint8_t cmd);static void BH1750_Read(uint8_t* BUF);sta
2、tic float BH1750_Convert(uint8_t* BUF);/* EXTERN VARIABLES*/* EXTERN FUNCTIONS*/* 函数名: void BH1750_Init(void)* 功能:初始化 BH1750* 参数: NONE* 返回值: NONE* 调用函数:void I2C_Init(void)* 引用全局变量: NONE* 函数全局变量: NONE* 作者:黄加伟* 时间: 2016/5/16* 最后修改时间:* 说明:* void BH1750_Init(void)I2C_Init();/* 函数名: void BH1750_Write_Cmd
3、(uint8_t cmd)* 功能:向 BH1750 写入命令* 参数:cmd :要写入的命令* 返回值: NONE* 调用函数:void I2C_Start(void)void I2C_WriteByte(uint8_t txd)uint8_t I2C_WaitAck(void)void I2C_Stop(void)void I2C_Delay_ms(uint32_t time)* 引用全局变量: NONE* 函数全局变量: NONE* 作者:黄加伟* 时间: 2016/5/16* 最后修改时间:* 说明:* static void BH1750_Write_Cmd(uint8_t cmd)
4、/ 发送设备地址 +写信号/ 内部寄存器地址/ 内部寄存器地址/ 发送停止信号I2C_Start(); / 起始信号I2C_WriteByte(BH1750_Addr+0)while(I2C_WaitAck();I2C_WriteByte(cmd);while(I2C_WaitAck();/BH1750_SendByte(REG_data);I2C_Stop();I2C_Delay_ms(5);/* 函数名: void BH1750_Read(void)* 功能:读取 BH1750 的值* 参数: NONE* 返回值: NONE* 调用函数:void I2C_Start(void)void I
5、2C_WriteByte(uint8_t txd)uint8_t I2C_WaitAck(void)uint8_t I2C_ReadByte(uint8_t ack)void I2C_Stop(void)void I2C_Delay_ms(uint32_t time)* 引用全局变量:BUF:存储 BH1750读取到的数据* 函数全局变量: NONE* 作者:黄加伟* 时间: 2016/5/16* 最后修改时间:* 说明:* static void BH1750_Read(uint8_t* BUF)/ 起始信号/ 发送设备地址 +读信号/发送ACK/发送NACK/ 停止信号I2C_Start(
6、);I2C_WriteByte(BH1750_Addr+1);while(I2C_WaitAck();BUF0=I2C_ReadByte(1);BUF1=I2C_ReadByte(0);I2C_Stop();I2C_Delay_ms(5);/* 函数名: void BH1750_Convert(void)* 功能:将 BH1750 读取到的数据转换成 光照值* 参数: NONE* 返回值: NONE* 调用函数: NONE* 引用全局变量:BUF:存储 BH1750读取到的数据result_lx :光照值* 函数全局变量:* 作者:黄加伟* 时间: 2016/5/16* 最后修改时间:* 说明
7、:* static float BH1750_Convert(uint8_t* BUF)float value_light = 0; uint16_t result = 0; result = BUF0;result = (result8) + BUF1; o?3 e g?Y ? 1a?ey?Yvalue_light = (float)result/1.2; return value_light;/* 函数名: float Get_LightValue(void)* 功能:获取光照值* 参数: NONE* 返回值: NONE* 调用函数:void BH1750_Write_Cmd(uint8_
8、t cmd)void I2C_Delay_ms(uint32_t time)void BH1750_Read(uint8_t* BUF)float BH1750_Convert(uint8_t* BUF)* 引用全局变量:* 函数全局变量:* 作者:黄加伟* 时间: 2016/5/16* 最后修改时间:* 说明:* float Get_LightValue(void)uint8_t BUF2 = 0;BH1750_Write_Cmd(BH1750_ON); / power onBH1750_Write_Cmd(BH1750_RSET); / clearBH1750_Write_Cmd(BH17
9、50_ONE); / 一次H分辨率模式,至少120ms,之后自动断电模 式I2C_Delay_ms(400);/ 延时 400msBH1750_Read(BUF);/连续读出数据,存储在 BUF中return (BH1750_Convert(BUF);BH1750FVI.h#ifndef _BH1750FVI_H#define _BH1750FVI_H#include #include zComDef.h/* MACROS*/* CONSTANTS*/#define BH1750_Addr 0x46#define BH1750_ON0x01#define BH1750_CON 0x10 #de
10、fine BH1750_ONE 0x20 #define BH1750_RSET 0x07 用/ ADDR 接地时的地址/ 通电/ 连续 H 分辨率模式/ 一次 H 分辨率模式,测量后自动设置为断电模式/ 重置数组寄存器值,重置指令在断电模式下不起作* TYPEDEFS*/* VARIABLES*/* FUNCTIONS*/ /*初始化 BH1750 */ void BH1750_Init(void);/*获取光照值*/float Get_LightValue(void);#endifI2C.c#include I2C.h/* MACROS*/#define NOP() asm(NOP)/*
11、CONSTANTS*/* TYPEDEFS*/* GLOBAL VARIABLES*/* GLOBAL FUNCTIONS*/* LOCAL VARIABLES*/* LOCAL FUNCTIONS*/* EXTERN VARIABLES*/* EXTERN FUNCTIONS*/* 函数名 : static void I2C_Delay_10us(uint32_t time)* 功能 :延时 x 个 10us* 参数 :time :传入时间值,单位: 10us* 返回值 : NONE* 调用函数 : NONE* 引用全局变量 : NONE* 函数全局变量 : NONE* 作者 :黄加伟* 时
12、间 : 2016/5/16* 最后修改时间 :* 说明 :无* static void I2C_Delay_10us(uint32_t time)while(time -)NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP(); NOP();NOP();NOP();NOP();NOP();NOP();NOP();/*
13、函数名 : static void I2C_Delay_ms(uint32_t time)* 功能 :延时 x 毫秒* 参数 :time :传入时间值,单位: ms* 返回值 : NONE* 调用函数 :static void I2C_Delay_10us(uint32_t time)* 引用全局变量 : NONE* 函数全局变量 : NONE* 作者 :黄加伟* 时间 : 2016/5/16* 最后修改时间 :* 说明 :无* void I2C_Delay_ms(uint32_t time)while(time -)I2C_Delay_10us(100);/* 函数名 : void I2C_
14、Init(void)* 功能 :初始化 I2C GPIO 口* 参数 : NONE* 返回值 : NONE* 调用函数 : NONE* 引用全局变量 : NONE* 函数全局变量 : NONE* 作者 :黄加伟* 时间 : 2016/5/16* 最后修改时间 :* 说明 :无* void I2C_Init(void)I2C_SCL_OUTPUT();I2C_SDA_OUTPUT();I2C_SCL_HIGH();I2C_SDA_HIGH();/* 函数名 :static void I2C_SCL_OUTPUT(void)*功能:SCL引脚设置为输出模式* 参数 : NONE* 返回值 : NO
15、NE* 调用函数 : NONE* 引用全局变量 : NONE* 函数全局变量 : NONE* 作者 :黄加伟* 时间 : 2016/5/16* 最后修改时间 :* 说明 :无*void I2C_SCL_OUTPUT(void)/ 配置 P1_2 脚为输出模式P1SEL &= (12);P1DIR |= (12);/* 函数名 : static void I2C_SCL_INPUT(void)*功能:SCL引脚设置为输入模式* 参数 : NONE* 返回值 : NONE* 调用函数 : NONE* 引用全局变量 : NONE* 函数全局变量 : NONE* 作者 :黄加伟* 时间 : 2016/
16、5/16* 最后修改时间 :* 说明 :无*void I2C_SCL_INPUT(void)/ 配置 P1_2 脚为输入模式P1SEL &= (12);P1DIR &= (12);P1INP &= (12);P2INP &= (16); /* 函数名 :static void I2C_SDA_OUTPUT(void)*功能:SDA引脚设置为输出模式* 参数 : NONE* 返回值 : NONE* 调用函数 : NONE* 引用全局变量 : NONE* 函数全局变量 : NONE* 作者 :黄加伟* 时间 : 2016/5/16* 最后修改时间 :* 说明 :无*void I2C_SDA_OUT
17、PUT(void) / 配置 P1_3 脚为输出模式P1SEL &= (13);P1DIR |= (13);/* 函数名 : static void I2C_SDA_INPUT(void)*功能:SCL引脚设置为输入模式* 参数 : NONE* 返回值 : NONE* 调用函数 : NONE* 引用全局变量 : NONE* 函数全局变量 : NONE* 作者 :黄加伟* 时间 : 2016/5/16* 最后修改时间 :* 说明 :无*void I2C_SDA_INPUT(void) / 配置 P1_3 脚为输入模式P1SEL &= (13);P1DIR &= (13);P1INP &= (13
18、);P2INP &= (1250)I2C_Stop();return 1;I2C_SCL_LOW();return 0;/* 函数名 : static void I2C_SendAcknowledge(void)* 功能 :产生 ACK 应答* 参数 : NONE* 返回值 : NONE* 调用函数 :void I2C_SCL_OUTPUT(void)void I2C_SDA_OUTPUT(void)static void I2C_Delay_10us(uint32_t time)* 引用全局变量 : NONE* 函数全局变量 : NONE* 作者 :黄加伟* 时间 : 2016/5/16*
19、最后修改时间 :* 说明 :无*void I2C_SendAcknowledge(void)I2C_SCL_OUTPUT();I2C_SDA_OUTPUT();I2C_SDA_LOW();I2C_SCL_LOW();I2C_Delay_10us(1);I2C_SCL_HIGH();I2C_Delay_10us(1);I2C_SCL_LOW();/* 函数名 : static void I2C_SendNoAcknowledge(void)* 功能 :不产生 ACK 应答* 参数 : NONE* 返回值 : NONE* 调用函数 :void I2C_SCL_OUTPUT(void)void I2
20、C_SDA_OUTPUT(void)static void I2C_Delay_10us(uint32_t time)* 引用全局变量 : NONE* 函数全局变量 : NONE* 作者 :黄加伟* 时间 : 2016/5/16* 最后修改时间 :* 说明 :无* void I2C_SendNoAcknowledge(void)I2C_SCL_OUTPUT();I2C_SDA_OUTPUT();I2C_SCL_LOW();I2C_SDA_HIGH();I2C_Delay_10us(1); I2C_SDA_HIGH();I2C_Delay_10us(1); I2C_SCL_LOW();/* 函数
21、名 : static uint8_t I2C_WriteByte(uint8_t byte)* 功能 :写字节数据* 参数 : byte :写入字节数据* 返回值 : NONE* 调用函数 :void I2C_SCL_OUTPUT(void)void I2C_SDA_OUTPUT(void)static void I2C_Delay_10us(uint32_t time)* 引用全局变量 : NONE* 函数全局变量 : NONE* 作者 :黄加伟* 时间 : 2016/5/16* 最后修改时间 :* 说明 :无* void I2C_WriteByte(uint8_t txd)uint8_t
22、t = 0;I2C_SCL_OUTPUT();I2C_SDA_OUTPUT();for(t=0; t7)I2C_SDA_HIGH();elseI2C_SDA_LOW(); txd=1;I2C_Delay_10us(1); I2C_SCL_HIGH();I2C_Delay_10us(1);I2C_SCL_LOW();I2C_Delay_10us(1);/* 函数名 : static uint8_t I2C_ReadByte(void)* 功能 :读取字节数据* 参数 : NONE* 返回值 :读取的有效字节* 调用函数 :void I2C_SDA_INPUT(void)static void I
23、2C_Delay_10us(uint32_t time)void I2C_SendNoAcknowledge(void)* 引用全局变量 : NONE* 函数全局变量 : NONE* 作者 :黄加伟* 时间 : 2016/5/16* 最后修改时间 :* 说明 :无* uint8_t I2C_ReadByte(uint8_t ack)uint8_t i = 0;uint8_t receive = 0;I2C_SDA_INPUT(); for(i=0; i8; i+) I2C_SCL_LOW(); I2C_Delay_10us(1);I2C_SCL_HIGH(); receive = 1;if(I
24、2C_SDA_STATE()receive+;I2C_Delay_10us(1);if(!ack)I2C_SendNoAcknowledge();elseI2C_SendAcknowledge();return receive;I2C.h#ifndef _I2C_H#define _I2C_H #include iocc2530.h#include ZComDef.h /* MACROS*/#define I2C_SCL_HIGH()#define I2C_SCL_LOW()(P1_2=1) /* 置 SCL高电平 */(P1_2=0) /* 置 SCL底电平 */#define I2C_SDA_HIGH()#define I2C_SDA_LOW()(P1_3=1)/* 置 SDA高电平 */P1_2 /* 读 SCL 电平 */P1 3/* 读 SDA 电平 */(P1_3=0)/*置 SDA底电平 */#define I2C_SCL_STATE()#define I2C_SDA_STATE() /* CONSTANTS*/*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学《化学工程与工艺-化工设计与过程优化》考试备考试题及答案解析
- 2025年大学《消防政治工作-消防人员心理健康辅导》考试模拟试题及答案解析
- 某戏剧家协会导演聘任办法制度
- 某食品机械厂物流部运输管理制
- 高中人音版歌唱的基本要素(三) 歌唱的声区和音色的统一教案
- 2025年酸碱中毒试题及答案
- 初中政治 (道德与法治)人教版(2024)九年级上册第一单元 富强与创新第二课 创新驱动发展创新改变生活教案及反思
- 2025年环评工程师考试题及答案
- 专题20 惊艳阅卷老师的14句金句+中考作文欣赏-2025年中考语文作文素材积累及练习教案
- 江西省 2025 年普通高中学业水平选择性考试-物理试题
- (人教版205新教材)英语三年级上册核心基础知识清单年
- 代谢综合征麻醉管理要点
- 2025年教师资格考试《学科教学论》备考题库及答案解析
- 2025浙江金华市交通投资集团有限公司招聘笔试笔试历年参考题库附带答案详解
- 网吧消防演练方案及流程
- 观赏鱼买卖合同(标准版)
- 自行式剪刀车作业平台施工方案
- SA8000-2026社会责任管理体系新版的主要变化及标准内容培训教材(可编辑!)
- 医院安全生产事故隐患内部报告奖励制度
- (初级)小红书种草营销师认证考试真题试题(附答案)
- 学校信息化2.0培训
评论
0/150
提交评论