一.LM386功放芯片介绍
LM386 是一种音频集成功放,具有自身功耗低、电压增益可调整电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。
芯片工作电压为 4-12V 或 5-18V(LM386N-4);静态消耗电流为 4mA;电压增益为20-200dB;在引脚1和8开路时,增益为20DB;带宽为 300KHz;输入阻抗为50K:音频功率0.5W。
LM386芯片引脚如图:
(1)引脚2 为反相输入端,
(2)引脚3 为同相输入端引脚
(3)引脚5为输出端:
(4)引脚6和4分别为电源和地;
(5)引脚1和8为电压增益设定端;
(6)引脚 7和地之间接旁路电容,通常取10p F。
二.电压增益知识补充
放大器增益是输出功率与输入功率之比的对数,用来表示功率放大的程度。它也指电压或电流的放大倍数。而分贝是放大器增益的单位。
(1)电压增益:Av(dB)=20log(|Av|)
电压增益值以分贝为单位,等于以 10 为底的对数的 20 倍的绝对值,即
当前增益(分贝):Ai(dB)=20log(|Ai|);
当前增益值(以分贝为单位)等于 20 乘以以 10 为底的对数倍数的绝对值。
(2)例如,LM386开环增益为20DB,即电压增益为10,或功率增益为10。
从电路图可以看出,五线四相表示电机有4个线圈,5根接线端子,其中引脚5为公共端。
三.应用电路:
(1)电位器RT1用于调节音量。
(2)C2为旁路电容,用于降低音频噪声。
(3)R1、C1构成的滤波电路,用于滤波和调节输入阻抗。
(4)C6、C7为芯片电源去耦电容。
(5)BEEP为8欧姆,0.25W扬声器;
(6)LM386增益引脚1、8连接10uF电容,增益为200DB。
注意:该电路用在PWM音频上,需串联一个适当的电阻器。
四.应用实例
下面举一个简单的以单片机PWM音频输出的音乐播放器。
首先,功放电路采用以上的电路,不同的是,该电路输入引脚多串联了一个10k的电阻(R2),主要作用是降低输入电流(另一种办法是降低功放电路的增益)。
然后单片机引脚P1.0输出一串以音频信号来变换频率的PWM,便可通过功放电路来驱动喇叭播放一段音乐。
程序:
//《最浪漫的事》
unsigned char code song8[]={
5,1,1, 6,1,1, 1,2,1, 6,1,2, 6,1,1, 5,1,1, 6,1,1, 5,1,1, 3,1,1, 5,1,5,
5,1,1, 6,1,1, 1,2,1, 6,1,2, 6,1,1, 5,1,1, 6,1,1, 5,1,1, 6,1,1, 1,1,5,
1,1,1, 2,1,1, 3,1,1, 2,1,1, 2,1,1, 2,1,1, 1,1,1, 2,1,1, 1,1,1, 6,1,1,
3,1,2, 2,1,3, 5,1,1, 6,1,1, 1,2,1, 6,1,2, 6,1,1, 5,1,1, 6,1,1, 5,1,1,
6,1,1, 1,1,5, 1,1,1, 2,1,1, 3,1,1, 4,1,2, 4,1,1, 5,1,1, 6,1,1, 6,1,1,
5,1,1, 6,1,2, 1,2,1, 6,1,3, 1,2,1, 6,1,1, 5,1,1, 5,1,4, 1,1,1, 6,1,1,
5,1,5, 5,1,1, 6,1,1, 1,2,1, 3,1,1, 2,1,1, 3,1,1, 1,1,6, 0,0,0};
// 频率-半周期数据表 高八位 共保存了四个八度的28个频率数据
unsigned char code FREQH[]={
0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音1234567
0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i
0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音 234567
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //超高音 1234567
// 频率-半周期数据表 低八位
unsigned char code FREQL[]={
0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音1234567
0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i
0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, //高音 234567
0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16}; //超高音 1234567
void main(void)
{
TMOD=0x11; //T0 T1 均在工作方式1
ET0=1; //T0开中断
EA=1; //CPU开中断
while(1)
{
music_play(); //根据当前状态播放相应歌曲的某个音符
if(!pause) //暂停键处理
{
delayms(5);
if(!pause)
{
if(music_num==0) //music_num=0只有在刚开机,且未按下暂停键时存在,表示刚开机时的状态,按下后从第一首开始播放
{
music_num=1; //歌曲序号置1
num=0; //从头播放
play_enable=1; //允许播放
}
else
{
play_enable=~play_enable;
speaker=1;
}
while(!pause) //若按着暂停键不放手时的处理
{
if(play_enable==0){} //如果是暂停,则显示时间不变//(暂停时play_enable==0)
}
}//暂停键处理结束
}//while结束
if((!play_up)&&(music_num!=0)) //上一首按键
{
delayms(5);
if((!play_up)&&(music_num!=0))
{ speaker=1;
music_num-=1;//歌曲编号减一
if(music_num<=0)
music_num=8;
num=0; //从头开始播放
if(music_num==(sound_amount+1))
music_num=1;
delayms(500);//歌曲切换时延时0.5S
}
}
if((!play_down)&&(music_num!=0))
{
delayms(5);
if((!play_down)&&(music_num!=0))
{ speaker=1;
music_num+=1;//歌曲编号加一
if(music_num >=9)
music_num=1;
num=0; //从头开始播放
if(music_num==0)
music_num=sound_amount;
delayms(500);//歌曲切换时延时0.5S
}
}
}
}