机通信数码管显示电路 P3.2(INT0) 外部中断源输入端音乐切换电路 P1.0~P1.7 矩阵键盘接口琴键控制电路 P3.0, P3.7 控制扬声器音频播放电路单片机原理及系统课程设计报告 6 4.2 主函数主函数流程图如图 5 所示。利用模块化的思想,主函数只执行初始化函数、键盘扫码函数、音频处理函数和数码管显示函数。图5 主函数流程图 4.3 初始化函数初始化的流程框图如图 6所示。该函数对所需的 I/O 口、外部中断 0、定时器 0、定时器 T1 以及数码管进行初始化配置。 TMOD=0x11; //T0 方式 1, T1 方式 1 IP=0x01; //INT0 中断优先级最高 EA=1;ET0=1;ET1=1;EX0=1; //允许中断单片机原理及系统课程设计报告 7 TR0=0; //关定时器 0 P1=0xbf; //键盘初始化 flag=0; //标志位置 0 图6 初始化流程图单片机原理及系统课程设计报告 8 4.4 数码管显示及音频处理函数根据键值扫描函数读取的键码, 扬声器发声并结合数码管显示出来。图7 数码管显示流程图 4.5 中断函数中断函数用到了外部中断和定时器中断。外部中断的流程框图如图 8 所示, 当按键按下时,外部信号触发外部中断,执行键值扫描函数,读取对应的键值。定时中断的流程框图如图 9 所示,定时器溢出中断后,进行重装载初值,同时执行相应的音频控制操作。 4.6 键值扫描函数将输入端置为高电平,输出端置为低电平。这样,当按键没有按下时,所有的输入端无变化,代表无键按下。一旦有键按下,则输入线就受输出线的影响被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。流程图如图 10 所示。单片机原理及系统课程设计报告 9 图8 外部键盘中断流程图图9 定时器中断流程图图 10 键值扫描流程图五、电子琴的系统仿真 5.1 部分仿真结果