一、前言

        本文是使用STM32F103C8T6作为主控芯片,通过XPT2046转换IC读取热敏电阻的值,从而控制蜂鸣器响。当环境温度超过设定阀值时,蜂鸣器发出响声。

二、概述

(一)蜂鸣器

有源蜂鸣器和无源蜂鸣器。

        有源蜂鸣器内部是有发声电路,通过合适直流电就会发声音,另外有源蜂鸣器是有正负极之分。下图中是常用于工作电压为5v的有源蜂鸣器,正面标有加号的一侧引脚为正极,如果全新的没有剪过引脚的,正极引脚比负极长。


ESP32控制低电平蜂鸣器 stm32f103c8t6控制蜂鸣器_ESP32控制低电平蜂鸣器

有源蜂鸣器

 

        无源蜂鸣器是利用电磁感应现,为音圈接和交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声,接入直流电只能持续推动振膜而无法产生声音,只能在接通或断开时产生声音。与扬声器工作原理基本是一样的。

(二)热敏电阻

        热敏电阻是一种传感器电阻,其电阻值随着温度的变化而改变。按照温度系数的不同分为正温度系数热敏电阻(PTC)和负温度系数热敏电阻(NTC)。正温度系数热敏电阻器的电阻随温度的升高而增大,负温度系数热敏电阻器的电阻值随温度的升高而减小,它们同属于半导体器件。

三、硬件连接

ESP32控制低电平蜂鸣器 stm32f103c8t6控制蜂鸣器_ESP32控制低电平蜂鸣器_02

四、程序例程

1、XPT2046相关代码请参考下述链接文章

XPT2046程序例程

2、主函数

int main(void)
{
	int thermistor = 0;

	Buzzer_Pin_Init();//蜂鸣器初始化控制函数
	XPT2046_Pin_Init();
	Sys_Delay_Init();
	Usart1_Pin_Init(115200);
	printf("初始化成功\r\n");
	
	while(1)
	{
		
		thermistor = XPT2046_Read_Date(0xD4);
		if (relay_vlaue < 2500) {  //通过读取的原始值进行判断
			PBout(8) = 0;  //关闭
		} 
		else {
			PBout(8) = 1; //打开
		}
	}
}