在CodeWarrior开发环境中的MLX90614体温检测代码
时间: 2023-06-12 21:02:45 浏览: 100
CodeWarrior集成开发环境使用简介 - 傅志强.pdf
4星 · 用户满意度95%
以下是在CodeWarrior开发环境中使用MLX90614体温检测的代码示例:
```c
#include <hidef.h> // 引入 HC9S12XDP512 头文件
#include "stdio.h" // 引入标准输入输出头文件
#include "math.h" // 引入数学库头文件
#include "MLX90614.h" // 引入 MLX90614 库头文件
#pragma LINK_INFO DERIVATIVE "mc9s12xdp512" // 设置芯片型号
#define BAUDRATE 9600 // 串口波特率
#define F_BUS 8000000 // 系统时钟频率
void UART0_Init(void);
void UART0_SendChar(char);
void UART0_SendString(char*);
void DelayUs(unsigned int);
void main(void) {
float temp;
char str[32];
EnableInterrupts; // 开启中断
UART0_Init(); // 初始化串口
MLX90614_Init(); // 初始化温度传感器
while (1) {
temp = MLX90614_ReadObjectTempC(); // 读取物体温度
sprintf(str, "Temperature: %.2f C\r\n", temp); // 将温度值转换为字符串
UART0_SendString(str); // 发送字符串到串口
DelayUs(100000); // 延时 100ms
}
}
void UART0_Init(void) {
SCI0BDH = ((F_BUS / 16 / BAUDRATE) >> 8) & 0xFF; // 设置波特率寄存器高字节
SCI0BDL = (F_BUS / 16 / BAUDRATE) & 0xFF; // 设置波特率寄存器低字节
SCI0C2 |= 0x0C; // 使能接收和发送
}
void UART0_SendChar(char c) {
while (!(SCI0S1 & 0x80)); // 等待发送缓冲区为空
SCI0D = c; // 发送字符
}
void UART0_SendString(char* str) {
while (*str) {
UART0_SendChar(*str++);
}
}
void DelayUs(unsigned int us) {
unsigned int i, j;
for (i = 0; i < us; i++) {
for (j = 0; j < 10; j++) {
__asm__ __volatile__("nop"); // 空操作
}
}
}
```
需要注意的是,以上代码中引入了一个名为`MLX90614.h`的头文件,这个头文件定义了一些与MLX90614相关的函数和常量,需要根据实际情况编写。此外,这段代码使用了串口输出温度值,需要将串口连接到电脑或其他设备上进行查看。
阅读全文