目录

一、项目介绍

二、原理图

三、仿真

四、程序

五、设计资料

资料下载地址:基于51单片机电子琴

一、项目介绍

1、使用7个独立按键对应7个音符

2、有高中低三个音阶,并有显示电路。

3、可以播放音乐

二、原理图

三、仿真

四、程序

部分代码

#include<reg51.h>
#include<intrins.h>
typedef unsigned int  uint;
typedef unsigned char uchar;
sbit SDA1=P0^2;//串行数据输入,对应595的14脚SER
sbit SCL1=P0^1;//移位寄存器时钟输入,对应595的11脚SCK
sbit SCL2=P0^0;//存储寄存器时钟输入,对应595的12脚RCK
sbit W1=P0^3;
sbit W2=P0^4;
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
sbit D1=P2^6;//播放音乐模式
sbit D2=P2^7;//弹奏模式
sbit k8=P3^2;//功能切换键
sbit k9=P3^3;//低音
sbit k10=P3^4;//中音
sbit k11=P3^5;//高音
sbit beep=P2^2;//蜂鸣器接口uchar code table4[]={1,2,3,1,      1,2,3,1,      3,4,5,    3,4,5,     5,6,5,4,3,1,    5,6,5,4,3,1,   1,12/*低音5*/,1,     1,12,1};
uchar code table5[]={4,4,4,4,   4,4,4,4,     4,4,8,    4,4,8,     2,1,2,1,4,4,    2,1,2,1,4,4,   4,4,6,      4,4,6};
uchar i;
uchar key,aa=0;
uchar bb,cc;
bit flag=0;
//延时子函数
void delay(uint z)
{uint x,y;for(x=z;x>0;x--)for(y=340;y>0;y--);
}
void in(uchar Data)
{uchar i;for(i=0;i<8;i++)   //循环8次,刚好移完8位{Data<<=1;SCL1=CY;SDA1=1;        //先将移位寄存器控制引脚置为低    _nop_();_nop_();SDA1=0;}
}
void out()
{SCL2=0;   //先将存储寄存器引脚置为低_nop_(); SCL2=1;    //再置为高,产生移位时钟上升沿,上升沿时移位寄存器的数据进入数据存储寄存器,更新显示数据。_nop_(); SCL2=0;
}
//初始化子函数void yinjie()
{if(k10==0){  delay(5);if(k10==0){   aa=10;bb=0;//返回10为seg[10]显示C}}if(k9==0){   delay(5);if(k9==0){   aa=11;bb=1;//返回11为seg[11]显示L}}if(k11==0){   delay(5);if(k11==0){  aa=12;bb=2;//返回12为seg[12]显示H}}if(aa==0){aa=13;}
}
//播放音乐子函数
void display_music()
{   TH0=table2[table4[i]-1];TL0=table3[table4[i]-1];while(flag==0){ if(i<32){TR0=1;delay(57*table5[i]);i++;}if(i==32){i=0;}}
}
//演奏模式子函数
void display_play()
{TR0=0;TR1=0;yinjie();in(table1[aa]);  //再传段码out();W1=0;;delay(1);             //延迟时间2ms以内W1=1;if(aa!=13&&flag==1){  if(k1==0){    TH1=table2[7*bb+cc];TL1=table3[7*bb+cc];TR1=1; while(k1==0){ cc=0;display1();}}if(k2==0){ TH1=table2[7*bb+cc];TL1=table3[7*bb+cc];TR1=1;while(k2==0){  cc=1;display1();}} if(k3==0){        TH1=table2[7*bb+cc];TL1=table3[7*bb+cc];TR1=1;while(k3==0){  cc=2;display1();}}if(k4==0){TH1=table2[7*bb+cc];TL1=table3[7*bb+cc];TR1=1;while(k4==0){   cc=3;display1();       }}if(k5==0){  TH1=table2[7*bb+cc];TL1=table3[7*bb+cc];TR1=1;while(k5==0){cc=4;display1();}}if(k6==0){   TH1=table2[7*bb+cc];TL1=table3[7*bb+cc];TR1=1;while(k6==0){cc=5;display1();                         }}if(k7==0){      TH1=table2[7*bb+cc];TL1=table3[7*bb+cc];TR1=1; while(k7==0){cc=6;display1();    }}      }
}
//主函数
void main()
{init();while(1){   if(flag==0)display_music();elsedisplay_play();}
}

五、设计资料

基于51单片机的电子琴设计相关推荐

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

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

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

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

  3. 基于51单片机的电子琴Protues仿真设计

    一.设计背景 基于51单片机的电子琴是一款由51单片机控制器.音频模块和硬件阵列组成的数字化乐器.它可以模拟各种乐器的音效,同时也具有许多常规电子琴所没有的高级功能. 首先,这种电子琴是以数字信号处理 ...

  4. 基于51单片机信号发生器仿真设计

    本设计 基于51单片机信号发生器仿真设计 (仿真+程序源码+设计说明书) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0015 目录标题 ...

  5. 基于51单片机数字电压表的设计 仿真、程序、原理图(转发)

    摘 要 数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示.而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编 ...

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

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

  7. 基于51单片机自行车码表设计

    [毕设课设]基于51单片机自行车码表设计 ​效果图 Proteus仿真: 功能简介: 文件内容: 程序框架: 网盘链接: ​效果图 更多内容请关注@WENJIE电子科技 ​ 基于51单片机proteu ...

  8. c语言 计步算法,基于51单片机的计步器设计

    基于51单片机的计步器设计(任务书,开题报告,外文翻译,论文15000字) 摘  要 随着科技发展和国民健康意识的提高,许多检测健康状态的电子产品开始普及.电子计步器作为一种越来越流行的平民锻炼检测装 ...

  9. 基于51单片机的温度报警器设计

    目 录 前言.............................................................................................. ...

最新文章

  1. nginx tomcat https
  2. 机器学习实践中的10个小秘诀!
  3. 学计算机如何防辐射,长期对电脑怎么防辐射
  4. SAP Spartacus 事件服务 Event Service 使用介绍
  5. 域名和服务器销售WHMCS和HTML5模板 – Hostlar
  6. Flutter文本组件Text
  7. SQL优化--使用内连接(inner join)代替外连接(left join,right join) (转)
  8. Nuget:Newtonsoft.Json
  9. oracle rac vip不通,Oracle RAC 中vip网关引起错误的解决
  10. 史上最经典的数据库面试题之一
  11. JDE(Towards Real-Time Multi-Object Tracking)代码测试——小白必看
  12. 学数学,要“直觉”还是要“严谨”?
  13. UVALive - 7456 Least Crucial Node ( dfs + set )
  14. 关于声音的前后左右上下的控制以及单声道立体声的区别
  15. keil4怎么建立c语言工程,第5节:用keil软件新建,关闭,打开一个完整工程的操作流程...
  16. 多任务学习——【ICML 2018】GradNorm
  17. Activiti6 流程模型图中文显示为方块□□
  18. 【小技巧(水文)】清理电脑,远离流氓
  19. 《英语修辞与写作(修订版)》黄任(编著)epub+mobi+azw3格式下载
  20. 图像处理计算机基本配置,图形图像工作的电脑配置推荐_DIY攒机硬件郎中-中关村在线...

热门文章

  1. u8备份文件服务器发现相关的设置不匹配,u8提示文件服务器未配置
  2. Win7下RTW自动化测试
  3. Unity使用Gradle打包方式接入Firebase时配置文件google-services.json遇到的坑
  4. 【数模国奖作品解析之一】加拿大各地区温度的时空变化趋势分析
  5. 葡萄牙寻求豁免欧盟国家援助规则以帮助银行
  6. 应用BERT模型做命名实体识别任务
  7. Arduino使用MLX90614 非接触式红外测温传感器
  8. rancher 启动命令_rancher的安装与使用完整版
  9. php 下载后文件打不开,php 文件下载下来后文件打不开?解决思路
  10. 公众号和小程序用户关联