中 3 M 659 64777 # 6 1865 65268
中 4 FA 698 64820 高 7 SI 1967 65283
了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片 机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频 率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。
在本文中,单片机工作于 12MHZ 时钟频率,使用其定时/计数器 T0,工作模式为 1, 改变计数值 TH0 和 TL0 可以产生不同频率的脉冲信号,在此情况下,根据以上公式,C 调 的各音符频率与计数值 T 的对照如表 2-1 所示。 为音符建立一个数据表,单片机通过查表的方式来获得相应的数据。论文网
低音 0-19 之间,中音在 20-39 之间,高音在 40-59 之间
TABLE1: DW 64021,64103,64260,64400
DW 64524,64580,64684,64777
DW 64820,64898,64968,65030
DW 65058,65110,65157,65178
2。3 如何用单片机实现音乐的节拍
除了音符以外,节拍也是音乐的关键组成部分。 节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果 1/4 拍
的延时是 0。4 秒,则 1 拍的延时是 1。6 秒,只要知道 1/4 拍的延时时间,其余的节拍延时 时间就是它的陪数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设 置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握, 不由程序控制。
对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成音乐的音拍,一 个节拍为单位(C 调)(如表 2-2 所示)。
表 2-2 曲调值表
曲调值 DELAY 曲调值 DELAY
调 4/4 125ms 调 4/4 62ms
调 3/4 187ms 调 3/4 94ms
调 2/4 250ms 调 2/4 125ms
对于不同的曲调也可以用单片机的另外一个定时/计数器来完成。琴键处理程序,根 据检测得到按键值,查询音律表,给计时器赋值,发出相应频率的声音。对音调的控制: 根据不同的按键,对定时器 T1 送入不同的初值,调节 T1 的溢出时间,这样就可以输出不 同音调频率的方波。不同音调下各个音阶的定时器。在这个程序中用到了两个定时/计数 器来完成的。其中 T0 用来产生音符频率,T1 用来产生音拍。
2。4 LED 流水灯
所谓流水灯就是 16(2×8)个发光二极管(LED)轮流点亮,周而复始。试验的开发板上用 单片机的 P0 和 P2 口作为输出,分别接入 8 只发光二极管 LED1-LED8 和 LED9-LED16。 当单片机的引脚输出为低电平时发光二极管点亮,为高电平时熄灭。
二极管电路
P0 和 P2 口输出串联 16 个限流电阻分别接 16 个 LED 发光二极管,以防止其电流过大 而烧坏。P0 口作为通用接口时时一准双向口,它作为输出口时与一般的双向口使用方法 相同。由准双向口结构可知当 P0 口用作输入口时必须先对它置“1”。若不先对它置“1”, 读入的数据是不准确的。输出时需要接上拉电阻,P0 口内部没有上拉电阻,若将外围电 路设计为低有效,高无效,则无需再外接上拉电阻。