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

}

五、实验现象

演示视频:

相关推荐
LCG元10 小时前
STM32项目实战:基于STM32F103的智能农业监控系统
stm32·单片机·嵌入式硬件
ACP广源盛1392462567310 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
一起搞IT吧11 小时前
Android性能系列专题理论之十:systrace/perfetto相关指标知识点细节含义总结
android·嵌入式硬件·智能手机·性能优化
Truffle7电子12 小时前
STM32CubeIDE/Programmer/Touch GFX 应用
stm32·单片机·嵌入式硬件
constant_LDX13 小时前
步进电机开发(一、硬件设计)
单片机·嵌入式硬件
北山有鸟13 小时前
修改源码法和插件法
嵌入式硬件·学习
richxu2025100113 小时前
嵌入式学习之路->stm32篇->(14)通用定时器(上)
stm32·单片机·嵌入式硬件·学习
Deitymoon13 小时前
STM32——串口通信(USART)
单片机·嵌入式硬件
iCxhust13 小时前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
Deitymoon15 小时前
STM32——外部中断按键控制led
stm32·单片机·嵌入式硬件