资源描述:
《微机与接口课程设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、微机与接口课程设计(题目)数字录音机学院:计算机学院专业:计算机科学与技术(非师)学号:20072102313姓名:钟瀚小组成员:黄钦墉(20072102312)指导老师:索女中完成时间:2009年12月30日7设计题目:数字录音机一、设计目的:1、了解数字录音技术的基本原理。2、进一步掌握A/D转换器与D/A转换器的使用方法。3、巩固和加深用汇编语言程序设计的能力。二、设计所用器件和仪器设备:1、实验箱1台2、计算机1台3、麦克及喇叭三、设计内容及要求:1、将声传感器接J2,把代表语音的电信号送给ADC0809通道2(IN2);DAC0832转换器的输出端J1接喇叭。电路如下:2、编程以每秒
2、钟5000次的速率采集IN2输入的语音数据并存入内存,共采集60000个数据(录12秒),然后再以同样的速率将数据送DAC0832使喇叭发声(放音)3、程序流程图74、程序清单和注释datasegmentimportequ0c800h-280hio0809aequimport+29ah;AD0809的地址io0832aequimport+290h;DAC0832的入口地址io8253aequimport+280h;8253的入口地址io8253cequimport+283h;8253的控制字地址io8255aequimport+288h;8255的入口地址7io8255cequimport+2
3、8bh;8255的控制字的地址rec_timeequ60000;时间长度word0db0dh,0ah,'pressrtostart',0dh,0ah,24hword1db0dh,0ah,'pressctoencodeordecode',0dh,0ah,24hword2db0DH,0AH,'pressptoplay',0dh,0ah,24hword3db0DH,0AH,'pressttorestart,anyotherkeytoexit',0dh,0ah,24hword4db0Dh,0Ah,'Pause,Pressanykeytocontinue',0dh,0ah,24hword5db0Dh,0
4、Ah,'RecordContinue',0dh,0ah,24hword6db0Dh,0Ah,'PlayContinue',0dh,0ah,24hbufdbrec_timedup(?);开辟内存空间存放数据dataendscodesegmentAssumecs:code,ds:datastart:movax,data;movds,ax;movdx,offsetword0;显示录音提示movah,09h;int21htest1:movah,1;等待键盘输入int21hcmpal,'r'jnztest1;与'r'比较,若是则执行下面的录音,不是则等待movdi,offsetbuf;定义缓冲区指针mo
5、vcx,rec_timeRecordStart:;录音开始movah,06movdl,0ffhint21hjneRecPauseNextRecPtr:movdx,io0809a;ADC0809的地址outdx,al;启动一次A/D转换器calldelay;调用延时子程序inal,dx;从端口读入数据mov[di],al;将数据放入缓冲区中incdiloopRecordStart;循环装入60000个数据jmpDoneRecRecPause:;录音暂停7movdx,offsetword4;显示继续录音提示movah,09h;int21hRecPauseContinue:;录音继续movah,06
6、movdl,0ffhint21hjeRecPauseContinuemovdx,offsetword5;显示录音提示movah,09h;int21hjmpNextRecPtrDoneRec:;录音结束movdx,offsetword2;显示放音提示movah,9int21hTest2:movah,1int21hcmpal,'p'jnzTest2;与'p'比较,若是则执行放音,不是则等待Play:movdi,offsetbuf;取缓冲区的入口地址movcx,rec_timeBegin1:;放音开始movdx,io0832a;DAC0832的入口地址moval,[di];将要转换的数据从内存中取出
7、outdx,al;将数据打入寄存器calldelay;调用延时子程序;calldelay2;调用延时子程序movah,06movdl,0ffhint21hjnePlayPauseNextPlayPtr:incdiloopbegin1jmpDonePlayPlayPause:;放音暂停movdx,offsetword4;显示继续放音提示movah,09h;int21hPlayPauseContinu