东南大学微机报告数字录音机Word下载.docx

上传人:b****5 文档编号:17535253 上传时间:2022-12-07 格式:DOCX 页数:17 大小:343.54KB
下载 相关 举报
东南大学微机报告数字录音机Word下载.docx_第1页
第1页 / 共17页
东南大学微机报告数字录音机Word下载.docx_第2页
第2页 / 共17页
东南大学微机报告数字录音机Word下载.docx_第3页
第3页 / 共17页
东南大学微机报告数字录音机Word下载.docx_第4页
第4页 / 共17页
东南大学微机报告数字录音机Word下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

东南大学微机报告数字录音机Word下载.docx

《东南大学微机报告数字录音机Word下载.docx》由会员分享,可在线阅读,更多相关《东南大学微机报告数字录音机Word下载.docx(17页珍藏版)》请在冰豆网上搜索。

东南大学微机报告数字录音机Word下载.docx

1、参数设置:

datasegment

ioportequ0ec00h-0280h

luportequioport+29ah;

录音口地址

fangportequioport+290h;

放音口地址

io8253aequioport+283h

io8253bequioport+280h

io8253eequioport+281h

io8255cequioport+28bh

io8255dequioport+288h

redequioport+2a0h

yellowequioport+2a8h

rowequioport+2b0h;

rowchoose

orderdb01h,02h,04h,08h,10h,20h,40h,80h

data_qudb64000dup(?

);

录音数据存放数据区

news_1db'

PressPA1torecord:

'

24h;

录音提示

news_2db0dh,0ah,'

Playing:

放音提示

news_3db'

success'

24h

volumedb00h;

声音倍数

nbdb00h;

选择声音

middledw00h;

录音中跳转的数据数

tempdb00h;

根据强弱显示波形

colourdb00h;

选择波形颜色

countdb00h;

选择技术间隔

numdw00h;

选择列选

dataends

stackssegmentstack

db50dup(?

stacksends

2、主要程序流程图及关键代码:

1)主流程图

codesegment

assumecs:

code,ds:

data,es:

data,ss:

stacks

begin:

movax,stacks

movss,ax

movax,data;

初始化

movds,ax

moves,ax

test_1:

movdx,io8255c;

设8255的A口为输入

moval,9bh

outdx,al

movdx,io8255d;

从8255的A口输入

delayPA1:

inal,dx

andal,02h;

判断开关是否为让其开始录音PA11开始录音

jzdelayPA1

movdx,offsetnews_1;

显示录音提示

movah,9

int21h

calllu;

调用录音子程序

movdx,offsetnews_2;

显示放音提示

delayPA2:

movdx,io8255d;

inal,dx

testal,4h;

判断PA2是否为1为1开始放音

jzdelayPA2;

若PA2不为1,转delayPA2

play:

callfang;

调用放音子程序

testal,10h;

判断PA4是否为1为1一直重复播放

jnzplay;

若PA3不为1结束

movax,0c07h

int21h

cmpal,53h;

输入S正式退出

jzover

cmpal,73h;

输入s正式退出

jneplay

over:

movah,4ch;

返回DOS

2)录音放音子流程图:

luprocnear;

录音子程序

movdi,offsetdata_qu;

置数据区首地址为DI

movcx,64000;

录64000个数据

movcolour,00h

cld;

令DF=0

xunhuan:

movdx,luport;

启动A/D

outdx,al

calldelay;

延时

inal,dx;

从A/D读数据到AL

movtemp,al

stosb;

存入数据区,df为0,使DI加1al到di地址处

stop:

moval,9bh

从8255的A口输入

inal,dx

testal,20h;

判断PA5若是1则暂停,为0继续执行

jnzstop

incmiddle

testal,40h;

录音中跳转

jnzlai

inccount

cmpcount,50

jzshow

jmpcontinue

show:

callwave

cmpnum,7

jzclear

clear:

movnum,0

continue:

loopxunhuan;

循环

ret

lai:

callfang

ret;

子程序返回

luendp

;

fangprocnear;

放音子程序

movcx,middle;

放64000个数据

movsi,offsetdata_qu;

置数据区首地址为SI

movcolour,01h

cld;

清方向标志令df=0

fang_yin:

movdx,fangport

lodsb;

从数据区取出数据读SI存储区si自+1

callvol;

控制音量0-10个档位

movtemp,al

subal,30h;

控制最初音量?

mulvolume

pushbx

movbl,10

divbl

popbx

outdx,al;

放音

calldelay;

stop1:

movdx,io8255c;

inal,dx

testal,20h;

jnzstop1

inccount

cmpcount,10

jzshow1

jmpcontinue1

show1:

callwave

cmpnum,7

jzclear1

jmpcontinue1

clear1:

movnum,0

continue1:

loopfang_yin;

movdx,offsetnews_3;

ret;

子程序返回

fangendp

3)其它子过程:

;

延时子程序

delayPROCNEAR;

pushdx

moval,10h;

设8253通道0工作方式0

movdx,io8253a

moval,125;

写入计数器初值125

movdx,io8253b

outdx,al

delay1:

testal,1;

判断PA0是否为1

jzdelay1;

若PA0不为1,转de_lay

popdx

delayendp

音量调节子程序

volprocnear

pushax

pushcx

movah,0bh;

键盘输入不等待

cmpal,0ffh

jzgo

jmpgos

Nwait:

moval,39

go:

movah,08

movnb,al

gos:

cmpnb,30h

jzvol1

cmpnb,31h

jzvol2

cmpnb,32h

jzvol3

cmpnb,33h

jzvol4

cmpnb,34h

jzvol5

cmpnb,35h

jzvol6

cmpnb,36h

jzvol7

cmpnb,37h

jzvol8

cmpnb,38h

jzvol9

cmpnb,39h

jzvol10

vol1:

movvolume,1

jmpexit

vol2:

movvolume,2

vol3:

movvolume,3

vol4:

movvolume,4

vol5:

movvolume,5

vol6:

movvolume,6

vol7:

movvolume,7

vol8:

movvolume,8

vol9:

movvolume,9

vol10:

movvolume,10

exit:

stc

popcx

popdx

popax

ret

volendp

四.提高与创新研究

要求在8*8双色点阵显示器上显示录音和放音的粗略波形,红色为放音,黄色为录音。

显示子程序如下:

waveprocnear

pushsi

cmptemp,31

jbelight1

cmptemp,63

jbelight2

cmptemp,95

jbelight3

cmptemp,127

jbelight4

cmptemp,159

jbelight5

cmptemp,191

jbelight6

cmptemp,223

jbelight7

cmptemp,255

jbelight8

light1:

moval,1h

jmpCrow

light2:

moval,3h

light3:

moval,7h

light4:

moval,0fh

light5:

moval,1fh

light6:

moval,3fh

light7:

moval,7fh

light8:

moval,0ffh

Crow:

movdx,row

cmpcolour,00h

jzLyellow

movdx,red

jmpgood

Lyellow:

movdx,yellow

good:

movsi,num

moval,order[si];

循环选中一列直接用si即可

popsi

popcx

addnum,1

movcount,0

waveendp

codeends

endbegin

显示流程图:

运行结果:

运行程序,打开开关K1或按下键盘上任一键,显示“PressPA1torecord:

”开始录音,录音结束后按K2播放,显示“Play……”。

播放过程,可以用K5控制停止,K4控制重放;

幅度和放音增益由开关键盘0-9指定。

并且可以实现在8×

8双色点阵显示器上显示录音和放音的粗略波形,红色为放音,绿色为录音此外在录音的任意时刻可以用K6来控制录音中直接转入播放程序。

总流程图:

五.分析与总结

思路:

基于TPC演示实验:

数字录音机。

TPC下数字录音机只可实现基本的录音和放音。

我要通过扩展接线和扩展编码来实现以下功能:

1、实现录音8秒。

2、由开关控制开始录音,播放录音,循环播放录音,录音、放音中暂停,在录音8s过程中任一时刻直接跳转到放音。

3、实现调节音量我选择用键盘0-9输入调节音量。

4、8*8点阵可动态显示录音放音波形。

遇到问题:

主要遇到程序结构的问题以及实验箱的问题。

1、关于显示波形函数调用问题,我想通过连续使用call来调用函数,虽然代码看着简介清晰,但是内部结构过于混乱导致频频出错。

2、跳转指令用时一定要谨慎,否则极易出错。

3、在fang内给temp赋值时需要注意赋值位置,我一开始将处理完的al赋给temp结果显示的始终是最后一行,后来经反复检查,发现处理完的al信号变得很小,故导致这一错误。

4、有时候相同的程序在实验箱上表现出来的错误也不尽相同,故需要仔细检查实验箱。

5、在选择使用TPC还是cmd运行程序时也要注意,因为同样的程序在二者的运行结果往往也不尽相同。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1