‘壹’ 为什么扬声器不能直接接到单片机上
扬声器当然是可以接到单片机端口的,但是由于单片机端口的驱动能力很弱,就是是带有强上拉的单片机,一般也就20mA的驱动能力,所以没法把一个扬声器驱动的很响亮,所以一般都是外加三极管,MOS管或者专业芯片来驱动扬声器的
‘贰’ 单片机驱动扬声器发声,采用的什么波
一般都会采用功放芯片驱动,不会用单片机直接驱动。驱动扬声器发声,会采用单片机的DA通道,也就是数模转换通道。将存储在芯片内的语音数字文件,转换成一定频率的高低电平,输出到功放芯片驱动扬声器发声。
‘叁’ 如何用单片机PWM功能驱动扬声器
PC机上的所有音频文件本来就是数字量,只不过格式不同罢了。PCM文件就是AD转换后得到的二进制数据文件,将PCM加上文件头和文件尾就成了WAV文件。所以PCM文件有两个途径得到:1、通过录音设备。声音经麦克风后得到模拟电流信号,此信号经过放大然后AD得到的数据文件即是PCM文件。2、通过其它格式的音频文件转换。使用一些转换软件可以将其它格式的音频文件转换为PCM文件。
PWM信号可看作一个直流信号与锯齿波比较得到的信号,其占空比反映了直流信号的大小,所以PWM经低通滤波之后可以恢复直流信号,直流信号的大小由占空比决定。PWM做语音输出时,其频率是固定的(这个频率决定声调,一般的语音信号取11.025kHz。),然后将PCM文件中的数据作为占空比大小输出PWM波,经低通滤波后驱动扬声器即可得到声音。
‘肆’ C51单片机中用P1.0输出1KHz和500Hz的音频信号驱动扬声器
开两个计时器,计时器0用作定时中断,计数器1用作普通计数器用,用计数器1产生两个不同的频率。
定时器0中断用以判别100ms和200ms的时间隙,由于定时器中断需要在两个中断间隔时间间跳变,帮需要加一个标志位FLAG,当FLAG=0时让定时器0延时100MS中断,当FLAG=1时定时器0延时200MS中断。
假设p1.1外接按钮,对输出1khz和500hz进行切换。
#include
sbit wave = p1^0;
sbit k = p1^1;
#define fosc 12000000ul //晶振频率,可以自行修改
#define fint 1000 //定时器中断频率
bit switchflag;
void delayms(unsigned int x)
{
unsigned char t;
while(x--)
for(t=0;t<120;t++);
}
void main()
{
tmod&=0xf0;
tmod|=0x01;
th0=(65536-fosc/fint/12)/256;
tl0=(65536-fosc/fint/12)%256;
ie|=0x82;
tr0=1;
while(1)
{
if(!k)
{
delayms(10);
if(!k)
switchflag=!switchflag;
}
}
}
void t0_int() interrupt 1
{
static bit i;
th0=(65536-fosc/fint/12)/256;
tl0=(65536-fosc/fint/12)%256;
i=!i;
if(switchflag) {wave=!wave;}
else {wave=(i)?!wave:wave;}
}
(4)单片机的扬声器扩展阅读:
单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。
由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。
‘伍’ 单片机控制喇叭发声原理
要有硬件电路图才能说原理。。。一般来说用的是三极管驱动扬声器,然后让单片机控制三极管的基极,从而通过高低电平让三极管导通或截止从而控制扬声器