小白跟做江科大51单片机之蜂鸣器播放音乐

1.引入Delay及Timer0相关文件

2.编写main.c代码

#include <REGX52.H>

#include "Delay.h"

#include "Timer0.h"

sbit Buzzer=P2^5;

//音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音符号#

#define P 0

#define L1 1

#define L1_ 2

#define L2 3

#define L2_ 4

#define L3 5

#define L4 6

#define L4_ 7

#define L5 8

#define L5_ 9

#define L6 10

#define L6_ 11

#define L7 12

#define M1 13

#define M1_ 14

#define M2 15

#define M2_ 16

#define M3 17

#define M4 18

#define M4_ 19

#define M5 20

#define M5_ 21

#define M6 22

#define M6_ 23

#define M7 24

#define H1 25

#define H1_ 26

#define H2 27

#define H2_ 28

#define H3 29

#define H4 30

#define H4_ 31

#define H5 32

#define H5_ 33

#define H6 34

#define H6_ 35

#define H7 36

//此数组是取到全部的音

unsigned int FreqTable\[\]={

0,

63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,

64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,

65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283,

};

//乐谱,必须使用code,RAM最大128字节

unsigned char code Music\[\]={

//音符,时值,

//1

P, 4,

P, 4,

P, 4,

M6, 2,

M7, 2,

H1, 4+2,

M7, 2,

H1, 4,

H3, 4,

M7, 4+4+4,

M3, 2,

M3, 2,

//2

M6, 4+2,

M5, 2,

M6, 4,

H1, 4,

M5, 4+4+4,

M3, 4,

M4, 4+2,

M3, 2,

M4, 4,

H1, 4,

//3

M3, 4+4,

P, 2,

H1, 2,

H1, 2,

H1, 2,

M7, 4+2,

M4_,2,

M4_,4,

M7, 4,

M7, 8,

P, 4,

M6, 2,

M7, 2,

//4

H1, 4+2,

M7, 2,

H1, 4,

H3, 4,

M7, 4+4+4,

M3, 2,

M3, 2,

M6, 4+2,

M5, 2,

M6, 4,

H1, 4,

//5

M5, 4+4+4,

M2, 2,

M3, 2,

M4, 4,

H1, 2,

M7, 2+2,

H1, 2+4,

H2, 2,

H2, 2,

H3, 2,

H1, 2+4+4,

//6

H1, 2,

M7, 2,

M6, 2,

M6, 2,

M7, 4,

M5_,4,

M6, 4+4+4,

H1, 2,

H2, 2,

H3, 4+2,

H2, 2,

H3, 4,

H5, 4,

//7

H2, 4+4+4,

M5, 2,

M5, 2,

H1, 4+2,

M7, 2,

H1, 4,

H3, 4,

H3, 4+4+4+4,

//8

M6, 2,

M7, 2,

H1, 4,

M7, 4,

H2, 2,

H2, 2,

H1, 4+2,

M5, 2+4+4,

H4, 4,

H3, 4,

H3, 4,

H1, 4,

//9

H3, 4+4+4,

H3, 4,

H6, 4+4,

H5, 4,

H5, 4,

H3, 2,

H2, 2,

H1, 4+4,

P, 2,

H1, 2,

//10

H2, 4,

H1, 2,

H2, 2,

H2, 4,

H5, 4,

H3, 4+4+4,

H3, 4,

H6, 4+4,

H5, 4+4,

//11

H3, 2,

H2, 2,

H1, 4+4,

P, 2,

H1, 2,

H2, 4,

H1, 2,

H2, 2+4,

M7, 4,

M6, 4+4+4,

P, 4,

0xFF //终止标志

};

unsigned char freselect,Musicselect;

void main()

{

Timer0Init();

while(1)

{

if(MusicMusicselect!=0xFF)

{

freselect=MusicMusicselect;

Musicselect++;

Delay(500/4*MusicMusicselect);

Musicselect++;

TR0=0;

Delay(5); //音符间短暂停顿

TR0=1;

}

else

{

TR0=0;

while(1);

}

}

}

//1ms会有一次中断

//产生500HZ的频率

void Timer0_Routine() interrupt 1

{

if(FreqTablefreselect)

{

TL0 = FreqTablefreselect%256; //设置定时初值

TH0 = FreqTablefreselect/256; //设置定时初值

Buzzer=!Buzzer;

}

}

3.结果

蜂鸣器之天空之城

相关推荐
Jumbuck_1013 小时前
从零实现《三角洲行动》手游自动跑刀脚本:ADB 直控 + OpenCV 视觉识别 + 固定点位搜刮)三角洲自动跑刀教程
嵌入式硬件·yolo·目标检测·自动化·自动驾驶·三角洲·自动跑刀
txh050713 小时前
从零开始学习FOC
单片机·嵌入式硬件·学习
2601_9611940213 小时前
考研政治历年真题及解析pdf
stm32·单片机·嵌入式硬件·物联网·考研·pdf
今日待办13 小时前
STM32H747I-DISCO 开发指南【数字麦克风使用】
stm32·单片机·嵌入式硬件
世微 如初13 小时前
【方案】AP5127摩托车灯驱动设计:12-100V输入,2.5A恒流
单片机·嵌入式硬件
嵌入式ZYXC13 小时前
第7章:原理图设计与阅读——从“能看懂”到“会画”的关键一跃
stm32·单片机·嵌入式硬件·物联网
Topplyz13 小时前
保险丝选型
单片机·嵌入式硬件·pcb·电源·layout
破晓单片机13 小时前
007、STM32单片机分享:宠物喂食器系统
stm32·单片机·嵌入式硬件
JNX_SEMI13 小时前
OC5800N降压DC-DC转换器:宽压输入、内置100V MOS、输出可达2A以上
单片机·嵌入式硬件
嵌入式小站14 小时前
STM32 零基础可移植教程 16:ADC + DMA 连续采样,为什么不用 CPU 一直搬数据
stm32·单片机·嵌入式硬件