【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键电子琴音乐盒仿真