资源简介
使用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分解 最小二乘法等九个算法
- 下一篇:卡尔曼滤波小程序导航误差分析
相关资源
- 基于51单片机的交通信号灯程序
- GSM监控系统51单片机设计
- 51单片机定时器/计数器的结构和原理
- MCS-51单片机定时器和计数器区别的理
- 基于51单片机的多通道数据采集范围控
- ADC0832ADC0809DAC0832三种芯片程序,c程序
- 基于51单片机的直流电机转速控制及显
- 高速公路快速放行提示系统
- 光敏电阻传感器模块4线制
- 51单片机_DS1302时钟芯片_共阴数码管
- STM32F103系列PWM输出应用之纸短情长音
- 基于51单片机的教室智能照明控制系统
- 基于单片机的智能低电阻测量仪
- 电动车智能充电桩全套
- 五路循迹智能小车
- 基于51单片机的交通灯设计
- 51 教室智能灯 控制系统
- 51单片机125Khz ID卡读卡程序
- 51单片机课程设计内含50多个课程设计
- 51单片机实现蜂鸣器的简易歌曲播放器
- 基于51单片机的智能十字路口交通灯系
- 51单片机编写的标准modbus协议通信模版
- SIM900A通过51单片机拨打电话程序
- at89c51单片机外文翻译
- CW2015 51单片机程序
- 基于51单片机的超声波测距技术实现含
- 基于51单片机射频密码锁设计门禁刷卡
- 基于51单片机的十字路口交通灯Protu
- 基于C51的电子琴设计
- 32x16LED汉子点阵显示屏
评论
共有 条评论