云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > MLX90614和STC12C5604AD的SMBus&PWM 通信

MLX90614和STC12C5604AD的SMBus&PWM 通信

  • 62 次阅读
  • 3 次下载
  • 2025/6/8 22:18:59

C语言代码

unsigned char arr[6]; //存储将要发送字节的缓冲器 SLA=(slave_addW<<1); arr[5]=0; arr[4]=SLA; arr[3]=cmdW; arr[2]=DataL; arr[1]=DataH; arr[0]=0;

Pecreg=PEC_cal(arr,6);

begin:

start_bit(); //发送起始位 TX_byte(SLA); //发送受控地址,写命令 if(slave_ack()==0) {

stop_bit(); goto begin; }

TX_byte(cmdW); //发送命令 if(slave_ack()==0) {

stop_bit(); goto begin; }

TX_byte(DataL); //发送数据低位字节 if(slave_ack()==0) {

stop_bit(); goto begin; }

TX_byte(DataH); //发送数据高位字节 if(slave_ack()==0) {

stop_bit(); goto begin; }

TX_byte(Pecreg); //发送PEC码 if(slave_ack()==0) {

stop_bit(); goto begin; }

stop_bit(); //发送终止位 Delay(200); //等候5ms }

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

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

MLX90614和单片机STC12C5604AD的SMBus,PWM通信

子文件Delay.c

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

//----------------------------------------------------------------------------------------------------------------------------------------// 延迟函数

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

9 / 23

C语言代码

#include #include \#include \

//----------------------------------------------------------------------------------------------------------------------------------------// 函数名: Delay

功能: 延迟一定的时间

参数: N表示延迟时间为MCU机器周期的N倍

注解: 机器周期是时钟周期(1/Fosc)的12倍,对于STC12C5604AD, Fosc=11.0592MHz //----------------------------------------------------------------------------------------------------------------------------------------// void Delay(unsigned int N) {

unsigned int i; for(i=0;i

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

//----------------------------------------------------------------------------------------------------------------------------------------// MLX90614和单片机STC12C5604AD的SMBus,PWM通信

子文件dec2hex.c //----------------------------------------------------------------------------------------------------------------------------------------//

//----------------------------------------------------------------------------------------------------------------------------------------// 十进制转换为十六进制 //----------------------------------------------------------------------------------------------------------------------------------------// #include \头文件中引用自身 #include \//----------------------------------------------------------------------------------------------------------------------------------------// 函数名: dec2hex 功能: 将十进制代码转换为十六进制代码 参数: float e (发射率数值) 返回值: unsigned int c c是数组c[4]的首地址 //----------------------------------------------------------------------------------------------------------------------------------------// unsigned int *dec2hex(float e) {

long int a=(e*65535)+0.5; int j,m=0,i=0;

unsigned int b[16]; unsigned int c[4],t; b[15]=0x0f; b[14]=0x0e; b[13]=0x0d; b[12]=0x0c; b[11]=0x0b; b[10]=0x0a; b[9]=0x09; b[8]=0x08; b[7]=0x07; b[6]=0x06; b[5]=0x05; b[4]=0x04; b[3]=0x03; b[2]=0x02; b[1]=0x01;

10 / 23

C语言代码

b[0]=0; while(a!=0) {

j=a; //求模运算 c[i++]=b[j]; a=a/16; //求余运算 m++; }

for(i=0;i

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

//----------------------------------------------------------------------------------------------------------------------------------------// MLX90614和单片机STC12C5604AD的SMBus,PWM通信

子文件CalTem.c //----------------------------------------------------------------------------------------------------------------------------------------//

//----------------------------------------------------------------------------------------------------------------------------------------// 根据十六进制数值计算温度 //----------------------------------------------------------------------------------------------------------------------------------------// #include \头文件中引用自身 //----------------------------------------------------------------------------------------------------------------------------------------// 函数名: CALTEMP 功能: 计算温度 参数: unsigned long int TEMP (由MLX90614中读到的数据) 返回值: unsigned int mah mah是数组mah[5]的首地址 注解: 将十六进制代码转换为温度数据的公式为T=(Data)*0.02-273.15 //----------------------------------------------------------------------------------------------------------------------------------------// unsigned int *CALTEMP(unsigned long int TEMP) {

unsigned long int T; unsigned int a,b;

unsigned int A4,A5,A6,A7,A8; unsigned int mah[5]; T=TEMP*2; if(T>=27315) {

T=T-27315; a=T/100; b=T-a*100; if(a>=100) {

A4=a/100; a=a0; A5=a/10; a=a; A6=a; }

else if(a>=10)

11 / 23

C语言代码

{

A4=0; A5=a/10; a=a; A6=a; } else {

A4=0; A5=0; A6=a; } if(b>=10) { A7=b/10; b=b; A8=b; } else { A7=0; A8=b; } } else {

T=27315-T; a=T/100; b=T-a*100; A4=9; if(a>=10) { A5=a/10; a=a; A6=a; } else {

A5=0; A6=a; }

if(b>=10) {

A7=b/10; b=b; A8=b; } else {

A7=0; A8=b; } }

mah[4]=A4; mah[3]=A5; mah[2]=A6;

MLX90614和单片机STC12C5604AD的SMBus,PWM通信

12 / 23

搜索更多关于: MLX90614和STC12C5604AD的SMBus&PW 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

C语言代码 unsigned char arr[6]; //存储将要发送字节的缓冲器 SLA=(slave_addW<<1); arr[5]=0; arr[4]=SLA; arr[3]=cmdW; arr[2]=DataL; arr[1]=DataH; arr[0]=0; Pecreg=PEC_cal(arr,6); begin: start_bit(); //发送起始位 TX_byte(SLA); //发送受控地址,写命令 if(slave_ack()==0)

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com