导航:首页 > 操作系统 > c51单片机音乐盒

c51单片机音乐盒

发布时间:2024-11-11 11:10:11

A. 跪求51单片机音乐盒汇编语言程序,急用!!!!谢谢@@

HUAN BIT 20H
ORG 0000H
JMP MAIN
ORG 000BH
MOV TL0,R2
MOV TH0,R3
CPL P2.0
ORG 001BH
DJNZ R4,GOON
MOV IE,#80H
JMP T1END
GOON: MOV TL1,#0B0H
MOV TH1,#3CH
T1END: RETI
ORG 0100H
MAIN: MOV R5,#99H
LOOP: MOV TMOD,#11H
MOV IP,#02H
MOV TL0,#0B0H
SETB EA
NEXT: MOV DPTR,#TAB
MOV R1,#00H
L1: MOV A,R1
MOVC A,@A+DPTR
MOV R3,A
JZ L3
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV R2,A
XRL A,#0FFH
JNZ L4
MOV A,R3
XRL A,#0FFH
JZ L5
L4: INC R1
MOV A,R1
L3: MOVC A,@A+DPTR
MOV R4,A
MOV TH0,R3
MOV TL0,R2
SETB ET0
SETB TR0
SETB ET1
SETB TR1
SETB HUAN
JB HUAN,$
INC R1
CJNE R1,#00H,L2
INC DPH
L2: JMP L1
L5: DJNZ R5,LOOP
JMP $
;《两只老虎》播放数据
TAB: DB 0FBH,0F9H,08H,0FCH,066H,08H,0FCH,0C7H,08H,0FBH,0F9H,08H
DB 0FBH,0F9H,08H,0FCH,066H,08H,0FCH,0C7H,08H,0FBH,0F9H,08H
DB 0FCH,0C7H,08H,0FCH,0F3H,08H,0FDH,0A4H,10H,0FCH,0C7H,08H
DB 0FCH,0F3H,08H,0FDH,04AH,08H,0FDH,04AH,04H,0FDH,095H,04H
DB 0FDH,04AH,04H,0FCH,0F3H,04H,0FCH,0C7H,08H,0FBH,0F9H,08H
DB 0FDH,04AH,04H,0FDH,095H,04H,0FDH,4AH,08H,04H,0FCH,0FCH,04H
DB 0FCH,0C7H,08H,0FBH,0F9H,08H,0FCH,066H,08H,0FAH,093H,08H
DB 0FBH,0F9H,08H,00H,08H,0FCH,66H,04H,0FAH,093H,08H
DB 0FBH,0F9H,08H,00H,10H,0FFH,0FFH
END
要播放其余的歌则用相应的播放数据

B. 51单片机编写音乐盒,要求汇编语言,歌曲青花瓷和爱情买卖,能让歌曲和数码管同步

好难,找不到歌曲的数字代码

C. 如何编写51单片机音乐程序

设计的相关音乐说明

要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期时间。利用半周期时间定时这个半周期时间,每当计时到后就将输出的I/O反向,然后重复计时此半周期再对I/O反向,就可以在I/O脚上得到此频率的脉冲。

记数脉冲值与频率的关系公式如:N=Fi/2/Fr。N:记数值;Fi:内部计时依次为1us,故其频率为1 MHZ;Fr:要产生的频率。

其记数值的求法如:T=65536-N=65536-Fi/2/Fr。例:设K=65536,F=1000000=Fi=1 MHZ。求低音DO(26HZ),中音DO(523HZ),高音DO(1046HZ)的记数值。

每个音符使用1个音节,字节的高四位代表音符的高低,低四位代表音符的节拍。如果1拍为0.4秒,1/4拍为0.1秒,假设1/4拍为 DELAY,则1拍为4 DELAY。

(3)c51单片机音乐盒扩展阅读

功能特性

1,可以仿真63K程序空间,接近64K 的16位地址空间;

2,可以仿真64Kxdata 空间,全部64K 的16位地址空间;

3,可以真实仿真全部32 条IO脚;

4,完全兼容keilC51 UV2 调试环境,可以通过UV2 环境进行单步,断点, 全速等操作;

5,可以使用C51语言或者ASM汇编语言进行调试 ;

6,可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某 变量上就会立即显示出它此的值;

7,可选 使用用户晶振,支持0-40MHZ晶振频率;

8,片上带有768字节的xdata,您可以在仿真时选 使用他们,进行xdata 的仿真;

9,可以仿真双DPTR 指针;

10,可以仿真去除ALE 信号输出. ;

11,自适应300-38400bps 的所有波特率通讯;

12,体积非常细小,非常方便插入到用户板中.插入时紧贴用户板,没有连接电缆,这样可以有效地减少运行中的干扰,避免仿真时出现莫名其妙的故障;

13,仿真插针采用优质镀金插针,可以有效地防止日久生锈,选择优质园脚IC插座,保护仿真插针,同时不会损坏目标板上的插座. ;

14,仿真时监控和用户代码分离,不可能产生不能仿真的软故障;

15,RS-232接口不计成本采用MAX202集成电路,串行通讯稳定可靠,绝非一般三极管的简易电路可比。

D. 自己做单片机音乐盒,开始用蜂鸣器,声音很小。后用lm386驱动扬声器声音还是很小,求解。

最好上原理图

单片机的IO驱动能力将对来说较弱,驱动蜂鸣器需要加三极管放大输出。
单片机好像不能直接接lm386,最好也加一级三极管隔离输出。

E. 求一份C51单片机数字音乐盒(LCD1602显示歌词,歌词需与音乐同步)的课程设计。程序为C语言程序的。

蜂鸣器不能唱歌,只会有调子,不知道显示歌词有什么用,

此外,你给的分太少了,我只给你蜂鸣器唱歌的程序,

一个是单纯的如何让蜂鸣器播放音乐,

一个是红外遥控播放音乐,音乐部分就只在MUSIC.C里面,你看一下就行了,

乐音是由物体振动发出的,如果你的蜂鸣器的发声频率大约等于乐音的频率,那么就能发出类似的调子,具体的音符频率表在我给的PDF的第30页。

再奉送你一个专门单片机编歌谱曲的软件。

F. 51单片机控制喇叭的程序(c语言)

/************************************************************************
[文件名] C51音乐程序(八月桂花)
[功能] 通过单片机演奏音乐
注意:通过了74HC14控制ULN2003 驱动芯片驱动蜂鸣器 *
/**********************************************************************/
#include <REG52.H>
#include <INTRINS.H>
//本例采用89C52, 晶振为11.0592MHZ
//关于如何编制音乐代码, 其实十分简单,各位可以看以下代码.
//频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;
//所以拿出谱子, 试探编吧!

sbit Beep = P1^5 ;

unsigned char n=0; //n为节拍常数变量
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,
0x20, 0x40, 0x1C , 0x10,
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) Beep=~Beep,delay(m); //等待节拍完成, 通过P1口输出音频(可多声道哦!)
TR0=0; //关定时器1
}
}

阅读全文

与c51单片机音乐盒相关的资料

热点内容
精品php源码 浏览:960
自己编写云服务器抢红包 浏览:203
java解压缩文件加密 浏览:887
dlink打印服务器默认地址 浏览:353
php休眠函数 浏览:372
金蝶如何打开服务器 浏览:766
e4a手游辅助源码 浏览:777
什么app可以实时直播 浏览:106
苹果13的app闪退什么原因 浏览:775
尾盘选股源码公式 浏览:450
php日期运算 浏览:931
天龙八部长歌服务器什么时候开的 浏览:199
鬼泣4模型在那个文件夹 浏览:229
单片机的串行口 浏览:58
phpjson转化为数组 浏览:268
pdf导入excel 浏览:428
苹果xsmax信任app在哪里设置 浏览:53
自动外链php源码 浏览:245
我的世界新手奖励箱命令 浏览:146
linux更新vim 浏览:998