2 如何用单片机实现MIDI 键盘功能 用51 系列单片机实现MIDI 键盘功能,实际上就是要解决3 个方面的问提,那就是: 如何产生符合MIDI 协议的串行通讯数据,如何扫描键盘和实现力度响应,如何适当的进行电器连接,本节将介绍前两个问题, 最后一个问题将放在下一节介绍
1 如何产生符合MIDI 协议的串行信号 绝大多数51系列单片机都有串行通讯控制器(UART),配合合适的晶振,正确地设置 UART 的工作参数,就能够自动产生所需的串行数据
在51单片机做串行通讯时,可以用定时/计数器1(T/C1)作为波特率发生器
将串行口设置为方式1工作状态(10位异步收发,波特率由定时器控制),使用6MHz 晶振,T/C1 设为自动装入8位计数器状态(TMOD 置为 2xH),SMOD=1,TH=FFH,此时正好发生波特率为 31
25K 的串行通讯数据,适用于 MIDI 协议
串口及定时/计数器初始化如下:(C 语言例程,下同) void format(); { TMOD=0x21; //T/C1 工作于8位自动装入状态// TL1=0xff; TH1=0xff ; // T/C1 常数,确定波特率// SCON=0x50 ; //设串口工作于方式1,// PCON=0x80 ; //相当于 SMOD=1;// TR1=1; //T/C1 开始计数// } 由 51 系列单片机UART 的工作方式可推知, 当外部晶振的频率为 6MHz 的倍数时,正确地设置特殊功能寄存器,可以精确的发生31
25K 的波特率,见表 5-3: 表 5-3 用不同的晶振频率产生波特率 31
25K 的寄存器值 晶振频率 TMOD SCON PCON TL1 TH1 6MHz 0x21 0x50 0x80 0xFF 0xFF 12MHz 0x21 0x50 0x80 0xFE 0xFE