ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:244.94KB ,
资源ID:6714313      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6714313.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字录音机.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字录音机.docx

1、数字录音机目 录1.前言 12.设计目的 23.设计内容及要求 24.具体设计过程 24.1总体设计思想 24.2硬件连接图 34.3 各芯片工作原理及功能简介 44.3.1 可编程计数/定时接口芯片8253 44.3.2 可编程并行I/O接口芯片8255A 64.3.3 ADC0809 94.3.4 DAC0832 114.4 流程图 134.5 具体实现方法 144.5.1 主程序 144.5.2 A/D录放音子程序 154.5.3 D/A放音子程序 154.5.4 延时子程序 155.心得体会 156.参考文献 16附录:源程序 161.前言由于计算机技术的飞速发展,微机原理与接口技术课

2、程已经作为一门比较重要的专业基础课。微机原理与接口技术已经融入我们的基本生活当中,我们生活中的许多电子产品都与之密切相关。微机原理与接口技术是一门实践性强的学科,其中很多理论和知识仅考书本的学习是无法掌握的,必须通过实践才能比较直观深刻的理解。通过课程设计可以培养我们动手的能力,使我们对书本的理论知识掌握更加牢固,培养学生编程的能力以及提出问题,分析问题,解决问题的能力。本次课程设计所做的是关于数字录音机的设计。2.设计目的1.进一步加深对微机系统的理解和认识,提高微机系统的应用水平。2.进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程

3、序调试方法。3.进一步熟悉接口,掌握8255、8253芯片及A/D转换器与D/A转换器的使用方法。3.设计内容及要求1. 设计一个声音录放系统,通过传感器及ADC0809以每秒钟5000次的速率采集IN2输入的语音数据并存入内存,共采集60000个数据(录12秒),然后再以同样的速率将数据送DAC0832使喇叭发声(放音)。2. 画出系统的硬件连接图。3按图连接电路,将声传感器接J2,把代表语音的电信号送给ADC0809通道2(IN2);D/A转换器的输出端通过K8跳线接喇叭。4.具体设计过程4.1总体设计思想根据设计要求,本次数字录音机的汇编语言设计所需芯片有模数转换芯片ADC0809、数模

4、转换芯片DAC0832、定时计数器8253、可编程并行I/O接口8255A及译码器74LS138。设计过程可简述为:利用传感器和ADC0809采集语音数据,以每秒5000的速率采集IN0输入的语音数据并存入内存,共采集数据60000个,即录音12秒。DAC0832进行数模转换,以同样的速率将数据送DAC0832使喇叭发声。8253用作定时,定时0.2ms,设置成方式0,计数初值为200。8253计数器0的OUT0与8255A的PA0连接,利用PA0查询OUT0电平,如果为高点平则表示定时时间到。用译码器74LS138对地址线进行译码以产生各接口芯片所需的信号。4.2硬件连接图4.3 各芯片工作

5、原理及功能简介4.3.1 可编程计数/定时接口芯片82538253外部引脚结构8253各引脚的功能定义如下:数据总线D0D7:它们为三态输入输出线,用于将8253与系统数据总线相连,是8253与CPU接口数据线,供CPU向8253读写数据、命令和状态信息。读信号RD:它为输入信号,低电平有效。它由CPU发出,用于对8253寄存器读操作。写信号WR:它为输入信号,低电平有效。它由CPU发出,用于对8253寄存器写操作。地址译码线A1A0:这两根线接到系统地址总线的A1A0上。当CS0,8253被选中时,A1A0用于选择8253内部寄存器,以便对它们进行读写操作。8253内部寄存器与地址码A1A0

6、的关系如表73所示。时钟信号CLK:CLK为输入信号。3个计数器,各有一独立的时钟输入信号,分别为CLK0、CLK1、CLK2。时钟信号的作用是在8253定时或计数工作时,每输入一个时钟信号CLK,便使定时或计数值减1。它是计量的基本时钟。门选通信号GATE:GATE信号为输入信号。3个通道,每一个都有自己的门选通信号,分别为GATE0、GATE1、GATE2。GATE信号的作用是用来禁止、允许或开始计数过程。对8253的6种不同工作方式,GATE信号的控制不同(参见后面的表74)。计数器输出信号OUT:OUT是8253向外输出信号。3个独立通道,每一个都有自己的计数器输出信号,分别为OUT0

7、、OUT1、OUT2。OUT信号的作用是,计数器工作时,当定时或计数值减为0时,即在OUT线上输出OUT信号,用以指示定时或计数已到。这个信号可作为外部定时、计数控制信号引到IO设备用来启动某种操作(开关或启停),也可作为定时、计数已到的状态信号供CPU检测,或作为中断请求信号使用。8253的内部结构1 数据总线缓冲器:该缓冲器为 8 位双向三态的缓冲器, 8 根数据线 D 0 D 7 可直接挂在 CPU 数据总线上。读/写控制逻辑: 8253 内部操作的控制部分,它决定三个计数器和控制字寄存器中哪一个能进行工作,并控制内部总线上数据传送的方向。控制字寄存器:接收从 CPU 来的控制字,并由控

8、制字的 D7 、D6 位的编码决定该控制字写入哪个计数器的控制寄存器,控制寄存器只能写入,不能读出。计数器:8253 有 3 个独立的计数器通道,每个通道的结构完全相同,如图 10.2 所示。每一个通道有一个 16 位减法计数器;还有对应的 16 位初值寄存器和输出锁存器。每个计数器都可以对其 CLK 输入端输入的脉冲按照二进制或 BCD 码从预置的初值开始进行减 1 计数,当减至 0 时,从 OUT 端输出一个信号,计数的开始由软件启动或硬件门控信号 GATE 控制。计数开始前写入的计数初值存于初值寄存器;计数过程中,减法计数器的值不断递减,而初值寄存器中的初值不变。输出锁存器则用于写入锁存

9、命令时锁定当前计数值。当 8253 用作计数器时,加在 CLK 引脚上脉冲的间隔可以是不相等的;当它用作定时器时,则在 CLK 引脚应输入精确的时钟脉冲, 8253 所能实现的定时时间,取决于计数脉冲的频率和计数器的初值。对 8253 来讲,外部输入到 CLK 引脚上的时钟脉冲频率不能大于 2MHZ ,否则需分频后才能送到 CLK 端。4.3.2 可编程并行I/O接口芯片8255A8255A的外部引脚布局如图所示。它有40根引脚,可分为与系统总线(如8086)连接的引脚和与外部设备连接的引脚。 8255A引脚图8255A引脚功能说明: RESET:复位输入线,当该输入端外于高电平时,所有内部寄

10、存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。 RD:读信号线

11、,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。 WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。 D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。8255A内部结构并行输入/输出端口A、B、C:8255A 芯片具有 24 个可编程输入输出引脚,分成 3 个 8 位端口,其中:端口 A 包含一个 8 位数据输出锁存 / 缓冲寄存器和一个 8 位数据输入锁存器;端口 B 包含一个 8 位数据输

12、入 / 输出、锁存 / 缓冲寄存器和一个 8 位数据输入缓冲寄存器;端口 C 包含一个输出锁存 / 缓冲寄存器和一个输入缓冲寄存器。必要时端口 C 可分成两个 4 位端口,分别与端口 A 与端口 B 配合工作,通常将端口 A 和端口 B 定义为输入 / 输出的数据端口,而端口C可作为状态或控制信息的传送端口。A组和B组控制部件:端口 A 与端口 C 的高 4 位 (PC 7 PC 4) 构成 A 组,由 A 组控制部件实现控制功能,端口 B 与端口 C 的低 4 位( PC 3 PC 0 )构成 B 组,由 B 组控制部件实现控制功能。它们各有一个控制单元,可接收来自读 / 写控制部件的命令和

13、 CPU 通过数据总线(D7D0)送来的控制字,并根据它们来定义各个端口的操作方式。数据总线缓冲器:这是一个三态双向 8 位数据缓冲器,它是 8255A 与 8086CPU 之间的数据接口, CPU输入输出的数据,CPU输出的控制字以及外设的状态信息都是通过这个缓冲器进行传送。读/写控制部件:这是 8255A 内部完成读 / 写控制功能的部件,它与 CPU 的地址总线及有关的控制信号相连,接收 CPU 的控制命令,并根据它们向片内各功能部件发出操作命令4.3.3 ADC0809ADC0809是CMOS工艺制成的双列直插式8位A/D转换芯片,内部采用逐次逼近原理,单极性,量程为0+5V。片内部有

14、8路模拟开关,可控制选择输入8个模拟量之中的一个,并带有三态输出锁存缓冲器,可直接与CPU总线连接,不需要外部锁存器,是应用较广泛的一种A/D转换芯片。ADC0809内部由两部分电路组成:第一部分:8路模拟通道选择开关,地址锁存器和译码器。第二部分:比较器、8位逐次逼近寄存器SAR、8位开关树型D/A转换电路、控制逻辑、三态输出缓冲锁存器。工作原理:由ADDA、ADDB、ADDC及ALE选择8个模拟量之一,并通过通道选择开关加至比较器一端。由START信号启动A/D转换开始且SAR清0。在CLOCK的控制下,将SAR从高位逐次置1,并将每次置位后的SAR送D/A转换器转换成与SAR中数字量成正

15、比的模拟量。DAC的输出加至比较器的另一端与输入的模拟电压进行比较,若Vi大于等于V0保留SAR中该位的1;若Vi小于V0则该位清0。经过8次比较(8个CLOCK)后,SAR中的8位数字量即是结果。在OE有效时,将SAR中的8位二进制数输出至锁存器,并通过D7D0输出,同时发出EOC转换结束信号。图1 ADC0809内部结构框图4.3.4 DAC0832DAC0832是用COMS工艺制成的双列直插式8位D/A转换芯片,内部采用T型电阻网络,数字输入有输入寄存器和DAC寄存器两级缓冲,可以双缓冲、单缓冲或直接输入方式连接。DAC0832内部结构图DAC0832引脚图如图2所示 图2 DAC083

16、2引脚图DAC0832的三种工作方式直通方式:当 ILE 接高电平, 都接数字地时, DAC 处于直通方式, 8 位数字量一旦到达 D 0D 7 输入端,就立即加到 D/A 转换器,被转换成模拟量。在 D/A 实际连接中,要注意区分“模拟地”和“数字地”的连接,为了避免信号串扰,数字量部分只能连接到数字地,而模拟量部分只能连接到模拟地。这种方式可用于不采用微机的控制系统中。单缓冲方式:单缓冲方式是将两个锁存器之一处于直通状态,输入数据中经过一级缓冲送入 D/A 转换器。如把 都接地,使寄存锁存器 2 处于直通状态, ILE接 +5V , 接 CPU 系统总线的 信号, 接端口地址译码信号,这样

17、 CPU 可执行一条 OUT 指令,使 和 有效,写入数据并立即启动 D/A 转换。 双缓冲方式:即数据通过两个寄存器锁存后再送入 D/A 转换电路,执行两次写操作才能完成一次 D/A 转换。这种方式可在 D/A 转换的同时,进行下一个数据的输入,可提高转换速度。更为重要的是,这种方式特别适用于系统中含有 2 片及以上的 DAC0832 ,且要求同时输出多个模拟量的场合。 4.4 流程图4.5 具体实现方法实现该声音录放系统功能的程序可以分为以下三个部分4.5.1 主程序主程序的主要任务是对8253、8255A进行初始化,实现录、放音的功能调用。8253初始化设置8253在程序中设置成方式0,

18、计数200,定时0.2ms8253工作方式控制字:10000000B,即10H;选择通道0,方式0,只读写的、低8位设8253输入时钟信号的频率为 1MHZ计数初值=0.2 ms/0.001ms=200控制字端口地址为:81H计数器0端口地址为:80H8255A初始化设置8255A控制字:10010000B,即90H;方式0,A口输入控制字端口地址为:85HA口地址为:84H调用录、放音子程序首先DOS功能调用,显示录音提示信息,然后BIOS功能调用,读键盘缓冲区字符,等待键盘输入,若无键按下,继续等待;有键按下,则调用录音子程序,录音12秒。清除键盘缓冲区后,再进行放音子程序的调用。4.5.

19、2 A/D录放音子程序根据设计要求,ADC0809要以每秒5000的速率采集语音数据,录音12秒,因此共需采集500012=60000个数据,计数器CX=60000。选择IN0通道进行数据采集(D2=0、D1=0、D0=0),寻址A/D转换启动端口地址,CPU向IN0通道执行一条输出指令,启动一次A/D转换。寻址EOC状态端口地址,读取EOC状态,测试转换是否结束,未完则继续等待,转换完成后,则寻址ADC0809转换结果端口,CPU执行一条输入指令,取A/D转换结果。A/D转换启动端口地址:8CH,转换结果端口地址:90H,EOC状态端口地址:94H4.5.3 D/A放音子程序置数据区首址至S

20、I,计数器CX=60000。从数据区取数据,寻址DAC端口地址,CPU执行一条输出指令,进行D/A转换。DAC端口地址为:88H4.5.4 延时子程序DELAY是延时0.2 ms的子程序,将8253计数器0的OUT0输入到8255A端口,测试PA0是否为1,若不为1,则表示8253未计数完,继续查询,如果为1,则表示8253计数完成,定时时间到。5.心得体会在进行这次微机原理及其应用课程设计之前,我觉得利用汇编语言进行较大规模程序的编写是非常困难的,但通过对这次课题数字录音机的设计与编程,我不仅加深了对微机原理及接口技术的认识和理解,还认识到只要自己认真对待,通过查阅资料,理解消化资料,编程并

21、不是难事。在本实验中,充分利用学过的汇编语言程序设计能力,在了解了数字录音技术的基本原理后,通过对A/D转换器与D/A转换器的使用,以及利用8252和8255芯片实现延时功能,成功完成了数字录音机的设计。测试实验结果时,成功实现了12s的录音及放音,达到设计效果。在本次数字录音机设计中,实现功能有12s录音功能、放音功能,并且实现了信息提示,清楚明了。每次课程设计,我都会认真对待,因为这个是培养我们应用能力的最佳机会,也是对课本知识的进一步深化与提高。通过这次课程设计我又收获了不少新知识,了解到数字录音机的基本原理,进一步掌握A/D转换器与D/A转换器的使用方法,并巩固和加深了汇编语言程序设计

22、的能力,而且经过这次设计,我们的自学能力与独立思考能力也得到了提高。6.参考文献1微机原理与接口技术彭楚武湖南大学出版社2微机原理与接口技术实验指导黄海萍 国防工业出版社3微机原理应用及实训赵欢 高等教育出版社附录:源程序data segmentioport equ 01400h-0280hluport equ ioport+29ah ;录音口地址fangport equ ioport+290h ;放音口地址io8253a equ ioport+283hio8253b equ ioport+280hio8255c equ ioport+28bhio8255d equ ioport+288hda

23、ta_qu db 60000 dup(?) ;录音数据存放数据区news_1 db Press any key to record:,24h ;录音提示news_2 db 0dh,0ah, Playing:,24h ;放音提示data endscode segment assume cs:code,ds:data,es:databegin: mov ax,data ;初始化 mov ds,ax mov es,ax mov dx,offset news_1 ;显示录音提示 mov ah,9 int 21htest_1: mov ah,1 ;等待键盘输入 int 16h jz test_1 ;若不

24、是则循环等待 call lu ;调用录音子程序 mov dx,offset news_2 ;显示放音提示 mov ah,9 int 21hfy: call fang ;调用放音子程序 mov ax,0c07h int 21h cmp al,20h jz fy mov ah,4ch ;返回DOS int 21hlu proc near ;录音子程序 mov di,offset data_qu ;置数据区首地址为DI mov cx,60000 ;录60000个数据 cldxunhuan: mov dx,luport ;启动A/D out dx,al call delay ;延时 in al,dx

25、;从A/D读数据到AL stosb ;存入数据区,使DI加1 loop xunhuan ;循环 ret ;子程序返回lu endpfang proc near ;放音子程序 mov cx,60000 ;放60000个数据 mov si,offset data_qu ;置数据区首地址为SI cldfang_yin: mov dx,fangport lodsb ;从数据区取出数据 sub al,30h out dx,al ;放音 call delay ;延时 loop fang_yin ;循环 ret ;子程序返回fang endpdelay proc near ;延时子程序 push dx mov al,10h ;设8253通道0工作方式0 mov dx,io8253a out dx,al mov al,200 ;写入计数器初值200 mov dx,io8253b out dx,al mov dx,io8255c ;设8255的A口为输入 mov al,9bh out dx,al mov dx,io8255d ;从8255的A口输入delay1: in al,dx and al,1 ;判断PA0是否为1 jz delay1 ;若PA0不为1,转de_lay pop dx ret ;子程序返回delay endp code ends end begin

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

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