简易电子琴设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 任务及要求
设计一个51单片机系统,实现简易电子琴操作的电路。
要求:
1.设计51单片机最小系统;
2.设置至少10个按键,能发出do re mi fa sol la si do;
3.能够调节低音、高音和中音。
2.设计方案
1.定时/计数器的设计和状态字定义:
若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系式是:N=fi÷2÷fr,式中,N 是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下:T=65536-N=65536-fi÷2÷fr
例如:设K=65536,fi=1MHz,求中音DO(261Hz)。T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。
单片机12MHZ晶振,中音符与计数T0相关的计数值如表所示:音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1 DO26263628# 4 FA#74064860
#1 DO#27763731中 5 SO78464898
低2 RE29463835# 5 SO#83164934
#2 RE#31163928中 6 LA88064968
低 3 M33064021# 693264994
低 4 FA34964103中 7 SI98865030
# 4 FA#37064185高 1 DO104665058
低 5 SO39264260# 1 DO#110965085
# 5 SO#41564331高 2 RE117565110
低 6 LA44064400# 2 RE#124565134
# 646664463高 3 M131865157
低 7 SI49464524高 4 FA139765178
中 1 DO52364580# 4 FA#148065198
# 1 DO#55464633高 5 SO156865217
中 2 RE58764684# 5 SO#166165235
# 2 RE#62264732高 6 LA176065252
中 3 M65964777# 6186565268
中 4 FA69864820高 7 SI196765283
采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:低音0-19之间,中音在20-39之间,高音在40-59之间
用单片机播放音乐,或者弹奏电子琴,实际上是按照特定的频率,输出一连串的方波。为了输
出合适的方波,首先应该知道音符与频率的关系。
2.音名
从常见的电子琴的键盘谈起。
主要分成低音、中音和高音三个区域,每个区域都有12个琴键。其中的白键,简谱音符标为1、2、3、4、5、6、7,大家一般都读成哆、来、咪、发、嗦、拉、西。
按键1345678
音符134567I
频率值5246606987848809881048 3.音调数据表
单片机发出不同频率的方波,人听起来,就是不同的音调。
上表中的频率数值,有些过多,去掉不常用的黑键频率,只是把白键对应的数据存放在单片机中,即可满足绝大部分的应用需求。
定义音调数据表的程序如下:
DW 63628,63835,64021,64103,64260,64400,64524 ;64580,低音区:1 2 3 4 5 6 7
DW 64580,64671,64777,64820,64898,64968,65030 65058中音区:1 2 3 4 5 6 7
DW 65058,65110,65157,65178,65217,65252,65283 65312高音区:1 2 3 4 5 6 7
把这个数据表,放在程序中,需要播音的时候,就从表中取出一个数据送到定时器,当定时器溢出中断的时候,再对输出引脚取反,那么,在扬声器中,即可听到上表中频率的声音。
音乐的音拍,一个节拍为单位(C调)
曲调值DELAY曲调值DELAY
调4/4125ms调4/462ms
调3/4187ms调3/494ms
调2/4250ms调2/4125ms 三.设计电路图
1.晶振部分
本次采用12MHZ晶振,机器周期为1us,连接两个30pF的电容,连接到
AT89C51的XATL1,XATL2 上面,连接电路图如下:
2.音频输出 本次只是简单的使用一个蜂鸣器连接到AT89C51的
p1.0口上
3.高。中。低及音乐播放键:检测高中低是否按下,来跳转到音阶键上输出不同频率的音阶音,检测播放是否按下,跳转到示范曲目播放
4. AT89C51
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。