MLX90615和STC12C5604AD的SMBusPWM 通信

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 目的

该文档的主要目的是描述怎样实现单片机和红外温度计MLX90615的SMBus通信。代码是基于

STC12C5604AD单片机的。实例给出了由C语言实现MLX90615读取物体温度,写入数据到MLX90615的功能。

2 C 代码

2.1 由

SMBus

读取数据,对

MLX90615dec2hex.c

digitalLED.c (在数字

起来。

主文件

红外温度计—

MLX90615温度数据的读取,对

数值并在数字LEDs上显示温度的程序,但是此为可选项,用户可根据自己的应用另行选择其他方式。

//----------------------------------------------------------------------------------------------------------------------------------------//

头文件

//----------------------------------------------------------------------------------------------------------------------------------------//

#include

#include "stdio.h"

#include "intrins.h"

#include "string.h"

#include "SMBus_CM.h" //引用SMBus_CM.h文件(包含起始状态,终止状态,发送,接收字节等)

#include "SMBus_OP.h" //引用SMBus_OP.h文件(包含由MLX90615中读取数据和写入数据)

#include "digitalLED.h" //引用digitalLED.h文件以在数字LEDs上显示温度读数

#include "CalTem.h" //引用CalTem.h文件来根据十六进制数值计算温度

#include "dec2hex.h" //引用dec2hex.h文件将十进制转换为十六进制

#include "Delay.h" //引用Delay.h文件

//----------------------------------------------------------------------------------------------------------------------------------------//

宏定义I/O端口和SMBus信号输入输出方向

//----------------------------------------------------------------------------------------------------------------------------------------//

#define _SDA_OUTPUT P1M0=0x10; P1M1=0x10; //设置SDA为开漏输出

#define _SDA_INPUT P1M0=0x10; P1M1=0x00; //设置SDA为高阻输入

#define _SCL_IO P1M0=0x08; P1M1=0x08; //设置SCL为开漏输出的I/O端口

sbit SDA = P1^4; //指定SDA线给P14

sbit SCL = P1^3; //指定SCL线给P13

//----------------------------------------------------------------------------------------------------------------------------------------// 主函数功能

作用:读取物体温度

//----------------------------------------------------------------------------------------------------------------------------------------// void main()

{

unsigned char slaveaddress;

SCL=0;

模式(21ms – 39ms)

SCL=1;

while(1)

{

//

//

//

//在数字

}

}

子文件

//----------------------------------------------------------------------------------------------------------------------------------------// //----------------------------------------------------------------------------------------------------------------------------------------// 该文档包含了SMBus通信的起始状态,终止状态,发送和接受字节等

//----------------------------------------------------------------------------------------------------------------------------------------// 头文件

//----------------------------------------------------------------------------------------------------------------------------------------// #include

#include "SMBus_CM.h" //头文件中引用本身

#include "intrins.h"

#include "Delay.h"

//----------------------------------------------------------------------------------------------------------------------------------------// 宏定义I/O端口和SMBus信号的方向

//----------------------------------------------------------------------------------------------------------------------------------------// #define _SDA_OUTPUT P1M0=0x10; P1M1=0x10; //设置SDA为开漏输出

#define _SDA_INPUT P1M0=0x10; P1M1=0x00; //设置SDA为高阻输入

#define _SCL_IO P1M0=0x08; P1M1=0x08; //设置SCL为开漏式I/O端口

sbit SDA = P1^4; //指定SDA线给P14

sbit SCL = P1^3; //指定SCL线给P13

//----------------------------------------------------------------------------------------------------------------------------------------//

相关文档
最新文档