当前位置:首页 > 51单片机 > 正文内容

利用9012三极管提单片机高蜂鸣器音量

以为利用三极管的电流放大作用,给蜂鸣器供应电流,提高音乐音量,是一件很容易的事。没有想到,怎么都不发出声音,经过群友热心交流和自己的不断试验,终于解决。原因究竟在哪里?让我慢慢道来。
(一)首先怀疑三极管放大电流问题:
百度三极管接蜂鸣器的电路图,网上的图片太多了。手中只有1K、100欧电阻、9012PNP三极管,按网上连了一个还是没有声音;

1583920696395.JPGX


(二)怀疑电阻值不对,电路没有工作啊放大状态,用仿真电路实验;为了便于观察,接入了电流表显示;
蜂鸣器仿真时有有源的BUZZER和无源的SOUNDER、SPEAKER;不发声,有人讲电压不能用标记符,有人说只能用SPEAKER,还有人讲电路接翻了。
实践证明使用BUZZER不行;换SPEAKER就好了。上面的电路是可行的。
(三)怀疑程序不对,重新下载个蜂鸣器音乐程序,仿真正常,实际线路还是不能发出声音;
#include
sbit out=P3^0;
unsigned char n=0; //n为节拍常数变量
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,
0x20, 0x40, 0x1C , 0x1 0,
0x18, 0x10, 0x20 , 0x10,
0x1C, 0x10, 0x18 , 0x40,
0x1C, 0x20, 0x20 , 0x20,
0x1C, 0x20, 0x18 , 0x20,
0x20, 0x80, 0xFF , 0x20,
0x30, 0x1C, 0x10 , 0x18,
0x20, 0x15, 0x20 , 0x1C,
0x20, 0x20, 0x20 , 0x26,
0x40, 0x20, 0x20 , 0x2B,
0x20, 0x26, 0x20 , 0x20,
0x20, 0x30, 0x80 , 0xFF,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x80,
0x20, 0x30, 0x1C , 0x10,
0x20, 0x10, 0x1C , 0x10,
0x20, 0x20, 0x26 , 0x20,
0x2B, 0x20, 0x30 , 0x20,
0x2B, 0x40, 0x20 , 0x15,
0x1F, 0x05, 0x20 , 0x10,
0x1C, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x30,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x40, 0x1C , 0x20,
0x20, 0x20, 0x26 , 0x40,
0x13, 0x60, 0x18 , 0x20,
0x15, 0x40, 0x13 , 0x40,
0x18, 0x80, 0x00
};
void int0() interrupt 1 //采用中断0 控制节拍
{ TH0=0xd8;
TL0=0xef;
n--;
}
void delay (unsigned char m) //控制频率延时
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a) //豪秒延时子程序
{
while(--a); //采用while(--a) 不要采用while(a--); 各位可编译一下看看汇编结果就知道了!
}
void main()
{ unsigned char p,m; //m为频率常数变量
unsigned char i=0;
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(1)
{
a: p=music_tab[i];
if(p==0x00) { i=0, delayms(1000); goto play;} //如果碰到结束符,延时1秒,回到开始再来一遍
else if(p==0xff) { i=i+1;delayms(100),TR0=0; goto a;} //若碰到休止符,延时100ms,继续取下一音符
else {m=music_tab[i++], n=music_tab[i++];} //取频率常数 和 节拍常数
TR0=1; //开定时器1
while(n!=0) out=~out,delay(m); //等待节拍完成, 通过P1口输出音频(可多声道哦!)
TR0=0; //关定时器1
}
}
(四)再次根据仿真电路检测实际线路,怀疑三极管引脚接错了;网上查阅三极管用数字万用表如何判断;
S9012 (H.331)三极管测试
1 判断是NPN还是PNP型,数字万用表打到二极管档,使用红表笔接触任意引脚,再分别黑表笔接触其他两个引脚,如果数字超范围1,则红表笔一段是基极B,为NPN型;
2 判断E极和C极,档位打到hFE上,把三极管插万用表三极管测试孔上,管型和B极要准确。再翻一下,测试数据大的一次管脚是对的;
QQ群讨论,三极管没有问题;
(五)怀疑仿真使用的是AT89C51,实际是STC12C5204AD;怀疑P0口上拉电阻问题,换P3口;全实验到了,还是不行;怎么办?
(六)无奈之下想到实际电路电流情况如何?借助万用表,测量实际电路电流和电压值,忽然发现蜂鸣器处一导线电压异常,重新拔、插,蜂鸣器突然断续出声音;原来是面包板上一处导线接触不良。真是小问题,大麻烦,困扰一天的问题终于找到病因了,面包板接触不良。
(七)蜂鸣器声音大小调试:
1 更换电阻值,特别去掉蜂鸣器上的电阻,声音明显变大;也可以改变基极电阻,只要处于放大状态,提高输出电流,声音就会增加;
2 网友提出改变PWM也可以提高音量:测试如下根据音符DO对应的周期,计算一个半个周期时长大约2微秒,编程如下。改变延时数字会改变声音频率,不会改变声音大小;但是声音可能超出人耳朵辨别频率,听不到。PWM无效。
#include
sbit BUZZ=P3^0;//蜂鸣器连续的IO口
void delay1ms(unsigned char z) 

//延时1MS


unsigned int x,y;

for(x=z;x>0;x--)

for(y=112;y>0;y--);
}
void main(){
while(1){


BUZZ = 0;
delay1ms(2);

BUZZ=1;
delay1ms(2);
}
}
通过本实例,反思调试过程,希望给大家借鉴。


扫描二维码推送至手机访问。

版权声明:本文由智凡单片机c语言入门发布,如需转载请注明出处。

分享给朋友:

相关文章

51单片机寄存器配置小技巧

51单片机寄存器配置小技巧

整型数据转换二进制数据的技巧知识点:该技巧比较适合应用在51单片机寄存器的配置方面;减少了我们的计算量。思路——>我们比较习惯直接的整型数据;当我们需要配置寄存器,这时能不能直接利用该数据作为我...

89c51单片机扩展IO口

89c51单片机扩展IO口

首先我们先讲讲为什么要扩展IO口。在我们使用51单片机的时候,有时候会出现IO口不够用的情况。比如键盘!这个时候IO口的资源就十分有限了。按键是我们常用的器件,做某些东西的时候又不能缺少按键。如果一个...

关于51单片机的一些总结-音乐程序频率表

关于51单片机的一些总结-音乐程序频率表

1. 绘制流程图-查看使用芯片的指令集             &nb...

动手写代码之前必须的准备工作

动手写代码之前必须的准备工作

1 Keil软件的介绍和安装1.1 IDE概念(1)IDE就是集成开发环境,就是一套用来开发的完整的软件系统。1.2 Keil uvision介绍(1)发展。(2)版本 1.2、1.3、1.4、1.5...

单片机万年历DS1302时钟芯片的应用

单片机万年历DS1302时钟芯片的应用

基于DS1302时钟芯片的万年历的制作包含温度传感器,温度显示按键操作,红外遥控万年历时间断电记录12864液晶显示屏显示万年历等通过protues仿真和keil仿真protues截图:keil代码截...

51单片机学习笔记红外通信实验

51单片机学习笔记红外通信实验

一.红外通信基础1.红外线原理红外线是波长在760nm~1mm之间的非可见光。红外通信装置由红外发射管和红外接受管组成,红外发射管是能发射出红外线的发光二极管,发射强度随着电流的增大而增大;红外接受管...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。