导航:首页 > 操作系统 > 单片机唱歌

单片机唱歌

发布时间:2022-04-26 13:28:17

❶ 51单片机蜂鸣器唱歌程序

[2]单片机音乐盒花样流水灯设计
功能描述:
1、按键切换音乐
2、彩灯可以跟随音调亮灭
3、按键切换彩灯显示花样
4、支持功能定制
☆已作出的实物优酷视频演示地址:
http://v.youku.com/v_show/id_XMTUxMDU3MzcyOA==.html

❷ 编写单片机音乐。

就用单片机和蜂鸣器应该就可以。你控制蜂鸣器的频率改变,这样蜂鸣器发声的“音调”就会不一样,然后再自己慢慢调那些频率,就可以构成一个单片机控制的音乐了。
至于音乐里面的12345671怎么发声,请参考以下资料(采用51单片机):

为了输出准确的音阶频率,我们需要用定时器输出来控制蜂鸣器的驱动,这里用的 T0。
我们再每一次定时器中断溢出时取反 P17 引脚,以形成频率驱动蜂鸣器,定时器 0 工
作在 16 位方式,需要在中断里重新置入初始值。这个值就决定了 P17输出的频率。我们在
程序里先做好了一张表,预先写好了每个音阶的频率需要设置的初始值。到时调入对应的值
进去 T0,不断溢出时就 P17 可以输出对应的频率。
在这个程序里,我们自动地输出 8 个音符,每个音符保持 1 秒钟左右。
―――――――――――――――――――――――
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h> //包括一个 52 标准内核的头文件

char code dx516[3] _at_ 0x003b;//这是为了仿真设置的

sbit BEEP=P1^7; //喇叭输出脚

uchar th0_f; //在中断中装载的 T0 的值高 8 位
uchar tl0_f; //在中断中装载的 T0 的值低 8 位

//T0 的值,及输出频率对照表
uchar code freq[36*2]={
0xA9,0xEF,//00220HZ ,1 //0
0x93,0xF0,//00233HZ ,1#
0x73,0xF1,//00247HZ ,2
0x49,0xF2,//00262HZ ,2#
0x07,0xF3,//00277HZ ,3
0xC8,0xF3,//00294HZ ,4
0x73,0xF4,//00311HZ ,4#
0x1E,0xF5,//00330HZ ,5
0xB6,0xF5,//00349HZ ,5#
0x4C,0xF6,//00370HZ ,6
0xD7,0xF6,//00392HZ ,6#
0x5A,0xF7,//00415HZ ,7
0xD8,0xF7,//00440HZ 1 //12
0x4D,0xF8,//00466HZ 1# //13
0xBD,0xF8,//00494HZ 2 //14
0x24,0xF9,//00523HZ 2# //15
0x87,0xF9,//00554HZ 3 //16
0xE4,0xF9,//00587HZ 4 //17
0x3D,0xFA,//00622HZ 4# //18

0x90,0xFA,//00659HZ 5 //19
0xDE,0xFA,//00698HZ 5# //20
0x29,0xFB,//00740HZ 6 //21
0x6F,0xFB,//00784HZ 6# //22
0xB1,0xFB,//00831HZ 7 //23
0xEF,0xFB,//00880HZ `1
0x2A,0xFC,//00932HZ `1#
0x62,0xFC,//00988HZ `2
0x95,0xFC,//01046HZ `2#
0xC7,0xFC,//01109HZ `3
0xF6,0xFC,//01175HZ `4
0x22,0xFD,//01244HZ `4#
0x4B,0xFD,//01318HZ `5
0x73,0xFD,//01397HZ `5#
0x98,0xFD,//01480HZ `6
0xBB,0xFD,//01568HZ `6#
0xDC,0xFD,//01661HZ `7 //35
};

//定时中断 0,用于产生唱歌频率
timer0() interrupt 1
{
TL0=tl0_f;TH0=th0_f; //调入预定时值
BEEP=~BEEP; //取反音乐输出 IO
P2=~P2;
}

//音阶声音自动输出试验
void main(void) // 主程序
{
ulong n;
uchar i;

uchar code jie8[8]={12,14,16,17,19,21,23,24};//1234567`1 八个音符在频率表中的位置

TMOD = 0x01; //使用定时器 0 的 16 位工作模式
TR0 = 1;
ET0 = 1;
EA = 1;

while(1)
{
for(i=0;i<8;i++) //循环播放 8 个音符
{

tl0_f=freq[jie8[i]*2]; //置一个音符的值
th0_f=freq[jie8[i]*2+1];
for(n=0;n<50000;n++); //延时 1 秒左右

}
}
}
―――――――――――――――――――――――――――――――
编译,运行。可以听到 8 个音符不断循环输出。

❸ 关于单片机蜂鸣器唱歌的问题,怎样让音乐播放一次后停下来

参考我这个例子:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar i=0;
sbit SPK = P3^4;
sbit K1 = P1^0;
uchar code HI_LIST[]=
{
0,266,229,232,233,236,238,240,241,242,244,245,246,247,248
};
uchar code LO_LIST[]=
{
0,4,13,10,20,3,8,6,2,23,5,26,1,4,3
};

void T0_INT() interrupt 1
{
TL0 = LO_LIST[i];
TH0 = HI_LIST[i];
SPK = !SPK;
}

void DelayMS(uint ms)
{
uchar t;
while(ms--)
{
for(t=0;t<120;t++);
}
}

void main()
{
IE = 0x82;
TMOD = 0x00;
while(1)
{
while(K1==1);
while(K1==0);
for(i=1;i<15;i++)
{
TR0 = 1;
DelayMS(500);
TR0 = 0;
DelayMS(50);
}
}
}

❹ 让单片机唱歌的c语言程序是怎么弄的

其实原理很简单,就是控制单片机的某个引脚,输出一定频率的方波信号,而输出方波信号的方法,是最基础的,最简单的编程了,用定时器定时,根据信号频率算出信号周期,然后计算出定时的时间。那单片机演奏歌曲的程序,也是同样的原理,只是事先根据歌曲的简谱查出每个音阶的信号频率,再根据各音阶频率计算出定时器的初值。演奏时,按简谱的各音阶顺序输出不同的频率的信号就行了。

下表是音阶与频率对应关系表,给出常用音阶对应的定时常数。

❺ 怎么利用单片机控制蜂鸣器唱歌呢.求帮助,新手

使用单片机的定时器控制蜂鸣器的频率就可以发出不同的音调了,不同的音调组合就可以唱歌了,网上找下程序参考一下吧,新手自己做难道有点大

❻ 单片机唱歌代码怎么编比如,do,re,mi ,fa,so ,la,xi,

每个音符都对应不同的频率,你去查一下那个表,然后用PWM或者IO口电平翻转都可以输出信号使蜂鸣器“唱歌”。

❼ 单片机蜂鸣器唱歌

你看一下音乐存放的数组SONG的话
会发现SONG数组中存放的规律是
频率,音长,频率,音长……
所以第一个
Temp1
=
SONG[Addr++];
读出的是频率
接着Temp2
=
SONG[Addr++];读出的是音长,音长即1拍、1/2拍、1/4拍等

❽ 51单片机唱歌怎么实现啊

单片机可以演奏从低音、中音、高音和超高音,四个八度共28个音符。

演奏乐曲时,就根据音符的不同数值,从半周期数据表中找到定时时间初始值,送入定时器即可控制发音的音调。

比如把表中的0xF2和0x42送到定时器,定时器按照这个初始值来产生中断,输出的方波,人们听起来,这就是低音1。

乐曲的数据,也要写个数据表,程序中以 code unsigned char sszymmh[] 命名。

  1. 这个表中每三个数字,说明了一个音符,它们分别代表:

  2. 第一个数字是音符的数值1234567之一,代表多来咪发...;

  3. 第二个数字是0123之一,代表低音、中音、高音、超高音;

  4. 第三个数字是时间长度,以半拍为单位。

  5. 乐曲数据表的结尾是三个0。

❾ 单片机中能唱歌的蜂鸣器是有源还是无源的

无源的,单片机是通过调节频率和脉宽控制蜂鸣器发出不同的声调。

阅读全文

与单片机唱歌相关的资料

热点内容
寻找信号源源码 浏览:79
打电话老服务器错误是什么原因 浏览:489
三维溯源码 浏览:714
android录音开源 浏览:459
弗洛伊德算法c 浏览:10
udp命令字 浏览:659
app服务端java源码 浏览:798
电脑用文件夹玩大型游戏 浏览:254
安卓耳塞失灵怎么办 浏览:765
华三交换机保存命令 浏览:605
命令方块怎么调键盘 浏览:841
不把密码存在服务器上怎么办 浏览:398
怎么让指令方块的命令消失 浏览:543
用单片机做plc 浏览:404
云服务器进入子目录命令 浏览:795
服务器机柜如何配电 浏览:578
怎么删除iphone资源库里的app 浏览:940
pdf鱼 浏览:648
单片机pcf8591什么作用 浏览:805
sql命令学院 浏览:283