96寸tft显示红外测温温度例程stm32f103c8t6自带蜂鸣器高温报警
时间: 2023-08-02 09:07:32 浏览: 143
好的,以下是一个基于STM32F103C8T6的例程,用于读取红外测温模块的温度数据,并将其显示在0.96寸TFT屏幕上,同时在高温时触发蜂鸣器报警。
首先,你需要准备以下硬件和软件:
- STM32F103C8T6开发板
- 0.96寸TFT显示屏
- 红外测温模块
- 蜂鸣器模块
- ST-LINK/V2调试器
- Keil uVision 5开发环境
接下来,按照以下步骤进行操作:
1. 打开Keil uVision 5开发环境,创建一个新的工程,选择STM32F103C8T6作为芯片型号,并选择对应的器件包。
2. 在工程中添加以下库文件:
- CMSIS
- STM32F10x_StdPeriph_Driver
这些库文件可以在ST官网下载,也可以在Keil uVision 5的Pack Installer中下载。
3. 在工程中添加以下源文件:
- Adafruit_GFX.c
- Adafruit_ST7735.c
- MLX90614.c
这些源文件是用于控制TFT显示屏和红外测温模块的库文件,可以从对应的官网或GitHub上下载。
4. 编写以下程序代码,用于读取红外测温模块的温度数据,并将其显示在TFT屏幕上,并在高温时触发蜂鸣器报警。
```c
#include "stm32f10x.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ST7735.h"
#include "MLX90614.h"
#define TFT_CS GPIO_Pin_4
#define TFT_RST GPIO_Pin_3
#define TFT_DC GPIO_Pin_2
#define BEEP GPIO_Pin_0
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
MLX90614 mlx = MLX90614();
void delay(uint32_t time) {
while(time--);
}
void beep_on(void) {
GPIO_SetBits(GPIOA, BEEP);
}
void beep_off(void) {
GPIO_ResetBits(GPIOA, BEEP);
}
int main(void) {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); // 使能GPIOA和GPIOB时钟
tft.begin(); // 初始化TFT屏幕
mlx.begin(); // 初始化红外测温模块
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = BEEP;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化蜂鸣器GPIO口
while(1) {
float temp = mlx.readObjectTempC(); // 读取温度数据
char str[16];
sprintf(str, "%.2f C", temp); // 格式化温度数据
tft.fillScreen(ST7735_BLACK); // 清空屏幕
tft.setCursor(0, 0); // 设置光标位置
tft.setTextColor(ST7735_WHITE); // 设置字体颜色
tft.setTextSize(2); // 设置字体大小
tft.print(str); // 在屏幕上显示温度数据
if(temp > 38.0) { // 如果温度高于38度
beep_on(); // 触发蜂鸣器报警
} else {
beep_off(); // 关闭蜂鸣器
}
delay(1000000); // 延时一段时间
}
}
```
这个程序将温度数据读取并在屏幕上显示出来,同时在高温时触发蜂鸣器报警。
注意,上述代码仅供参考。它可能需要根据你使用的具体硬件和库进行修改。在编写代码之前,请确保仔细阅读文档和示例,并理解代码中的每个部分。
阅读全文