电子琴论文 - 图文 联系客服

发布时间 : 星期五 文章电子琴论文 - 图文更新完毕开始阅读

第四章 软件设计

4.1 整体程序处理流程图

图4-1 程序流程图

在电子琴开始工作时,系统默认电子琴处于弹奏状态,歌曲选择功能键的目的是赋予矩阵键盘第

二功能,即对系统内置的歌曲进行选择,在放歌时能通过弹奏/停止键来结束放歌,选歌时必顺先按下歌曲选择功能键,在通过矩阵键盘来选择和切换曲目。

4.2 LED数码管的显示

把主芯片中P2.0/A8-P2.7/A15 端口用8芯排线连接到一位数码管的a-h端口上。

表1 字形码表 0 1 2 3 4 5 6 7 0x71 0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 8 9 A B C D E F 0x07 0x7f 0x6f 0x77 0x7c 0x39 0x5e 0x79 4.3 音乐播放设计

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样就可以利用不同的频率的组合来构成想要的音乐。我们可以利用单片机的定时/计数器T0来产生这样的方波频率信号。

若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P3.7反相,然后重复计时再反相。就可在P3.7引脚上得到此频率的脉冲。

利用AT89S52的内部定时器使其工作计数模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523HZ,其周期T=1/523=1912US,因此只要令计数器计时956US/1US=956,每计数956次时将I/O反相,就可得到中音DO(523HZ)。

计数脉冲值与频率的关系式是:N=FI/2/FR

式中,N是计数值:FI是机器频率(晶体振荡器为12MHZ时,其频率为1MHZ);FR是想要产生的频率。

其计数初值T的求法如下:

T=65536-N=65536-FI/2/FR

例如:设K=65536,fi=1MHz,求低音DO(261HZ)、中音DO(523HZ)、高音DO(1046HZ)的计数值。

T=65536-N=65536-FI/2/Fr=65536-1000000/2/FR=65536-500000/Fr 低音DO的T=65536-500000/262=63628 中单DO的T=65536-500000/523=64580 高音DO的T=65536-500000/1046=65058

表2 音符频率表 音频 休止 低音1 低音2 低音3 低音4 低音5 低音6 低音7 中音1 中音2 中音3

对于不同的曲调我们要用单片机的另外一个定时/计数器来完成。在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。

频率(HZ) 0 262 294 330 349 393 440 494 523 587 659 简谱码(T值) 0 63628 63835 64021 64103 64260 64400 64524 64580 64684 64777 音频 中音4 中音5 中音6 中音7 高音1 高音2 高音3 高音4 高音5 高音6 高音7 频率(HZ) 698 784 880 988 1046 1175 1318 1397 1568 1760 1967 简谱码(T值) 64820 64898 64968 65030 65058 65110 65157 65178 65217 65252 65283

第五章 系统调试

5.1 程序调试

1、打开KEIL,创建工程My project ,输入程序。 2、保存程序为“电子琴.c”编译运行,如图:

图5-1 程序调试图

3、设置Options for Target “target 1”,生成.hex文件。