视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
软件音乐程序设计
2025-09-26 11:17:43 责编:小OO
文档
    音乐程序设计(软件)

一 实验目的

本课程设计是继《微机系统及应用》课程之后的一次综合性设计、实验训练。根据微机系统及应用课程教学的重点和主要知识点及工程实际需要,设置汇编语言程序设计、PC机内部接口和8086系统接口电路设计等设计题目。要求学生综合本课程和其它相关课程中学到的80X86系统结构、汇编语言设计、典型接口芯片、电路电子技术等相关知识进行程序设计、硬件接口电路设计和调试,系统地掌握微机原理和接口技术的相关知识,实现知识的融会贯通。要求学生通过1.5周的学习,提高设计汇编语言程序的能力和技巧,培养实现一个简单应用系统功能的硬件软件设计能力。

二 实验内容

   音乐程序设计

编写程序,程序运行时使PC机成为一架可弹奏的钢琴,当按下数字键1-8时,依次  发出8个音调。按CTRL-C则退出钢琴状态。频率表(524,588,660,698,784,880,988,1048。拓展功能,比如自动弹奏某一乐曲等,由同学自行扩展。

三  实验原理

PC机扬声器电路简图如下:

通过给8253/8254定时器装入不同的计数值,可以使其输出不同频率的波形。当与门打开后,经过放大器放大,可驱动扬声器发出不同频率的音调,要使该音调的声音持续一段时间,只要插入一段延时程序,之后再将扬声器切断(关闭与门)。另外,要使计算机成为可弹奏的钢琴,需在使用系统调用的01H功能以接收键入字符,并且要建立一张表,使键入字符与频率值构成一个对应关系。具体频率值与音符的对应关系见下表:

四 实验步骤

1实验前编好上机程序; 

2输入编好的程序;  

3编译、连接、调试得到正确程序; 

4请实验指导教师检查结果,要求能发出正确的乐声。

五 实验流程图

六 实验程序

DATA   SEGMENT                                                               TABLE  DW  524,588,660,698,784,880,988,1048 

DATA  ENDS  

STACK  SEGMENT  

STA   DB  20 DUP(?) 

TOP   EQU LENGTH STA STACK   

ENDS  CODE  SEGMENT  

ASSUME  CS:CODE,DS:DATA,SS:STACK,ES:DATA 

START:MOV   AX,DATA       

MOV   DS,AX      

MOV   AX,STACK       

MOV   SS,AX       

MOV   AX,TOP       

MOV   SP,AX SING: 

MOV   AH,01       

INT   21H           ;接收键入字符       

CMP   AL,03H         ;是CTRL-C键?       

JZ    FINISH         ;是则结束        

SUB   AL,31H       

SHL   AL,01    ;转化为相表偏移量        

MOV   BL,AL       

MOV   AX,0000H       

MOV   DX,12H              ;常数120000H作为被除数        MOV   BH,00        

DIV   WORD PTR [TABLE+BX]       

MOV   BX,AX          ;求得频率值→BX       

MOV   AL,10110110B       

OUT   43H,AL    ;设置计数器2计数初值低位       

MOV   AX,BX       

OUT   42H,AL          ;设置计数器2计数初值低位       

MOV   AL,AH        

OUT   42H,AL          ;设置计数初值高位        

IN    AL,61H       

OR    AL,03H        

OUT   61H,AL          ;打开与门       

CALL  DELAY           ;延迟一段时间        

IN  AL,61H       

AND  AL,0FCH        

OUT   61H,AL          ;关闭       

JMP   SING             ;循环 

FINISH:MOV  AX,4C00H       

INT   21H                 ;结束  

DELAY PROC  NEAR       

PUSH  CX       

PUSH  AX       

MOV   AX,03H  

X1:  MOV   CX,0FFFFH  

X2:  DEC   CX       

JNZ   X2       

DEC   AX       

JNZ   X1       

POP   AX       

POP   CX       

RET  

DELAY  ENDP  

CODE  ENDS  

END   START 

七 参考资料 

1 杨素行编 微型计算机系统原理及应用,清华大学出版社

2 吴宁主编 80X86/Pentium微型计算机原理及应用,电子工业出版社

 3 孙德文主编 微型计算机技术,高等教育出版社

 4 沈美明编  IBM-PC汇编语言程序设计,清华大学出版社

实验原理图下载本文

显示全文
专题