MLX90615和STC12C5604AD的SMBusPWM 通信
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
//----------------------------------------------------------------------------------------------------------------------------------------//