MLX90614和STC12C5604AD通讯

上传人:枫** 文档编号:506179708 上传时间:2024-01-08 格式:DOC 页数:26 大小:137.50KB
返回 下载 相关 举报
MLX90614和STC12C5604AD通讯_第1页
第1页 / 共26页
MLX90614和STC12C5604AD通讯_第2页
第2页 / 共26页
MLX90614和STC12C5604AD通讯_第3页
第3页 / 共26页
MLX90614和STC12C5604AD通讯_第4页
第4页 / 共26页
MLX90614和STC12C5604AD通讯_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《MLX90614和STC12C5604AD通讯》由会员分享,可在线阅读,更多相关《MLX90614和STC12C5604AD通讯(26页珍藏版)》请在金锄头文库上搜索。

1、-1 目的 该文档的主要目的是描述怎样实现单片机和红外温度计ML*90614的SMBus通信,并简单介绍利用单片机对ML*90614的PWM输出脉冲进展测量并计算相关温度。代码是基于STC12C5604AD单片机的。实例给出了由C语言实现ML*90614读取物体温度,写入数据到ML*90614、以及对PWM脉冲的测量和计算等功能。 2 C 代码2.1 由ML*90614读取温度局部实例给出了应用C语言来实现从ML*90614中读取物体温度的程序。为了使程序操作和运行简单起见,整个工程被分为几个子工程。在该文档中整个C程序分为主文件SMBus.c 用来实现对物体温度的读取、改变SMBus地址、改

2、变发射率、以及改变PWMCTRL配置参数功能;子文件SMBus_CM.c具体描述SMBus通信的起始状态,终止状态,发送和承受数据; 子文件SMBus_OP.c包含了利用SMBus通信由ML*90614读取数据,对ML*90614写入数据和PEC校验码计算的程序;子文件Delay.c调用延迟函数;子文件dec2he*.c将十进制转换为十六进制;子文件CalTem.c根据十六进制数值计算温度读数;子文件digitalLED.c在数字LEDs上显示温度读数。在主文件的头文件中引用相应的子文件.h文件,以将所有功能综合、起来。/-/-/主文件SMBus.c/-/-/红外温度计ML*90614中读取物

3、体温度描述:该文件是基于单片机STC12C5604AD编写的C语言程序,可通过SMBus实现对ML*90614温度数据的读取,对ML*90614写入数据的功能。实例给出了读取物体温度的程序,以及可根据十六进制数值计算温度数值并在数字LEDs上显示温度的程序,但是此为可选项,用户可根据自己的应用另行选择其他方式。/-/头文件/-/*include *include stdio.h *include intrins.h *include string.h*include SMBus_CM.h /引用SMBus_CM.h文件(包含起始状态,终止状态,发送,接收字节等)*include SMBus_O

4、P.h /引用SMBus_OP.h文件(包含由ML*90614中读取数据和写入数据)*include digitalLED.h /引用digitalLED.h文件以在数字LEDs上显示温度读数 *include CalTem.h /引用CalTem.h文件来根据十六进制数值计算温度*include dec2he*.h /引用dec2he*.h文件将十进制转换为十六进制 *include Delay.h /引用Delay.h文件/-/宏定义I/O端口和SMBus信号输入输出方向/-/*define _SDA_OUTPUT P1M0=0*10; P1M1=0*10; /设置SDA为开漏输出*def

5、ine _SDA_INPUT P1M0=0*10; P1M1=0*00;/设置SDA为高阻输入*define _SCL_IO P1M0=0*08; P1M1=0*08;/设置SCL为开漏输出的I/O端口 sbit SDA = P14; /指定SDA线给P14sbit SCL = P13; /指定SCL线给P13/-/主函数功能作用:读取物体温度/-/void main() unsigned char slaveaddress; unsigned long int DATA; unsigned int *mahm; _SCL_IO; /引用宏定义-设置SCL为开漏式I/O口 _SDA_OUTPU

6、T; /引用宏定义-设置SDA为开漏式输出 SCL=0;/ Delay(1200);/SMBus请求时间,将PWM模式转换为SMBus模式(至少为2ms) SCL=1;/ while(1) slaveaddress=MEM_READ(0*00,0*2E); /读取存于ML*90614 EEPROM 0Eh地址中的SMBus地址 DATA=MEM_READ(slaveaddress,0*07); /基于上述地址由ML*90614的内存07h中读取物体温度 mahm=CALTEMP(DATA); /基于所得的十六进制温度格式计算实际温度 show(mahm,5); /在数字LEDs上显示计算所得温度 /-/-/子文件SMBus_CM.c/-/-/该文档包含了SMBus通信的起始状态,终止状态,发送和承受字节等/-/头文件/-/*include *include SMBus_CM.h /头文件中引用本身*include intrins.h*include Delay.h /-

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号