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

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

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、数码管显示
2、矩阵按键​和独立按键
3、蜂鸣器模块进行播放
4、内置16首歌曲
5、LED灯显示当前模式

二、使用步骤

本项目采用51单片机、矩阵键盘(4×4或更大)、蜂鸣器/扬声器输出模块,部分设计扩展了数码管用于音阶和模式显示。矩阵键盘作为琴键输入,通过行列扫描检测按键触发,蜂鸣器通过定时器中断生成不同频率的音频信号。

三、硬件资源

1、51单片机核心模块
2、矩阵按键模块
3、独立按键模块
4、蜂鸣器模块
5、LED灯模块
6、数码管显示模块

四、软件设计

#include <reg51.h>
#include <absacc.h> 
#include <stdio.h> 
#include <math.h>         //头文件    
#define uchar unsigned char 
#define uint unsigned int      //宏定义
uchar STH0;              
uchar STL0;          
bit FY=0;                   
uchar Song_Index=0,Tone_Index=0;
uchar k, key;                   
sbit SPK=P3^7 ;             
sbit LED1=P3^5; 
sbit LED2=P3^4;                
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
                        0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0xa3,0x8c,0xc8};  
unsigned char code num1[]=            "   Music:       ";
uchar code Song[][100]=  
{

    {12,10,9,9,10,8,9,10,
    12,10,9,9,5,10,11,10,
    10,10,14,10,9,8,7,8,
    9,10,13,6,8,10,9,6,
    8,7,5,6,12,10,9,9,
    9,10,8,9,10,12,10,9,
    9,9,5,10,11,10,10,10,
    14,10,9,8,7,8,9,10,
    13,6,8,10,9,6,8,7,
    5,6,-1},             

    {13,12,10,12,15,13,
    12,13,10,12,13,12,10,8,6,12,
    10,9,9,10,12,12,13,10,9,
    8,12,10,9,8,6,8,5,-1},

    {10,10,11,10,9,8,9,12,9,9,
    8,8,9,8,7,6,7,10,7,7,
    6,9,10,9,8,6,5,9,10,9,
    8,6,6,9,10,9,8,6,7,8,-1}, 
     
    {5,3,5,8,6,8,
    5,5,1,2,3,2,1,2,5,
    3,5,8,7,6,8,5,5,2,
    3,4,0,1,6,8,8,7,6,
    7,8,6,7,8,6,6,5,3,
    1,2,5,3,5,8,7,6,8,
    5,5,2,3,4,0,1,-1},        

    {5,6,8,6,6,5,6,5,3,5,
    5,6,8,6,6,5,6,5,6,1,
    1,2,3,2,2,2,1,2,1,6,
    3,2,5,6,8,6,6,5,6,5,
    6,1,1,2,3,4,4,5,6,6,
    5,6,8,6,8,6,5,5,1,6,
    5,5,6,8,3,2,3,1,-1},     

    {5,9,10,9,10,12,13,12,8,9,
    10,13,12,10,12,12,13,15,13,12,
    10,12,10,8,9,10,8,6,10,9,
    12,9,10,9,10,12,13,12,8,9,
    10,13,12,12,13,15,13,
    12,10,12,10,8,6,10,9,8,6,
    8,9,9,8,-1},             
     
    {5,8,9,10,9,10,11,12,12,12,
    11,10,9,5,8,9,10,11,12,12,
    12,13,12,9,10,8,8,6,9,9,
    10,10,8,12,8,12,8,7,8,8,6,
    9,9,10,10,12,12,
    12,13,12,9,10,8,
    5,8,9,10,9,10,11,12,12,12,
    11,10,9,5,8,9,10,9,10,11,
    12,12,12,9,10,8,8,6,9,9,
    10,10,8,12,8,12,12,7,8,-1},    

    {8,9,10,8,8,9,10,8,10,11,12,10,11,12,
    12,13,12,11,10,8,12,13,12,11,10,8,8,5,8,8,5,8,-1},  
 

void delay1 (uint ms)     
{
    uchar t;
    while (ms--)
    for(t=0;t<120;t++);

void delay(void) 

    uchar i; 
    for (i=300;i>0;i--); 

void main(void)                      
{
    SPK=0;
    LED1=1;                               
    LED2=0;                            
    P0=0xc0;                  
    IE=0x87;                          
    TMOD=0x01;                         
    IT0=1;                             
    IT1=1;                            
    while(1)                        
    {
         anjian();                 
}

五、实验现象

演示视频:

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

相关文章:

  • 网站怎样做免费优化有效果组织部信息化建设官方网站
  • 使用telnet进行Dubbo接口测试
  • 定时器实现非阻塞式程序
  • ArrayList - 数据结构 - 数组
  • 做网站的注意什么问题哪些经营范围是包含网站开发的
  • 【Python】基于 PyQt6 和 Conda 的 PyInstaller 打包工具
  • MyBatis Plus 核心功能与用法
  • LNMP架构实践
  • 自己怎么建个网站赚钱吗外贸品牌推广公司
  • 在线咨询 1 网站宣传建立免费公司网站
  • 10-存储过程和存储函数
  • leetCode101:对称二叉树
  • 【Linux】网络部分——Socket编程 UDP实现网络云服务器与本地虚拟机的基本通信
  • 实战项目:鸿蒙多端协同智能家居控制 App 开发全流程
  • 个人用云计算学习笔记 --19 (MariaDB服务器)
  • Linux -- 信号【中】
  • Azure - 尝试创建并使用一下Azure AI Search
  • NtripShare GNSS接收机配置系统SPI读取村田SCL3300倾角数据
  • Python私教FastAPI+React构建Web应用02 什么是全栈Web应用
  • 开源安全管理平台wazuh-文件完整性监控FIM
  • 网站建设选超速云建站黄页88成立时间
  • 南通做网站ntwsd开发公司总工年终总结
  • VS Code文件监视排除设置详解
  • 3D坐标旋转公式
  • 《Git 从入门到进阶》教学大纲
  • linux网络服务+linux数据库5
  • 德山经济开发区建设局网站wordpress的数据库在哪里
  • P3808 AC 自动机(简单版)
  • C++----bitmap位图的使用
  • 单链表的应用02---算法中的暴力美学(第八讲)