收藏 分销(赏)

微机原理数字录音机课程设计.doc

上传人:w****g 文档编号:3341338 上传时间:2024-07-02 格式:DOC 页数:45 大小:394.04KB
下载 相关 举报
微机原理数字录音机课程设计.doc_第1页
第1页 / 共45页
微机原理数字录音机课程设计.doc_第2页
第2页 / 共45页
点击查看更多>>
资源描述
郑州科技学院 微机原理课程设计 题 目 数字录音机 学生姓名 XX 专业班级 10计算机科学与技术3班 学 号 X 所 在 系 信息工程学院 指导教师 完毕时间 2023 年 1 月 4 日 郑 州 科 技 学 院 微机原理课程设计任务书 题目 数字录音机 专业 X 班级 3班 学号X姓名 X 一、基本规定 将声传感器MIC接J2,把代表语音的电信号送给ADC0809通道2;D/A转换器的输出端通过K8跳线接喇叭。编程,以8KHz的速率采集IN2输入的语音数据并存入内存,共采集64000个数据(录8秒),然后再以规定的速率和幅度将数据送DAC0832使喇叭发声;规定用开关K0控制开始,K2停止,K3控制重放,也可用键盘控制启停。 二、设计任务 按图连接好线路,将传感器(话筒)接T2,由话筒传入语音电信号,把代表语音的电信号传送给ADC0809。运用可编程定期/计数器8253,由CLK0计数时钟,输入时钟频率1MHz,再由GATE0门控信号接+5V,通过GATE0端控制计数器的启动计数和停止计数操作;CS片选信号接实验箱地址280H。 三、设计时间 2023年12月30日至2023年1月4日 指导教师: 教研室主任: 目 录 摘要 1 引言 2 1. 实验目的 3 2.课题设计内容 4 3.设计方案及论证 6 4.系统设计 7 4.1 硬件设计 7 4.1.1 数字录音电路工作原理 7 4.1.2 芯片简介及管脚功能介绍 8 4.2具体实现方法 15 4.2.1实现该声音录放系统功能 15 4.2.2 调试程序 20 5.分析与总结 25 致谢 27 附 录 28 附1:元件清单 28 附2:程序清单 28 微机原理数字录音机课程设计 摘要 本次课程设计的主题研究思想是运用微机原理与接口技术知识,掌握数字录音技术的基本原理.运用8253芯片,8255芯片,ADC0809芯片和DAC0832芯片实现电信号与数据信号的转换.8253设立成方式0,记数为200个,运用PA0查询电平变化,控制录音和放音时间.达成数字录音的目的.可广泛应用于数字录音领域.因此它具有一定的实用价值和开发价值。数字录音机有一定的市场前景和研究领域。 关键词:数字录音 A/D转换 D/A转换 引言 微机原理和接口技术是一门实践性强的学科,其中很多的原量、规则、现象等仅仅靠学习教科书是无法完全掌握的,必须通过实践才干比较直观和深刻的理解。在进行课题设计的过程中,可以让学生体验分析问题、提出解决方案、通过编程等手段实现解决方案、不断调试最终达成设计规定的全过程,从而帮助学生系统地掌握微机原理的接口技术的相关知识,达成将知识融会贯通的目的。 重要特点: 微结微机原理和接口技术教材的重点内容编写,涵盖课程的重要知识点,具有通用性,适合开设计课程的不同学校采用。 对课程设计的原理有比较具体的描述,课程设计的环节循序渐进,便于学生独立完毕课程设计。 实例丰富,既有小型的适合一个学生独立完毕的项目,也有比较大型的适合团队完毕的项目,不仅可以培养学生的动手能力,也有助于培养学生的团队意识。 1. 实验目的 实验目的: (1)了解数/模转换器的基本原理,掌握DAC0832芯片的使用方法; (2)了解模/数转换器的基本原理,掌握ADC0809芯片的使用方法; (3)掌握计数器/定期器8253和并行输入输出8255的基本工作原理和编程使用方法; (4)了解录音机的基本工作原理,掌握其内部连接方式。 2.课题设计内容 1、总体设计思想 根据设计规定,本次数字录音机的汇编语言设计所需芯片有模数转换芯片ADC0809、数模转换芯片DAC0832、定期计数器8253、可编程并行I/O接口8355A及译码器74LS138。设计过程可简述为:运用传感器和ADC0809采集语音数据,以每秒5000的速率采集IN0输入的语音数据并存入内存,共采集数据60000个,即录音12秒。DAC0832进行数模转换,以同样的速率将数据送DAC0832使喇叭发声。8253用作定期,定期0.2ms,设立成方式0,计数初值为200。8253计数器0的OUT0与8255A的PA0连接,运用PA0查询OUT0电平,假如为高点平则表达定期时间到。用译码器74LS138对地址线进行译码以产生各接口芯片所需的信号。 2、按图1连接电路,将声传感器接J2,把代表语音的电信号送给ADC0809通道2(IN2);D/A转换器的输出端通过K8跳线接喇叭。 图2.1 硬件连接图 3、各芯片的作用及工作方式 (1)ADC0809在本次设计中的作用及工作方式 ADC0809作数据采集用,用来采集12秒的语音信号并保存到相应的存储单元。对ADC0809的8个模拟通道,这里是用数据总线的低8位D2、D1、D0来控制ADC的通道选择信号ADDC、ADDB、ADDA,以实现选择其中之一模拟通道输入。在本次设计中,初始值为000(D2=0、D1=0、D0=0),即选择IN0通道进行数据采集,然后使ADC0809的ALE、START有效,START和ALE信号通过CPU向选中的通道口执行一条输出指令,启动A/D转换。转换结束后,发出EOC信号,当EOC为高电平时,可供CPU查询,读取每次采集的A/D转换结果。当CPU知道转换已完毕,执行一条输入指令使OE信号有效,此时输出缓冲器被打开,数据送到数据总线。系统时钟经分频后接到ADC0809芯片的时钟引脚CLK上。 (2)DAC0832在本次设计中的作用及工作方式 在本次设计中,我使用的DAC0832采用直通方式与CPU连接,从硬件图中可以看出,该片DAC0832只有一个端口地址,即88H。DAC0832的ILE信号与+5V连在一起, 、WR1和WR2均接地,总是有效的,DAC0832的输入寄存器和DAC寄存器均处在选通状态,只要CPU想88H端口执行一条输出指令,就会使XFER有效,CPU输出繁荣数字量就会顺利通过DAC0832的两个寄存器,然后进行D/A转换,在运算放大器的输出端得到转换结果。 (3)8253、8255A在本次设计中的作用及工作方式 8253在本次设计中用作定期,工作于方式0,与8255A连接使用完毕定期操作。8255A采用工作方式0进行输入操作,工作方式0是8255A个端口的基本输入输出方式,CPU可从指定端口输入信息,也可向指定端口输出信息。当8253写入方式0控制字后,计数输出端OUT0立即变为低电平,并且在计数过程中一直保持低电平,当计数完毕时,OUT0输出变为高电平。8253计数器0的OUT0与8255A的PA0连接,因此可通过查询PA0是否为1,判断计数是否完毕。计数完毕,则表达定期时间到。 (4)74LS138在本次设计中的作用 译码器74LS138对地址线进行译码以产生各接口芯片所需的信号 3.设计方案及论证 设计方案及论证如下: 1、本课题设计可采用单独的硬件设计,也可以软件与硬件结合设计。后者的设计方案较为合适,可以达成微机原理与接口技术的目的. 2、单独使用硬件来完毕此设计,所使用的硬件材料较多,且不便于调试,并且设计复杂,相对于用软件和硬件想结合而言,后者较为合适。 3、由于我们上一期学的课程是微机原理与接口技术课程,掌握了一定的微机原理与接口技术知识.所以此设计采用硬件与软件结合设计,配合通用微机接口实验系统实验箱实现此设计及此设计功能,与此同时也可以对此门课程加深理解和巩固。为以后的学习和工作打下良好的基础. 4.系统设计 4.1 硬件设计 准备好实验箱,检查芯片和导线是否完整. 按图1连接线路.具体连接情况如下: 8255:CS8255接地址译码Y1, PA0   接8253的OUT0。 8253:CS8253接地址译码Y0, CLK0  接1MHz脉冲, GATE0 接VCC。 DAC0832:CS0832接地址译码Y2, UB    接SPEAK INPUT。 ADC0809:CS0809接地址译码Y3, CLK   接1MHz脉冲, IN2    接MIC OUTPUT。 4.1.1 数字录音电路工作原理 按图连接好线路,将传感器(话筒)接T2,由话筒传入语音电信号,把代表语音的电信号传送给ADC0809。A/D转换芯片通道2(IN2),片选信号CS低电平有效接微机通用实验系统箱地址298H,由298H地址信号控制,低电平表达ADC0809芯片被选中.运用可编程定期/计数器8253,由CLK0计数时钟,输入时钟频率1MHz,再由GATE0门控信号接+5V,通过GATE0端控制计数器的启动计数和停止计数操作;CS片选信号接实验箱地址280H;同理,CS低电平有效,若280H为低电平,表达8253芯片被选中.OUT0接PA0;时间到或者计数结束输出引脚,将8253设立成方式0。计数值为200(定期0.2mS)。再运用8255PA0查询OUT0电平,高电平表达定期时间到,CS片选信号接实验箱288H,由它输入。D/A转换器的输出端下接喇叭。CS片选信号接地址292H。总体思想为:以每秒钟5000次的速率(以8253作为定期)IN2采集输入的语言数据并存入内存。共采集60000个数据(录12秒钟),然后以同样的速率将数据送入DAC0832使喇叭发声(放音),达成数字录音、放音的效果。 4.1.2 芯片简介及管脚功能介绍 (1)、 A/D转换器ADC0809 图4.1 ADC0809构造 ADC0809是CMOS工艺制成的双列直插式8位A/D转换芯片,内部采用逐次逼近原理,单极性,量程为0~+5V。片内部有8路模拟开关,可控制选择输入8个模拟量之中的一个,并带有三态输出锁存缓冲器,可直接与CPU总线连接,不需要外部锁存器,是应用较广泛的一种A/D转换芯片。 ①ADC0809内部结构 ADC0809内部由两部分电路组成: 第一部分:8路模拟通道选择开关,地址锁存器和译码器。 第二部分:比较器、8位逐次逼近寄存器SAR、8位开关树型D/A转换电路、控制逻辑、三态输出缓冲锁存器。 工作原理:由ADDA、ADDB、ADDC及ALE选择8个模拟量之一,并通过通道选择开关加至比较器一端。由START信号启动A/D转换开始且SAR清0。在CLOCK的控制下,将SAR从高位逐次置1,并将每次置位后的SAR送D/A转换器转换成与SAR中数字量成正比的模拟量。DAC的输出加至比较器的另一端与输入的模拟电压进行比较,若Vi大于等于V0保存SAR中该位的1;若Vi小于V0则该位清0。通过8次比较(8个CLOCK)后,SAR中的8位数字量即是结果。在OE有效时,将SAR中的8位二进制数输出至锁存器,并通过D7~D0输出,同时发出EOC转换结束信号。 ②ADC0809引脚功能如下: IN0~IN7 :8 路模拟输入通道。 D0~D7 :8 位数字量输出端。 START : 启动转换命令输入端,由 1 → 0 时启动 A/D 转换,规定信号宽度 >100n OE :输出使能端,高电平有效 ADDA 、ADDB 、ADDC : 地址输入线,用于选通 8 路模拟输入中的一路进入 A/D 转换。其中 ADDA 是 LSB 位,这三个引脚上所加电平的编码为 000~111 ,分别相应 IN 0 ~IN 7 ,例如,当 ADDC=0 , ADDB=1 , ADDA=1 时,选中 IN 3 通道。 ALE :地址锁存允许信号。用于将 ADDA~ADDC 三条地址线送入地址锁存器中。 EOC :转换结束信号输出。转换完毕时, EOC 的正跳变可用于向 CPU 申请中断,其高电平也可供 CPU 查询。 CLK :时钟脉冲输入端,规定期钟频率不高于 640KHZ 。 REF(+)、REF(-):基准电压,一般与微机接口时,REF(-)接 0V 或 -5V ,REF (+)接 +5V 或 0V 。 (2)D/A转换器DAC 0832 图4.2 ADC0809的工作图 DAC0832是用COMS工艺制成的双列直插式8位D/A转换芯片,内部采用T型电阻网络,数字输入有输入寄存器和DAC寄存器两级缓冲,可以双缓冲、单缓冲或直接输入方式连接。 片选信号:输入低电平有效,与ILE相配合,可对写信号 是否有效起到控制作用。 ILE允许锁存信号:输入高电平有效。输入锁存器的锁存信号 由ILE, , 的逻辑组合产生。当ILE为高电平、 为低电平、 输入负脉冲时,在 端产生正脉冲。当 为高电平时,输入锁存器的状态随着数据输入线的状态变化, 的负跳变将数据线上的信息打入输入锁存器。 写信号1:输入低电平有效。当 , ,ILE均为有效时,可将数据写入8位输入锁存器。 写信号2:输入低电平有效。当其有效时,在传送控制信号 的作用下,可将锁存在输入锁存器的8位数据送到DAC寄存器。  数据传送控制信号:输入低电平有效。当 , 均有效时,则在 端产生正脉冲。当 为高电平时,DAC寄存器的输出和输入锁存器的状态一致, 的负跳变将输入锁存器的内容打入DAC寄存器。 基准电压输入端:可在±10 V范围内调节。 DI7~DI0:8位数字输入量输入端。 Iout1:DAC的电流输出1。当DAC寄存器各位均为1时,输出电流最大;当DAC寄存器各位均为0时,输出电流为0。 Iout2 :DAC的电流输出2。 与 的和为一常数,一般单极性输出时 接地,在双极性输出时接运放。 Rfb :反馈电阻引脚。在DAC0832芯片内部有一个反馈电阻,可作为外部运算放大电路的反馈电阻用。 3)芯片8253简介 A: 8253管脚介绍及其功能如下: 图4.3 5253构造 8253内部结构 ①数据总线缓冲器 该缓冲器为 8 位双向三态的缓冲器, 8 根数据线 D 0 ~D 7 可直接挂在 CPU 数据总线上。 ② 读/写控制逻辑 它是 8253 内部操作的控制部分,它决定三个计数器和控制字寄存器中哪一个能进行工作,并控制内部总线上数据传送的方向。 ③控制字寄存器 接受从 CPU 来的控制字,并由控制字的 D7 、D6 位的编码决定该控制字写入哪个计数器的控制寄存器,控制寄存器只能写入,不能读出。 ④计数器 8253 有 3 个独立的计数器通道,每个通道的结构完全相同,如图 10.2 所示。每一个通道有一个 16 位减法计数器;尚有相应的 16 位初值寄存器和输出锁存器。每个计数器都可以对其 CLK 输入端输入的脉冲按照二进制或 BCD 码从预置的初值开始进行减 1 计数,当减至 0 时,从 OUT 端输出一个信号,计数的开始由软件启动或硬件门控信号 GATE 控制。计数开始前写入的计数初值存于初值寄存器;计数过程中,减法计数器的值不断递减,而初值寄存器中的初值不变。输出锁存器则用于写入锁存命令时锁定当前计数值。 当 8253 用作计数器时,加在 CLK 引脚上脉冲的间隔可以是不相等的;当它用作定期器时,则在 CLK 引脚应输入精确的时钟脉冲, 8253 所能实现的定期时间,取决于计数脉冲的频率和计数器的初值。 对 8253 来讲,外部输入到 CLK 引脚上的时钟脉冲频率不能大于 2MHZ ,否则需分频后才干送到 CLK 端。 (4):8255芯片管脚介绍及功能如下: 图4.4 8255芯片管脚 ①并行输入/输出端口A、B、C 8255A 芯片具有 24 个可编程输入输出引脚,提成 3 个 8 位端口,其中:端口 A 包含一个 8 位数据输出锁存 / 缓冲寄存器和一个 8 位数据输入锁存器;端口 B 包含一个 8 位数据输入 / 输出、锁存 / 缓冲寄存器和一个 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 组控制部件实现控制功能。它们各有一个控制单元,可接受来自读 / 写控制部件的命令和 CPU 通过数据总线(D7~D0)送来的控制字,并根据它们来定义各个端口的操作方式。 ③数据总线缓冲器 这是一个三态双向 8 位数据缓冲器,它是 8255A 与 8086CPU 之间的数据接口, CPU输入输出的数据,CPU输出的控制字以及外设的状态信息都是通过这个缓冲器进行传送。 ④读/写控制部件 这是 8255A 内部完毕读 / 写控制功能的部件,它与 CPU 的地址总线及有关的控制信号相连,接受 CPU 的控制命令,并根据它们向片内各功能部件发出操作命令 (5)74LS138译码器 74LS138是3-8线二进制译码器,它有3个输入端,8个输出端,输出低电平有效。该器件3个输入端A、B、C接受二进制码,其输出端Y0~Y7工8条译码输出线。除此之外,尚有3个使能控制端G、G2A、G2B,目的在于灵活应用并组合各种电路。只有当G=0,同时G2A +G2B=0时,译码器工作,否则,译码器功能被严禁。 4.2具体实现方法 4.2.1实现该声音录放系统功能 实现该声音录放系统功能的程序可以分为以下四个部分: (1)主程序 主程序的重要任务是对8253、8255A进行初始化,实现录、放音的功能调用。 ①8253初始化设立 8253在程序中设立成方式0,计数200,定期0.2ms 8253工作方式控制字:10000000B,即10H;选择通道0,方式0,只读写的、低8位 设8253输入时钟信号的频率为 1MHZ 计数初值=0.2 ms/0.001ms=200 控制字端口地址为:81H 计数器0端口地址为:80H ②8255A初始化设立 8255A控制字:10010000B,即90H;方式0,A口输入 控制字端口地址为:85H A口地址为:84H ③调用录、放音子程序 一方面DOS功能调用,显示录音提醒信息,然后BIOS功能调用,读键盘缓冲区字符,等待键盘输入,若无键按下,继续等待;有键按下,则调用录音子程序,录音12秒。清除键盘缓冲区后,再进行放音子程序的调用。 (2)A/D录放音子程序 根据设计规定,ADC0809要以每秒5000的速率采集语音数据,录音12秒,因此共需采集5000×12=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状态端口地址:94H (3)D/A放音子程序 置数据区首址至SI,计数器CX=60000。从数据区取数据,寻址DAC端口地址,CPU执行一条输出指令,进行D/A转换。 DAC端口地址为:88H (4)延时子程序 DELAY是延时0.2 ms的子程序 将8253计数器0的OUT0输入到8255A端口,测试PA0是否为1,若不为1,则表达8253未计数完,继续查询,假如为1,则表达8253计数完毕,定期时间到。 参考流程图如下: 开始 8253、8255A初始化 显示录音提醒信息 等待键盘输入 有键按下吗? 调用录音子程序 显示录音提醒信息 等待键盘输入序 有键按下吗? 调用收音子程序 是空格吗? 返回DOS N Y N N Y Y 图4.5 主程序流程图 开始 置数据区首地址至D1 置循环初值CX=60000 启动A/D转换 测试转换是否结束? 读EOC状态 读取转换结果存数据区 寻址下一单元序 延时0.2ms 循环结束吗? 结束DOS N Y N Y 图4.6 录音子程序流程图 开始 置数据区首地址至D1 置循环初值CX=60000 从数据区取数据 寻址DAC S1加1 延时0.2ms 循环结束吗? 子程序返回DOS N Y 发送到DAC进行D/A转换并输出 图4.7 放音子程序流程图 设立8253为方式0计数200 查询8255A的A口 PA0为1吗? 子程序返回DOS N Y 图4.8 延时子程序 4.2.2 调试程序 ASM程序: data segment ioport equ 01400h-0280h luport equ ioport+29ah ;录音口地址 fangport equ ioport+290h ;放音口地址 io8253a equ ioport+283h io8253b equ ioport+280h io8255c equ ioport+28bh io8255d equ ioport+288h data_qu db 60000 dup(?) ;录音数据存放数据区 news_1 db 'Press any key to record:',24h ;录音提醒 news_2 db 0dh,0ah,' Playing:',24h ;放音提醒 data ends code segment assume cs:code,ds:data,es:data begin: mov ax,data ;初始化 mov ds,ax mov es,ax mov dx,offset news_1 ;显示录音提醒 mov ah,9 int 21h test_1: mov ah,1 ;等待键盘输入 int 16h jz test_1 ;若不是则循环等待 call lu ;调用录音子程序 mov dx,offset news_2 ;显示放音提醒 mov ah,9 int 21h fy: call fang ;调用放音子程序 mov ax,0c07h int 21h cmp al,20h jz fy mov ah,4ch ;返回DOS int 21h lu proc near ;录音子程序 mov di,offset data_qu ;置数据区首地址为DI mov cx,60000 ;录60000个数据 cld xunhuan: mov dx,luport ;启动A/D out dx,al call delay ;延时 in al,dx ;从A/D读数据到AL stosb ;存入数据区,使DI加1 loop xunhuan ;循环 ret ;子程序返回 lu endp fang proc near ;放音子程序 mov cx,60000 ;放60000个数据 mov si,offset data_qu ;置数据区首地址为SI cld fang_yin: mov dx,fangport lodsb ;从数据区取出数据 sub al,30h out dx,al ;放音 call delay ;延时 loop fang_yin ;循环 ret ;子程序返回 fang endp delay 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 CPP程序: #include<stdio.h> #include<conio.h> #include "ApiEx.h" #pragma comment(lib,"ApiEx.lib") void lu(); /*录音函数*/ void fang(); /*放音函数*/ void de_lay(); /*延时函数*/ int i; BYTE *ii; void main() { printf("--------------------EXP22_13_LYJ---------------------\n"); printf("1. MIC === J2\n"); printf("2. I/O (298-29F) === 0809 (CS)\n"); printf("3. (JUMP 2 TO 3) of JP2\n"); printf("4. SPEAKER === J1\n"); printf("5. I/O (290-297) === 0832 (CS)\n"); printf("6. 8253 (CLK0) === (1MHz) or (2MHz)\n"); printf("7. TPC (+5V) === 8253 (GATE0)\n"); printf("8. 8253 (OUT0) === 8255 (PA0)\n"); printf("9. I/O (280-287) === 8253 (CS)\n"); printf("10. I/O (288-28F) === 8255 (CS)\n"); printf("Press any key to begin!\n\n"); getch(); if(!Startup()) /*打开设备*/ { printf("ERROR: Open Device Error!\n"); return; } ii = (BYTE *)malloc(60000); /*分派空间用于存放录音数据*/ if(!ii) { printf("No memory!\7"); exit(0); } PortWriteByte(0x28b,0x9b); /*设8255A口为输入方式*/ PortWriteByte(0x283,0x10); /*初始化8253通道0为方式0*/ printf("Press any key to record!\n"); /*录音提醒*/ getch(); printf("Playing record!\n"); lu(); /*按任意键后开始录音*/ printf("Press any key to playing!ESC is exit!\n"); /*放音提醒*/ while(getch() != 0x1b) { fang(); /*按任意键后开始放音*/ printf("Playing end!\n"); } Cleanup(); /*关闭设备*/ } void lu() { BYTE data; for(i=0;i<60000;i++) /*启动A/D,采集60000个数据放在ii中*/ { PortWriteByte(0x29a,0); de_lay(); PortReadByte(0x29a,&data); *(ii+i) = data; } } void fang() { BYTE data; for(i=0;i<60000;i++) /*将ii中的60000个从D/A输出*/ { data = *(ii+i); PortWriteByte(0x290,data); de_lay(); } } void de_lay() { BYTE data; PortWriteByte(0x280,200); /*送计数器初值200*/ do{ PortReadByte(0x288,&data); }while(!data&0x01);} /*查询8255的PA0是否为高电平,若是则表白定期时间到*/ 运营结果: 运营程序,打开开关K0或按下键盘上任一键,显示“Record......”开始录音,录音结束后自动播放,显示“Play……”。播放过程,可以用K2控制停止,K3控制重放;幅度和放音增益由开关(K4、 K5、K6)指定。并且可以实现在8×8 双色点阵显示器上显示录音和放音的粗略波形,红色为放音,绿色为录音。 5.分析与总结 本实验从硬件上讲共有四个工作芯片,0809和0832负责信号数模模数转换,8253是定期用的,8255则是读取开关状态,从而决定工作状态的,从软件上讲,共有录音和放音两个重要子程序,这两个程序每执行一次调用一次显示程序,显示声信号的波形。通过综合设计实验,我们巩固了很多器件的使用方法,进一步熟悉了实验箱的硬件结构和汇编的调试方法。 在本实验中, 充足运用学过的汇编语言程序设计能力, 在了解了数字录音技术的基本原理后, 通过对 A/D 转换器与 D/A 转换器的使用,以及运用 8253 和 8255 芯片实现延时功能,成功 完毕了数字录音机的设计。 测试实验结果时, 成功实现了 12s 的录音及放音, 达成设计规定。 在本次数字录音机设计中,实现功能有 12s 录音功能、放音功能、反复放音功能。 课程设计使我们了解到数字录音技术的基本原理,进一步掌握A/D转换器和D/A转换器的使用方法,并巩固和加深了汇编语言程序设计的能力。 参考文献 [1] 杨素行.《微型计算机系统原理及应用》,北京,清华大学出版社,2023年 [2] 刘树中.孙书膺,王春平.单片机和液晶显示驱动器串行接口的实现[J].微计算机信息,2023 [3] 李广弟.单片机基础[M]。北京:北京航天航空大学出版社,2023 [4] 杨振江.智能仪器与数据采集系统的新器件及应用[M]。西安:西安电子科技大学出版社,2023 [5] 彭介华.电子技术课程设计指导[J].北京:高等教育出版社,1997. [6]葛纫秋.实用微机接口技术.高等教育出版社.2023 [7]何超.微型计算机原理及应用.中国水利水电出版社.2023 [8]田艾平.微型计算机技术.清华大学出版社.2023 [9]郑岚,王洪海.微机原理与接口技术.北京理工大学出版社.2023 致谢 这次微机实验课程设计,使我对微机软硬件结合有了进一步的了解。本来并不太清楚是什么意思,一直都很模糊,听课本也是很迷茫;而之前的那些单元实验,也没有都做好。之前做的实验,由于大部分是验证性的,所以就很被动地去做,甚至并没有想为什么要那样连电路,内部的代码更没有认真看。这次课程设计,由于要自己去设计整个过程,所以就不得不去了解学习自己本来并没有真正弄懂的东西。比如一些程序的代码的意思,汇编语言的逻辑,比如一些芯片的用途。使我对前面所做的实验有了原理性的了解,回头看一些实验,也知其然其所以然了。同时对课本上讲的一些内容,不再像以前那样觉得抽象,通过这次设计,有了具体的理解。 通过这次课程设计,我对各个芯片的功能有了更深刻的结识和体会,平时上课的理论知识只是
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服