基于AT89S51单片机的电子琴设计
本文介绍基fAT89S51单片机设计的一款简易电子琴,利用不同的方波频率得到所需要的音阶。
一、设计概况
用4x4按钮共16个按钮键盘设计成16个音,以随意弹奏想要表达的音乐,系统框图如下图所示。
二、音乐的产生
1.音频脉冲的产生
一首音乐是由许多不同的音阶组成的,而每个音阶对应着不同的频率,可以利用不同的频率组合,来构成所想要的音乐,也可以利用单片机的定时,计数器T0来产生这样的方波频率信号。也就是说.只要把一首歌曲的音阶对应频率关系弄正确即可。以51单片机采用12MHz晶振为例.列出高中低音符与单片机计数TO相关的计数值如表1所示。
为音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:低音在0-19之间.中音在20~39之间,高音在40_59之间(#:表示半音,用于上升或下降半个音)。
2.音乐节拍的产生
每个音符使用1个字节,其中,高4位代表音符的高低,低4位代表音符的节拍,上表为节拍与节拍码的对照表.,如果l拍为0.4s,l/4拍是o.ls.只要设定延迟时间就可求得节拍的时间。假设1/4拍为1DELAY.那么1拍对应为4DFI.AY.以此类推。所以,只要求得1/4拍的DElAY.其余的节拍就是它的倍数,下表为1/4和1/8拍的叫问设定.
三、硬件设计本
设计的电路如下图所示。
1.主控电路电路由AT89S51单片机控制,采用12MHz晶振。用其P3.O~P3.7作为4x4矩阵键盘的I/O口.Pl.0作为音频信号输出端。
2.行列式键盘行列式键盘(也称矩阵式键盘)由行线和列线组成,按键位于行列的交点上。一个4x4的行列结构可以构成一个16键的键盘,按键设置在行列线交点上,行列线分别接到按键开关两端。行线通过上拉电阻接到+5v上。平时无按键按下时,行线处于高电平状态,而当有按键按下时,行线电平状态将由于此行线相连的列线电平决定。列线电平如果为低电平,则行线电平为低电平,列线电平如果为高电平,则行线电平也为高电平。这是识别矩阵键盘按键是否按下的关键。于矩阵键盘中行列线为多键公用,各按键均影响该键所在行列的电平。
因此各按键彼此将发生影响,所以必须将行列信号配合起来进行适当的处理,才能确定闭合键的位置。本课题需要用到的按键比较多,所以采用行列式键盘接口电路。
3.音额输出电路
本电路中采用LM386作为音频输出电路。LM386是一种音频集成功放块,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点.广泛应用于录音机和收音机之中。为使外围元件最少,电压增益内置为20。若在(1)脚、(8)脚之间增加一只外接电阻和电容.便可将电匝增益调节,直至200。输入端以地为参考,同时输出端被自动偏置到电源电压的一半。在6V电源电压下,其静态功耗仅为24mW.使得LM386特别适用于电池供电的场合。LM386引脚功能如右图所示。
三、软件设计
本设计采用单片机C语言进行编程。限于篇幅,其参考程序此处无法刊出。
四、调试与总结
根据原理图制作的实物如下 图所示。该电路制作简单。调试时,要注意LM386功放的使用方法。若想使用蜂鸣器发声,可在单片机Pl.0口外接i极管驱动蜂鸣器。
相关文章
发表评论