




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程设计名称:微机系统综合课程设计课程设计题目:模拟电风扇工作院(系):计算机学院专业:计算机科学与技术目录TOC\o"1-3"\h\z第1章总体设计方案 前言由于计算机技术的飞速发展,微机原理与接口技术课程已经作为一门比较重要的专业基础课。微机原理与接口技术已经融入我们的基本生活当中,我们生活中的许多电子产品都与之密切相关。微机原理与接口技术是一门实践性强的学科,其中很多理论和知识仅考书本的学习是无法掌握的,必须通过实践才能比较直观深刻的理解。通过课程设计可以培养我们动手的能力,使我们对书本的理论知识掌握更加牢固,培养学生编程的能力以及提出问题,分析分体,解决问题的能力。本次课程设计所做的是关于数字录音机的设计。1.1设计目的1.进一步加深对微机系统的理解和认识,提高微机系统的应用水平。2.进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。3.进一步熟悉接口,DAC0832、ADC0809及定时计数器等芯片的使用。1.2设计内容及要求1.设计一个声音录放系统,通过传感器及ADC0809以每秒5000次的速率采集语言信号,录音12秒后,再以同样的速率将语音数据通过DAC0832送出至喇叭发声(放音)。2.用protel画出系统的硬件连接图。3.画出程序流程图并编写程序实现上述功能具体设计过程2.1总体设计思想根据设计要求,本次数字录音机的汇编语言设计所需芯片有模数转换芯片ADC0809、数模转换芯片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对地址线进行译码以产生各接口芯片所需的信号。2.2硬件连接图2.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对地址线进行译码以产生各接口芯片所需的信号各接口芯片端口地址分配如下:
芯片A7
A6
A5A4
A3
A2A1
A0
选中的芯片端口地址82531
0
01
0
00
0
00
0
00
00
1Y0选中8253计数器0
选中8253控制口
80H
81H8255A1
0
01
0
00
0
10
0
10
00
1Y1选中8255A的A口
选中8255A控制口
84H
85HDAC08321
0
00
1
00
0Y2选中DAC
88HADC08091
0
01
0
01
0
00
1
11
0
01
0
10
00
00
0Y3选中ADCIN0
选中ADC转换结果端口
选中ADC的EOC端口
8CH
90H
94H2.4流程图
开始开始8253、8255A初始化显示录音提示信息等待键盘输入有键按下吗?调用录音子程序显示录音提示信息等待键盘输入序有键按下吗?调用收音子程序是空格吗?返回DOSNYNNYY开始开始置数据区首地址至D1置循环初值CX=60000启动A/D转换测试转换是否结束?读EOC状态读取转换结果存数据区寻址下一单元序延时0.2ms循环结束吗?结束DOSNYNY开始开始置数据区首地址至D1置循环初值CX=60000从数据区取数据寻址DACS1加1延时0.2ms循环结束吗?子程序返回DOSNY发送到DAC进行D/A转换并输出芯片介绍(1)ADC0809
ADC0809是CMOS工艺制成的双列直插式8位A/D转换芯片,内部采用逐次逼近原理,单极性,量程为0~+5V。片内部有8路模拟开关,可控制选择输入8个模拟量之中的一个,并带有三态输出锁存缓冲器,可直接与CPU总线连接,不需要外部锁存器,是应用较广泛的一种A/D转换芯片。①ADC0809内部结构ADC0809内部结构框图如图1所示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转换结束信号。
图1ADC0809内部结构框图
②ADC0809引脚功能如下:
IN0~IN7:8路模拟输入通道。D0~D7:8位数字量输出端。START:启动转换命令输入端,由1→0时启动A/D转换,要求信号宽度>100nOE:输出使能端,高电平有效ADDA、ADDB、ADDC:地址输入线,用于选通8路模拟输入中的一路进入A/D转换。其中ADDA是LSB位,这三个引脚上所加电平的编码为000~111,分别对应IN0~IN7,例如,当ADDC=0,ADDB=1,ADDA=1时,选中IN3通道。ALE:地址锁存允许信号。用于将ADDA~ADDC三条地址线送入地址锁存器中。EOC:转换结束信号输出。转换完成时,EOC的正跳变可用于向CPU申请中断,其高电平也可供CPU查询。CLK:时钟脉冲输入端,要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压,一般与微机接口时,REF(-)接0V或-5V,REF(+)接+5V或0V。
(2)DAC0832DAC0832是用COMS工艺制成的双列直插式8位D/A转换芯片,内部采用T型电阻网络,数字输入有输入寄存器和DAC寄存器两级缓冲,可以双缓冲、单缓冲或直接输入方式连接。DAC0832内部结构图DAC0832引脚图如图2所示,各引脚功能如下:
图2DAC0832引脚图
DI7~DI0:转换数据输入:片选信号(输入),低电平有效ILE:数据锁存允许信号(输入),高电平有效:第1写信号(输入),低电平有效上述两个信号控制输入寄存器是数据直通方式还是数据锁存方式;当ILE=1和=0时,为输入寄存器直通方式;当ILE=1和=1时,为输入寄存器锁存方式。:第2写信号(输入),低电平有效:数据传送控制信号(输入),低电平有效上述两个信号控制DAC寄存器是数据直通方式还是数据锁存方式;当=0和=0时,为DAC寄存器直通方式;当=1和=0时,为DAC寄存器锁存方式。Iout1:电流输出1Iout2:电流输出2DAC转换器的特性之一是:Iout1+Iout2=常数。Rfb—反馈电阻端0832是电流输出,为了取得电压输出,需在电压输出端接运算放大器,Rfb即为运算放大器的反馈电阻端。运算放大器的接法如图3所示。Vref:基准电压,其电压可正可负,范围-10V~+10V。DGND:数字地AGND:模拟地
DAC0832的三种工作方式①直通方式当ILE接高电平,都接数字地时,DAC处于直通方式,8位数字量一旦到达D0~D7输入端,就立即加到D/A转换器,被转换成模拟量。在D/A实际连接中,要注意区分“模拟地”和“数字地”的连接,为了避免信号串扰,数字量部分只能连接到数字地,而模拟量部分只能连接到模拟地。这种方式可用于不采用微机的控制系统中。②单缓冲方式单缓冲方式是将两个锁存器之一处于直通状态,输入数据中经过一级缓冲送入D/A转换器。如把都接地,使寄存锁存器2处于直通状态,ILE接+5V,接CPU系统总线的信号,接端口地址译码信号,这样CPU可执行一条OUT指令,使和有效,写入数据并立即启动D/A转换。③双缓冲方式即数据通过两个寄存器锁存后再送入D/A转换电路,执行两次写操作才能完成一次D/A转换。这种方式可在D/A转换的同时,进行下一个数据的输入,可提高转换速度。更为重要的是,这种方式特别适用于系统中含有2片及以上的DAC0832,且要求同时输出多个模拟量的场合。
(3)可编程计数/定时接口芯片82538253外部引脚结构8253各引脚的功能定义如下:
数据总线D0~D7:它们为三态输入/输出线,用于将8253与系统数据总线相连,是8253与CPU接口数据线,供CPU向8253读写数据、命令和状态信息。
读信号RD:它为输入信号,低电平有效。它由CPU发出,用于对8253寄存器读操作。
写信号WR:它为输入信号,低电平有效。它由CPU发出,用于对8253寄存器写操作。
地址译码线A1A0:这两根线接到系统地址总线的A1A0上。当CS=0,8253被选中时,A1A0用于选择8253内部寄存器,以便对它们进行读写操作。8253内部寄存器与地址码A1A0的关系如表7-3所示。
时钟信号CLK:CLK为输入信号。3个计数器,各有一独立的时钟输入信号,分别为CLK0、CLK1、CLK2。时钟信号的作用是在8253定时或计数工作时,每输入一个时钟信号CLK,便使定时或计数值减1。它是计量的基本时钟。
门选通信号GATE:GATE信号为输入信号。3个通道,每一个都有自己的门选通信号,分别为GATE0、GATE1、GATE2。GATE信号的作用是用来禁止、允许或开始计数过程。对8253的6种不同工作方式,GATE信号的控制不同(参见后面的表7-4)。
计数器输出信号OUT:OUT是8253向外输出信号。3个独立通道,每一个都有自己的计数器输出信号,分别为OUT0、OUT1、OUT2。OUT信号的作用是,计数器工作时,当定时或计数值减为0时,即在OUT线上输出OUT信号,用以指示定时或计数已到。这个信号可作为外部定时、计数控制信号引到I/O设备用来启动某种操作(开/关或启/停),也可作为定时、计数已到的状态信号供CPU检测,或作为中断请求信号使用。8253的内部结构①数据总线缓冲器该缓冲器为8位双向三态的缓冲器,8根数据线D0~D7可直接挂在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)可编程并行I/O接口芯片8255A8255A的外部引脚布局如图所示。它有40根引脚,可分为与系统总线(如8086)连接的引脚和与外部设备连接的引脚。8255A引脚图8255A引脚功能说明:
RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。
RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。
D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。8255A内部结构①并行输入/输出端口A、B、C8255A芯片具有24个可编程输入输出引脚,分成3个8位端口,其中:端口A包含一个8位数据输出锁存/缓冲寄存器和一个8位数据输入锁存器;端口B包含一个8位数据输入/输出、锁存/缓冲寄存器和一个8位数据输入缓冲寄存器;端口C包含一个输出锁存/缓冲寄存器和一个输入缓冲寄存器。必要时端口C可分成两个4位端口,分别与端口A与端口B配合工作,通常将端口A和端口B定义为输入/输出的数据端口,而端口C可作为状态或控制信息的传送端口。②A组和B组控制部件端口A与端口C的高4位(PC7~PC4)构成A组,由A组控制部件实现控制功能,端口B与端口C的低4位(PC3~PC0)构成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.1具体实现方法实现该声音录放系统功能的程序可以分为以下四个部分:(1)主程序主程序的主要任务是对8253、8255A进行初始化,实现录、放音的功能调用。①8253初始化设置8253在程序中设置成方式0,计数200,定时0.2ms8253工作方式控制字:10000000B,即10H;选择通道0,方式0,只读写的、低8位设8253输入时钟信号的频率为1MHZ计数初值=0.2ms/0.001ms=200控制字端口地址为:81H计数器0端口地址为:80H②8255A初始化设置8255A控制字:10010000B,即90H;方式0,A口输入控制字端口地址为:85HA口地址为: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转换结果端口地址:90HEOC状态端口地址:94H(3)D/A放音子程序置数据区首址至SI,计数器CX=60000。从数据区取数据,寻址DAC端口地址,CPU执行一条输出指令,进行D/A转换。DAC端口地址为:88H(4)延时子程序DELAY是延时0.2ms的子程序将8253计数器0的OUT0输入到8255A端口,测试PA0是否为1,若不为1,则表示8253未计数完,继续查询,如果为1,则表示8253计数完成,定时时间到。4.2程序编写NAME
EXAMPLEDATA
SEGMENTBUF
DB60000DUP(?)MESS1
DB‘NOWREADAYTORACORD’,0DH,0AH,‘$’MESS2
DB‘NOWPLAYTHERECORDING!’,0DH,0AH,‘$’DATA
ENDS
CODE
SEGMENTASSUME
CS:CODE,DS:DATASTART:
MOVDX,81H
;指向8253控制口
MOVAL,10H
;控制字:选择通道0,方式0,只读写的、低8位
OUTDX,AL
;送控制字
MOVDX,85H
;指向8255A控制口
MOVAL,90H
;控制字:方式0,A口输入
OUTDX
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS1
MOVAH,09H
INT21H
;显示录音提示信息WAIT:
MOVAH,01H
INT16H
;读键盘缓冲区字符,是否有键按下JZ
WAIT
;无键按下,继续等待CALLREAD
;有键按下,调用录音子程序MOVDX,OFFSETMESS2
MOVAH,09HINT21H
;显示放音提示信息MOVAL,07HMOVAH,0CHINT21H
;清除键盘缓冲区RE:
MOVAH,01HINT16H
;读键盘缓冲区字符,是否有键按下JZ
RE
;无键按下,继续等待CALL
PLY
;有键按下,调用放音子程序
CMPAL,20H
;是空格吗JZ
RE
;不是,继续循环MOVAH,4CH
;是,子程序返回INT21H
READPROCNEARMOVDI,OFFSETBUF
;寻址数据区MOVCX,60000
;装入计数器CX=60000
READ1:
MOVAL,00H
;选择IN0通道
MOVDX,8CH
;DX指A/D转换启动端口地址
OUTDX,AL
;启动A/D转换
MOVDX,94H
;寻址EOC状态端口地址READ2:
IN
AL,DX
;取EOC状态
TESTAL,80H
;测试转换是否结束
JZ
READ2
;未完,则等待
MOV
DX,90H
;寻址数据端口
IN
AL,
DX
;取A/D转换结果
MOV[DI],AL
;存到数据区
INC
DI
;寻址下一单元
CALLDELAY
;延时0.2ms
LOOPREAD1
;重复60000次RETREADENDPPLYPROCNEARMOVSI,OFFSET
BUF
;寻址数据区MOVCX,60000
;装入计数器CX=60000PLY1:
MOVAL,[SI]
;从数据区取数据MOVDX,88H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育领域的数据分析与学习路径优化
- 大五人格在医疗健康领域的应用前景探讨
- 2024年广东湛江高新技术产业开发区教育系统招聘教师笔试真题
- 2024年湖北烟草考试真题试卷及答案
- 二零二五年度成都老城区特色二手房买卖合同
- 二零二五年度信息安全产业股权投资合同范本
- 2025版信用贷款担保合同范本
- 二零二五年度短视频赛事赞助合同
- 二零二五年度保姆与雇主互信合作劳动合同范本
- 二零二五年度电源设备租赁、维修及售后服务合同
- Unit3TheworldofScience单词讲解教学设计-2023-2024学年高中英语外研版(2019)必修第三册
- 2024年山东省济南市中考数学试卷(官方含答案及解析)
- 专题 全等三角形压轴题(30题)(解析版)
- 《输血知识培训》课件
- 风电项目风机吊装专项施工方案
- 体能训练行业市场调研分析报告
- 课件:道岔的作用与分类讲解
- DB11T 489-2024 建筑基坑支护技术规程
- 2023年全国行业职业技能竞赛-全国民政行业职业技能大赛公墓管理员职业竞赛项目参考赛题库
- 村委会林地使用权证明
- 个体诊所药品清单模板
评论
0/150
提交评论