1、 电子音调发生器电子音调发生器 一、一、实验目的实验目的 : 1.了解计算机发声原理。 2.熟悉定时器和键盘扫描电路的工作原理及编程方法。 二、二、实验内容实验内容和要求和要求: 板子分为两大部分:由开关控制的音阶播放程序;由单片机控制的自动音阶播放 程序(音乐程序) 。经观察单片机实验箱内开关后发现,若全部开关用来播放8 个音的话,就没有多余的开关用于在音阶和音调之间切换,故我将音阶部分缩减 和3个开关,即可代表8种不同状态。再分配两个开关用于切换音阶,实现音乐部 分和歌曲之间的切换。简单地说就是能清晰地发出七个音DO RE MI FA SO LA TI 还能放出两首歌曲,在放歌曲的时候可以
2、进行任意的中断切换实现不同歌曲之 间,不同音节之间的切换。 三、三、实验原理:实验原理: (1)音节由不同频率的方波产生,音节与频率的关系如表 1 所示。要产生音频 方波,只要算出某一音频的周期(1/频率) ,然后将此周期除以 2,即为半周期 的时间。 利用计时器计时此半周期时间, 每当计时到后就将输出方波的 I/0 反相, 然后重复计时此半周期时间再对 I/O 反相,就可在 I/O 脚得到此频率的方波。在 ZKS-03 实验仪上,产生方波的 I/O 脚选用 P1.7,通过跳线选择器 JP1 将单片机 的 P1.7 与蜂鸣器的驱动电路相连。这样 P1.7 输出不同频率的方波,蜂鸣器便会 发出不
3、同的声音。另外,音乐的节拍是由延时实现的,如果 1 拍为 0.4 秒,1/4 拍是 0.1 秒。 只要设定延时时间, 就可求得节拍的时间。 延时作为基本延时时间, 节拍值只能是它的整数倍, 每个音节相应的定时器初值 X 可按下法算: (1/2)*(1/f)=(12/fose)*(2 16-X) 即 X=2 16-(fose/24f) 其中 f 为音调频率,当晶振频率 fose=11.0592MHz 时,音节“1”相应的定时器 初值为 X,则可得 X=63777D=F921H 其它的可同样求得。 表1: 音符 频率(HZ) 计数初值(H) 低音5 196 F6D1 低音6 220 F7D1 低音
4、7 247 F8B6 中音1 262 F921 中音2 294 F9E1 中音3 330 FA8C 中音4 349 FAD8 中音5 392 FB68 中音6 440 FBE9 高音7 494 FC5B 高音1 523 FC8F 高音2 587 FCEF 高音3 659 FD45 高音4 698 FD6C 高音5 784 FDB4 曲调值 DELAY 调 4/4 125ms 调 3/4 187ms 调 2/4 250ms 节拍延时 利用计时器计时此半周期时间,每当计时到后就将输出方波的I/O反相,然 后重复计时此半周期时间再对I/O反相,就可在I/O脚得到此频率的方波。 (2)音乐程序查表原理
5、: 乐谱格式:每字节的高字节为音符代码,低字节为节拍代码 音符代码 1 2 3 4 5 6 7 8 9 A B C D E F 0 音节 .5 .6 .7 1 2 3 4 5 6 7 1 2 3 4 5 休止 节拍代码 1 2 3 4 5 6 8 A C F 节拍 1/4 2/4 3/4 1 1(1/4) 1(1/2) 2 2(1/2) 3 3(3/4) (3)定时器的使用及时间延迟,首先对定时器进行初始化 设置 TMOD(工作方式)寄存器 GATA C/T M1 M0 GATA C/T M1 M0 门控位:GATE0,TR=1 启动计数(软件启动); GATE1,TR=1 且 INT=1 启
6、动计数(硬件启动)。 C/T: 定时或计数方式选择位。 C/T0,定时工作方式;C/T1,计数工作方式。 M1M0: 工作方式选择位。 M1M000,方式 0:13 位计数(TL0-4、TH0-7) M1M001,方式 1:16 位计数(TL0-7、TH0-7) M1M010,方式 2:8 位计数,有自动装入功能。 M1M011,方式 3:T0 分为两个 8 位计数器,TL0 可工作为定时或计数 方式,TH0 只能工作为定时方式。 设置 TCON(控制)寄存器: TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TR0/TR1:启动计数。为 1 启动计数;为 0 停止计数。 TF0/TF1:计数溢出。当加”1”计数结束时为 1。 本实验采用定时器 T0,工作在方式 1 (16 位计数) ,无自动装入功能。 (4) 83 线优先编码器 74LSl48 定时器 1 定时器 0 74LSl48 外引线排列图 74LS148 是