【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();

}

五、实验现象

演示视频:

相关推荐
蜀黍@猿3 小时前
【GD32】软、硬件I2C对比
单片机·嵌入式硬件·mcu
@小张要努力3 小时前
STM32学习记录-0.1 STM32外设
stm32·嵌入式硬件·学习
哈泽尔都4 小时前
运动控制教学——5分钟学会PRM算法!
人工智能·单片机·算法·数学建模·贪心算法·机器人·无人机
代码会说话4 小时前
i2c通讯
android·linux·嵌入式硬件·嵌入式
qq_384049034 小时前
stm32第二天之基本定时器
stm32·单片机·嵌入式硬件
国科安芯4 小时前
核辐射检测仪中的抗辐照MCU芯片应用探索与挑战应对
网络·人工智能·单片机·嵌入式硬件·安全·fpga开发
一支闲人5 小时前
带你了解STM32:SPI通信(软件部分)
stm32·单片机·嵌入式硬件·基础知识·适用于新手小白
蜀黍@猿6 小时前
【GD32】MCU选型参考标准
arm开发·单片机·mcu