综合设计题目:数字录音机一、设计目的:1、了解数字录音技术的基本原理。
2、进一步掌握A/D 转换器与D/A 转换器的使用方法。
3、巩固和加深用汇编语言程序设计的能力。
二、设计所用器件和仪器设备:1、实验箱 1台2、计算机 1台3、麦克及喇叭各1个三、设计内容及要求:1、将声传感器接J2,把代表语音的电信号送给ADC0809通道2(IN2);D/A 转换器的输出端J1接喇叭(采用单缓冲方式)。
电路如下:2、编程以每秒钟5000次的速率采集IN2输入的语音数据并存入内存,共采集30000个数据(录6秒),然后再以同样的速率将数据送DAC0832使喇叭发声(放音)四、设计方案流程图:YN五、实现的程序清单及注释:DATAS SEGMENTioport equ 0c800h-280hio0809 equ ioport+29ah;ADC0809通道2的入口地址io0832 equ ioport+290h;DAC0832的片选地址io8253 equ ioport+280h;8253的片选地址io8255 equ ioport+288h;8255的片选地址io8253c equ ioport+283h;8253的控制字地址io8255c equ ioport+28bh;8255的控制字地址msg0 db'<Press R to start record>',0dh,0ah,'$';录音提示,0dh和0ah是回车+换行msg1 db0dh,0ah,'<Input Error!Please input R or r to continue...>',0dh,0ah,'$';输入错误提示msg2 db0dh,0ah,'<Press P to play record>',0dh,0ah,'$';放音提示msg3 db0dh,0ah,'<Input Error!Please input P or p to continue...>',0dh,0ah,'$';输入错误提示msg4 db0dh,0ah,'Recording...',0dh,0ah,'$';msg5 db0dh,0ah,'Playing...',0dh,0ah,'$';msg6 db'Input:','$';msg7 db'--Digital Recorder v.N.0-- by Jackie Lam',0dh,0ah,'$';版本信息msg8 db0dh,0ah,'Thank you!',0dh,0ah,'$';msg9 db0dh,0ah,'Record Complete!',0dh,0ah,'$';msg10 db0dh,0ah,'Play Over.',0dh,0ah,'$';msg11 db0dh,0ah,'If you want to pause,press any key!','$';暂停录音msg12 db0dh,0ah,'<Press R to play replay>',0dh,0ah,'$';重播提示msg13 db'<Press Q to quit>',0dh,0ah,'$';退出提示buf db60000 dup(?)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV DX,OFFSET MSG7;显示版本信息MOV AH,09HINT 21HMOV DX,OFFSET MSG7;显示版本信息MOV AH,09HINT 21HMOV DX,OFFSET MSG0;显示录音提示MOV AH,09H;DOS中断调用,显示字符串'PRESS R TO START RECORD' INT 21HMOV DX,OFFSET MSG6;显示输入MOV AH,09HINT 21HMOV AH,1;输入并显示所作选择INT 21HCMP AL,'R';与大写“R”作比较JZ OK0;输入“R”,进入录音CMP AL,'r';否则与小写“r”作比较JZ OK0;输入“r”,进入录音MOV DX,OFFSET MSG1;否则,输入错误,显示错误信息MOV AH,09HINT 21HMOV DX,OFFSET MSG6;显示输入MOV AH,09HINT 21HJNZ CHOOSE0OK0:MOV DX,OFFSET MSG4;显示正在录音MOV AH,09HINT 21H;MOV DX,OFFSET MSG11;显示暂停播放提示;MOV AH,09H;INT 21HMOV DI,OFFSET BUF;定义缓冲区的指针MOV CX,60000;计数初值为采集数据的数目:60000REC:MOV DX,IO0809;0809的片选地址OUT DX,AL;启动A/D转换CALL DELAYIN AL,DX;输入转换数据INC DI;指针加1;避免出现等待输入而无法继续自动循环录音过程,DOS中断调用的01、07号功能测试失败;MOV AH,0BH;检查键盘状态;INT 21H;TEST AL,00;与大写“P”作比较;JZ OK2;录音完毕;TEST AL,00;与小写“P”作比较;JZ OK2;录音完毕;DEC CX;CX-1;JCXZ OK2;录音完毕;JMP REC;无条件转移,回到录音过程LOOP REC;循环装入30000个A/D转换后的数据OK2:MOV DX,OFFSET MSG9;显示录音完毕MOV AH,09HINT 21HMOV DX,OFFSET MSG2;显示播放录音提示MOV AH,09HINT 21HMOV DX,OFFSET MSG6;显示输入MOV AH,09HINT 21HCHOOSE1:MOV AH,1INT 21HCMP AL,'P';与大写“P”作比较JZ OK1;输入“P”,进入放音CMP AL,'p';与小写“P”作比较JZ OK1;输入“p”,进入放音MOV DX,OFFSET MSG3;否则,输入错误,显示错误信息MOV AH,09HINT 21HMOV DX,OFFSET MSG6;显示输入MOV AH,09HINT 21HJNZ CHOOSE1OK1:MOV DX,OFFSET MSG5;显示正在播放录音MOV AH,09HINT 21HMOV DI,OFFSET BUF;定义缓冲区的指针MOV CX,60000;计数初值为采集数据的数目:30000PLAY:MOV DX,IO0832;DAC0832的片选地址MOV AL,[DI];从缓冲区读取数据并进行D/A转换OUT DX,AL;启动D/A转换CALL DELAY;调用延时子程序,以1/5000秒的间隔(相当于每秒5000次的声音频率)输出转换后的声音INC DI;缓冲区指针加1LOOP PLAY;循环输出30000个声音信号MOV DX,OFFSET MSG10;显示MOV AH,09HINT 21HMOV DX,OFFSET MSG12;重播显示MOV AH,09HINT 21HMOV DX,OFFSET MSG13;重播显示MOV AH,09HINT 21HREPLAY:MOV DX,OFFSET MSG6;显示输入MOV AH,09HINT 21HMOV AH,1;输入并显示所作选择INT 21HCMP AL,'R';与大写“R”作比较JZ OK1;输入“R”,进入重播CMP AL,'r';否则与小写“r”作比较JZ OK1;输入“r”,进入重播CMP AL,'Q';与大写“Q”作比较JZ QUIT;输入“R”,退出CMP AL,'q';否则与小写“q”作比较JZ QUIT;输入“r”,退出MOV DX,OFFSET MSG1;否则,输入错误,显示错误信息MOV AH,09HINT 21HJNZ REPLAYQUIT:MOV DX,OFFSET MSG8;显示"Thank you!"MOV AH,09HINT 21HMOV AH,4CH;返回DOSINT 21H;由于需要以每秒5000次的速率采集数据,所以延时程序应该产生1/5000秒的时间延迟;8253所接时钟频率输入时1MHZ,所以计数200次可产生1/5000秒延时DELAY PROC NEAR;延时子程序PUSH DX;保存DXMOV DX,IO8253C;8253控制字地址MOV AL,10H;计数器0以只读低字节方式工作OUT DX,AL;写入控制字MOV DX,IO8253;8253的片选地址MOV AL,200;计数初值OUT DX,AL;写入计数初值MOV DX,IO8255C;8255控制字地址MOV AL,90H;采用方式0的A口输入OUT DX,AL;写入控制字MOV DX,IO8255;8255的PA0地址OUTTEST:IN AL,DX;将PA0的数据,也就是和PA0连接的OUT0的输出电平输入ALTEST AL,01;检查OUT0是否为高电平JZ OUTTESTPOP DX;恢复DXRETDELAY ENDPCODES ENDSENDSTART六、实验结果:本次实验利用A/D和D/A转换器完美的实现了数字录音机的录制和播放过程。
录制最长时间增加到12秒,并可实现重播功能。
七、实验调试过程中遇到的问题:本次实验代码的设计过程比较顺利,对于基本的实验要求能够很好的实现。
主要的问题是第二次实验时遇到的一个非常小的细节问题,但却花费了我比较长的时间去找出这个问题,就是一开始在赋予ADC0809地址时是298H,却忘了此次实验用到的是ADC0809的通道2,地址应该为29aH。
得到的教训是编程确实需要细心,但通过找错的过程我对程序代码也有了更好的理解,这是好的方面。
八、实验小结:在基本实现了程序的录音和播放功能之后,我又按照寻渐进、由简单到复杂的思路不断的对程序进行优化: 1.增加了丰富详细的人际界面交互的信息,更具人性化2.增加了录音的最长时间,可实现12秒录音3.增加了可重复播放录音和退出重复播放的功能此外,我还想从两方面进行优化:一方面是提高声音数据采集的速率,是录音机不仅能否录制和还原人声,还能对其他声音进行录制。