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

}

五、实验现象

演示视频:

相关推荐
GilgameshJSS14 小时前
STM32H743-ARM例程33-TOUCH
c语言·arm开发·stm32·单片机·嵌入式硬件
我先去打把游戏先20 小时前
ESP32开发指南(基于IDF):连接AWS,乐鑫官方esp-aws-iot-master例程实验、跑通
开发语言·笔记·单片机·物联网·学习·云计算·aws
hazy1k21 小时前
51单片机基础-继电器实验
stm32·单片机·嵌入式硬件·51单片机·1024程序员节
美好的事情总会发生1 天前
FPGA的LVDS接口电压
嵌入式硬件·fpga开发·硬件工程·智能硬件
kaka❷❷1 天前
STM32中 ESP8266 MQTT ModBus RS482 介绍
stm32·嵌入式硬件·智能路由器
hazy1k1 天前
51单片机基础-TFT LCD 显示(ILI9341,SPI 4线)
c语言·stm32·单片机·嵌入式硬件·51单片机
brave and determined1 天前
硬件-内存学习DAY14——3DXPoint:存储技术的革命与终结
嵌入式硬件·intel·3d xpoint·内存创新·内存设计·内存应用·内存新技术
D.....l1 天前
STM32学习(MCU控制)(RS485 and ModBus)
stm32·单片机·学习
物联网牛七七1 天前
单片机中的中断
单片机·嵌入式硬件
Jerry丶Li1 天前
十九、STM32的TIM(十)(编码器)
stm32·单片机·嵌入式硬件