1 MIDI 信号的解码及实时音符显示摘要: 介绍了 MIDI 数据的格式, 讨论了一种使用 AT89C5 1 系列单片机完成 MIDI 信号的实时解码, 从中提高音符数据, 并随时利用专用 LED 驱动芯片将音符显示出来的设计方案。该方案经实际产品应用,证明合理可靠。关键词: MIDI 串行接口 LED 显示因为设计要求所有旋律通道的音符都要显示出来, 也就是说, 除第 10 通道外, 每个通道的音符都要显示出来。这样就存在着音符重叠的问题, 比如第一通道中的 C 音和第二通道中的 C 音同时演奏,这时如果单片机收到一个“音符关”指令, 则必须判断其它通道中有没有相同的音符处在“开”的状态, 如果有, 则相应的音符指示灯就不能关闭。为了到达这个目的, 将音符显示的缓冲区设置为一个 128 单元的数组,数组单元和 MIDI 的 128 个音符一一对应(虽然只需要显示其中的 8 个音符) ,但是为了简化程序及日后升级的方便, 仍将数组设为 128 单元, 只在主程序中显示刷新的部分才将多余的数据忽略), 每当收到一个“音符开”指令时, 相应 2 的数组单元就加一,而收到“音符关”指令时,则减一,在显示时, 只要数组单元不等于零, 对应的音符指示 LED 就点亮, 而只有在数组单元等于零时, 才将已经点亮的 LED 关闭,“音符关”指令不直接控制 LED ,这样就很好地解决了省符重叠的问题。 3
MIDI信号的解码及实时音符显示 来自淘豆网www.taodocs.com转载请标明出处.