资源说明:"MIDI信号的解码及实时音符显示"
本资源主要讨论MIDI数据的格式和使用AT89C51系列单片机完成MIDI信号的实时解码,并将音符数据显示出来的设计方案。MIDI是音乐设备数字接口的简答,是各种电子音乐设备之间数据传输的标准接口,广泛应用于各种电子乐器上。
MIDI信号的传输采用异步串行方式,速率为31.5kbps,数据格式为8个数据位、1个起始位和1个停止位。MIDI接口采用标准的5芯DIN连接器,传送电缆使用屏蔽层的双绞线电缆,因其抗干扰能力比较强,传输距离可以达到15m。
MIDI协议规定,传送的数据可以分为两类:状态字节和数据字节。状态字节实际就是命令字,表明其后所跟数据的种类,状态字节总是大于等于80H,而数据字节总是小于80H。状态字节中,用数据的低4位表示通道号,高4位表示不同的命令。
在MIDI协议中,与本机有关的只有两种指令:8nH和9nH(n为通道号)。这两种指令的基本格式一样,一般由3个字节组成,格式是:8n(9n) aa bb其中,aa是音符数据,表明所演奏的音符,其范围为0~7fH,这样共有128个音符,足以覆盖整个音域;bb是速度数据,表明击键的速度,又称力度数据,其范围也是0~7fH。
在本设计中,使用了AT89C51单片机和128段LED显示控制芯片BC7281构成的系统。该系统可以实时解码MIDI信号,并将音符数据显示出来。LED显示电路音符的显示,通过一个钢琴键盘的面板,在键盘的每个键上,都有一个LED指示灯,用LED的亮和灭代表音符的开和关。
程序设计中,采用中断的方式来处理MIDI数据,并设立一个特定的缓冲区,处理MIDI数据的中断程序只负责对缓冲区内的数据进行更新,而不直接完成对显示芯片的操作。这可以提高中断处理速度。显示的刷新,则放在程序的主循环中完成。
本设计方案经实际产品应用,证明合理可靠,可以应用于音乐教学和电子乐器等领域。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。