摘要:文章主要探讨利用单片机、8255a、8279等芯片设计一个简易电子琴系统,实现演奏和显示功能。针对声音产生的规律,系统建立了播放不同音调的音符所需的音阶表、音长表,并规定了音符的编码格式,由键盘控制,使电子琴系统具有自动演奏和手动弹奏功能。
关键词:电子琴;8255a;8279
音乐是由一个个音符组成,而音符可通过对定时器送入不同的初值,调节定时器的溢出时间,输出频率可控的方波产生。通常电子琴具备自动播放和手动弹奏的功能,本系统在此基础上增加显示功能,从而使其功能更加完备。
1系统的基本原理
本设计主要利用单片机中的定时器中断、8279显示、8255a管理键盘以及喇叭实现了演奏和显示功能。针对声音有音阶、音调和音长三种基本特性,通过对定时器t1送入不同的初值,调节t1的溢出时间,输出频率可控的方波,从而控制不同音阶的音调高低。而对于音长的控制,则可以向定时器t0送入一个固定初值,通过控制定时器中断循环的次数,来实现对发音时间长短的控制。对于音符和曲目的显示,主要通过读入键值,判断所选曲目或音符,输出到8279上显示。无论是手动演奏还是自动演奏,都涉及到对键盘的扫描,本系统采用8255来管理键盘,实现相应的处理。
2系统硬件电路组成
针对电子琴系统具有演奏和显示功能的要求,将整个系统的硬件电路主要分为显示电路、键盘输入电路和喇叭驱动电路三部分。其中,由8279控制曲目和音符的显示,将其数据口地址设置为0ff80h,状态口地址设为0ff82h。wwW.133229.COm用8255来管理键盘,控制键值的读入,其片选端地址设置为8700h。另外,用拨动开关k1连接到p3.2口控制手动和自动状态的选取,将p3.5作为信号输出端,接喇叭驱动电路。
3系统软件设计
①对音调的控制:根据不同的按键,对定时器t1送入不同的初值,调节t1的溢出时间,这样就可以输出不同音调频率的方波。不同音调下各个音阶的定时器初值如表1所示。
②对音长的控制:先向定时器t0送入一个固定初值,控制中断循环的次数,从而得到成倍数关系的时间间隔。按一拍0.64s计算,取1/16拍为最小间隔,即0.04s,为此设定t0的初值为63c0。
③乐谱的编码规则:对于每个音符,定义用8位二进制数表示。其中,最高位为1的字符为结束符,当读到最高位为1时,停止播放;低3位存储音阶码,即音阶表的列数,可为000b~111b (1~7和休止符),休止符表示停顿,不发音,只有时间长短属性;第3位和第4位存储音高码,即音阶表的行数,可为00b~10b;第5位和第6位存储音长码,即中断次数,可为00b~10b。
对演奏的控制:在手动演奏时,规定先按音调键,后按音阶键。每次音阶键按下时,调用键盘扫描子程序,获得键值,查询音阶表,获取定时器t1的计时初值,向喇叭输入相应频率的驱动脉冲,发出相应的声音,若按键没有松开,则一直发声;若按键松开,则停止发声。
在自动演奏时,通过选曲键来确定要播放的音乐,根据键值查询曲目表获取所点歌曲的首地址,依次读取歌曲的代码,获得音阶、音调和音长信息,播放相应的音乐。当读到结束符时,停止播放音乐。
4结论
本电子琴系统较好地实现了自动播放和手动演奏功能。通过键盘的控制,能随时在手动模式和自动模式间相互切换,并且在播放音乐的同时,将相应的字符在数码管上显示出来,而单音符的发音时间长短可由键盘按键所按时间控制。
参考文献:
[1] 刘同法.单片机外围接口电路与工程实践[m].北京:北京航空航天大学出版社,2009.
[2] 冯先成.单片机应用系统设计[m].北京:北京航空航天大学出版社,2009.