173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

51单片机音乐汇编程序

htxw 2023-03-15 资讯中心 50 ℃

求51单片机 数字音乐盒 汇编语言代码

Z8279

EQU

8701H

D8279

EQU

8700H

LO

EQU

30H

HI

EQU

31H

ORG

0000H

AJMP

START

ORG

000BH

LJMP

T0_INT

START:

MOV

SP,#60H

MOV

P3,#0FFH

MOV

TMOD,#00000000B

MOV

IE,#10000010B

LCALL

F8279

;;8279的初始化

LCALL

LO_KEY

;;判断是否有下压键

PAN1:

MOV

DPTR,Z8279

MOVX

A,@DPTR

ANL

A,#3FH

MOV

R2,A

;

;保存键值

ANL

A,#01H

;;键值1

JNZ

S_1

JZ

P_1

S_1:

LCALL

SONG_1

P_1:

MOV

A,R2

ANL

A,#02H

;;键值2

JNZ

S_2

JZ

P_2

S_2:

LCALL

SONG_2

P_2

MOV

A,R2

ANL

A,#03H

;;键值3

JNZ

S_3

JZ

P_3

S_3:

LCALL

SONG_3

P_3

MOV

A,R2

ANL

A,#04H

;;键值4

JNZ

S_4

JZ

P_4

S_4

LCALL

SONG_4

P_4

MOV

A,R2

ANL

A,#05H

;;键值5

JNZ

S_5

JZ

PAN1

S_5:

LCALL

SONG_5

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

SONG_1:

;//歌曲1

MOV

R4,#15

LOOP1:

LCALL

VALUE1

SETB

TR0

MOV

R5,#20

LCALL

DELAY

CLR

TR0

MOV

R5,#20

LCALL

DELAY

LCALL

P_KEY

DJNZ

R4,LOOP1

LCALL

SONG_2

RET

SONG_2:

;//歌曲2

MOV

R4,#15

LOOP2:

LCALL

VALUE1

SETB

TR0

MOV

R5,#20

LCALL

DELAY

CLR

TR0

MOV

R5,#20

LCALL

DELAY

LCALL

P_KEY

DJNZ

R4,LOOP2

LCALL

SONG_3

RET

SONG_3:

;//歌曲3

MOV

R4,#15

LOOP3:

LCALL

VALUE1

SETB

TR0

MOV

R5,#20

LCALL

DELAY

CLR

TR0

MOV

R5,#20

LCALL

DELAY

LCALL

P_KEY

DJNZ

R4,LOOP3

LCALL

SONG_4

RET

SONG_4:

;//歌曲4

MOV

R4,#15

LOOP4:

LCALL

VALUE1

SETB

TR0

MOV

R5,#20

LCALL

DELAY

CLR

TR0

MOV

R5,#20

LCALL

DELAY

LCALL

P_KEY

DJNZ

R4,LOOP4

LCALL

SONG_5

RET

SONG_5:

;//歌曲5

MOV

R4,#15

LOOP5:

LCALL

VALUE1

SETB

TR0

MOV

R5,#20

LCALL

DELAY

CLR

TR0

MOV

R5,#20

LCALL

DELAY

LCALL

P_KEY

DJNZ

R4,LOOP5

LCALL

SONG_1

RET

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

VALUE1:

;//歌曲1的频率设置

MOV

DPTR,#FREH1

MOV

A,R4

MOVC

A,@A+DPTR

MOV

HI,A

MOV

DPTR,#FREL1

MOV

A,R4

MOVC

A,@A+DPTR

MOV

LO,A

MOV

R4,#1*****************************************

RET

VALUE2:

;/;/歌曲2的频率设置

MOV

DPTR,#FREH2

MOV

A,R4

MOVC

A,@A+DPTR

MOV

HI,A

MOV

DPTR,#FREL2

MOV

A,R4

MOVC

A,@A+DPTR

MOV

LO,A

MOV

R4,#1

RET

VALUE3:

;//歌曲3的频率设置

MOV

DPTR,#FREH3

MOV

A,R4

MOVC

A,@A+DPTR

MOV

HI,A

MOV

DPTR,#FREL3

MOV

A,R4

MOVC

A,@A+DPTR

MOV

LO,A

MOV

R4,#1

RET

VALUE4:

;//歌曲4的频率设置

MOV

DPTR,#FREH4

MOV

A,R4

MOVC

A,@A+DPTR

MOV

HI,A

MOV

DPTR,#FREL4

MOV

A,R4

MOVC

A,@A+DPTR

MOV

LO,A

MOV

R4,#1

RET

VALUE5:

;//歌曲5的频率设置

MOV

DPTR,#FREH5

MOV

A,R4

MOVC

A,@A+DPTR

MOV

HI,A

MOV

DPTR,#FREL5

MOV

A,R4

MOVC

A,@A+DPTR

MOV

LO,A

MOV

R4,#1

RET

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

T0_INT:

MOV

TL0,LO

MOV

TH0,HI

CPL

P3.4

RETI

DELAY:

MOV

R6,#50

D1:

MOV

R7,#100

DJNZ

R7,$

DJNZ

R6,D1

DJNZ

R5,DELAY

RET

F8279:

MOV

DPTR,Z8279

MOV

A,#10H

MOVX

@DPTR,A

MOV

A,#34H

MOVX

@DPTR,A

MOV

A,#0D1H

MOVX

@DPTR,A

LCALL

DELAY

MOV

A,#80H

MOVX

@DPTR,A

MOV

A,#40H

MOVX

@DPTR,A

RET

LO_KEY:

MOV

DPTR,Z8279

MOVX

A,@DPTR

ANL

A,#0FH

JZ

LO_KEY

RET

P_KEY:

MOV

DPTR,Z8279

MOVX

A,@DPTR

ANL

A,#0FH

JNZ

SIGN1

JZ

SIGN2

SIGN1:

LJMP

PAN1

SIGN2:

RET

FREH1

DB

0,226,229,232,233,236,238,240,241,242,244,244,246,247,248

FREL1

DB

0,4,13,10,20,3,8,6,2,23,5,26,1,4,3

FREH2

DB

0,236,229,232,233,226,230,240,231,246,244,234,236,247,248

FREL2

DB

0,4,13,10,20,3,8,6,2,23,5,26,1,4,3

FREH3

DB

0,226,229,232,233,236,238,240,241,242,244,244,246,247,248

FREL3

DB

0,4,13,10,20,3,8,6,2,23,5,26,1,4,3

FREH4

DB

0,226,229,232,233,236,238,240,241,242,244,244,246,247,248

FREL4

DB

0,4,13,10,20,3,8,6,2,23,5,26,1,4,3

FREH5

DB

0,226,229,232,233,236,238,240,241,242,244,244,246,247,248

FREL5

DB

0,4,13,10,20,3,8,6,2,23,5,26,1,4,3

END

跪求基于51单片机的汇编语言音乐盒程序

OUT BIT P2.3 //该引脚接蜂鸣器

ORG 0000H

LJMP START

ORG 000BH

INC 20H ;中断服务,中断计数器加1

MOV TH0,#0D8H

MOV TL0,#0EFH ;12M晶振,形成10毫秒中断

RETI

START:

MOV SP,#50H

MOV TH0,#0D8H

MOV TL0,#0EFH

MOV TMOD,#01H

MOV IE,#82H

MUSIC0:

NOP

MOV DPTR,#DAT ;表头地址送DPTR

MOV 20H,#00H ;中断计数器清0

MOV B,#00H ;表序号清0

MUSIC1:

NOP

CLR A

MOVC A,@A+DPTR ;查表取代码

JZ END0 ;是00H,则结束

CJNE A,#0FFH,MUSIC5

LJMP MUSIC3

MUSIC5:

NOP

MOV R6,A

INC DPTR

MOV A,B

MOVC A,@A+DPTR ;取节拍代码送R7

MOV R7,A

SETB TR0 ;启动计数

MUSIC2:

NOP

CPL OUT

MOV A,R6

MOV R3,A

LCALL DEL

MOV A,R7

CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?

;不等,则继续循环

MOV 20H,#00H ;等于,则取下一代码

INC DPTR

; INC B

LJMP MUSIC1

MUSIC3:

NOP

CLR TR0 ;休止100毫秒

MOV R2,#0DH

MUSIC4:

NOP

MOV R3,#0FFH

LCALL DEL

DJNZ R2,MUSIC4

INC DPTR

LJMP MUSIC1

END0:

NOP

MOV R2,#64H ;歌曲结束,延时1秒后继续

MUSIC6:

MOV R3,#00H

LCALL DEL

DJNZ R2,MUSIC6

LJMP MUSIC0

DEL:

NOP

DEL3:

MOV R4,#02H

DEL4:

NOP

DJNZ R4,DEL4

NOP

DJNZ R3,DEL3

RET

NOP

DAT:

db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h

db 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h

db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h

db 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h

db 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h

db 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h

db 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h

db 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h

db 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h

db 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h

db 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h

db 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h

db 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h

db 20h,10h,2bh,10h,26h,30h,30h,80h,00H

END

51单片机写音乐的一个程序,求详解,以下是程序。

SONG_TONE[i]/3

产生一个短延时,延时的时间正好是音符的频率

延时时间越短产生的频率就越高,发出的声音也越高

SONG_LONG[i]*20

是用于音符的持续时间。

就相当于长按跟短按一个按键一样

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

一、总体原理:

乐曲中不同的音符,实质就是不同频率的声音。通过单片机产生不同的频率的脉冲信号,

经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲。

二、单片机产生不同频率脉冲信号的原理:

1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周

期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O 反相,然

后重复计时此半周期的时间再对I/O 反相,就可以在I/O 脚上得到此频率的脉冲。

2)利用8051 的内部定时器使其工作在计数器模式MODE1 下,改变计数值TH0 及TL0 以

产生不同频率的方法如下:

例如,频率为523Hz,其周期天/523 S=1912uS,因此只要令计数器计时956uS/1us=956,

在每计数956 次时就将I/O 反接,就可得到中音DO(532Hz)。

计数脉冲值与频率的关系公式如下:

N=Fi/2/Fr

(N:计数值,Fi:内部计时一次为1uS,故其频率为1MHz,Fr:要产生的频率)

三、其计数值的求法如下:

T=65536-N=65536-Fi/2/Fr

计算举例:

设K=65536,F==Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)

的计数值。

T=65536-N=65536-Fi/2/Fr=6/2/Fr=65536-/Fr

低音DO 的T=65536-/262=63627

中音DO 的T=65536-/523=64580

高音DO 的T=65536-/1047=65059

参考程序:

#includereg51.h

#define uchar unsigned char

#define uint unsigned int

sbit BEEP=P3^7;

// 生日快乐歌的音符频率表,不同频率由不同的延时来决定

uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,

212,212,106,126,159,169,190,119,119,126,159,142,159,0};

// 生日快乐歌节拍表,节拍决定每个音符的演奏长短

uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,

9,3,12,12,12,12,12,9,3,12,12,12,24,0};

// 延时

void DelayMS(uint x)

{

uchar t;

while(x--) for(t=0;t120;t++);

}

// 播放函数

void PlayMusic()

{

uint i=0,j,k;

while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)

{ //播放各个音符,SONG_LONG 为拍子长度

for(j=0;jSONG_LONG[i]*20;j++)

{

BEEP=~BEEP;

//SONG_TONE延时表决定了每个音符的频率

for(k=0;kSONG_TONE[i]/3;k++);

}

DelayMS(10);

i++;

}

}

void main()

{

BEEP=0;

while(1)

{

PlayMusic(); //播放生日快乐

DelayMS(500); //播放完后暂停一段时间

}

}

求51单片机蜂鸣器音乐汇编语言,两只老虎的

ORG

0000H

AJMP

MAIN

ORG

000BH

AJMP

T0INT

ORG

0050H

MAIN:

MOV

TMOD,#01H

MOV

IE,#82H

Again:

MOV

DPTR,#TAB;表首地址

LOOP:

CLR

A

MOVC

A,@A+DPTR

MOV

R2,A

;时间高位

INC

DPTR

CLR

A

MOVC

A,@A+DPTR

MOV

R3,A;时间低位

2

ORL

A,R2

JZ

STOP

MOV

A,R2

ANL

A,R3

CJNE

A,#0FFH,NEXT

AJMP

Again

NEXT:

MOV

TH0,R2

MOV

TL0,R3

SETB

TR0

NEXT1:

CLR

A

INC

DPTR

MOVC

A,@A+DPTR

MOV

P1,A;字形码显示

3

CLR

A

INC

DPTR

MOVC

A,@A+DPTR;

延时常数

4

DEL:

MOV

R5,

2

DEL0:

MOV

R6

,#250

DEL1:

MOV

R7,

#248

NOP

DEL2:

DJNZ

R7,

DEL2

DJNZ

R6,DEL1

DJNZ

R5,DEL0

CLR

TR0

INC

DPTR;下一个音节

LJMP

LOOP

STOP:

AJMP

NEXT1

T0INT:

PUSH

A

PUSH

PSW

PUSH

DPH

PUSH

DPL

CPL

P3.0;音频取反

MOV

TH0,R2

MOV

TL0,R3

SETB

TR0

POP

DPL

POP

DPH

POP

PSW

POP

A

RETI

TAB:

DB

在TAB后把简谱打上

51单片机音乐汇编程序的介绍就聊到这里吧,感谢您花时间阅读,谢谢。

本文标签:51单片机音乐汇编程序

<