文档库 最新最全的文档下载
当前位置:文档库 › 发声系统程序设计(微机原理实验设计)

发声系统程序设计(微机原理实验设计)

发声系统程序设计(微机原理实验设计)
发声系统程序设计(微机原理实验设计)

一、实验目的:

利用不同的方法设计一个声音发声系统

二、实验内容:

1.8253定时器作为发声源

将定时器产生的方波信号同8255的端口B相与来控制扬声器发声的(如图1所示),因此当PB1=1时,才能控制扬声器的音调。在系统中8255的B口地址为61H,

控制扬声器发声原理图

指令:

IN AL,61H

OR AL,3

OUT 61H,AL

发声子程序如下:

BEEP PROC NEAR

MOV AL,10110110B

OUT 43H,AL

MOV AX,533H

OUT 42H,AL

MOV AL,AH

OUT 42H,AL

IN AL,PORT_B

MOV AH,AL

OR AL,03

OUT PORT_B,AL

SUB CX,CX

G7:LOOP G7

DEC BL

JNZ G7

MOV AL,AH

OUT PORT_B,AL

RET BEEP ENDP

2.8255端口B(如PB1位)作为发声源

使8255端口B(或相应的等效电路)最低位D0=0,关闭定时器声源的输出,OUT2为常高电位(方式3所致)。又通过使8255端口B(或相应等效电路)的D1位置1或置0(按指定的频率来编程),便能让“与”门输出一周期性变化的方波,使扬声器发声。

3.利用中断调用实现发声

利用计算机内部的计数器和扬声器实现

三、实验内容及程序

1.扬声器发声通用子程序

PUBLIC GENSOUND

CODE SEGMENT PARA ‘CODE’

ASSUME CS:CODE

GENSOUND PROC FAR

PUSH AX ;保存将要用到的寄存器

PUSH BX

PUSH CX

PUSH DX

PUSH DI

MOV AL,0B6H;向8253-5/8254-2计数器2写控制字

OUT 43H,AL;方式3、双字节写和二进制计数方式写到控制口

MOV DX,12H;设置被除数

MOV AX,533H*896

DIV DI;其商(AX)为预置值

OUT 42H,AL;先送LSB

MOV AL,AH

OUT 42H,AL;后送MSB

IN AL,61H;读8255端口B(61H)原值

MOV AH,AL;保存端口原值

OR AL,3

OUT 61H,AL;接通扬声器

WAIT1:MOV CX,8FF0H;在80486/DX2/66中取

DELAY:LOOP DELAY;循环次数为8FF0H

DEC BX;循环持续BX次

JNZ W AIT1

MOV AL,AH;写回61H口原值,关闭扬声OUT 61H,AL

POP DI;恢复寄存器

POP DX POP CX

POP BX POP AX

RET ;子程序结束返回

GENSOUND ENDP

CODE ENDS

END

2.演奏乐曲程序

2..以乐谱“玛丽有只小羊羔”为例编写演奏程序

程序如下:

TITLE MUSIC –乐曲“玛丽有只小羊羔”

;汇编过程:MASM MUSIC.ASM 连接过程;LINK MUSIC+GENLOUND EXTRN GENSOUND:FAR;定义外部调用程序

STACK SEGMENT PARA STACK ‘STACK’

DB 64 DUP(‘STACK’)

STACK ENDS

DATA SEGMENT PARA ‘DATA’

MUS_FREQ DW 330,294,262,294,3 DUP(330);为演奏的乐曲定义一个DW 3DUP(294),330,392,392 ;频率表

DW 330,294,262,294,4 DUP(330)

DW 294,294,330,294,262,-1MUS_TIME

DW 6DUP(25*8),50*8;为演奏的乐曲定义一个

DW 2DUP(25*8,25*8,50*8);节拍时间表

DW 12 DUP(25*8),100*8

DATA ENDS

CODE SEGMENT PARA ‘CODE’

ASSUME CS:CODE,SS:STACK

ASSUME DS:DATA

MUSIC PROC FAR

PUSH DS SUB AX,AX

PUSH AX

MOV AX,DATA ;指向数据指针

MOV DS,AX

LEA SI,MUS_FREQ;将频率表的偏移地址送入SI

LEA BP,DS:MUS_TIME;将节拍时间表的偏移地址送入BP

FREQ:MOV DI,[SI];取音符频率

CMP DI,-1 ;结束?

JE END_MUS;是,退出

MOV BX,DS:[BP];取音符持续时间CALL G ENSOUND ;调用GENSOUN D发音子程序

ADD SI,2 ;频率表指针增2

ADD BP,2 ;时间表指针增2

JMP FREQ ;继续演奏

END_MUS:RET ;返回DOS

MUSIC ENDP

CODE ENDS

END MUSIC

3.定时报警程序

TITLE ALARM——定时报警程序

利用INT 1AH中断实现定时报警,本程序在执行后,若设置成功则首先显示

;字符串“Set up all right ”并使扬声器发声,这表明设置成功;1分钟(为定时时间,;读者也可自己设定)后屏幕显示“!”并发声,以示报警。

;汇编过程:MASM:ALARM.ASM

;连接过程:LINK :ALARM+GENSOUND

EXTRN GENSOUND:FAR;定义外部调用程序

STACK SEGMENT PARA STACK ‘STACK’

DB 64 DUP(‘STACK﹒﹒﹒’

STACK ENDS

DATA SEGMENT PARA PU BLIC ‘DATA’

BJ DB ‘Set up all right .’

DB 13,10,’$’

DATA ENDS

CODE SEGMENT PARA PUBLIC ‘CODE’ASSUME CS:CODE,SS:STACK,DS:DATA ENTRY PROC FAR

PUSH DS;保存旧的数据段

SUB AX,AX

PUSH AX

MOV AX,DATA

MOV DS,AX

MOV AL,4AH;读取INT 4AH中断向量

MOV AH,35H INT 21H PUSH ES;入栈保护PUSH BX

STEP1:MOV AH,7;清除实时钟报警

INT 1AH

JC STEP1 ;进位位为1则转移(成功则转移)

MOV AL,4AH;设置新的INT 4AH中断向量

MOV DX,SEG ALARM

MOV DS,DX

LEA DX,ALARM

MOV AH,25H

INT 21H

CLI ;关中断

STEP2:MOV AH,2;利用INT 1AH读当前实时钟时间INT 1AH ;时、分、秒分别置入CH、CL、DH

JC STEP2;不成功再读

MOV AL,CL

ADD AL,1 ;增1分钟

DAA ;调整为BCD码格式

CMP AL,60H ;是60分吗(BCD数)?

JL STEP3 ;不是,则转移

MOV AL,00H;是,改为0分

STEP3:MOV CL,AL;得到报警时刻的分值

MOV AH,6 ;CH、DH仍为原值

INT 1AH ;设置报警时刻

JC STEP2 ;不成功重做

STI ;开中断

MOV CX,12

SETUP:MOV AH,2;设置成功发出“嘟嘟”声

MOV DL,07H;07H是振铃控制码

INT 21H;用INT 21H 的2号功能实现

LOOP SETUP;循环发声

MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET BJ;显示“Set up all right .”字符串

MOV AH,9

INT 21H

MOV DX,32000

MAINP1:MOV CX,25500;延时程序段,等待报警

MAINP2:LOOP MAINP2

DEC DX

JNE M AINP1

RES:POP DX;恢复INT 4AH 原中断向量

POP DS

MOV AL,4AH

MOV AH,35H INT 21H

RET

ENTRY ENDP

ALARM PROC ;报警中断服务程序

PUSH AX PUAH BX

PUSH DI STI

MOV AH,2 ;显示字符‘!’

MOV DL,‘!’

INT 21H

MOV DI,300 ;发音频率

MOV BX,1400 ;发音延迟时间

CALL GENSOUND ;调用通用发声子程序

POP DI

POP BX

POP AX

IRET

ALARM ENDP

CODE ENDS

END ENTRY ;程序结束

4.用软中断INT 60H、发声中断服务程序INT 61H以及软中断INT 62H、INT 63H ,实现字符串“intel 80486 DX2/66 CPU”显示、扬声器发声和变色三角形的显示功能,定时器ICH中断作为计数器使用。

DATA SEGMENT PARA ‘DATA’;数据段

D1 DB 0DH,‘intel 80486 DX2/66 CPU $’

D3 DW 0

D20 D B ? DATA ENDS

STAC SEGMENT PARA STACK ‘STAC’;堆栈段

STA1 DW 100 DUP(?)

STAC ENDS

CODE SEGMENT PARA ‘CODE’;代码段ASSUME CS:CODE,DS:DATA

ASSUME SS:STAC,ES:DATA

STAR PROC FAR ;主程序开始

PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX

CLI;关中断

MOV AL,1CH;保存定时器时钟中断向量

MOV AH,35H

INT 21H

PUSH ES

PUSH BX

PUSH DS

MOV DX,OFFSET RING;设置定时器时钟中断向量MOV AX,SEG RING

MOV DS,AX

MOV AL,1CH

MOV AH,25H

INT 21H

POP DS

IN AL,21H ;读IMR中的屏蔽码

AND AL,1111110B;开放中断0并保留中断屏蔽设置OUT 21H,AL;将新屏蔽码写入IMR中

PUSH DS;入栈保护DS寄存器

MOV DX,OFFSET I60;取I60的偏移地址

MOV AX,SEG I60 ;取I60的段基地址

MOV DS,AX

MOV AH,25H

MOV AL,60H

INT 21H

LEA DX,I61 ;设置61H软中断向量

MOV AX,SEG I61

MOV DS,AX

MOV AH,25H

MOV AL,61H

INT 21H

LEA DX,I62 ;设置62H软中断向量

MOV AX,SEG I62

MOV DS,AX

MOV AH,25H

MOV AL,62H

INT 21H

LEA DX,I63;设置63H软中断向量

MOV AX,SEG I63 MOV DS,AX

MOV AH,25H MOV AL,63H INT 21H POP DS ;DS出栈STI ;开中断

MOV DI,8000

DELAY:MOV SI,150

INT 60H ;调用60H中断,使程序进入

DELAY1:DEC SI ;循环状态

JNZ D ELAY1

DEC DI

JNZ D ELAY

POP DX ;恢复定时器控制(ICH)中断向量

POP DS

MOV AL,1CH

MOV AH,25H

INT 21H

MOV AH,0 ;显示器恢复文本状态MIV A L,3

INT 10H

RET

STAR ENDP

RING PROC FAR ;定时器中断服务程序

PUSH DS

PUSH AX

MOV AX,DATA

MOV DS,AX STI

INC D20 ;计数单元加1

B11:POP AX

POP DS

IRET ;中断服务结束返回

RING ENDP

I60 PROC FAR ;60H中断服务程序完成对

PUSH AX ;61H和62H中断的调用

PUSH DX

LEA DX,D1;显示‘intel 80486 DX

MOV AH,9

INT 21H

CMP D20,2;中断延时到否?

JNE C11 ;到,则转置C11

MOV D20,0;否则使D20清0

INT 61H ;用发声中断INT 61H

INT 62H ;用延时绘图中断INT 62H

C11:POP DX

POP AX

IRET ;中断服务结束返回

I60 ENDP

I61 PROC FAR ;声中断:INT 61H

PUSH AX

PUSH CX

PUSH DX

MOV DX,140H ;置发音持续时间

IN AL,61H ;8255A PB 口内容到AL

AND AL,11111100B ;AL的D1D0位置0

L1:

XOR AL,00000010B;L的D1取反

OUT 61H,AL;L送PB口,控制扬声器发声

MOV CX,0F600H ;置方波信号频率变换时间常数

L2:LOOP L2 DEC DX JNZ L1 POP DX;恢复现场

POP CX POP AX

IRET

I61 ENDP

I62 PROC FAR ;延时调用绘图中断INT 63H

PUSH CX PUSH DX MOV DX,40H

K1:MOV CX,440H

K2:LOOP K2 DEC DX JNZ K1

INT 63H;调用软中断63H

POP DX POP CX IRET I62 ENDP

I63 PROC FAR ;绘图中断程序INT 63H

PUSH AX PUSH BX

PUSH CX PUSH DX

PUSH DS MOV AH,0

MOV AL,12H;设置显示模式4(图形方式320*200)INT 10N

MOV AL,1 ;设图形色号

A0:MOV DX,1 ;设置图形起点行坐标DX=10 MOV D3,1 ;设图形第一行点数D3=1

MOV CX,320;设图形起点列坐标CX=160

A1:PUSH CX;入栈保护CX

PUSH D3

A2:MOV AH,12

PUSH AX

INT 10H;写点(12号功能调用)

POP AX

INT C X;修改写点列坐标CX=CX+1

SUB D3,1 ;修改写点计数D3=D3-1

JNZ A2 ;判断D3=0?非0到A2

POP D3 ;D3=0,D3出栈

ADD D3,2 ;D3=D3+2修改点数

POP CX ;CX出栈

INC D X ;DX=DX+1(起点行坐标)

DEC CX ;CX=CX-1(起点列坐标)

JNE A1 ;CX=0?非0到A1

JNC AL ;CX=0,AL=AL+1 CMP AL,4 ;AL=4?

JNE A0 ;非,转到A0

MOV AH,0 ;设置文本80*25模式

MOV AL,3

INT 10H

POP DS ;恢复现场

POP DX

POP CX

POP BX

POP AX

IRET

I63 ENDP

CODE E NDS

END STAR ;结束

指导教师批阅意见:

成绩评定(百分制):指导教师签字:

年月日

单片机音频发生器程序设计

实验三单片机音频发生器程序设计 实验目的 1、进一步掌握单片机定时器的用法。 2、了解用单片机的IO口输出方波的方法。 3、理解用单片机产生简单音频的方法。 实验仪器 单片机开发板、万利仿真机、稳压电源、计算机 实验原理 1、单片机IO口产生音频脉冲的原理 我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或“低”电平,则在该口线上就能产生一定频率的方波,接上喇叭就能发出一定频率的声音,若通过程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。喇叭驱动电路如图4-13所示。 图4-13 喇叭驱动电路 例如,要产生中音1。从下表可知,中音1的频率为523Hz,周期T=1/523=1912μs,其半周期为1912/2=956μs,因此只要在SPEAKER接口上产生半周期为956μs的方波,即可听到持续的1音。C调部分音符频率与计数初值的对应表如下: 表4-1 C调部分音符频率、计数初值与设置简谱码的对应关系 注:上表定时器工作于模式1 2、音乐节拍的生成 要唱出一首歌,只产生出音频脉冲还不够,还要考虑发出音频时间的长短(即节拍)。

如果一拍为0.4秒,则1/4拍是0.1秒,只要设定延迟时间就可获得节拍的时间。我们也可以设1/8拍为1个延迟单位时间,则1拍应该是8个延迟单位时间,以此类推,所以,只要求得1/8拍的DELAY时间,其余的节拍就是它的倍数。详见下表 表4-2 节拍与节拍码对照表 3、简谱发生器程序设计 由前面的分析可知,音符频率有14种,节拍有10种,我们定义每个音节占用一个字节,字节的低4位代表音符的频率,高4位表示该音符的节拍。定义一个音符频率表、一个音符节拍表。程序首先读取一个音节,并从音符频率表和节拍表中读取音符频率所对应的定时器初始和节拍对应的延时参数。利用单片机内部定时器0、1分别产生频率和节拍。定时器0的初始值由音符的频率决定,定时器1的初始值是50ms对应的值。每当一个音符输出完成就取出下一个音符,直到取出的是0FFH。代表所有音符全部输出完成。程序停止或重新开始。程序流程图如图4-14所示。 图4-14 实验内容 1、在单片机P1.2口产生下列频率方波 1KHz,2KHz,5KHz,10KHz,学号后两位*100 2、在P1.2口产生简谱对应频率方波(简谱频率如上文) 3、在P1.2口播放简谱音乐。

微机原理课程设计报告

微型计算机技术课程设计 指导教师: 班级: 姓名: 学号: 班内序号: 课设日期: _________________________

目录 一、课程设计题目................. 错误!未定义书签。 二、设计目的..................... 错误!未定义书签。 三、设计内容..................... 错误!未定义书签。 四、设计所需器材与工具 (3) 五、设计思路..................... 错误!未定义书签。 六、设计步骤(含流程图和代码) ..... 错误!未定义书签。 七、课程设计小结 (36)

一、课程设计题目:点阵显示系统电路及程序设计 利用《汇编语言与微型计算机技术》课程中所学的可编程接口芯片8253、8255A、8259设计一个基于微机控制的点阵显示系统。 二、设计目的 1.通过本设计,使学生综合运用《汇编语言与微型计算机技术》、《数字电子技术》等课程的内容,为今后从事计算机检测与控制工作奠定一定的基础。 2.掌握接口芯片8253、8255A、8259等可编程器件、译码器74LS138、8路同相三态双向总线收发器74LS245、点阵显示器件的使用。 3.学会用汇编语言编写一个较完整的实用程序。 4.掌握微型计算机技术应用开发的全过程,包括需求分析、原理图设计、元器件选用、布线、编程、调试、撰写报告等步骤。 三、设计内容 1.点阵显示系统启动后的初始状态 在计算机显示器上出现菜单: dot matrix display system 1.←left shift display 2.↑up shift display 3.s stop 4.Esc Exit 2.点阵显示系统运行状态 按计算机光标←键,点阵逐列向左移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标↑键,点阵逐行向上移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标s键,点阵停止移动并显示当前字符。 3.结束程序运行状态 按计算机Esc键,结束点阵显示系统运行状态并显示“停”。 四.设计所需器材与工具 1.一块实验面包板(内含时钟信号1MHz或2MHz)。 2.可编程芯片8253、8255、74LS245、74LS138各一片,16×16点阵显示器件一片。

微机原理实验三子程序设计实验

实验三 子程序设计实验 一、实验目的 1.学习子程序的定义和调用方法。 2.掌握子程序的程序设计、编制及调用。 二、实验设备 TDN86/88教学实验系统一台 三、实验内容及步骤 1.求无符号字节序列中的最大值和最小值 设有一字节序列,其存储首址为3000H ,字节数为08H 。利用子程序的方法编程求出该序列中的最大值和最小值。实验程序及流程如下: 主程序 STACK1 SEGMENT STACK DW 64 DUP(?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE START: MOV SI,3000H MOV CX,0008H CALL branch A1: JMP A1 branch: JCXZ A4 PUSH SI PUSH CX PUSH BX

子程序 实验步骤 (1)输入源程序,进行编译、链接和加载。 (2)在调试区键入E0000:3000↙,输入8个字节的数据:D9、07、8B、C5、EB、04、9D、F9。 (3)运行程序,查看结果,在调试区键入R AX↙,显示结果应为AX=F9 04,AH中为最大值,AL中为最小值。 2.数组求和 设有一字节序列(存储地址和字节数可自定义),编写程序,求出该序列的和,求和工MOV BH,[SI] MOV BL,BH A1: LODSB CMP AL,BH JBE A2 MOV BH,AL JMP A3 A2: CMP AL,BL JAE A3 MOV BL,AL A3: LOOP A1 MOV AX,BX POP BX POP CX POP SI A4: RET CODE ENDS END START

音乐演奏程序设计

音乐演奏 1 总体要求与分析 1.1设计要求 本文主要编写一段音乐程序,该程序可以进行如下操作:按大写字母“A”,奏一首歌曲;按大写字母“B”;奏另一首歌曲,曲目自选,可重复操作。按Q 退出程序。 1.2设计思路分析 在IBM-PC/XT机中都带有8253-5定时/计数器,IBM-PC/AT中带有8254定时/计数器,这两种芯片功能十分类似。本文通过对8253-5定时/计数器芯片的操作实现音乐演奏。该声音接口通过汇编语言对8253-5的端口直接进行操作,可以不必要过多的使用BIOS的调用和DOS的调用。 计数器芯片有3个通道,各自具有专用功能。通道0时系统的始终节拍计时器,通道1专用于产生动态RAM的定时刷新信号,通道2用来控制计算机的扬声器的声音频率。该音乐演奏主要用到通道2的功能,使通道2工作在“方波发生器”方式,产生相应频率的音调送至喇叭驱动电路,使喇叭发出不同音调的声音。使用8255A的PB0控制通道2的计数,PB1控制通道2的输出对扬声器产生控制的时间。 人机交互包括屏幕显示提示语以及人工输入相应参数,主要应用到BIOS的10H号中断调用以及DOS的21H号中断调用。BIOS的10H号中断调用用于显示器驱动,设置显示模式和光标位置;DOS的21H号中断调用用于单字符输入以及多字符输出显示。 音乐演奏实现的一个主要步骤是乐谱编程。通过相应的频率表将乐谱中对应的音符转化为计数器的计数初值,节奏通过延时程序转化为对喇叭发音时间的控制,从而实现音符和节拍的数字化。

2 方案设计 音乐的实现主要是对乐谱中的单音符按照一定的音符频率表转化为计数器的计数频率以及喇叭发声的控制时间,通过计数产生相应的控制动作。由此可以有两种方案比较和选择。 2.1 方案一 通过编程使用软件来实现计数和喇叭发声的时间设置,控制8255A并行I/O 接口驱动喇叭发声。CPU每执行一条指令需要耗费一定的时间,这样可以通过循环的方式设置好循环次数,实现软件计数,然后输出相应的高低电平,驱动喇叭发出对应频率和节拍的声音。 利用软件编程方式实现该功能的优点是可以减少硬件开支,便于调试和问题的查找。缺点是CPU开支太大,利用率不高,而且时间不够精准。 2.2 方案二 利用硬件实现频率计数和延时时间的控制,利用8253-5定时/计数器芯片和8255A并行I/O接口芯片。使8253的一个通道工作在“方波发生器”模式,实现对频率的计数;利用8255A的PB3端口实现发声时间的计数控制。这样可以精确的控制时间,减少CPU的开支。 该方案的优点是控制精度提高,同时也减少CPU的开支。缺点是硬件开销比较多。 2.3 方案选择 本文要实现的功能所需要的硬件电路并不是太复杂,一般的IBM-PC/XT/AT 机家族都带有相应的硬件电路。在提高精度与简易程度的比较下,决定采用方案二,这样可以大大提高时间控制精度,同时减少软件程序的复杂度。

音频系统方案说明(新)

1.1.1音频系统 1.1.1.1需求分析 指挥中心是进行处突指挥工作的核心场所,其音频系统主要负责首长指挥、会议发言及扩声系统建设。保证指挥中心拥有均匀的声场覆盖。 指挥中心长约14.8米、宽约13.3米,房间高度约6米。需要容纳大约88人,整个指挥中心的房高比较高,要求会议中心的扩声可以均匀的覆盖整个房间。具有音视频播放功能的设备,在控制席位要配有监听音箱,以便操控人员进行双向通信。 具体建设内容如下: a)指挥中心安装一套音响设备; b)指挥中心配备一套32席会议系统; c)指挥中心配备2支无线手持话筒; d)控制室配备一台32路数字调音台、1对监听音箱、1个监听耳机; e)控制室配备一台蓝光DVD。 1.1.1.2系统设计 配置了32支发言单元,满足整个指挥中心大厅音频系统不同发言需求。在控制室控制席位配置了监听音箱,方便与会领导人员很好监听到整个指挥大厅会议实况。系统配置了音视频播放设备,满足指挥大厅音视频播放功能。 系统主扩声采用左右扩声的方式,参谋作业区采用吸顶音箱,确保整个指挥中心达到均匀的扩声效果。

1.1.1.3系统结构图 图错误!文档中没有指定样式的文字。-1音频系统连接图

1.1.1.4音箱布局图 图错误!文档中没有指定样式的文字。-2音箱布局图

1.1.1.5设计原则 a)可靠性。 系统应具备长期稳定工作的能力,所有选用设备均符合我国或国际上的质量及可靠性标准。 b)实用性。 系统应具备完成工程所要求功能的能力和水准,符合本工程实际需要和国内外有关规范的要求,并且实现容易,操作方便。 c)先进性。 系统是在满足可靠性和实用性要求前提下的最先进的系统。选用设备均选用国际、国内知名厂家近年来的最新产品或专利产品。 d)一致性。 系统应遵循开放系统的原则。 系统应依据技术指标的一致性、互换性选定设备,使系统具备良好的灵活性、兼容性、扩展性和可移植性。 e)经济性。 系统应满足性能与价格之比在同类系统和条件下达到最优,选择最佳性价比的设备。 系统以保证整个指挥大厅有良好的语言清晰度及均匀的声场分布,并且整个扩声系统能较好的解决背景声和人声兼容问题,使得声音更加逼真清晰为设计原则。 1.1.1.6设备安装 2支主扩声音箱安装在指挥中心大屏幕左右两侧,采用壁挂隐藏方式;6支吸顶音箱按图示位置安装在参谋作业区的上方,均采用隐藏方式安装;音箱安装时考虑与整体装修风格配合。 数字音频处理器安装在设备间机柜;调音台安装在控制室操作台上。具体安装高度待立面图确定后再次进行优化声场分析,确定合适位置。 1.1.1.7主要设备性能指标 1.1.1.7.1主扩音箱 1.1.1.8设备清单 表错误!文档中没有指定样式的文字。-1音频系统设备清单

微机原理子程序设计

实验三子程序设计 1、实验目的: (1)熟悉汇编语言的编辑、汇编、连接、运行的全过程。 (2)了解汇编语言的程序结构、学习调用过程实现输入输出及用INCLUDE 命令包含文件的方法。 (3)子程序设计 2.实验步骤: (1)用编辑软件记事本或EDIT 编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序TASM 汇编上述的汇编语言源程序,形成目标代码文件。 (扩展名为OBJ) (3)用连接程序TLINK连接目标代码文件,形成可执行文件。(扩展名为EXE) (4)运行可执行文件。观察执行结果,以验证其正确性。 3.实验内容: (1)从键盘上输入若干个十进制数(-32767

again1: mov ax,[si] cmp ax,[si+2] jle next1 xchg ax,[si+2] xchg ax,[si] next1: add si,2 loop again1 mov cx,di loop again2 mov ah,9 lea dx,out_message int 21h mov cx,count ;输出(升序) lea si,array again3: mov bx,[si] call write call dpcrlf inc si inc si loop again3 mov ax,4c00h int 21h INCLUDE out_B_D.ASM INCLUDE in_D_B.ASM END (2)从键盘上输入若干个十进制数(-32767

微机原理课程设计音乐跑马灯程序

dseg segment num dw 0 num1 dw 0 data1 db 0FEh,0FDh,0FBh,0F7h,0EFh,0DFh,0BFh,7Fh data2 db 7Fh,0BFh,0DFh,0EFh,0F7h,0FBh,0FDh,0FEh data3 db 7Eh,0BDh,0DBh,0E7h,0E7h,0DBh,0BDh,7Eh data4 db 0fch,0f9h,0f3h,0e7h,0e7h,0cfh,09fh,03fh data5 db 03fh,09fh,0cfh,0e7h,0e7h,0f3h,0f9h,0fch dseg ends code segment assume cs:code,ds:dseg start: mov ax,dseg mov ds,ax mov dx,406h mov al,36h out dx,al mov ax,20000 mov dx,400h out dx,al mov al,ah mov dx,400h out dx,al ;初始化8253 mov dx,0206h ;取8255A的控制端口的地址 mov al,8bh ;初始化8255A的A口为输出模式,B口为输入模式,c输入out dx,al mov dx,0200h ;取8255的端口A的地址 mov al,0FFh ;使8255的PA0-PA7全为1 out dx,al mov dx,0202h ;取8255的端口B的地址 in al,dx ;检测B口输入信号 mov dx,0200h ;取8255的端口A的地址 mov al,0FFh ;使8255的PA0-PA7全为1 out dx,al ;使所有的灯LED全灭 ledflash proc ;检测开关闭合,以便确定哪种闪烁方式 mov dx,0202h ;取8255A的端口B的地址 in al,dx ;检测B口输入信号 choice1:

音频发声系统程序设计

音频发声系统程序设计 摘要 本文运用汇编程序来设计一个简单的音频发声系统,其中也运用到了PC极的发声原理和发生程序的设计,通过程序的编写来实现音频的发生系统。 PC机的发声原理是通过芯片,扬声器灯期间构成,发声程序部分由三个方面完成,即确定发声频率,确定音长,定时器调节。乐曲演奏部分主要是程序编写部分。 关键词 PC机的发声原理扬声器定时器发声信号发声程序 引言 《汇编语言程序设计》是我国高校计算机及相关学科的一门专业基础课程,并且汇编程序设计在实际生活中也有很大的运用,本例中就运用了很多的汇编知识,如指令,执行过程等等的。 正文 一 . PC机的发声原理 IBM-PC系列机的主机箱装有一个小扬声器,系统板上的定时器8253(或8254)利用工作方式3产生一定频率信号,通过可编程的并行外围接口芯片8255(或8255A)控制其发音。扬声器的控制驱动电路如下图所示。 扬声器控制驱动电路 可编程的并行接口芯片8255有三个8位的并行端口:A口、B口和C 口。在IBM系列微机中,BIOS在开机自检后已将8255初始化为A口和C 口用于输入,B口用于输出。B口的I/O端口地址为61H。 由图10.5可见,8255B口的低两位用来控制扬声器驱动,当输出端口61H的D1位为“1”或为“0”时,将使控制驱动器的与门电路接通或关闭,使8254所发出的音频信号能到达驱动器或被阻断。这样通过控制D1位的变化,可使扬声器接通和断开,控制扬声器是否能

发出声音。此外,通过控制D1位的通断时间,就能发出不同的音长。 61H端口的D0位为“1”时,控制8254定时器产生驱动扬声器发声的音频信号,该位为“0”则不发信号。8254有三个定时器,分为0号、1号和2号定时器,驱动扬声器的是2号定时器,该定时器工作在方式3,是一个频率发生器,它负责向扬声器发送指定频率的脉冲信号。 当8255输出端口61H的D1位为“1”时,在61H的D0位为“1”,8254发出指定频率的声音信号的前提下,声音信号通过与门到达驱动器驱动扬声器发声。本节主要介绍利用8254产生声音和乐曲。 二 . 发音程序 BIOS中有一个BEEP子程序,它可以产生896 Hz的声音,且声音持续时间只能是0.5 s的整数倍。BEEP子程序用于PC机加电自检发现硬件错误,或正常进入系统等过程后,向用户发出声音提示。可以利用这一子程序的思路,来编写通用的发音程序。 发音程序的编制需要进行以下三个方面工作。 (1) 确定发声频率。BEEP子程序将计数值533H送8254的定时器2而产生896 Hz的声音,那么要产生其他频率的声音,则必须将对应频率的计数值送8254的定时器2产生其他频率声音的计数值。该方法如下所示: 533H×896÷给定频率=123 280÷给定频率 (也可用定时器的时钟1 192 576 Hz直接计算计数值:1 192 576÷给定频率。) 假设给定频率在DI中,可用下面的指令序列在AX中得到计数值。 MOV DX,12H MOV AX,3280 DIV DI ;计算某频率的计数值 为了不产生除法溢出,限制DI中的频率不低于19 Hz,一般情况下声音频率不会这样低。 (2) 确定音长。BEEP子程序只能产生持续时间(音长)为0.5 s 的整数倍的音长,如果要求持续时间容易调整,利用软件延时程序可选择较短的持续时间作为基数,如10 ms(毫秒)。10 ms延时可由执行循环指令实现: MOV CX,2801 DELAY:LOOP DELAY 如果要产生与10 ms成倍数的延时,可将倍数送到BX 寄存器中,由BX再控制10 ms延时指令的执行次数。如产生0.5 s持续时间,则将50送入BX中,指令序列如下: MOV BX,50 DELAY0: MOV CX,2801 DELAY1: LOOP DELAY1 DEC BX JNZ DELAY0

微机原理课程设计报告-数字时钟的实现(附代码)

合肥工业大学 计算机与信息学院 课程设计 课程:微机原理与接口技术设计专业班级:计算机科学与技术x班学号: 姓名:

一、设计题目及要求: 【课题6】数字时钟 1.通过8253 定时器作产生秒脉冲定时中断。在中断服务程序中实现秒、分、小时的进位(24小时制)。 2.在七段数码管上显示当前的时分秒(例如,12 点10 分40 秒显示为121040)。 3.按“C”可设置时钟的时间当前值(对准时间)。 二、设计思想: 总体思想: 1、功能概述: 实验箱连线: 本实验建立在Dais实验箱基础上完成的基本连线及程序如下: 138译码器: A,B,C,D,分别连接A2,A3,A4,GS; y0连接8253的CS片选信号; y1连接8259的CS片选信号; 8253连线: 分频信号T2接8253的CLK0; 8253的OUT0接8259的IR7; 8253的gate信号接+5V; 8259连线: 8259的数据线接入数据总线;

本程序包括显示模块,键盘扫描模块,时间计数模块,设置模块等几个模块, (1)程序运行后,LED显示000000初始值,并且开始计数 (2)按C键进行设置初始时间,考虑到第一个数只能是0,1,2,当第一个数显示2时第二个数只能显示0~4,同理下面各位应满足时钟数值的合理的取值; (3)在手动输入初始值时,按D键进行回退1位修改已设置值,连续按D键可以全部进行删除修改。 2、主程序设计 主程序中完成通过调用子程序完成对8253及8259的初始化,对8259进行中断设置。主要在显示子程序和键盘子处理程序之间不断循环,8253每一秒给8259一个刺激,当8259接受到刺激后会给CPU一个中断请求,CPU会转去执行中断子程序,而中断子程序设置成时间计数加,即完成电子表的整体设计。详细流程图见图三-1。 3、LED显示子程序设计 本程序显示部分用了6个共阳极LED作为显示管,显示程序要做到每送一次段码就送一次位码,每送一次位码后,将位码中的0右移1位作为下次的位码,从而可以实现从左到右使6个LED依次显示出相应的数字。虽然CPU每隔一定时间便执行显示程序,但只要这个时间段不太长,由于人眼的视觉作用,就可以在6个LED上同时见到数字显示。 4、键盘扫描子程序设计 本程序需要用键盘对时间的初始值进行设置,因此对键盘扫描的子程序需要满足的功能如下: 判断是否是C键,若不是就返回至主程序,若是C键就开始对时间初始值进行设置,同时因注意到第一个值不可以超过2,第一个数是2时第二数不能超过4,余下的同理要满足时间数值的取值范围呢,若不是合法输入不予反应继续等待输入。当遇到输入数值错误时可以按下D键进行删除一位重新设置;当6位初始值全部设置成功后,电子表将自动开始走表。 5、时间运算子程序设计 该子程序的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟

微机原理实验报告

汇编语言程序设计实验 一、实验内容 1.学习并掌握IDE86集成开发环境的使用,包括编辑、编译、链接、 调试与运行等步骤。 2.参考书例4-8,P165 (第3版161页)以单步形式观察程序的 执行过程。 3.修改该程序,求出10个数中的最大值和最小值。以单步形式观 察,如何求出最大值、最小值。 4.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态。 二、实验目的 1.学习并掌握IDE86集成开发环境的使用 2.熟悉汇编语言的基本算法,并实际操作 3.学会利用IDE86进行debug的步骤 三、实验方法 1.求出10个数中的最大值和最小值 (1)设计思路:利用冒泡法,先对数据段的10个数字的前2个比 较,把二者中大的交换放后面。在对第二个和第三个数比较,把 二者中较大的交换放后面,依此类推直到第十个数字。这样第十 位数就是10个数里面最大的。然后选出剩下9个数字里面最大 的,还是从头开始这么做,直到第九个数字。以此类推直到第一 个数字。

(2)流程图 2.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态

(1)设计思路:结果存放在sum里面,加数是i(初始为1),进行 100次循环,sum=sum+I,每次循环对i加1. (2)流程图: 四、 1.求出10个数中的最大值和最小值

DSEG SEGMENT NUM DB -1,-4,0,1,-2,5,-6,10,4,0 ;待比较数字 DSEG ENDS CODE SEGMENT ASSUME DS:DSEG,CS:CODE START:MOV AX,DSEG MOV DS,AX LEA SI,NUM MOV DX,SI MOV CL,9 ;大循环计数寄存器初始化 NEXT1:MOV BL,CL ;大循环开始,小循环计数器初始化MOV SI,DX NEXT2:MOV AL,[SI+1] CMP [SI],AL ;比较 JGGONE ;如果后面大于前面跳到小循环末尾CHANGE:MOV AH,[SI] ;交换 MOV [SI+1],AH MOV [SI],AL JMP GONE GONE:add SI,1 DEC BL JNZ NEXT2

声音导引系统 (电子设计大赛)

电子设计竞赛 声音导引系统 作者:王一鸣范春辉陈昌曼 设计单位:天津工业大学2009年9月5日

声音导引系统 摘要:简易智能电动车由一个电动玩具车改造而成。系统的控制部分以单片机为核心,步进电机为驱动装置,通过发出周期性脉冲音频信号,对A,B,C,三个声音接收器的信号的采集、分配,处理,并反馈至电动车的核心单片机部分,进而实现功率放大,反馈所需要的执行命令至步进电机,较好地实现了电动车的驱动及转向电机的运动控制和相关信息的处理和声光显示。 关键词:电动车,传感器,驱动控制,无线语音收发,音频引导,液晶显示,声控功能

本系统要求设计并制作一声音导引系统,示意图如图1所示。 图1 系统示意图 S 可移动声源 图中,AB与AC垂直,Ox是AB的中垂线,O'y是AC的中垂线,W 是Ox和O'y的交点。 声音导引系统有一个可移动声源S,三个声音接收器A、B和C,声音接收器之间可以有线连接。声音接收器能利用可移动声源和接收器之间的不同距离,产生一个可移动声源离Ox线(或O'y线)的误差信号,并用无线方式将此误差信号传输至可移动声源,引导其运动。 可移动声源运动的起始点必须在Ox线右侧,位置可以任意指定。1.基本要求

(1)制作可移动的声源。可移动声源产生的信号为周期性音频脉冲信号, 如图2所示,声音信号频率不限,脉冲周期不限。 (2)可移动声源发出声音后开始运动,到达Ox 线并停止,这段运动时间 为响应时间,测量响应时间,用下列公式计算出响应的平均速度,要求平均速度大于 5cm/s 。 (3)可移动声源停止后的位置与Ox 线之间的距离为定位误差,定位误差小于3cm 。 (4)可移动声源在运动过程中任意时刻超过Ox 线左侧的距离小于5cm 。 (5)可移动声源到达Ox 线后,必须有明显的光和声指示。 (6)功耗低,性价比高。 2.发挥部分 (1)将可移动声源转向180度(可手动调整发声器件方向),能够重复基本要求。 (2)平均速度大于10cm/s 。 (3)定位误差小于1cm 。 (4)可移动声源在运动过程中任意时刻超过Ox 线左侧距离小于2cm 。 (5)在完成基本要求部分移动到Ox 线上后,可移动声源在原地停止5s ~ 10s ,然后利用接收器A 和C ,使可移动声源运动到W 点,到达W 点以后,必须有明显的光和声指示并停止,此时声源距离W 的直线距离小于1cm 。整个运动过程的平均速度大于10cm/s 。 图2 信号波形示意图 可移动声源的起始位置到Ox 线的垂直距离 响应时间 平均速度=

微机原理实验报告——分支程序设计

实验三 分支程序设计 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。 二、软硬件环境 1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 、DEBUG 、LINK 和EDIT 等应用程序。 三、实验涉及的主要知识单元 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。下面就有符号数转移指令来了解在汇编语言程序设计方法。 四、实验内容与步骤 1.实验内容 (1)编写计算下面函数值的程序: ?? ? ??<-=>=0,10,00,1x x x y 设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量的 数据 (2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。 2.实验步骤 a.实验流程图 (1)计算函数值的流程图

b.编写程序 (1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ? DATA ENDS STACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AL,XX CMP AL,0 ;把AX 与0比较 JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0AL 则1=Y JMP EXIT EQUPR: MOV Y,0 ;0=AL 则0=Y EXIT: MOV AL,Y RET CODE ENDS END START

微机原理与接口技术汇编子程序涉及

试验五汇编子程序设计 一、试验目的 (1)掌握汇编子程序设计的一般方法; (2)掌握汇编子程序的调试方法; (3)掌握递归子程序设计与调试方法。 二、输入输出子程序 1、十进制数输入子程序decibin 子程序名:decibin 子程序功能:用户输入十进制数放在BX中 入口参数:无 出口参数:BX存放输入的十进制数 受影响的寄存器:AX、BX、CX、DX和标志寄存器 注意:①用户输入字符‘0’~‘9’,当输入非法字符时结束输入,如回车; ②十进制数位数可以是1位、2位等,范围0~65535。 decibin proc near mov bx , 0 newchar: mov ah , 1 int 21h mov dl , al sub al , 30h jl exit1 cmp al , 9 jg exit1 cbw xchg ax , bx mov cx , 10 mul cx xchg ax , bx add bx , ax jmp newchar exit1: ret decibin endp 2、十六进制数输入子程序hexibin 子程序名:hexibin

子程序功能:用户输入十六进制数放在BX中 入口参数:无 出口参数:bx存放输入的十六进制数 受影响的寄存器:ax、bx、cx和标志寄存器 注意:①用户输入0ah~0fh的数字时,输入大写字母‘A’~‘F’,小写字母‘a’~‘f’无效; ②子程序不能控制数的位数可能0位、1位、2位……等位数,如果输入位数大于4位,则以最新的4位十六进制数为准; ③输入字符可以按回车结束,当输入任何非法字符时也能结束数据输入。 hexibin proc near mov bx , 0 newchar: mov ah , 1 int 21h sub al , 30h jl exit cmp al , 10 jl add_to sub al , 7 cmp al , 0ah jl exit cmp al , 10h jge exit add_to: mov cl , 4 shl bx , cl mov ah , 0 add bx , ax jmp newchar exit: ret hexibin endp 3、十进制数显示子程序binidec 子程序名:binidec 子程序功能:将bx寄存器存放的数以十进制的形式显示出来 入口参数:bx存放要显示的数 出口参数:无 受影响的寄存器:ax、bx、cx、dx和标志寄存器

音乐演奏程序设计

课程设计任务书 学生姓名:王琨专业班级:自动化1105班 指导教师:向馗工作单位:自动化学院 题目: 音乐演奏程序设计 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.使用汇编语言设计一个在计算机上运行的音乐演奏程序。 2.屏幕显示钢琴图像。 3.实现以下附加功能:按“D”键,加快播放速度,按“E”键,降低播放速度。 4. 按"X"鍵,退出。 5.撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。 时间安排: 12月30日-----12月31日查阅资料及方案设计 1月2日-----1月3日编程 1月6日调试程序 1月7日-----1月8日撰写课程设计报告 指导教师签名:年月日 系主任(或责任教师)签名:年月日

摘要 汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。 使用的编译软件是masm for windows ,MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32asm,是Windows下开发汇编的利器。它与Windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM 的开发人员必须在Windows下进行开发。 关键词:汇编语言、MASM、DOS环境

音频系统方案设计

设计原则 (a)先进性和扩展性: 现代信息技术的发展,新产品、新技术层出不穷。因此系统在投资费用许可的情况下应充分利用现代最新技术,以使系统在尽可能长的时间与社会发展相适应。但由于现代科学技术的飞速发展,故必须充分考虑今后的发展需要,设计方案必须具备前瞻性和可扩展性。这种可扩展性不仅充分保护了甲方的投资,而且具有较高的综合性能价格比。 (b)科学性和规性: 综合性系统工程,必需从系统设计开始,包括施工、安装、调试直到最后验收的全过程,都严格按照国家有关的标准和规,做好系统的标准化设计和科学的管理工作。最后提交正规的测试验收报告及全套施工图纸和技术资料供甲方存档。 (c)安全性和可靠性: 剧场、演艺厅音响系统的建设,直接影响着用户的使用效果、外部形象及投资回报,因此系统设计必须安全、可靠,本方案已充分考虑采用成熟的技术和产品,在设备选型和系统的设计中尽量减少故障的发生。并从线路敷设、设备安装、系统调试以及对甲方人员的技术培训等方面,都必须满足可靠性的要求。 设计标准 声学特性指标均采用广播电影电视部部分颁标准GYJ25-86<<厅堂电声系统声学特性指标>>中语言和音乐兼用的电声系统一级(语言和音乐兼用的电声系统一级)声学特性指标. 扩声系统设计 演艺厅及剧场的音响系统是一个高标准、高要 求的综合性文化产物,它是一个有层次的系统。运 用建筑艺术室设计的技术和技巧,使之优化稳定, 以产生系统的整体效应。扩声系统、建筑声学、照 明系统、室技术等都是作为系统工程的诸要素。它 们在不同层面上互相交叉、互相缠绕,各有特点。

使它们统一,取得整体效应,达到各项法规的要求。 随着信息技术的不断发展,一个大型演艺厅除了要满足传统简单的演唱要求外,还应具有高雅格调和优美音质、舞蹈表演展示。选取具备先进功能的湖山演艺器材,是更高效、更可靠、更专业的音响设备。 设计方案要根据以上几点,经过多方案观察考证,通过SIA SMARRTLIVE5测试软件进行初期声场测试,详细分析,严格进行参数计算和设备选型。 专业演出扩声系统设计 基本概念 扩声系统设计,以工程原理为基础,从分析系统所要求的声学环境的有关参数开始,与用户提出的具体功能相结合,以此来决定所应采用设备的类型、体积和安装方式。 扩声系统属于应用声学畴,它是将演唱者的声音进行实时放大的系统。演出扩声系统的质量不仅与设备的技术特性有关,还和声源的声学特性以及传声器和扬声器系统所处环境的声学条件有很大的关系。 扩声系统设计通常都从声场开始,然后再向后推进到功率放大器、声处理系统、调音台、直至话筒和其他声源。这种逐步向后推进的设计步骤是十分必然的。因为声场设计是满足系统功能和音响效果的基础,它涉及扬声器系统的选型、供声方案和信号途径等。只有确定扬声器系统才能进行功率放大器驱动功率的计算和驱动信号途径的确定,然后再根据驱动功率的分配方案进一步确定信号处理方案和调音台的选型等。 声场设计是扩声系统的基础,涉及系统最终的音响效果,但也是非常复杂繁琐的工作。由于计算机技术的飞跃发展,现在可采用EASE3.0~4.0以上版本的声学软件工具进行计算,最终可获得满足预期要求的声场设计报告。声场设计过程可能需要反复多次才能达到要求。

音乐演奏程序设计

信息与电气工程学院 电子信息工程CDIO一级项目(2013/2014学年第一学期) 题目:音乐演奏程序设计 专业班级:xxxxxxxxxxxxxxxxx 学生姓名:xxxxxxx 学号:xxxxxxxxx 指导教师:xxxxxxx 设计周数: 设计成绩: 2013年12月28日

1、项目设计目的 1.1掌握接口电路的应用和设计技术。 1.2掌握汇编语言的设计思路。 1.3掌握8086的控制流程,以及8255和8253芯片的功能。 1.4用汇编程序完成键控音乐播放器,用8253定时器来产生声音。 1.5使学生能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。 2、项目设计正文 2.1设计内容 要求完成一个音乐程序,即通过按下键盘上某个按键就可以按预先设定的程序播放音乐或者终止程序。比如:按大写字母“1”,唱乐曲“沂蒙山小调”;按大写字母“2”,唱乐曲“生日快乐”按大写字母“3”,唱乐曲“棉花糖”;按"4"键,退出。并且可以重复操作。 2.2总体设计思路 在IBM-PC/XT机中都带有8253-5定时/计数器,IBM-PC/AT中带有8254定时/计数器,这两种芯片功能十分类似。本文通过对8253-5定时/计数器芯片的操作实现音乐演奏。该声音接口通过汇编语言对8253-5的端口直接进行操作,可以不必要过多的使用BIOS的调用和DOS的调用。 计数器芯片有3个通道,各自具有专用功能。通道0时系统的始终节拍计时器,通道1专用于产生动态RAM的定时刷新信号,通道2用来控制计算机的扬声器的声音频率。该音乐演奏主要用到通道2的功能,使通道2工作在“方波发生器”方式,产生相应频率的音调送至喇叭驱动电路,使喇叭发出不同音调的声 音。使用8255A的PB 0控制通道2的计数,PB 1 控制通道2的输出对扬声器产生控制的时间。 人机交互包括屏幕显示提示语以及人工输入相应参数,主要应用到BIOS的10H号中断调用以及DOS 的21H号中断调用。BIOS的10H号中断调用用于显示器驱动,设置显示模式和光标位置;DOS的21H号中断调用用于单字符输入以及多字符输出显示。 音乐演奏实现的一个主要步骤是乐谱编程。通过相应的频率表将乐谱中对应的音符转化为计数器的计数初值,节奏通过延时程序转化为对喇叭发音时间的控制,从而实现音符和节拍的数字化。 2.3流程图 2.3.1主程序流程图

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

相关文档