1. 51单片机声音输出
看你要输出什么样的音频。
1、如果只是很简单的像某些有声贺卡那样的话,接一个无源喇叭,自己控制I/O输出一个方波,通过控制方波的频率来调节音调,然后将不同的频率组合起来,连续播放就是一首简单的歌曲。
2、如果要输出MP3,那就需要一块音频解码芯片,比如VS1003。单片机将存储在外部存储器里(比如U盘)的歌曲信息通过接口芯片传给音频解码芯片,解码之后就能输出歌曲了。
第二种情况相对比较复杂,涉及到如何高效读取存储的歌曲信息和高效传输这些信息。
2. 单片机的输出声音频率是多少
扬声器或蜂鸣器是靠正、负电平驱动生成震荡,因此,正、负电平相同时长能生成最大声音
500Hz=500次震荡每秒,即震荡频率=1/500Hz=0.002秒=0.002s
如果我们需要生成500Hz的声音,应该让扬声器接收到这样的波形:0.001s的高电平和0.001s的低电平
因此我们设定定时器每0.001s中断一次,在中断时翻转P3.0的状态,得到的波形就是我们想要的波形啦。
3. 用单片机 P1.0 输出 1KHz 和 500Hz 的音频信号驱动扬声器输出报警器声音,作报警信号,要求 1KHz 信号响 1
用89C51片定时器
fosc=12MHz,
从P1.0口输出500Hz
org 000h
sjmp do ;跳初始化程序
org 000bh
ajmp t1ms ;1毫秒定时中断
do:
mov tmod,#00010001b ;双定时T0,T1
setb et0 ;开中断
setb ea ;开中断
MOV TH0,#252 ;设定T0: 1ms中断一次12MHz
MOV TL0,#24
setb tr0 ;开始定时
sjmp $
;=====================定时器中断==============
t1ms: MOV TH0,#252 ;设定T0: 1ms中断一次12MHz
MOV TL0,#24 ;
;----------------------0.2s定时--
djnz r0,next;0.2s
cpl 00h
mov r0,#200
;--------------------------------
next:
jb 00h,toret
cpl p1.0 ;从P1.0输出周期2ms方波,每1ms翻转
reti
;-----------------------------
toret:
clr p1.0 ;电平输出
reti ;中断返回
end
4. 怎样使单片机发出声音
...这恐怕有难度``
单单让他发出声音那很简单``
只要一个51片+一个喇叭就可以
发音原理就是利用声音的频率``就是说用51控制一个脚发出一个20~20KHZ的方波就可以让喇叭产生同样频率的震动``从而发出声音.(人耳能听到的频率范围是20~20KHZ).
但要发出两段录制好的声音,这就很有难度了.除非你能把这段声音转化成相应的机器码`让CPU直接处理.
5. 用51单片机实现音乐播放的原理是什么
发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。
音符的发音主要靠不同的音频脉冲。例如:利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P3.7引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。音乐中的节拍用延时时间产生。
6. 求助,单片机怎么向LM386输出音频
用单片机的引脚输出某一个频率的信号,这种程序是最基础的了。
输出的信号送到LM386的信号输入端进行放大就行了。
而LM386的放大电路,更是到处都是了。
7. 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;}
}
(7)单片机输出音频扩展阅读:
单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。
由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。
8. 用51单片机实现音乐播放的原理是什么
需要写一段程序。
如果是简单的音乐,编乐谱推蜂鸣器就可以;如果是mp3/wav之类的音乐,需要芯片自带解码模块,或者使用外部解码芯片,还需要dac将声音推出来。
声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。要准确奏出一首曲子,必须准确地控制乐曲节奏,即一音符的持续时间。音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。
9. 单片机的输出声音频率为什么这么算
首先,0.7ms翻转P3.0一次,P3.0输出的波形由1变0或由0变1,而一个震荡周期包含一个高电平和一个低电平,因此你看到需要将0.7ms乘以2才是一个周期波形的时长,0.7ms*2=1.4ms
1.4ms换算成秒: 1.4ms/1000=0.0014s
0.0014s换算成频率: 1/0.0014s=714.2857Hz
10. C51单片机中用P1.0输出1KHz和500Hz的音频信号驱动扬声器
闲的手痒,给你写一个,希望采纳!!!
假设P1.1外接按钮,对输出 1KHz 和 500Hz 进行切换。
#include<reg51.h>
sbitWAVE=P1^0;
sbitK=P1^1;
#defineFOSC12000000ul//晶振频率,可以自行修改
#defineFINT1000//定时器中断频率
bitswitchFlag;
voidDelayms(unsignedintx)
{
unsignedchart;
while(x--)
for(t=0;t<120;t++);
}
voidmain()
{
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;
}
}
}
voidT0_INT()interrupt1
{
staticbiti;
TH0=(65536-FOSC/FINT/12)/256;
TL0=(65536-FOSC/FINT/12)%256;
i=!i;
if(switchFlag){WAVE=!WAVE;}
else{WAVE=(i)?!WAVE:WAVE;}
}