蜂鸣器从机构鉴别包括光电探测器式蜂鸣器和涡流炉式蜂鸣器。光电探测器式为光电探测器瓷质片拼音字母发音,电流值相当小其他,涡流炉式蜂鸣器为电磁铁通电声音拼音字母发音,大小相当小。 蜂鸣器从成分分清可分成电容式式蜂鸣器和涡流式蜂鸣器。电容式式为电容式淘瓷片拼音拼读,电流大小是较小部分,涡流式蜂鸣器为磁圈通电电流声拼音拼读,体积太是较小。
依照驱程措施分为有源蜂鸣器和无源蜂鸣器。我也的有源和无源不应是电,更是谐振器源。有源蜂鸣器企业内部带了谐振器源,如下图 9-8 一样中,给了 BUZZ 引脚有一个低电平,蜂鸣器就能可以直接响。而无源蜂鸣器里面的就是带振荡器源的,要不然响要给 500Hz~4.5KHz 之中的脉冲发生器速度信号灯来驱程它才会响。有源蜂鸣器总是比无源蜂鸣器贵许多,正因为里多了震荡用电线路,驱程读音也简简单单,靠电平就会驱程,而无源蜂鸣器的价格较好廉价,另外无源蜂鸣器说话声速度会把控好,而音阶与速度又有确定好的相对应的的关联,由此就会作成来“do re mi fa sol la si”的作用,能够用它设计制作出简短的背景音乐重点,就像生日会歌、两支东北虎……。
图 9-8 蜂鸣器线路设计原理图
单支机蜂鸣器调控子程序和驱动安装电线典型示范规划成功案例
凯发k8娱乐旗舰app下载,凯发k8娱乐官网入口,凯发k8官网下载大家来搜一下吧图 9-8 的控制电路,蜂鸣器工作电流依旧会相很大,如此必须要用三级管能够,还加好几回个 100 欧的电容成为限流电容。不仅而且还加了一大个 D4 二级管,这样的二级管叫续流二级管。大家的蜂鸣器是理想化电子元件,当二极管导通给蜂鸣器电力时,就也会有导通功率流回蜂鸣器。而大家直到,电感的一名优势特点只是 功率不可突变的,导通时功率是开始加高的,事儿未情况,但当关断时,经“电-三级管-蜂鸣器-地”这家管路就切断了,过不得一切瞬时电流值了,很贮藏的瞬时电流值往哪里去呢,也就是路过这家 D4 和蜂鸣器人体的环路来需求量全掉,导致就防止出现了关断时因电感工作感应电流发生的反相冲击力。转续关断时的工作感应电流,这即是续流电感品牌的缘由。
蜂鸣器长时间主要用于租赁、打印纸机、万用表这样生产设备上做报错信息音,报错信息音基本上也很轻松,只是轻松传来个音频就可以的了,小编用小程序轻松做过个 4KHZ 规律下的说话和 1KHZ 规律下的唱歌发声软件,同班们也可以我探索下软件,更下具体特效。
#include
sbit BUZZ = P1^6; //蜂鸣器有效控制引脚
unsigned char T0RH = 0; //T0 载重值的高字节
unsigned char T0RL = 0; //T0 载重值的低字节
void OpenBuzz(unsigned int frequ);
void StopBuzz();
void main(){
unsigned int i;
TMOD = 0x01; //配值 T0 做工作在的模式 1,但先不再启动
EA = 1;
while (1){ //使能优化异常中断
OpenBuzz(4000); //以 4KHz 的几率发动蜂鸣器
for (i=0; i《40000; i++);
StopBuzz(); //停下蜂鸣器
for (i=0; i《40000; i++);
OpenBuzz(1000); //以 1KHz 的率初始化蜂鸣器
for (i=0; i《40000; i++);
StopBuzz(); //停掉蜂鸣器
for (i=0; i《40000; i++);
}
}
/* 蜂鸣器开始涵数,frequ-作业频次 */
void OpenBuzz(unsigned int frequ){
unsigned int reload;//测算必需的随机赏识载值
reload = 65536 - (11059200/12)/(frequ*2); //由给定速率计算方法延时倚重载值
T0RH = (unsigned char)(reload 》》 8); //16 位载重值分析为好坏三个字节
T0RL = (unsigned char)reload;
TH0 = 0xFF; //选用两个比较敏感外溢的初值,以使定时开关器赶紧付出事情
TL0 = 0xFE;
ET0 = 1; //使能 T0 经常中断
TR0 = 1; //开始 T0
}
/* 蜂鸣器结束涵数 */
void StopBuzz(){
ET0 = 0; //关闭 T0 中止
TR0 = 0; //中止 T0
}
/* T0 超时贴心服务数学函数,应用于控住蜂鸣器头腔共鸣 */
void InterruptTImer0() interrupt 1{
TH0 = T0RH; //直接访问方法重载值
TL0 = T0RL;
BUZZ = ~BUZZ; //转反蜂鸣器控制电平
}
还有用蜂鸣器来輸出音乐伴奏,仅仅只是是精彩而言,广泛应用比较少,里边儿构成了音阶、音乐谱的一些内部,系统还有丝毫错综复杂,因而就好详细介绍给用户去介绍了。仅具备这个能否观看《二只虎》的系统,用户能否下载下载到板子上玩乐,充分满足一个虚荣心心。
纯文案另存
#include
sbit BUZZ = P1^6; //蜂鸣器的控制引脚
unsigned int code NoteFrequ[] = { //中音 1-7 和高音 1-7 匹配速度数据库
523, 587, 659, 698, 784, 880, 988, //中音 1-7
1047, 1175, 1319, 1397, 1568, 1760, 1976 //高音 1-7
};
unsigned int code NoteReload[] = { //中音 1-7 和高音 1-7 应对的定时执行推崇载值
65536 - (11059200/12) / (523*2), //中音 1
65536 - (11059200/12) / (587*2), //2
65536 - (11059200/12) / (659*2), //3
65536 - (11059200/12) / (698*2), //4
65536 - (11059200/12) / (784*2), //5
65536 - (11059200/12) / (880*2), //6
65536 - (11059200/12) / (988*2), //7
65536 - (11059200/12) / (1047*2), //高音 1
65536 - (11059200/12) / (1175*2), //2
65536 - (11059200/12) / (1319*2), //3
65536 - (11059200/12) / (1397*2), //4
65536 - (11059200/12) / (1568*2), //5
65536 - (11059200/12) / (1760*2), //6
65536 - (11059200/12) / (1976*2), //7
};
bit enable = 1; //蜂鸣器说话使能logo
bit tmrflag = 0; //定时开关器终止达成圆形标志
unsigned char T0RH = 0xFF; //T0 载重值的高字节
unsigned char T0RL = 0x00; //T0 方法重载值的低字节
void PlayTwoTIger();
void main(){
unsigned int i;
EA = 1; //使能缺省间断
TMOD = 0x01; //配置单 T0 本职工作在经济模式 1
TH0 = T0RH;
TL0 = T0RL;
ET0 = 1; //使能 T0 断开
TR0 = 1; //开始 T0
while (1){
PlayTwoTIger(); //拨放乐曲--两支狮子
for (i=0; i《40000; i++); //停此那段时刻
}
}
/* 两支豹子乐曲录制方程 */
void PlayTwoTIger(){
unsigned char beat; //如今音乐节拍目录
unsigned char note; //在当下拍节相关联的音阶
unsigned int time = 0; //某一音乐节拍记时
unsigned int beatTime = 0; //现行音乐节拍总时间段
unsigned int soundTime = 0; //目前旋律需唱歌发声时长
//三只狮子老虎乐谱表
unsigned char code TwoTigerNote[] = {
1, 2, 3, 1, 1, 2, 3, 1, 3, 4, 5, 3, 4, 5,
5,6, 5,4, 3, 1, 5,6, 5,4, 3, 1, 1, 5, 1, 1, 5, 1,
};
//四只小老虎旋律表,4 说明拍一拍,1 这就是 1/4 拍,8 即使 2 拍
unsigned char code TwoTigerBeat[] = {
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 8,
3,1, 3,1, 4, 4, 3,1, 3,1, 4, 4, 4, 4, 8, 4, 4, 8,
};
//用旋律字段用作巡环变量类型
for (beat=0; beat
while (!tmrflag); //一直定时任务器终断成功完成后,论文检测没收违法所得理拍节
tmrflag = 0;
if (time == 0){ //某些拍节播完则开机一位新拍节
note = TwoTigerNote[beat] - 1;
T0RH = NoteReload[note] 》》 8;
T0RL = NoteReload[note];
//算旋律总精力,右移 2 位相当的于除 4,歪斜取代除法可不可以缩短程序执行运行速度
beatTime = (TwoTigerBeat[beat] * NoteFrequ[note]) 》》 2;
//测算头腔共鸣准确用时,为总准确用时的 0.75,换一个位置作用同上
soundTime = beatTime - (beatTime 》》 2);
enable = 1; //警示蜂鸣器刚刚开始发音
time++;
}else{ //现如今状况节奏未播完则进行处理现如今状况节奏
//现如今连续周期顺利到达旋律总周期时清零,
//并增加拍节字段,以做好准备启用新拍节
if (time 》= beatTime){
time = 0;
beat++;
}else{ //目前维持精力未可达总精力时,
time++; //累积时候记数
//走到头腔共鸣精力后,显示关闭蜂鸣器,
//放入 0.25*总精力的靜音接连,
if (time == soundTime){
enable = 0; //以便辨认维持的一个旋律
}
}
}
}
}
/* T0 间断服务管理涵数,中用把控好蜂鸣器表示 */
void InterruptTimer0() interrupt 1{
TH0 = T0RH; //自己添加载重值
TL0 = T0RL;
tmrflag = 1;
if (enable){ //使能时翻转蜂鸣器操控电平
BUZZ = ~BUZZ;
}else{ //未使能时开启蜂鸣器
BUZZ = 1;
}
}