STC89C52学习笔记(九)
综述:本文主要介绍了蜂鸣器、蜂鸣器如何使用以及如何利用蜂鸣器播放不同频率声音。
一、蜂鸣器
1.定义和作用
电信号→声音信号,常用来产生按键音和报警音。
2.分类
有源:自带振荡器,给正负极接直流电压即可持续发生,频率稳定
无源:需要控制器提供震荡脉冲,可发出不同频率声音
3.原理
(1)高电平触发蜂鸣器
Q1做开关作用,如果给高电平,那么Q1的发射结正偏,三极管Q1相当于开关的闭合状态,蜂鸣器发生发声;如果给低电平,那么Q1的发射结反偏,三极管Q1相当于开关的断开状态,蜂鸣器不发生发声。
(2)低电平触发蜂鸣器
类似的,这张图就是低电平触发,也即是给低电平时,开关闭合,高电平时,开关断开。
(3)ULN2003驱动蜂鸣器
在51开发板上借用了ULN2003(给步进电机驱动)的一个空余引脚来驱动蜂鸣器,但是,自己设置的时候可以只用上面的低电平触发就行。
①ULN2003的逻辑框图如下:
②内部的非门相当于达林顿管,与二极管的连接电路具体如下:
③常见的达林顿管驱动蜂鸣器的电路:
4.播放提示音
利用之前建立的xmsDelay函数,每隔1ms响一次
Buzzer=!Buzzer;Delay(1);
xms提示音
for(i=0;i<xms;i++){Buzzer=!Buzzer;Delay(1);}
写一个500us延时函数,放置在蜂鸣器函数内,构成1ms蜂鸣器响声一次的函数。
void Buzzer_Delay500us (){unsigned char i;nop ()1=247;while (--i);}void Buzzer_Time (unsigned int ms){unsigned int i;for(i=0;i<ms*2;i++)Buzzer=!Buzzer;Buzzer_Delay500us ();}
5.播放音乐
①认识乐谱
乐谱记得看音高和音长。假设4分音符是500ms,2分音符是1s。
②转化乐谱
音符→频率→周期→翻转一次时间(周期一半)→取整→定时器的重载值
参考视频:51单片机学习.视频
侵权联系删除!