基于51单片机简易电子琴设计

一、系统方案
随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们都会抽空欣赏世界名曲,作为对精神的洗礼。因此,我设计的是一个基于单片机的简易电子琴。
单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。由于其功耗低、体积较小、技术成熟和成本低等优点,在各个领域应用广泛。而且抗干扰性能好。
电子琴是现代电子科技与音乐结合的产物,单片机具有强大的控制功能和灵活的编程实现特性,已溶入现代人的生活中。我设计的电子琴是以AT89C51单片机为核心控制元件。电子琴使用简单,深受广大热爱音乐者喜爱。
此设计键盘用于弹奏音乐,八个按键8种音符。单片机通过输出各种电脉冲信号开驱动控制各部分正常工作。
单片机要产生音频脉冲,主要处理过程是在CPU中完成的,CPU会随时对音符输入信号进行读取数据的操作。在读取了相应的寄存器的值后,CPU将读取的值进行处理,再通过I/O口把音乐通过扬声器播放出来。
据设计要求,本系统主要由控制器模块和输入模块构成。
基于51单片机简易电子琴设计_第1张图片
二、硬件设计
原理图如下:
基于51单片机简易电子琴设计_第2张图片

三、单片机软件设计
1、首先是系统初始化
TMOD=0x01; //定时器0工作方式1
TH0=a;
TL0=b; //赋初值
ET0=1;//打开定时器,但是未允许中断
2、按键程序
void check_key() //按键函数
{
P3=0xff;//先赋给P3组口高电平
switch(P3)//按下一个键
{
case 0xfe:a=0xfb;b=0xe9;EA=1;break;//根据不同按键ab的值不同
case 0xfd:a=0xfc;b=0x5c;EA=1;break;//注意:EA不能改为TR0
case 0xfb:a=0xfc;b=0xc1;EA=1;break;
case 0xf7:a=0xfc;b=0xef;EA=1;break;
case 0xef:a=0xfd;b=0x45;EA=1;break;
case 0xdf:a=0xfd;b=0x92;EA=1;break;
case 0xbf:a=0xfd;b=0xd0;EA=1;break;
case 0x7f:a=0xfd;b=0xee;EA=1;break;
default:EA=0;speaker=0; //没有按键按下,关闭定时器和喇叭
}
}
3、核心算法程序
void time0() interrupt 1//定时器0的工作函数
{
TH0=a;
TL0=b; //将ab的值做为定时器的初值
speaker=~speaker; //喇叭电平取反喇叭根据不同的频率震动就可以发声了
}

四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
基于51单片机简易电子琴设计_第3张图片

你可能感兴趣的:(51单片机,嵌入式硬件,单片机)