电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

c语言发声程序

c语言发声程序_第1页
1/19
c语言发声程序_第2页
2/19
c语言发声程序_第3页
3/19
字号:大 中 小 c 语言经典教程:发声技术 问题: 乐谱的 1、2、3、4、5、6、7,加上高低音可以谱出动听的曲子,请编写程 序,使计算机能够播放歌曲。 [分析] 播放歌曲意味着让计算机发声,声音从 PC 机内的扬声器发出,所以这个问题将与 硬件扬声器电路有关。 [解答] 解决这一编程问题,让我们首先简单了解一下计算机发声的原理。在 PC 机的系统板上装有定时与计数器 8253 芯片,还有 8255 可编程并行接口芯片,由它们组成的硬件电路 可用来产生 PC 机内扬声器的声音,对于 286、386、486、586 等 PC 微机,由于采用了超大 规模集成电路,因而看不到这些芯片,它们均集成在外围电路芯片上了。 当我们操作计算机时,常常听到的发声,就是由软件控制这些电路而产生的。声音的 长短和音调的高低,均可由程序进行控制。在扬声器电路中,定时器的频率决定了扬声器发 音的频率,所以可通过设定定时器电路的频率来使扬声器发出不同的声音。对定时器电路进 行频率设定时,首先对其命令寄存器(口地址为 0x43)写命令字,如写入 0xb6,这可用 outporb(0x43,0xb6);来实现,则表示选择该定时器的第二个通道,计数频率先送低 8 位(二 进制),后送高 8 位。接着用口地址 0x42 送频率计数值,先送低 8 位,后送高 8 位,即用 outportb(0x42,低 8 位频率计数值)和 outportb(0x42,高 8 位频率计数值)来实现。通过这两 步使定时器电路产生一系列方波信号,此信号是否能推动扬声器发音,还要看由 8255 产生 的门控信号和送数信号是否为 1,而它们也可编程,口地址为 0x61。为了不影响 8255 口地 址 61H 中的其他高位,应先输入口地址 6lH 的现有值 bits,即用 bits= inportb(0x61)来实现, 然后就可用 outportb(0x61,bits|3)来允许发声,而用 outportb(0x61,bits&0xfc)来禁止发声, 且不改变 8255 其它位原来的值,关于这方面的详细内容可以参阅 IBM PC/XT 接口技术方面 书籍有关内容。 5.1 声音函数 编写音乐程序播放歌曲,最简单的方法是可以直接使用 TURBO C 在 dos.h 中提供的有 关发声的函数 sound()和 nosound()。sound()函数用于产生声音,其原型如下: void sound(unsigned frequency); 该函数的入口参数为扬声器要产生声音的频率。 与 sound()函数相反,nosound ()函数用于关闭扬声器,其原型为: void nosound(void); 该函数没有入口和出口参数...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

c语言发声程序

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部