文章目录

  • 一、主要功能
  • 二、使用步骤
  • 三、硬件资源
  • 四、软件设计
    • 1.主要代码
  • 五、实验现象
  • 联系作者

一、主要功能

1、能播放/切换音乐,播放速度调节
2、能当作播放器&电子琴
3、电子琴支持低音区1-7,中音区1-7和高音区1-2


二、使用步骤

系统运行后,默认以音乐盒模式运行,且为正常播放速度1.0,当按下K3键则切换为下一曲,当前仅添加了3首乐曲,当按下K4键1.5秒以上,D1指示灯亮,此时进入电子琴模式,矩阵键盘S1-S16为电子琴低音区1-7,中音区1-7和高音区1-2。通过矩阵键盘可弹奏电子音乐。当再次按下K4键可切换到音乐盒模式运行。在音乐盒模式时,按下K4键少于1.5秒钟松开则为调节音乐盒播放速度,有快进、正常、慢放几种速度模式。

三、硬件资源

1、51单片机核心模块
2、4*4矩阵按键模块
3、独立按键模块
4、蜂鸣器模块
5、LED模块

四、软件设计

1.主要代码

代码如下:

//节拍频率
uchar code T[49][2]={{0,0},
{0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
{0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
{0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
{0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}
};
//电子琴音调1=E
uchar code music[][2]={{0,4},
{5,8},{7,8},{9,8},{10,8},{12,8},{14,8},{16,8},{17,8},{19,8},{21,8},{22,8},{24,8},{26,8},{28,8},{29,8},{31,8},
{0xFF,0xFF}};/*----------用户可根据需求自行通过“51Music.exe”软件编辑音乐----------*/
//新年快乐-简谱曲调1=E
uchar code music1[][2]={{0,4},
{17,4},{17,4},{17,8},{12,8},{21,4},{21,4},{21,8},{17,8},{17,4},{21,4},{24,8},{24,8},{22,4},{21,4},{19,8},{0,16},{19,4},{21,4},{22,8},{22,8},{21,4},{19,4},{21,8},{17,8},{17,4},{21,4},{19,8},{12,8},{16,4},{19,4},{17,8},{0,16},
{0xFF,0xFF}};
//生日快乐-简谱曲调1=C
uchar code music2[][2]={{0,4},
{20,4},{20,4},{22,8},{20,8},{25,8},{24,8},{0,4},{20,4},{20,4},{22,8},{20,8},{27,8},{25,8},{0,4},{20,4},{20,4},{32,8},{29,8},{25,8},{24,4},{22,4},{0,4},{30,4},{30,4},{29,8},{25,8},{27,8},{25,8},
{0xFF,0xFF}};
//海阔天空-简谱曲调1=F
uchar code music3[][2]={{0,4},
{23,4},{21,4},{19,8},{0,8},{21,2},{23,2},{26,4},{26,2},{26,2},{26,4},{28,4},{26,8},{0,4},{28,2},{30,2},{31,4},{31,2},{31,2},{31,4},{31,4},{31,4},{30,4},{28,2},{26,4},{28,2},{0,8},{28,4},{26,4},{26,12},{26,4},{23,2},{21,2},{19,4},{23,4},{24,4},{23,4},{21,4},{21,4},{23,2},{21,2},{21,8},{23,4},{21,2},{21,2},{21,4},{19,4},{19,4},{19,2},{19,2},{19,8},{21,4},{19,4},{19,8},
{0xFF,0xFF}};//音乐1播放
void music1_play(void)
{u8 i=0;while(1){if(music_struct.mode==0){if(music_struct.id==0){music_struct.fre=music1[i][0];music_struct.beat=music1[i][1]*music_struct.beat_ratio; if(music_struct.fre==0x00){TR0=0;delay(music_struct.beat);i++;} else if(music_struct.fre==0xFF){TR0=0;delay(30);i=0;} else if(music_struct.fre==music1[i+1][0]) {TR0=1;delay(music_struct.beat);TR0=0;pause();i++;}else{TR0=1;delay(music_struct.beat);i++;}   }elsebreak; }else break;    }
}//音乐2播放
void music2_play(void)
{u8 i=0;while(1){if(music_struct.mode==0){if(music_struct.id==1){music_struct.fre=music2[i][0];music_struct.beat=music2[i][1]*music_struct.beat_ratio; if(music_struct.fre==0x00){TR0=0;delay(music_struct.beat);i++;} else if(music_struct.fre==0xFF){TR0=0;delay(30);i=0;} else if(music_struct.fre==music2[i+1][0]) {TR0=1;delay(music_struct.beat);TR0=0;pause();i++;}else{TR0=1;delay(music_struct.beat);i++;}   }elsebreak; }elsebreak; }
}//音乐3播放
void music3_play(void)
{u8 i=0;while(1){if(music_struct.mode==0){if(music_struct.id==2){music_struct.fre=music3[i][0];music_struct.beat=music3[i][1]*music_struct.beat_ratio; if(music_struct.fre==0x00){TR0=0;delay(music_struct.beat);i++;} else if(music_struct.fre==0xFF){TR0=0;delay(30);i=0;} else if(music_struct.fre==music3[i+1][0]) {TR0=1;delay(music_struct.beat);TR0=0;pause();i++;}else{TR0=1;delay(music_struct.beat);i++;}   }elsebreak; }elsebreak; }
}//音乐盒演示
void music_play(void)
{music_struct.beat_ratio=1.0;//正常播放速度music_struct.id=2;while(1){switch(music_struct.id)   {case 0: music1_play();break;case 1: music2_play();break;case 2: music3_play();break; } if(music_struct.mode==1) {time0_stop();//关闭定时器0break; }   }
}//电子琴演示
void electronic_play(void)
{u8 key=0;u8 i=0;time1_init();//初始化定时器0time1_start();//开启定时器0while(1){if(music_struct.mode){if(music_struct.key!=0){music_struct.fre=music[music_struct.key][0];//根据不同键选择音调TR0=1;//打开定时器   }else TR0=0;//松开键时关闭定时器            }else{time1_stop();//关闭定时器1break;   }   }
}//音乐盒控制系统
void music_control_sys(void)
{music_struct.mode=0;//音乐盒模式 exti0_init();//外部中断0配置exti1_init();//外部中断1配置TMOD|=0x01;  EA=1; ET0=1;//开启定时器0,蜂鸣器发声while(1){//音乐盒演示if(music_struct.mode==0)music_play();//电子琴演示elseelectronic_play();             }
}

五、实验现象

联系作者

作者B站链接:https://space.bilibili.com/444388619
可提供手把手教学服务,资料获取请联系作者QQ:3443792007
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

【Proteus仿真】【51单片机】音乐盒电子琴设计相关推荐

  1. stc89c51单片机音乐盒系统设计_基于51单片机音乐盒课程设计1.doc

    基于51单片机音乐盒课程设计1 课程名称: 微机原理课程设计 题 目: 基于单片机的音乐盒设计 摘要 随着人类社会的发展,人们对视觉.听觉方面的享受提出了越来越高的要求.小小的音乐盒可以给人们带来美好 ...

  2. 基于51单片机的电子琴设计

    目录 一.项目介绍 二.原理图 三.仿真 四.程序 五.设计资料 资料下载地址:基于51单片机电子琴 一.项目介绍 1.使用7个独立按键对应7个音符 2.有高中低三个音阶,并有显示电路. 3.可以播放 ...

  3. 单片机多功能电子琴课设_基于51单片机的电子琴设计

    此设计键盘用于弹奏音乐,八个按键8种音符.单片机通过输出各种电脉冲信号开驱动控制各部分正常工作.单片机要产生音频脉冲,主要处理过程是在CPU中完成的,CPU会随时对音符输入信号进行读取数据的操作.在读 ...

  4. 使用proteus仿真51单片机来实现十字路口红绿灯

    一.实验内容 1.需要仿真的元件:51单片机,一个动态显示的双数码管,六个LED灯. 2.实验要求:做一个十字路口红绿灯,每一向各一个,红绿灯要求能够按照通行的要求来亮灯.南北向红绿灯,红灯亮60秒, ...

  5. Proteus仿真51单片机生日快乐音乐播放器

    实验名称:基于51单片机音乐播放器 实验目的: 声音的音调不同是因为声音的频率不同造成的.那么,就可以通过单片机发送不同频率的脉冲信号给蜂鸣器,来达到让蜂鸣器发出不同音调声音的目的.不同频率的脉冲信号 ...

  6. 基于51单片机简易电子琴设计

    具体实现功能 系统由STC89C52单片机+数码管+电源电路+音符按键+乐曲切换按键+蜂鸣器构成. 具体功能: 1.数码管显示所按的音符 2.从左到右的按键实现的音符分别是:do.re.mi.fa.s ...

  7. 60-基于51单片机简易电子琴设计

    具体实现功能 系统由STC89C52单片机+数码管+电源电路+音符按键+乐曲切换按键+蜂鸣器构成. 具体功能: 1.数码管显示所按的音符 2.从左到右的按键实现的音符分别是:do.re.mi.fa.s ...

  8. Proteus仿真--51单片机最小系统

    1.单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外,还需要包括电源供电电路.时钟电路.复位电路. 下面着重介绍时钟 电路和复位电路. 1)时钟电路 单片机工作时,从取指令到译码 ...

  9. proteus仿真-51单片机定时器程序

    定时器0初始化和定时器中断函数 void Timer0Init() {TMOD|=0x01;//0000 0001,最后2位-工作方式的选择,这里选择16位定时器'01'TH0 = (65536-10 ...

  10. 基于51单片机音乐盒仿真设计(音乐播放器)

    基于51单片机音乐盒仿真设计( proteus仿真+程序+原理图+PCB+报告+讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0 ...

最新文章

  1. java redis释放连接池_Java 使用连接池操作redis
  2. 显示一个数字到小数点后两位
  3. asp.net form submit 在Chrome里面看Form提交
  4. 使用Nancy打造TaskManager2.0管理系统
  5. Mysql更改表名大小写不敏感
  6. 创建一个带有Lookup字段的List
  7. js截图插件_WordPress外贸网站插件装多了很卡很卡?别慌,试试这招
  8. 韵乐x5最佳参数手动_机器学习 4 个常用超参数调试方法!
  9. Atitit jOrgChart的使用  组织架构图css html
  10. 【图像去雾】基于matlab偏振水下模糊图像去雾【含Matlab源码 396期】
  11. 毕设题目:Matlab图像隐写
  12. 深度神经网络 分布式训练 动手学深度学习v2
  13. NetAssist.exe网络调试工具
  14. 微计算机cpu是指什么,微处理器和CPU的不同是什么
  15. 证券公司信息化4_最核心的IT系统是什么?柜台系统的两个主要功能?一个交易过程是怎样的?
  16. 局域网有一台计算机网络慢,局域网网速变慢的五种解决办法
  17. 推荐系统8——利用社交网络数据推荐
  18. 怎样分析数据致提高产出?(三)
  19. DNA存储技术创造新纪录 存储容量已达200MB
  20. crispr-cas9基因编辑技术最新进展(2021年1月-2月)

热门文章

  1. NetLogo基础代码
  2. 比较Cint() , int() , fix() ,round()的区别
  3. 抠脚大叔如何改变性别,Python实现变声器功能
  4. wps交叉表_利用Excel电子表格制作交叉报表
  5. 查看oracle负载过大的原因,Oracle备份时系统负载过高导致ORA-3136错误和AIX系统的3D32B80D错误...
  6. java的深浅拷贝_Java中深浅拷贝
  7. 《Linux命令速查手册》笔记
  8. 计算机运行很卡很慢,电脑运行太慢了太卡了怎么办(教你运行卡顿的解决方法)...
  9. ASP.NET Web应用程序发布到IIS
  10. 友盟 推特分享错误