小白跟做江科大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.结果

蜂鸣器之天空之城

相关推荐
不悔哥2 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20162 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
深圳老胡2 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
女神下凡2 天前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
梅梅9662 天前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
开发笔记-阿牛2 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
从零开始的嵌入式之旅2 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
恒锐丰科技林技术员2 天前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程
CHENKONG_CK2 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
祖力552 天前
ARM时钟
嵌入式硬件·arm·时钟·imx6ull