(1)LED数码显示原理:
七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。 LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码表(如表2-1所示)
表2-1 字形码表
Table 2-1 font code table
“0” “1” “2” “3” “4” “5” “6” “7” 3FH 06H 5BH 4FH 66H 6DH 7DH 07H “8” “9” “A” “b” “C” “d” “E” “F” 7FH 6FH 77H 7CH 39H 5EH 79H 71H
(2)由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字0-9的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLEDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。 2.2 音乐产生的方法 2.2.1 原理
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这 样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。
若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,
15
即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。
利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。
计数脉冲值与频率的关系式(如式2-1所示)是:
N=fi÷2÷fr 2-1 式中,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=63627 中音DO的T=65536-500000/523=64580 高音DO的T=65536-500000/1046=65059
单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表2-2所示
表2-2 音符频率表 Table 2-2 notes the frequency table
音符 低1 DO #1 DO# 低2 RE #2 RE# 低 3 M 低 4 FA # 4 FA# 低 5 SO # 5 SO# 低 6 LA # 6 频率(HZ) 262 277 294 311 330 349 370 392 415 440 466 简谱码(T值) 音符 63628 63731 63835 63928 64021 64103 64185 64260 64331 64400 64463 # 4 FA# 中 5 SO # 5 SO# 中 6 LA # 6 中 7 SI 高 1 DO # 1 DO# 高 2 RE # 2 RE# 高 3 M 16
频率(HZ) 740 784 831 880 932 988 1046 1109 1175 1245 1318 简谱码(T值) 64860 64898 64934 64968 64994 65030 65058 65085 65110 65134 65157 低 7 SI 中 1 DO # 1 DO# 中 2 RE # 2 RE# 中 3 M 中 4 FA 494 523 554 587 622 659 698 64524 64580 64633 64684 64732 64777 64820 高 4 FA # 4 FA# 高 5 SO # 5 SO# 高 6 LA # 6 高 7 SI 1397 1480 1568 1661 1760 1865 1967 65178 65198 65217 65235 65252 65268 65283 我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据 低音0-19之间,中音在20-39之间,高音在40-59之间
TABLE: DW 0, 63628, 63835, 64021, 64103, 64260, 64400, 64524, 0, 0 DW 0, 63731, 63928, 0, 64185, 64331, 64463, 0, 0, 0 DW 0, 64580, 64684, 64777, 64820, 64898, 64968, 65030, 0, 0 DW 0, 64633, 64732, 0, 64860, 64934, 64994, 0, 0, 0 DW 0, 65058, 65110,65157, 65178, 65217, 65252, 65283, 0, 0 DW 0, 65085, 65134, 0, 65198, 65235, 65268, 0, 0, 0 DW 0
音乐的音拍,一个节拍为单位(C调)(如表2-3所示)
表2-3 曲调值表
Table 2-3 Tune the value of the table
曲调值 调4/4 调3/4 调2/4 DELAY 125ms 187ms 250ms 曲调值 调4/4 调3/4 调2/4 DELAY 62ms 94ms 125ms
对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。
琴键处理程序,根据检测到得按键值,查询音律表,给计时器赋值,发出相应频率的声音。对音调的控制:根据不同的按键,对定时器T1送入不同的初值,调节T1的溢出时间,这样就可以输出不同音调频率的方波。不同音调下各个音阶的定时器。 在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。
2.2.2 程序框图
音乐发声程序框图如图2-4所示:
17
图2-4 音乐发声程序框图 Fig 2-4 Music sound block diagram
3 总结与展望 3.1全文总结
通过这次课程设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。
首先在课程设计刚开始的调研阶段,我学会了怎么通过各种方式查询相关的资料。通过对这些资料的学习,我大致了解了单片机的发展现状以及未来的发展趋势,认识到目前单片机方面的各种各样的发展,和它们之间的竞争。了解了单片机方面的先进技术,这些都为我的未来的学习指明了方向。
我的课程设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。基本掌握了Protel99SE原理图的方法,并设计了一个单片机最小系统。通过开发板的设计和硬件搭建的过程,使我对51系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法,如LED数码管,键盘等。
在软件方面,通过串行口调试工具的开发,使我加深了对累封装的理解,熟
悉了51系列单片机内部的寄存器和编程规则,以及如何控制外围电路。 3.2研究展望
微型计算机的出现和大量使用将人类社会带入一个新的时代,单片微型计算机(简称单片机)在其中扮演着十分重要的角色。虽然它没有常见的PC那样大的
18

