设计题目:数字录音机
一、设计目的:
1、了解数字录音技术的基本原理。
2、进一步掌握A/D转换器与D/A转换器的使用方法。
3、巩固和加深用汇编语言程序设计的能力。
二、设计所用器件和仪器设备:
1、实验箱1台
2、计算机1台
3、麦克及喇叭
三、设计内容及连接电路:
1、将声传感器接J2,把代表语音的电信号送给ADC0809通道2(IN2);D/A转换器的输出端J1接喇叭。电路如下:
2、编程以每秒钟5000次的速率采集IN2输入的语音数据并存入内存,共采集60000个数据(录12秒),然后再以同样的速率将数据送DAC0832使喇叭发声(放音)
四、总体设计方案流程图
1、
2、
3、
4、
五、程序清单及注释
Data segment
import equ 0dd80h-280h
io0809aequ import+ 29ah;
AD0809的地址
io0832aequ import+ 290h
;DAC0832的入口地址
io8253aequ
import+280h;8253的入口地址
io8253cequ
import+283h;8253的控制字地址
io8255aequ
import+288h;8255的入口地址
io8255cequ
import+28bh;8255的控制字的地址
word0 db 0dh,0ah,'按r键开始录音',0dh,0ah,24h
word2 db 0DH,0AH,'按p键开始放音', 0dh,0ah,24h
word3 db 0DH,0AH,'按t键开始重播,否则按任意键退出',
0dh,0ah,24h
bufdb 60000
dup(?);开辟内存空间存放数据
Data ends
Code segment
Assume cs:code,ds:data
Start:
Mov ax,data;
Mov ds,ax;
Mov ds,offset word0;显示录音提示
Mov ah,09h;
Int 21h
Test1:
Mov ah,1;等待键盘输入
Int 21h
Cmp al,’r’
Jnz test1;与’r’比较,若是则执行下面的录音,不是则等待
Mov di,offset buf;定义缓冲区指针
Mov cx,60000
Begin:
Mov dx, io0809a;ADC0809的地址
Out dx,al;启动一次A/D转换器
Calldelay;调用延时子程序
Inal,dx;从端口读入数据
Mov [di],al;将数据放入缓冲区中
Incdi
Loop begin ;循环装入60000个数据
Mov dx,offset word2;显示放音提示
Mov ah,9
Int 21h
Test2:
Mov ah,1
Int 21h
Cmp al,’p’
Jnz test2;与’p’比较,若是则执行放音,不是则等待
Play:
Mov di,offset buf;取缓冲区的入口地址
Mov cx,60000
Begin1:
Mov dx,io0832a;DAC0832的入口地址
Mov al,[di];将要转换的数据从内存中取出
Out dx,al;将数据打入寄存器
Calldelay;调用延时子程序
Inc di
Loop begin1
Movdx,offset word3;显示循环放音提示
Mov ah,9
Int 21h
Mov ah,1
Int 21h
Cmp al,’t’
Jzplay;与’t’比较,若是则重新播放,不是则退出
Mov ah,4ch
Int 21h
Delayproc near
Push dx;保存dx的内容
Mov dx,io8253c;8253的控制字地址
Mov al,00010000b ;计数器0只读低字节以方式0工作,二进制计数
Out dx,al
Mov dx,io8253a;8253的入口地址
Mov al,200;写入循环计数初值
Out dx,al
Mov dx,io8255c;8255的控制字的地址
Mov al,10010000b;D7=1控制字标志位 ,D6D5=00 方式0 ,
;D4=1表示A口输入
Out dx,al
Mov dx,io8255a;8255的入口地址
Check:
In al,dx;将数据输入al
Test al,01;检查PA0的状态是否为高电平
Jz check
Pop dx;恢复dx
Ret;返回到delay入口
Delay endp
Code ends
End start
六、实验结果
在本实验中,充分利用学过的汇编语言程序设计能力,在了解了数字录音技术的基本原理后,通过对A/D转换器与D/A转换器的使用,以及利用8253和8255芯片实现延时功能,成功完成了数字录音机的设计。测试实验结果时,成功实现了12s的录音及放音,达到设计要求。
在本次数字录音机设计中,实现功能有12s录音功能、放音功能、重复放音功能。其中,提示信息为中文提示,清楚明了。
七、程序调试过程中遇到的问题及解决方法
在调试过程中,出现缺少提示信息的栏目,导致在运行过程中不知道何时开始录音,何时开始放音,如何设置重播音。发现问题后,马上增加白提示信息,使程序在运行过程中更加流畅,操作更加简单。
八、实验总结和修必意见
这次课程设计让我了解到数字录音技术的基本原理,进一步掌握A/D转换器和D/A转换器的使用方法,并巩固和加深了汇编语言程序设计的能力。
本次实验中,还可以增加更多的功能,由于时间的关系而没有添加上去。从总体上看,本次实验还是非常成功的。