stm32f103c8t6加强版自带蜂鸣器红外测温报警beep例程
时间: 2023-07-23 08:39:10 浏览: 48
以下是基于STM32F103C8T6加强版自带蜂鸣器的红外测温报警BEEP例程:
```c
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "delay.h"
#include "iic.h"
#include "lcd1602.h"
#include "ht1621b.h"
#include "max6675.h"
#include "irtemp.h"
void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void BEEP_On(void)
{
GPIO_SetBits(GPIOB,GPIO_Pin_8);
}
void BEEP_Off(void)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_8);
}
int main(void)
{
float temp;
char str[20];
delay_init(72); //初始化延时函数
IIC_Init(); //初始化IIC总线
LCD1602_Init(); //初始化LCD1602
HT1621B_Init(); //初始化HT1621B
MAX6675_Init(); //初始化MAX6675
IRTEMP_Init(); //初始化红外温度传感器
BEEP_Init(); //初始化蜂鸣器
LCD1602_ShowString(0,0,"IR Temp: ");
LCD1602_ShowString(0,1,"MAX6675: ");
while(1)
{
temp=IRTEMP_GetTemp(); //获取红外温度传感器的温度值
sprintf(str,"%.2fC",temp); //将温度值转换成字符串
LCD1602_ShowString(9,0,str); //在LCD1602上显示温度值
temp=MAX6675_GetTemp(); //获取MAX6675的温度值
sprintf(str,"%.2fC",temp); //将温度值转换成字符串
LCD1602_ShowString(9,1,str); //在LCD1602上显示温度值
if(temp>30) //如果温度值超过30度
{
BEEP_On(); //打开蜂鸣器
delay_ms(500); //延时500ms
BEEP_Off(); //关闭蜂鸣器
delay_ms(500); //延时500ms
}
}
}
```
注意:此例程需要使用到其他文件中的函数,请先将这些文件添加到工程中。另外,在使用时需要根据具体的硬件连接情况进行修改。