pc系列机的发音方法

上传人:子 文档编号:43281057 上传时间:2018-06-05 格式:DOC 页数:6 大小:17.26KB
返回 下载 相关 举报
pc系列机的发音方法_第1页
第1页 / 共6页
pc系列机的发音方法_第2页
第2页 / 共6页
pc系列机的发音方法_第3页
第3页 / 共6页
pc系列机的发音方法_第4页
第4页 / 共6页
pc系列机的发音方法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《pc系列机的发音方法》由会员分享,可在线阅读,更多相关《pc系列机的发音方法(6页珍藏版)》请在金锄头文库上搜索。

1、PCPC 系列机的发音方法系列机的发音方法PC 系列机的发音方法1991-12-27一、计时器芯片的声音控制可编程的计时器芯片是标准 PC 机发声功能的核心。计时器芯片的通道 2 是专用于声音产生的。要产生声音,必须对通道 2 适当编程,并使用通道 2 发出的脉冲来驱动扬声器。通过编程,计时器可以以需要的任何频率发出脉冲,但由于它并不记录声音持续了多长时间,除非把它关上,否则声音便会永远持续下去;所以,程序必须通过一些定时指令来终止发声。1、对计时器芯片进行编程对计时器的通道 2 进行编程,给通道 2 的计数器一个合适的倒计数值(计时器芯片用一个内部寄存器来保存这个值,以便每当计数器倒计数至

2、0 时重新设置该计数值)。把倒计数值载入计时器芯片中就立即起作用。在每个 1.19318MHz 的时钟周期,计时器使此计数器递减,直到递减至 0,然后在通道 2 上输出脉冲到声音产生电路中,并重新开始倒计数。事实上,时钟频率被计数值(即:倒计数的初值)除得到输出频率。结果是,如打开扬声器,计时器送出一系列脉冲,产生一定频率的声音。控制计数和最终频率有如下公式的相互关系:计数值=1193180频率频率=1193180计数值可以看出,高计数值可产生低频率的声音,而低计数值可产生高频率的声音。计数值为 100,会产生频率大约每秒 11931 周期的高音,而计数值为 10000,则会产生频率大约每秒

3、119 周期的低音。在 16 位算术的范围内,几乎可以产生任何频率。在除数(即:分频数)为 65535(FFFFH)时产生最低的频率 18.2Hz,在除数为1 时产生最高的频率 1.193MHz。BASIC 把实际频率范围控制在 37 到3276Hz。以下程序表明内部扬声器的实际频率范围甚至比 BASIC 所提供的还要小。一旦你根据所需频率计算出计数值,就可以将它送至计时器通道 2 的寄存器中。这需做三次向端口的输出。第一次端口输出是向端口 43H(67)送值 B6H(182),通知计时器即将送来的是计数值。以后的两次输出则向端口 42H(66)送一个 16 位无符号的字的计数值。保? COU

4、NT=1193180/3000 3000 是所需的频率20 LO.COUNT=COUNT MOD 256 计算出低字节值30 HL.COUNT=COUNT/256 计算出高字节值40 OUT &H43,&HB6 通知计时器准备好50 OUT &H42,&LO.COUNT 送低位字节60 OUT &HI.COUNT 送高位字节2.激发扬声器在对计时器编程后,为使用计时器产生的信号,还需要激发扬声器电路。正象 PC 和 PS/2 的许多部分,PC 和 PS/2 通过向某特定的端口送某一值来控制扬声器,这一过程如图 1 所示。扬声器的启动是由改变 61H(97)I/O 端口的 0 位和 1 位的值来

5、控制的。在该端口的 8 位中只有两位由扬声器使用:0 位和 1 位。其它 6 位用于其它方面,所以在使用扬声器时,一定不要去改变他们。CPU定时器准备 端口 43H 向扬声器发送脉冲置频率计数器 端口 42H 8253_可编程序定时器 放大器打开扬声器 端口 61H扬声器图 1 声音频率怎样通过系统计时器和扬声器产生的0 位,控制计时器芯片的输出信号向扬声器的传送。1 位,控制扬声器的脉冲。两位须都置 1,扬声器才能对计时器芯片的信号做出反应。可以通过如下操作把这两位置 1,而不影响其它位:70 OLD.PORT=INP(&H61)? 读端口 61H 的值80 NEW.PORT=(OLD.PO

6、RT OR &H03) 置 0 位和 1 位90 OUT &H61,NEW.PORT 打开扬声器二、扬声器的直接控制计时器通过发送周期性信号来激发扬声器的振动。也可以通过程序直接向扬声器发送信号来实现同样过程,此时要把端口61H(97)的 0 位置 0,将扬声器关上,然后将 1 位轮流置 1 和置 0 以向扬声器发送脉冲。使用这种方法,程序执行得越快,声音频率越高。如下 BASIC 程序给出了这种方法的一个例子:10 X=INP(&61)AND &HFC 读端口的值,将 0 位和 1 位置 020 OUT &H61,X 压缩扬声器30 OUT &H61,X OR 2 扩张扬声器40 GOTO

7、20第 20 行和 30 行向扬声器发送脉冲,每一步占用半个周期,两步合成一个完整的声音周期。这个例子中 BASIC 以其最快的速度处理程序能发出的最高音调。如晨在应用程序中需要更大的频率范围,可以使用速度更快的语言,并在每个完整的周期(周期时间减半,因为每个开或关操作都仅是半个周期)之间插入一个节拍减半频率周期的延迟时间。无论使用何种语言,都必须有一个持续计数来结束发声。为了以特定的频率发出不同的声音,如“咔嗒”或“蜂鸣”声,只需改变脉冲间的延迟时间。尽管有这些美好的可能性,通过直接编程控制扬声器发声并不是产生声音的好办法。与使用计时器相比较,它有三大缺陷:程序要求不断占用 CPU,所以计算

8、机几乎没有时间去做其它工作。声音频率由计算机的速度决定,亦即同一程序在快慢不同的型号的机器上会发出高低不同的声音。时钟节拍信号引起的中断会干扰声音的光滑性,产生颤音。解决它的唯一办法是用禁止中断来挂起时钟节拍中断,但这破坏了计算机的时感。就我们所知,直接控制产生声音的唯一优点是:使用程序延时的适当控制,控制方法就可产生丰富的复调声音。但须预先提请注意,这种作法要求十分巧妙而烦琐的编程,因而很可能麻烦,不值得这样做。三、扬声器的音量和音质计算机的内部扬声器无任何音量控制。而且和其它扬声器一样,其音量随频率响应的好坏而变化;有些频率听起来比其它频率声音大。在大多数的 PC 和 PS/2 机中,由于

9、扬声器很粗糙,随着频率不同音量差别很大。可用如下程序验证这一点_它可能有助于选择你所要求的最佳音调的频率。10 PLAYMF 分别发声20 FREQUENCY=3730 WHILE FREQUENCY32000 使用到 32000Hz 的所有频率40 PRINT USING.;FREQUENCYe 显示频率50 SOUND FREQUENCY,5 以 5 个单位持续时间发声60 FREQUENCY=FREQUENCY1.1 增加 1/10 的频率70 WEND须知在不同的 PC 和 PS/2 的机器中,扬声器发出的声音可能不一样。部分原因是作为扬声器附件的共振腔的材料不同。在两种不同型号的机器

10、上,试运行如下例子,并准备听到声音的变化。100 声音例子110 120 颤音(两种声音快速交替)130 FOR N=0 TO 5140 SOUND 440,.7150 SOUND 466.16,.5160 NEXT170 WHILE(INKEY=):WEND等待敲键180 190 快速发出两种音调200 SOUND 900,.1210 SOUND 760,1220 WHILE(INKEY=):WEND230 240 随机噪音250 X=INP(&H61)AND &HFC260 I=20270 FOR N=0 TO 500280 IF(RND100I)THEN OUT&H61,X OR2:OU

11、T &H61,X290 NEXT附:音乐的八度音程音调的频率音调频 率 音 调 频 率 音 调 频 率 音调频 率C016.35 C2 65.41 C4 261.63C6 1046.50C#0 17.32 C#269.30 C#4277.18C#61108.73D018.35 D2 73.42 D4 293.66D6 1174.66D#0 19.45 D#277.78 D#4311.13D#61244.51E020.60 E2 82.41 E4 329.63E6 1328.51F021.83 F2 87.31 F4 349.23F6 1396.91F#0 23.12 F#292.50 F#43

12、69.99F#61479.98G024.50 G2 98.00 G4 392.00G6 1567.98G#0 25.96 G#2103.83G#4415.30G#61661.22A027.50 A2 110.00A4 440.00A6 1760.00A#0 29.14 A#2116.54A#4466.16A#61864.66B030.87 B2 123.47B4 493.88B6 1975.53C132.70 C3 130.81C5 523.25C7 2093.00C#1 34.65 C#3138.59C#5554.37C#72217.46D136.71 D3 146.83D5 587.33D

13、7 2349.32D#1 38.89 D#3155.56D#5622.25D#72489.02E141.20 E3 164.81E5 659.26E7 2637.02F143.65 F3 174.61F5 659.26F7 2637.83F#1 46.25 F#3185.00F#5739.99F#72959.96G149.00 G3 196.00G5 783.99G7 3135.96G#1 51.91 G#3207.65G#5830.61G#73322.44A155.00 A3 220.00A5 880.00A7 3520.00A#1 58.27 A#3233.08A#5932.33A#73729.31B161.74 B3 246.94B5 987.77B7 3951.07C84186.01

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号