基于51单片机8音键电子琴仿真设计原理图
该设计采用AT89C52(AT89C52数据手册)单片机作为主控制芯片,外接灯光闪烁功能和8音调键。共有8个音节和4个功能按键。可播放内置乐曲,可弹奏录音,采用24C02(24C02数据手册)芯片作为EEPROM存储,掉电不掉内容,LM386(LM386数据手册)功放模块外接扬声器。 具体功能介绍: 8个弹奏键,具有很强的娱乐性。 独创--弹奏录音功能 能录音,能回放,听起来更惬意。 内置多首音乐。 4个功能按键设计,PLAY(播放)NEXT(下一首),PRE(上一首),STOP(停止)按键。 5V电源转接PIN,供电稳定,方便实用。 采用LM386功放和专用音乐喇叭,声音更柔和动听,不再是蜂鸣器的刺耳啸叫。
制作方案如下:
#include<reg52.h> //定义头文件 #define uchar unsigned char //宏定义 #define led P0 //定义LED等位P0口 #define sw_port P1 //中间变量。。。使按键和led对应 sbit buzzer=P2^7; //扬声器管脚 sbit key1=P3^2; //播放音乐与弹奏歌曲转换 sbit key3=P3^4; //掉电存储按键 sbit key4=P3^5; //播放掉电存储的歌曲 sbit keybofang=P3^3; //播放刚才弹奏的歌曲 sbit key7=P3^0; //音调键。。。 和 歌曲键 sbit key8=P3^1; //音调键。。。 和 歌曲键 sbit key6=P1^7; sbit key5=P1^6; sbit sda=P1^1; //24c02数据线 sbit scl=P1^0; //24c02时钟线 uchar keyd,i,keys,b; //定义变量 uchar tone_H; //定义变量 uchar tone_L; //定义变量 void beat_125(unsigned char); //声明函数 uchar code beat1[]={16,8,8,8,8,4,4,16,8,4,4,8,4,4,4, //歌曲1节拍 4,4,4,16,16,8,8,4,4,12,8,16,16,8,4,4,4,4,16}; uchar code song1[]={6,5,3,5,7,6,5,6,3,5,6,5,3, //歌曲1简谱 2,1,6,5,3,2,2,3,5,5,6,3,2,1,5,3,2,1,6,1,1,15}; uchar code beat2[]={7,7,7, 7,8,9, 1,2,3, 6,2,4, 4,4,4, 12, //歌曲二节拍 8,2,2, 4,4,4, 8,2,2, 4,4,4, 2,2,4,4, 12,}; uchar code song2[]={1,2,8, 8,5,1, 3,3,3, 5,4,3, //歌曲二简谱 5,4,3, 2, 2,1,0, 1,2,3, 4,3,2, 3,4,5, 5,4,3, 2,1,15}; uchar code beat4[]={4,4,4, 6,2,4, 4,4,4, 6,2,4, 4,4,4, 12, 8,2,2, 4,4,4, 8,2,2, 4,4,4, 2,2,4,4, 12,}; uchar code song4[]={1,1,1, 3,2,1, 3,3,3, 5,4,3, 5,4,3, 2, 2,1,0, 1,2,3, 4,3,2, 3,4,5, 5,4,3, 2,1, 15}; uchar code tone[]={115,102,91,86,77,68,61,57}; //歌曲音调 unsigned int code tone1[]={1012,956,852,759,716,638,568,506,478,426,379,531,10}; //歌曲音调 uchar song3[43]; //定义空数组 void play(uchar*,uchar*); //演奏歌曲函数 void delay8um(uchar); //第一8um延时函数 void sound(uchar); //弹奏发声函数
以上可以按照这个思路进行自行设计,也可以通过百度网盘列表下载现成的(1137) https://www.aiesst.cn/baidu.html