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

蜂鸣器之天空之城

相关推荐
路上有只喵8 小时前
认识元器件 · 单片机(MCU/MPU/SOC) · 实战篇 11
单片机·嵌入式硬件
不昀8 小时前
开关电源电流互感器怎么选:匝比、采样电阻与复位的计算笔记
单片机·嵌入式硬件·电子元器件
小李不想当小白11 小时前
WDG看门狗(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
youcans_13 小时前
【嵌入式软件AI编程】(3)面向 AI 协同开发的 STM32 硬件信息标准化
人工智能·stm32·嵌入式硬件·ai编程
智者知已应修善业15 小时前
【51单片机实现从下到上,从上到下,从中间到两边,两边到中间】2024-10-23
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机
辰哥单片机设计16 小时前
STM32智能药盒丨2027单片机新项目
stm32·单片机·嵌入式硬件
LCG米1 天前
STM32硬件CRC外设实测:多项式固定陷阱、CRC-32校验不匹配根因与软件查表法耗时对比落地
stm32·单片机·嵌入式硬件
La Pulga1 天前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
女神下凡1 天前
芯参谋(85):Linux_PPI_NAND_驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件·设计规范