资源简介
使用51单片机的蜂鸣器输出三首音乐:送别、爬音阶、八月桂花。当然了,可以随意更换乐曲,把谱输入数组就行。在播放过程中,使用外部中断来暂停音乐,使用独立按键来选择音乐。经过调试该程序可行。其中蜂鸣器接p1.5,独立按键1接p3.2(外部中断0)实现暂停播放,独立按键2和3接p0.1和p0.0,实现音乐的选择

代码片段和文件信息
#include
#include
sbit Beep = P1^5 ;
sbit p1 = P0^1;
sbit p2 = P0^2;
unsigned char pause;
unsigned char n=0; //constant of beat-time counter
/*0xff
0x200x400x260x400x180x400x1c
0x400x180x400x200x400x200x40
0x300x400x260x400x2b0x400x2b
0x400x000x400x260x400x18
0x400x190x400x1c0x400x180x40
0x200x400x200x400x2b0x400x24
0x400x330x400x300x400x00
*/
unsigned char code music_tab1[] = {
0x600x100x550x100x4c0x100x48
0x100x400x100x390x100x330x10
0x300x100x2b0x100x260x100x24
0x100x200x100x1c0x100x190x10
0x180x100x150x100x130x100x12
0x100x100x100x0e0x100x0d0x10
0x00
};
unsigned char code music_tab2[] ={
0x18 0x30 0x1C 0x10 //form:frequence beat frequence beat
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 //n controls the time of beat
{
TH0=0xd8;
TL0=0xef;
n--;
}
void delay(unsigned char m) //control the delay of frequecy
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a) //function of ms-delay
{
while(--a); //can‘t be a--
}
void pause_music() interrupt 0
{
//delayms(100);
pause = ~ pause;
delayms(100);
/* if(p1 == 0)
{
//load the first song
goto begin;
}
else if(p2 == 0)
{
//load the second song
goto begin;
}
*/
}
void main()
{
// unsigned char code music_tab[191];
// unsigned char n1n2;
unsigned char pm; //m:constant of frequency
unsigned char i=0;
unsigned char code* addr = music_tab1;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5048 2017-05-05 17:06 程序\music
文件 4716 2017-05-05 17:07 程序\music.c
文件 1803 2017-05-05 17:06 程序\music.hex
文件 43 2017-05-05 17:06 程序\music.lnp
文件 12949 2017-05-05 17:06 程序\music.LST
文件 9640 2017-05-05 17:06 程序\music.M51
文件 5020 2017-05-05 17:06 程序\music.OBJ
文件 172 2017-05-05 18:57 程序\music.plg
文件 57506 2017-05-05 18:57 程序\music.uvopt
文件 13398 2017-05-03 21:54 程序\music.uvproj
目录 0 2017-05-05 18:57 程序
----------- --------- ---------- ----- ----
110295 11
- 上一篇:列主元消去 LU分解 最小二乘法等九个算法
- 下一篇:卡尔曼滤波小程序导航误差分析
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
- 基于51单片机的计算器(C51编写,有
- 51单片机大量源码
- 基于51单片机的交通信号灯程序
- GSM监控系统51单片机设计
- 51单片机定时器/计数器的结构和原理
- MCS-51单片机定时器和计数器区别的理
评论
共有 条评论