本设计是《基于51单片机的电子琴设计》,该设计采用AT89S52作为主控芯片,可是现电子琴模式和音乐模式自由切换,通过LM386功放电路将声音信号放大,输出的扬声器中。
完整版 电路图和程序代码 下载地址
https://pan.baidu.com/s/1Rn7sK_RxBOP6VxYDo9kAmQ?pwd=8888
部分代码展示
/**************************************************************
程序名称:8键琴
**************************************************************/
#include<reg51.h> //定义头文件
#include"dian_zi_qin.h"
#define key P2 //琴按键
sbit buzzer=P3^4; //扬声器管脚
sbit LED1=P1^0; //琴指示灯
sbit LED2=P1^1; //音乐播放指示灯
sbit qiehuan=P0^2; //功能切换
sbit shanyiqu=P0^1; //播放上一曲歌曲
sbit xiayiqu=P0^0; //播放下一曲歌曲
unsigned char m,n;
unsigned char keys,mode=0,mode1=0; //定义变量
unsigned char tone_H; //定义变量
unsigned char tone_L; //定义变量
unsigned char code tone[]={115,102,91,86,77,68,61,57}; //歌曲音调
void delay8um(unsigned char);
void sound(unsigned char);
void delay(unsigned char p);
void pause();
void keycan();
void delays(unsigned char x);
/**************************************************************
函数功能:主函数。。。。。。。。。。。。
**************************************************************/
void main() //主函数
{
unsigned char i=0,i2=0,i3=0,i4=0,i5=0;
buzzer=1; //初始化蜂鸣器
TMOD=0x01; //设置定时器模式 定时器0工作在方式1
EA=1; //打开定时总中断
ET0=1; //打开定时器0中断
while(1) //主循环
{
keycan();
if(mode1==0)
{
LED1=0;
LED2=1;
key=0xff;
keys=~key;
switch(keys) //进入键盘选择
{
case 0x01:sound(0);break; //如果键盘1被按下发音do,
case 0x02:sound(1);break; //如果键盘2被按下发音ruai,
case 0x04:sound(2);break; //如果键盘3被按下发音mi,
case 0x08:sound(3);break; //如果键盘4被按下发音fa,
case 0x10:sound(4);break; //如果键盘1被按下发音,
case 0x20:sound(5);break; //如果键盘2被按下发音,
case 0x40:sound(6);break; //如果键盘3被按下发音,
case 0x80:sound(7);break; //如果键盘4被按下发音,
}
keycan();
}
else
{
LED1=1;
LED2=0;
if(mode==1) //播放 青花瓷
{
m=music[i][0];
n=music[i][1];
if(m==0x00)
{
TR0=0;
delay(n);
i++;
}
else if(m==0xFF)
{
TR0=0;
delay(30);
i=0;
}
else if(m==music[i+1][0])
{
TR0=1;
delay(n);
TR0=0;
pause();
i++;
}
else
{
TR0=1;
delay(n);
i++;
}
keycan();
}
if(mode==2) //播放 两只蝴蝶
{
m=music2[i2][0];
n=music2[i2][1];
if(m==0x00)
{
TR0=0;
delay(n);
i2++;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/104741.html