杨 彬
(新疆焦煤集团1930煤矿)
浅谈井下语音设备利用单片机发声的原因
杨 彬①
(新疆焦煤集团1930煤矿)
井下语音设备发声主要利用AT89C51单片机制作的发音电路,介绍了AT89C51单片机产生音乐的要素,由AT89C51单片机制作的发音电路和通过汇编好的语言程序而实现的蜂鸣器,以及单片机演奏音乐的原理。
井下语音设备;单片机;定时器中断;延时;音调;节拍;发音电路;原理
随着科学技术的发展,井下的语音设备越来越多,功能各一,有的传递信息,有的放音乐为井下工人消除疲劳等等,语音设备是怎样发出声音的,现在介绍井下语音设备发声原理。
当物体振动时,能够发出声音。振动的频率高则音高,频率低则音低。音频的范围为20~200 Hz,人类的耳朵比较容易辨别的声音是200 Hz~20 kHz。一般音响电路是以正弦波信号驱动喇叭,产生悦耳的音乐,在数字电路里,则是以脉冲信号驱动喇叭以产生声音,同样的频率,脉冲信号或正弦波信号产生的音效,对于人类的耳朵来说很难区别。
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此,单片机奏乐只需弄清楚两个概念,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。
在音乐中所谓“音调”,其实就是常说的“音高”。以C调音阶为例,包括3个音阶(低音、中音与高音),每个音阶为8音度,其中细分为12个半音(即DO、DO#、RE、RE#、Mi、Fa、Fa#、So、So#、La、La#、Si),而每个音阶之间的频率相差一倍,例如高音Do的频率(1 046 Hz)刚好是中音Do的频率(523 Hz)的一倍、中音Do的频率(523 Hz)刚好是低音Do的频率(266 Hz)的一倍;同样,高音Re(1 109 Hz)刚好是中音Re的频率(554 Hz)的一倍、中音Re的频率(554 Hz)刚好是低音Do的频率(277 Hz)的一倍,依此类推。因此,两个半音之间的频率比为1.059,以中音为例,Do的频率为523 Hz,所以Do#的频率为523×1.059,约为554 Hz、Re的频率为554×1.059,约为587 Hz……依此类推。
音符的节拍可以举例来说明。在一张乐谱中,经常会看到这样的表达式,如等等,这里1=C,1=G表示乐谱的曲调,和前面所谈的音调有很大的关联就是用来表示节拍的。以为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。比如:
其中,1、2为一拍,3、4、5为一拍,6为一拍,共三拍。1、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。一般说来,如果乐曲没有特殊说明,一拍的时长大约为400~500 ms。以一拍的时长为400 ms为例,则当以四分音符为节拍时,四分音符的时长就为400 ms,八分音符的时长就为200 ms,十六分音符的时长就为100 ms。
若要AT89C51单片机产生声音,可利用程序产生音频脉冲,只要算出某一音频的周期,然后将此周期除以2,即为半周期的时间,利用定时器计时或利用延时程序计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,就可以在I/O端上得到此脉冲。
2.1 定时器中断
利用89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。例如,频率为523 Hz,其周期T=1/523 =1 912μs,因此,只要令计数器计时956μs/1μs= 956,在每计数956次时将I/O反相,就可得到中音DO(523 Hz)。计数脉冲值与频率的关系如下:
式中:
N—计数值;
Fi—内部计时一次为1μs,故其频率为1 MHz;
Fr—要产生的频率;
以标准音高A为例:
A的频率f=440 Hz,其对应的周期为:
脉冲时间周期示意图见图1。
由图1可知,单片机上对应蜂鸣器的I/O口来回取反的时间应为:
t=T/2=2 272/2=1 136μs
时间t也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作
图1 脉冲时间周期示意图
方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的预置初值由下式来确定:
式中:
TALL=216=65 536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为:
将t=1 136μs代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高A在单片机晶振频率f0=12 MHz,定时器在工作方式1下的定时器高低计数器的予置初值为:
T H440Hz=(65 536-1 136×12/12)/256=FBH TL440Hz=(65 536-1 136×12/12)%256=90 H
根据上面的求解方法,结合音阶频率对应表(见表1),可求出其他音调相应的计数器的予置初值。
表1 音阶频率对应表
2.2 利用延时子程序
首先编写一个基本的延时子程序(10μs),即T_
DELA Y子程序,如下:
只要在调用T_DELA Y子程序之前,先赋值ACC则:
t=10×ACC+2
与预期的半周期相差不多就可以了。
节拍有快有慢,拍子越短节奏越快,拍子越长节奏越慢,而控制节拍的方法同样是调用延时子程序或采用定时器中断两种方式。
3.1 延时子程序
首先整理出整首音乐曲目中拍子的种类,找出其中最短的拍子,例如整首乐曲中,包含1/4拍、1/2拍、3/4拍、1拍及2拍,则以1/4拍为基准,然后写一段1/4拍长度的DELA Y程序,若要产生1/4拍的长度,则执行1次该子程序;若要产生1/2拍的长度,则执行2次该子程序;若要产生3/4拍的长度,则执行3次该子程序;若要产生1拍的长度,则执行4次该子程序;若要产生2拍的长度,则执行8次该子程序……依次类推。
3.2 定时器中断
同样,找出整首音乐曲目中拍子的种类,找出其中最短的拍子,例如整首乐曲中,最短的是1/4拍,若1/4拍的时间是0.125μs,则以1/4拍为基准,然后设定每0.125μs产生一次中断,其定时器值为125 000,超过任何一个定时器模式的定时值。若采用mode1,而定时值设定为62 500,则只要执行2次中断,即可产生1/4拍的时间长度,同时,若要产生1/2拍的长度,则执行4次中断;若要产生3/4拍的长度,则执行6次中断……依次类推。
若要89C51产生声音,可利用程序产生频率,送到输入/输出口(一位即可),例如P1.0,再从该点连接到喇叭的驱动电路,即可驱动喇叭。
井下所用的语音设备很多,但它们主要是利用单片机制作发音电路,本文介绍了单片机产生音乐的要素,由AT89C51单片机制作发音电路,并通过汇编语言程序实现蜂鸣器,以及单片机演奏音乐的原理。
[1] 张义和,陈敌北.例说89C51[M].北京:人民邮电出版社,2002:85-102.
[2] 付家才.单片机控制工程实践技术[M].北京:化学工业出版社,1999:123-160.
[3] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2004:96-125.
Discussion on Sound Production Reason of Underground Pronunciation Equipment by Using SCM
Yang Bin
Pronounced device in the underground can be sent out pronunciation which mainly use the pronounced circuit to sound by AT89C51 SCM,now mainly introduce the element of music produced by the AT89C51 SCM,the pronounced circuit made by AT89C51 SCM and the buzzer achieved by the assembled language and the principle of performed music by SCM.
Underground pronunciation equipment;SCM;The timer interruption;Timelag;Tone;Beat; Pronunciation circuit;Principle
book=4,ebook=138
TD679
A
1672-0652(2010)04-0026-03
2010-03-21
杨 彬 男 1979年出生 2003年毕业于新疆工业高等专科学校 助理工程师 乌鲁木齐 830025