汇编大作业:小音响

本文介绍了一个使用汇编语言编写的音乐播放器。通过理解喇叭和电脑扬声器的发声原理,利用8254定时器和汇编代码控制扬声器产生不同频率的声音。详细介绍了程序设计思路,包括计算音符频率、初始化8253芯片以及打开和关闭扬声器的指令。实验加深了作者对汇编语言和微机原理的理解。
摘要由CSDN通过智能技术生成

一. 课程设计功能

1…制作一个可以自动播放音乐的音乐播放器。
2…通过使用汇编语言设计一个音乐播放器进而全面的了解汇编语言。

二.项目运行环境

Masm for windows
Dosbox

三.音乐播放器相关知识(参考有关网站)

1.喇叭的发声

传统的喇叭是由纸盆、线圈、永久磁铁等组成。当电流通过线圈时,线圈产生的磁场和永久磁铁的磁场相互作用,从而使线圈产生振动。和线圈相连的纸盆也随之移动,若通过线圈的电流时连续变化的,则线圈移动的幅度也会变化,从而牵动纸盆振动,产生声音。
-------(来源百度百科)

2.电脑扬声器的发声

扬声器一端连接电源正极,然后另一端与有关设备的61H端口的bit位相连。因此,如果可以连续改变该端口61H的比特位的0,1状态,这样就能够使得扬声器线圈中的电流时有时无,从而达到使扬声器发出声音的效果。因此我编译的汇编程序的目的就是通过电流变化不断地改变61H端口比特位状态。 -------(来源百度百科)

四.音符相关频率

音符 频率 半周期 音符 频率 半周期
低1DO 262 1908 #4FA# 740 0676
#1DO# 277 1805 中5SO 784 0638
低2RE 294 1700 #5SO# 831 0602
#2RE# 311 1608 中6LA 880 0568
低3M 330 1516 #6LA# 932 0536
低4FA 349 1433 中7SI 988 0506
#4FA# 370 1350 高1DO 1046 0478
低5SO 392 1276 #DO# 1109 0451
#5SO# 415 1205 高2RE 1175 0426
低6LA 440 1136 #2RE# 1245 0402
#6LA# 466 1072 高3M 1318 0372
低7SI 494 1012 高4FA 1397 0358
中1DO 523 0956 #4FA# 1480 0338
#1DO# 554 0903 高5SO 1568 0319
中2RE 578 0842 #5S0# 1661 0292
#2RE# 622 0804 高6LA 1760 0284
中3M 659 0759 #6LA# 1865 0268
中4FA 698 0716 高7SI 1976 0253

五,实验原理

1.笔记本发声系统相关硬件:

笔记本电脑的发声系统以8254的2号定时器为核心。

8254芯片具有24个引脚的双列直插式集成电路芯片。8254芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各个引脚及其所传送信号的情况,如下
(1)D7~D0:双向、三态数据线引脚,与系统的数据线连接,传送控制、数据及状态信息。
(2)RD:来自于CPU的读控制信号输入引脚,低电平有效。
(3)WR:来自于CPU的写控制信号输入引脚,低电平有效。
(4)CS:芯片选择信号输入引脚,低电平有效。
(5)A1、A0:地址信号输入引脚,用以选择8254芯片的通道及控制字寄存器。(6).VCC及GND:+5V电源及接地引脚。
(7)CLKi: i=0,1,2,第i个通道的计数脉冲输入引脚,8254规定,加在CLK引脚的输入时钟信号的频率不得高于2.6MHZ,即时钟周期不能小于380ns。
(8)GATEi: i=0,1,2,第i个通道的门控信号输入引脚,门控信号的作用与通道的工作方式有关。
以上资料引用于百度百科 相关链接https://baike.baidu.com/item/8254%E8%8A%AF%E7%89%87/4411754?fr=aladdin

2.程序设计思路原理

因为所有的音乐都是通过不同频率的音阶和持续时间来实现的。与此同时,音乐的不同是由每一个音阶在一定的时间内按照相关的编排从而形成音乐。每一个音阶和它播放音乐持续时间都会存在有关数据段中。之后由于按键值的不同,选择的音阶音阶和时间表也会不一样,然后使用定时器生成有关音阶的频率。
cpu对定时器通道2进行编程,然后让I/O(输入/输出)寄存器接收有关控制扬声器的声音频率16位定时值,然后通过相关的端口的最低控制通道,控制其打开和关闭。从而产生特殊的声音。最后当定时器接收的定时值为533Hz时,相关设备就能产生896Hz的声音,从而产生其他频率的定时值就可算出来:
计算数值=533Hz×896÷频

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值