当前位置: 首页 > news >正文

【51单片机】【protues仿真】基于51单片机16键电子琴系统

 目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、数码管显示
2、16个按键对应不同音阶音符‌
3、播放3首音乐
4、音符频率精确控制(使用定时器中断)‌

二、使用步骤

51单片机16键电子琴系统是一种基于经典8051架构的嵌入式音乐设备,通过矩阵键盘输入、定时器中断控制和蜂鸣器/扬声器输出,实现基本音乐演奏功能。该系统具有成本低、易于扩展的特点,适合嵌入式系统教学和简单音乐应用开发。

三、硬件资源

1、51单片机核心模块
2、按键模块
3、数码管模块
4、蜂鸣器模块

四、软件设计

#include <reg52.h>             //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义    变量范围0~255
#define uint  unsigned int     //无符号整型 宏定义    变量范围0~65535

sbit beep  = P3^2;       //蜂鸣器定义

sbit K1=P2^7;//音乐播放按键
uchar flag_en = 0;       //开始放歌
uchar flag_i = 0;

uchar num=0;//初始化num,用于控制数1码管显示的字符

//数码管段选定义       0    1    2    3   4       5    6     7      8       9    
uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//                       A    B     C      D       E   F    不显示
     //断码    
                     

uchar m,n; 
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}
};
uchar code music1[][2]={{0,4},       //两只蝴蝶 
{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{14,24},
{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,24},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{21,24},

{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{14,24},
{23,4},{26,4},{26,16},{26,4},{28,4},{26,4},{23,24},{21,4},{23,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{16,2},{19,2},{19,24},{0,20},
{26,4},{26,4},{28,4},{31,4},{30,4},{30,4},{28,4},{23,4},{21,4},{21,4},{23,16},{0,4},{23,4},{23,4},{26,4},{28,8},{28,12},{16,4},{23,4},{21,4},
{21,24},{23,4},{26,4},{26,4},{23,4},{26,8},{0,4},{31,8},{30,4},{28,4},{30,4},{23,8},{0,4},{28,4},{28,4},{30,4},{28,4},{26,4},{23,4},{21,8},{23,4},{21,4},{23,4},{26,16},
{0xFF,0xFF}};


uchar code music2[][2]={{0,4},      //生日快乐
{17,6},{17,2},{19,8},{17,8},{22,8},{21,16},
{17,6},{17,2},{19,8},{17,8},{24,8},{22,16},{17,6},{17,2},{29,8},{26,8},{22,8},{21,8},{19,8},{27,6},{27,2},{26,8},{22,8},{24,8},{22,16},
{0xFF,0xFF}};

uchar code music3[][2]={{0,4},     //爱情买卖
{22,4},{22,4},{17,4},{15,4},{15,4},{17,12},
{15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},{0,4},
{20,4},{20,4},{20,4},{17,4},{20,4},{20,4},{20,4},{17,4},
{22,4},{17,4},{17,4},{15,4},{15,4},{17,12},
{22,4},{22,4},{17,4},{15,4},{15,4},{17,12},
{15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},
{20,4},{20,4},{20,2},{17,2},{17,4},{20,4},{20,4},{20,2},{17,2},{17,2},{17,2},
{24,4},{20,4},{20,2},{17,2},{17,4},{20,4},{22,12},
{17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},
{24,4},{22,2},{24,2},{22,4},{20,4},{15,4},{17,12},
{15,4},{15,4},{15,4},{10,4},{15,4},{17,4},{20,8},
{17,4},{24,4},{24,4},{20,4},{15,4},{17,12},
{17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},
{29,4},{27,2},{29,2},{27,4},{25,4},{25,4},{27,12},
{29,4},{29,2},{27,4},{25,4},{27,6},{27,2},{25,4},{24,4},
{20,4},{20,2},{17,2},{20,4},{20,2},{22,2},{22,16},
{0xFF,0xFF}};
void delay(uchar p)
{
    uchar i,j; 
    for(;p>0;p--)
    for(i=181;i>0;i--)
    for(j=181;j>0;j--);
}

void pause()
{
    uchar i,j;
    for(i=150;i>0;i--)
    for(j=150;j>0;j--);
}


/***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{
    uint i,j;
    for(i=0;i<q;i++)
        for(j=0;j<120;j++);
}

五、实验现象

演示视频:

【51单片机-B007】【protues仿真】基于51单片机16键电子琴音乐盒仿真

http://www.dtcms.com/a/343526.html

相关文章:

  • 【GPT入门】第51课 Conda环境迁移教程:将xxzh环境从默认路径迁移到指定目录
  • OpenAI 开源模型 gpt-oss 是在合成数据上训练的吗?一些合理推测
  • Mysql事务特性
  • python实现根据接口返回数据生成报告和图表
  • (第二十期下)超链接的更多分类
  • 医疗元宇宙:破解医疗困局与数字化变革路径
  • gRPC 服务发现选型对比
  • 基于STM32单片机的二维码识别物联网OneNet云仓库系统
  • 最小生成树的普利姆算法和克鲁斯卡尔算法
  • ABP vNext 速率限制在多租户场景落地
  • Leetcode 深度优先搜索 (13)
  • Leetcode 深度优先搜索 (12)
  • 20250821 圆方树总结
  • 通信基础理论
  • C语言基础习题——01
  • plantsimulation小知识25.08.21 对话框的使用方法
  • 深圳大学-计算机信息管理课程实验 C++ 自考模拟题
  • 【LeetCode】18. 四数之和
  • C语言:字符函数与字符串函数(2)
  • ORA-16331: container is not open ORA-06512: at “SYS.DBMS_LOGMNR“
  • Hexo 博客图片托管:告别本地存储,用 PicGo + GitHub 打造高速稳定图床
  • ArcMap 数据框裁剪(Data Frame Clip)操作教程
  • Service方法事务失效的原因是什么?
  • 2025-08-21 Python进阶8——命名空间作用域
  • PiscCode实现MediaPipe 的人体姿态识别:三屏可视化对比实现
  • 算法题Day4
  • WaitForSingleObject函数详解
  • JavaScript 性能优化实战技术文章大纲
  • C++手撕LRU
  • 中国之路 向善而行 第三届全国自驾露营旅游发展大会在阿拉善启幕