无源蜂鸣器_PlayMusic

实验器材:

			单片机开发板 无缘蜂鸣器 电解电容 三极管 若干电阻电容

电路图

无源蜂鸣器_PlayMusic_第1张图片

有面包板可以用面包板搭电路,而本吊就厉害了,用塑料袋。
无源蜂鸣器_PlayMusic_第2张图片

实验阶段

搭完电路后,连上单片机和电源,随便给个1khz的PWM波信号,发现声音有点大,而且极其刺耳,声音质量不太理想。
思前想后,决定在供电端加一个电阻来限流,帮助减小音量
无源蜂鸣器_PlayMusic_第3张图片
之后声音果然小了很多,也没有那么刺耳了,不过毕竟是无源蜂鸣器,而且本吊技术有限,音质不是很好,没办法和空调开关机的和弦声相比。不太清楚空调的和弦声,是怎样做到的。可能用的不是蜂鸣器。

下面是几个主要的代码。

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "beep.h"
#include "key.h"
#include "timer.h"
/*************************************************************************
以下是3种比较典型的和弦音的实现细节:(符号说明:Tf:频率给定持续时间(ms)
Tv:电压给定持续时间(ms)?F:输出频率(KHz))
单声和弦音:短暂鸣响后音量渐隐
F=2.6,Tv=200,Tf=1000

开机和弦音:三升调,按音调分3个阶段
1.F=2.3KHz,Tv=200ms,Tf=200ms
2.F=2.6KHz,Tv=200ms,Tf=200ms
3.F=2.9KHz,Tv=100ms,Tf=2100ms

关机和弦音:三降调,按音调分3个阶段
1.F=2.9KHz,Tv=200ms,Tf=200ms
2.F=2.6KHz,Tv=200ms,Tf=200ms
3.F=2.3KHz,Tv=100ms,Tf=2100ms

//2.3KHZ的PWM波占空比50%   434 217   
//2.5khz的PWM波占空比50%   400 200
//2.45KHZ的PWM波占空比50%  408 204
//2.6KHZ的PWM波占空比50%   384 192  
//2.75KHZ的PWM波占空比50%  363 181
//2.8KHZ的PWM波占空比50%   357 178



*************************************************************************/
//typedef struct
//{
//	u32 Freq;
//	u16 PWRtime;
//	u16 OSCtime;

//}TONE_Def;

 int main(void)
 {	
	TONE_Def power_open[3] = {{2300,200,280},{2600,200,280},{2900,200,2100}};
	TONE_Def two_tiger[] = 
	{
		{2000,250,500},//1
		{2300,250,500},//2
		{2600,250,500},//3
		{2000,250,500},//1
		{2000,250,500},//1		
		{2300,250,500},//3
		{2600,250,500},//3
		{2000,250,500},//3
		{2300,250,500},//3
		{2600,250,500},//3
		{2900,500,1000},//3
		{2300,250,500},//3
		{2600,250,500},//3
		{2900,1000,4000},//3
	};
	int i = 0;
	delay_init();	    	 //延时函数初始化	  
	LED_Init();		  	//初始化与LED连接的硬件接口
	BEEP_Init();
	KEY_Init();
	 
	TIM1_PWM_Init(434-1,72-1);//10KHZ
	TIM_SetCompare1(TIM1,217);	 
//	TIM3_Int_Init(100-1,7200-1);	//10khz的定时器频率   1ms计数10  10ms计数100
//	BEEP_EN = 1;
		 
   	while(1)
	{
		for(i=0;i<14;i++)
		{
			music_simida(two_tiger[i]);
		}
//		 music_simida (power_open[0]);
//		 music_simida (power_open[1]);
//		 music_simida (power_open[2]);	
	delay_ms(5000);
	} 
}

void music_simida (TONE_Def data)
{
	
		TIM1_PWM_Init((1000000/data.Freq)-1,72-1);//2.3KHZ的PWM波占空比50%  434  217   //2.5khz 400 200
		TIM_SetCompare1(TIM1,(1000000/data.Freq)/2);	
		BEEP_EN=1;	
		delay_ms(data.PWRtime);
		BEEP_EN = 0;
		delay_ms(data.OSCtime-data.PWRtime);
		TIM_Cmd(TIM1, DISABLE);  //使能TIM1
}

总结

以上是我实验的主要阶段,其实是一个很简单的小实验,但是很有意思。多多培养
动手能力很棒。
https://wenku.baidu.com/view/1ef34bb769dc5022aaea0015.html
实验过程中参考了这个文档资料

你可能感兴趣的:(学习笔记,实验)