计算机钢琴汇编设计报告,TC键盘模拟钢琴发声设计报告.docx

文档介绍:

TC键盘模拟钢琴发声设计报告.docxTC键盘模拟钢琴发声"设计报告

设计任务要求

用PC键盘模拟钢琴发声

1 .使PC机成为一架可以弹奏的“钢琴:当按下数字1时,依次发出1 ,2, 3, 4, 5,

6 , 7 , i八个音调,按下ESC则推出“钢琴”状态。

要求:通过给8253定时器装入不同的计数值,可以使不同的频率的波形,经过放大器 放大作用,便可驱动扬声器发岀不同频率的音调。要使音调持续一段时间,只要插入一 段延时程序之后再,再将扬声器切断。

要使计算机成为可以弹奏的钢琴,需要建立一张表,使键入字符与频率构成一个对应关 系

键入字符

1

2

3

4

L

6

7

8

音符

1

2

3

4

5

6

7

8

频率值

524

588

660

698

784

880

988

1048

方案论证比较

由于任务的限制,设计只能以计算机系统为基础。由于计算机主板上有各种任务需要

的芯片,机箱有扬声器,直接利用计算机中的各个芯片完成设计。在汇编编程中,有分歧的

就是在设定各个音符频率时,是在程序中使用链表还是直接在程序中赋值。介于只有8个音 符需要定义,数量较少,所以仅在程序中定义,而避免使用链表这种技巧以减低编程难度。

系统原理说明

扬声器的控制

IBM-PC/XT机喇叭发声驱动电路由系统内的8255-5并行接口芯片的PB端口最 低二位来控制,PBO来控制8253-5定时/计数器的定时计数;PB1控制喇叭 接通和断开,以此来发声。8255-5的PB 口地址为61 H ; 8255-5通道2的 端口地址为42 H , 8253-5的控制端口地址为43 H。

8255-5 芯片 PB 口 :

在TBM-PC/XT机的BIOS中有BEEP过程(祥见TBM-PC/XT机技术手册附A ), 在编程时把8253-5的计数器2的控制字设为B6H ,使它工作在方波输出方 式,计数器初值为533 H (即1331 D ),输出方波频率为:

19 X 10 A 6

F 0 = = 894 ( Hz)

1331

如果改变计数器初值,就可以得到任意频率的方波输岀,用X表示计数器的 初值,产生的任意频率用f表示则:

1. 19 X 10 A 6( Hz)

N =

f (Ilz)

将N值送入8253-5计数器2的初值寄存器中,运行程序时,就能从喇叭

里听到不同频率的声音。

经计算:音符1,2,3,4,5,6,7,1所对应的N值分别为,2271 , 2204 , 1803 ,

1705 , 1518 , 1352 , 1204 , 1135

发声的持续时间以10 ms为单位,可以用一段延时程序来实现:

MOV CX, 2801

D10MS:L00P D10MS

因为MOV指令为4 T状态,LOOP指令为17 T状态(产生转移);或5 T状 态(不产生转移),设TBM-PC/XT机主频为4. 77 MHz ,则每个T状态为210 ns ,故:

[17( n-l)+5+4] X 210 X 10 A (-9)=0.01

因此:n二2801

这样就可以使喇叭发岀所需频率和持续时间的声音。

本程序设置声音延时为5000x10ms = 0. 5s

PC系列机中,8253的地址为40『4:州,其计数器2的工作模式设为模式3 ,作为方波 发生器使用CLK=1. 19MIIZ , 0UT2接至扬声器,使扬声器产生一定频率的声音。另外,还使用 8255 (其端口地址60『63H )控制计数器2的工作(接GATE2 \具体的连线方式如图6-17 所示,而图 6-18 只是在图 6-17 的基础上稍力Q改动。

设计一程序,使扬声器发岀600IIZ频率的声音,当按下ESC键(1AII )时,停止发声。分 析:8255PB :方式0、输出(设BIOS或0S已初始化好\

8253工作于模式3 ,计数初值(时间常数)二1. 19MIIZ/600IIZ二1983 ,请参看部分相关程

序。

STACK SEGMENT STACK

DW 100H DUP (0)

STACK ENDS

CODE SEGMENT

ASSUME CS: CODE, SS: STACK

MAIN PROC FAR

START:

MOV AL, 10110110B;控制字,计数器2,模式3

OUT 43H, AL

MOV AX, 1983 ;初值

OUT 42H, AL

MOV AL, AH

OUT 42H, AL 关闭窗口

IN AL, 61H ; PB状态

PUSH AX

OR AL, 0000001 IB

OUT 61H.AL ;

内容来自淘豆网www.taodocs.com转载请标明出处.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值