单片机2.docx

上传人:b****7 文档编号:9528954 上传时间:2023-02-05 格式:DOCX 页数:16 大小:27.21KB
下载 相关 举报
单片机2.docx_第1页
第1页 / 共16页
单片机2.docx_第2页
第2页 / 共16页
单片机2.docx_第3页
第3页 / 共16页
单片机2.docx_第4页
第4页 / 共16页
单片机2.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

单片机2.docx

《单片机2.docx》由会员分享,可在线阅读,更多相关《单片机2.docx(16页珍藏版)》请在冰豆网上搜索。

单片机2.docx

单片机2

1./O端口的意思是什么?

什么作用啊

CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。

存储器通常在CPU的同步控制下工作,接口电路比较简单;而I/O设备品种繁多,其相应的接口电路也各不相同,因此,习惯上说到接口只是指I/O接口。

一、I/0接口的概念

1、接口的分类

I/O接口的功能是负责实现CPU通过系统总线把I/O电路和外围设备联系在一起,按照电路和设备的复杂程度,I/O接口的硬件主要分为两大类:

(1)I/O接口芯片

这些芯片大都是集成电路,通过CPU输入不同的命令和参数,并控制相关的I/O电路和简单的外设作相应的操作,常见的接口芯片如定时/计数器、中断控制器、DMA控制器、并行接口等。

(2)I/O接口控制卡

有若干个集成电路按一定的逻辑组成为一个部件,或者直接与CPU同在主板上,或是一个插件插在系统总线插槽上。

按照接口的连接对象来分,又可以将他们分为串行接口、并行接口、键盘接口和磁盘接口等。

2、接口的功能

由于计算机的外围设备品种繁多,几乎都采用了机电传动设备,因此,CPU在与I/O设备进行数据交换时存在以下问题:

速度不匹配:

I/O设备的工作速度要比CPU慢许多,而且由于种类的不同,他们之间的速度差异也很大,例如硬盘的传输速度就要比打印机快出很多。

时序不匹配:

各个I/O设备都有自己的定时控制电路,以自己的速度传输数据,无法与CPU的时序取得统一。

信息格式不匹配:

不同的I/O设备存储和处理信息的格式不同,例如可以分为串行和并行两种;也可以分为二进制格式、ACSII编码和BCD编码等。

信息类型不匹配:

不同I/O设备采用的信号类型不同,有些是数字信号,而有些是模拟信号,因此所采用的处理方式也不同。

基于以上原因,CPU与外设之间的数据交换必须通过接口来完成,通常接口有以下一些功能:

(1)设置数据的寄存、缓冲逻辑,以适应CPU与外设之间的速度差异,接口通常由一些寄存器或RAM芯片组成,如果芯片足够大还可以实现批量数据的传输;

(2)能够进行信息格式的转换,例如串行和并行的转换;

(3)能够协调CPU和外设两者在信息的类型和电平的差异,如电平转换驱动器、数/模或模/数转换器等;

(4)协调时序差异;

(5)地址译码和设备选择功能;

(6)设置中断和DMA控制逻辑,以保证在中断和DMA允许的情况下产生中断和DMA请求信号,并在接受到中断和DMA应答之后完成中断处理和DMA传输。

3、接口的控制方式

CPU通过接口对外设进行控制的方式有以下几种:

(1)程序查询方式

这种方式下,CPU通过I/O指令询问指定外设当前的状态,如果外设准备就绪,则进行数据的输入或输出,否则CPU等待,循环查询。

这种方式的优点是结构简单,只需要少量的硬件电路即可,缺点是由于CPU的速度远远高于外设,因此通常处于等待状态,工作效率很低

(2)中断处理方式

在这种方式下,CPU不再被动等待,而是可以执行其他程序,一旦外设为数据交换准备就绪,可以向CPU提出服务请求,CPU如果响应该请求,便暂时停止当前程序的执行,转去执行与该请求对应的服务程序,完成后,再继续执行原来被中断的程序。

中断处理方式的优点是显而易见的,它不但为CPU省去了查询外设状态和等待外设就绪所花费的时间,提高了CPU的工作效率,还满足了外设的实时要求。

但需要为每个I/O设备分配一个中断请求号和相应的中断服务程序,此外还需要一个中断控制器(I/O接口芯片)管理I/O设备提出的中断请求,例如设置中断屏蔽、中断请求优先级等。

此外,中断处理方式的缺点是每传送一个字符都要进行中断,启动中断控制器,还要保留和恢复现场以便能继续原程序的执行,花费的工作量很大,这样如果需要大量数据交换,系统的性能会很低。

(3)DMA(直接存储器存取)传送方式

DMA最明显的一个特点是它不是用软件而是采用一个专门的控制器来控制内存与外设之间的数据交流,无须CPU介入,大大提高CPU的工作效率。

在进行DMA数据传送之前,DMA控制器会向CPU申请总线控制权,CPU如果允许,则将控制权交出,因此,在数据交换时,总线控制权由DMA控制器掌握,在传输结束后,DMA控制器将总线控制权交还给CPU

2.设计一个音乐程序

利用8255和8253控制扬声器发声,用汇编语言编写:

按数字“1”,唱乐曲“玛丽有只小羔羊”;按数字“2”,唱乐曲“太湖船”;按数字“3”,唱乐曲“祝福歌”;按数字“4”,唱乐曲“亚洲雄风”;按"Q"键,退出。

问题补充:

急用,最好是今天就能解决。

另有高分奖励。

一.设计任务及要求

1.以8255接八个开关K1~K8,做电子琴按键输入。

2.以8253控制扬声器,拨动不同的开关,发出相应的音阶。

要求:

K1—静音

K2—发si的音493Hz

K3—发la的音440Hz

K4—发sol的音392Hz

K5—发fa的音349Hz

K6—发mi的音329Hz

K7—发re的音293Hz

K8—发do的音261Hz

二.方案比较和认证

通过8255和8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。

输入部分主要是由8255和8个常开型开关来完成。

常开型开关如右图。

8个常开型开关K1~K8与8255的A口PA0~PA7相接,不触动开关时,为高电平输入,当按下开关时,就接地,为低电平输入。

例如当K1键按下时,从8255中A口输入的数为11111110B,十六进制为0FEH。

每一个开关按下时,都对应一个ASCII码,如下表所示:

开关K1K2K3K4K5K6K7K8

对应数据0FEH0FDH0FBH0F7H0EFH0DFH0BFH7FH

对应频率静音493Hz440Hz392Hz349Hz329Hz293Hz261Hz

输入部分的硬件实现比较简单,所以说主要还是在发音部分。

在设计中驱动扬声器地声的主要有两种方式,分别是以位触发和定时器控制。

下面就这两种不同的方式确定两个不同的设计方案。

方案1:

发声采用位触发方式。

电路原理图如下所示。

程序直接控制PPI(8255可编程序外围接口芯片)的输出控制寄存器(I/O端口为61H)的第一位,使该位按所需的频率进行1和0的交替变化,从而产生一串脉冲控制波形,这些脉冲经过放大后驱动扬声器发出声音。

可以利用软件延时来控制所产生的脉冲波形的长度和脉宽,就可以实现产生不同频率和不同音长的声音。

软件实现的程序如下:

INAL,61H

MOVAH,AL

ANDAL,0FCH;关断定时器通道2的门控

SOUND:

XORAL,2;触发61H端口第1位

OUT61H,AL

MOVCX,DX;(DX)=控制脉冲的计数值

WAIT:

LOOPWAIT;延时循环

DECBX;(BX)=脉冲持续的时间

JNZSOUND

MOVAL,AH

OUT61H,AL;恢复61H端口

在本方案中,通过程序的方法来控制PB1,使其在1和0之间按一定的频率变,从而产生一串脉冲。

控制脉冲宽度的计数值的算法如下:

计数值=2801*100/音频

如果音频为f,则脉冲周期1/f一个半波的时间为1/2f秒,而1/2f秒的延时可简单地通过LOOP指令的循环来取得,由于2801次LOOP指令循环执行所需时间是10MS,所以一秒钟时间约执行2801*100次LOOP指令。

控制脉冲宽度的计数值的实现程序如下:

MOVAX,2801

MOVBX,50;频率不同该值就不同

MULBX

DIVDI;(DI)=f

MOVDX,AX;(DX)=1/2f

算出了脉冲宽度,再通过高低电平的不断变换,就可实现不同频率的脉冲方波。

把此方波经滤波放大即可驱动扬声器发声了。

方案2:

利用定时器发声。

这里是通过硬件即8253定时器产生声音。

CUP通过对定时器的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响。

当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可由下式计算:

计数值=533H×896÷f=1234DCH÷f

在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。

其位组合的格式如下:

当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。

产生指定频率声音的程序段如下:

MOVAL,0B6H

OUT43H,AL;43H为8253的控制字端口

MOVDX,12H

MOVAX,34DCH

DIVDI;(DI)=频率

OUT42H,AL;42H为8253的通道2端口

MOVAL,AH

MOV42H,AL

从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。

送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PB1位和定时器的输出信号同时作为与门的输入,PB0和PB1位可由程序决定为0还是为1。

显然只有PB0和PB1都是1时,才能使扬声器发出声音。

控制音长的时间可以简单地通过反复执行指令来得到。

我们知道执行2801次LOOP指令约需要10MS的时间。

因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。

实现程序如下:

INAL,61H

MOVAH,AL

ORAL,3

OUT61H,AL;开扬声器

L:

MOVCX,2801

DY:

LOOPDY

DECBX

JNZL

MOVAL,AH

OUT61H,AL;关扬声器

下图是利用定时器发音的电路图。

方案比较:

在上述两个方案中,输入部分都是一样的。

区别在于以不同的方式来驱动扬声器发声。

经对比可知,两种方案都各有优缺点。

在方案1中,其优点是电路简单,所用的器件芯片少,主要芯片只有需一片8255,产生方波是通过软件来实现的,易于修改和维护。

然而它也存在一定的缺点,就是系统不断地通过软件来产生方波,系统资源被占用,无法再做其它事。

与方案1相比,方案2增加了一个8253芯片和一个与门,虽然电路比方案1复杂,但通过定时器产生方波,实现起来比较简单,而且也不会出现系统资源被全部占用的情况。

经分析,选择方案2进行设计。

三.硬件原理,器件功能

在方案2的设计中用到了两个主要的芯片,一个是并行接口8255,另一个是计数器8253。

下面就先介绍一下这两个器件的主要功能以及在这个系统中所应用的功能。

1.8255并行接口。

8255是一个40引脚的双列直插式集成电路芯片。

按功能可把8255分为三个逻辑电路部分,即:

口电路、总线接口电路和控制逻辑电路。

8255共有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。

而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。

总线接口电路用于实现8255和单片微机的信号连接。

其中包括:

数据总线缓冲器,读/写控制逻辑,控制逻辑电路。

内部的结构如下图所示。

 

8255的引脚信号中,除了电源和地以外,其他信号可以分为两组:

1.和外设一边相连的:

PA7-PA0:

A组数据信号

PB7-PB0:

B组数据信号

PC7-PC0:

C组数据信号

2.和CPU一边相连的:

RESET:

复位信号,低电平有效。

当RESET信号来到时,所有内部寄存器就被清除,同时,3个数据端口被自动设为输入端口。

D7-D0:

它们是8255的数据线,和系统数据总线相连。

芯片选择信号,低电平有效。

在一个系统中,一般根据全部接口芯片来分配若干较低位地址(比如A5、A4、A3)来组成各种芯片选择码,当这几位地址组成某一个代码时,译码器便往8255的端输出一个低电平,于是8255被选中。

只有当有效时,读信号和写信号才对8255有效。

芯片读出信号低电平有效。

芯片写入信号低电平有效。

8255共有四个可寻址的端口(即A口、B口、C口和控制寄存器),用二位地址编码即可实现选择。

参见下表。

8255共有三种工作方式,即方式0、方式1、方式2。

1.方式0为基本输入/输出方式,方式0下,可供使用的是两个8位口(A口和B口)及两个4位口(C口高4位部分和低4位部分)。

四个口可以是输入和输出的任何组合。

方式0适用于无条件数据传送,也可以把C口的某一位作为状态位,实现查询方式的数据传送。

2.方式1为选通输入/输出方式,A口和B口分别用于数据的输入/输出。

而C口则作为数据传送的联络信号。

A口和B口的联络信号都是三个,如果A或B只有一个口按方式1使用,则剩下的另外13位口线仍然可按方式0使用。

如果两个口都按方式1使用,则还剩下2位口线,这两位口线仍然可以进行位状态的输入输出。

方式1适用于查询或中断方式的数据输入/输出。

8255作为输入时如下图。

输入过程如下:

当输入设备准备好数据,将数据送至PA7~PA0或PB7~PB0,同时发,在下降沿控制下,8255将PA7~PA0或PB7~PB0上的数据锁存到A口或B口数据输入寄存器中,同时8255向输入设备发IBF有效,告知输入设备暂缓送数。

8255A可以两种方式通知CPU取走数据:

第一种方式是用中断方式,在INTE=1∩IBF=1时,的上升沿使INTR=1,8255向CPU提出中断申请,CPU以中断方式取走数据,在CPU响应中断后,执行IN指令,将8255A口或B口数据输入寄存器中的数据取走,同时,信号的下降沿清除INTR信号,信号的上升沿复位IBF。

输入设备仅当检测到IBF为低电平后,才开始传送下一个数据,如此循环;第二种方式是用软件查询,CPU仅当查询到IBF=1时,才从8255A口或B口数据输入寄存器中取走数据。

 

8255作为输出时如下图所示。

输出过程如下:

首先CPU执行OUT指令,在信号的下降沿CPU输出的数据送入8255数据输出缓冲器,并使INTR复位。

信号上升沿将置为有效,通知输出设备,CPU已把数据输出到8255的指定端口中,输出设备接到信号有效后,发有效,下降沿将置为1,上升沿表示输出设备已从8255A指定端口取走数据,此时若INTE=1,则INTR被置为高电平,向CPU申请中断,CPU可采用中断方式输出下一个数据。

CPU也可通过查询信号,若=1,CPU输出下一个数据给8255A,即查询方式传送数据。

3.方式2双向数据传送方式。

只允许A口工作在方式2,当A口工作在方式2时,B口可工作在方式0或方式1。

所谓双向,即A口可分时进行I/O操作。

A口工作在方式2,信号联络线如下:

(PC6),(PC7),(PC4),IBFA(PC5);

INTE1(PC6)与输出中断有关,可由用户给8255A控制字寄存器送PC6的置位/复位字来实现允许/禁止A口输出中断。

INTE2(PC4):

与输入中断有关,可由用户给8255A控制字寄存器送PC4的置位/复位字来实现允许/禁止A口输入中断。

INTRA(PC3):

I/O中断申请,高电平有效,产生中断请求信号的条件为:

INTRA=IBFA·INTE2··(输入中断);

INTRA=·INTE1··(输出中断)。

在本设计系统中运用的是工作方式0,这种方式比较简单。

在这里,主要是A口用于输入,与8个常开型开关连接,用于采集输入。

B口中的PB1和PB0用于控制发声。

2.计数器/定时器8253。

8253是8254的改进型,右图是它的芯片实物图。

8253包括3个独立的16位计数器通道,而每个计数器都有6种工作方式,可以按二进制或十进制(BCD码)进行计数。

如下图为8253的内部结构图。

在图中可以清楚地看到,8253主要是由数据总线缓冲存储器,读写控制电路,控制字寄存器和3个通道4部分所组成。

1.数据总线缓冲器是8253与CPUDB连接的8位双向三态缓冲器,CPU通过它向8253写方式控制字到控制字寄存器中,写计数初值到计数通道,读取计数通道的当前计数值。

2.读/写控制逻辑控制8253内部操作。

当无效,8253的DB处于高阻状态,当有效,和A1、A0、、组合,对3个计数通道、控制字寄存器进行读/写操作。

3.控制字寄存器8253初始化编程时,CPU写控制字到控制字寄存器,以选择计数通道及相应的工作方式。

 

4.数通道0~2。

8253内部包括3个功能完全相同和操作完全独立的计数通道,每个计数通道由16位减法计数器、16位计数初值寄存器和16位计数值锁存器组成。

初始化时,向计数通道装入的计数初值,先送到计数初值寄存器中保存,然后送到减法计数器。

计数器启动后,减法计数器对CLK的下降沿进行减1计数,在未锁定时把结果送入16位计数值锁存器中。

当计数值减到0时,输出OUT信号,一次计数结束。

计数初值寄存器的内容,在计数过程中保持不变。

计数初值寄存器和计数值锁存器占用一个端口地址(即该计数通道口地址),CPU读取计数通道的当前计数值来自计数值锁存器。

各通道可工作在计数器方式,此时被计数的事件以脉冲方式从CLK输入;

各通道可工作在定时器方式,此时确定频率的时钟脉冲从CLK输入。

计数初值=定时时间÷CLK周期

各通道的启动、禁止、允许计数与门控信号GATE有关,GATE的作用OUT的输出波形随各通道工作方式不同而不同。

8253即可以作为计数器又可以作为定时器使用。

在本系统中主要是运用了其计数功能。

在8253的3个计数器中,都有6种不同的工作方式,其中工作方式3可称为方波发生器,其产生的方波正是在发声系统中所需要的。

所以在这里就应用了8253作计数器并工作在方式3下。

下图为8253工作方式3的定时波形图。

任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n,占空比为1:

1的方波。

如图所示,进入工作方式3,OUT输出低电平,装入计数值n后,OUT立即跳变为高电平。

如果当前GATE为高电平,则立即开始减1计数,OUT保持为高电平。

当计数值减到n/2时,OUT跳变为低电平,一直保持到计数值为0,系统就会自动重新置入计数值n,实现循环计数。

这时OUT端输出的周期为n×CLK周期,占空比为1:

1的方波序列。

如果在操作过程中,GATE变为无效,则暂停减1计数过程,直到GATE再次有效,重新从初值n开始减计数。

这一点对本系统来说非常重要。

这使得在控制发声时可以方便随时停止。

下面的是8253的6种工作方式下的输出波形图。

在这里就不再一一阐述了。

四.系统原理

经过分析对比上述的两种方案可知,选取方案2是比较合理的。

下面就方案2来分析一下整个系统的工作原理。

前面已经提到,整个电路分成输入和发音两大部分。

主要的器件有一个并行接口8255,和一个8253定时器。

输入部分的硬件原理图比较简单,如右图所示的为输入电路,其主要是由8个常开型开关和一个并行接口8255组成。

由图中可看到,8个开关一端接地,另一端接到8255的A口输入,并且通过一个电阻接到+5V。

因此,在开关不按下时,从8255A口输入的是高电平,当开关按下时,输入的则是低电平,这样通过低电平触发,既方便也对芯片起保护作用。

如下表,当不同的开关按下时,从A口输入就对应一个8位的数据。

开关K1K2K3K4K5K6K7K8

输入数据0FEH0FDH0FBH0F7H0EFH0DFH0BFH7FH

通过软件检测输入的数据,然后给8253送相应频率的计数值。

检测的程序如下:

INAL,60H;从8255A口输入一个数据

CMPAL,0FEH

JZK1;K1—K8分别为不同程序断的标号

CMPAL,0FDH

JZK2

CMPAL,0FBH

JZK3

CMPAL,0F7H

JZK4

CMPAL,0EFH

JZK5

CMPAL,0DFH

JZK6

CMPAL,0BFH

JZK7

CMPAL,7FH

JZK8

对于发音部分。

PC机上的大多数输入/输出(I/O)都是由主板上的8255(或8255A)可编程序外围接口芯片(PPI)管理的。

PPI包括3个8位寄存器,两个用于输入功能,一个用于输出功能。

输入寄存器分配的I/O端口号为60H和62H,输出寄存器分配的I/O端口号为61H。

由PPI输出寄存器中的0、1两位来选择扬声器的驱动方式。

如下图。

连接到扬声器上的是定时器2,从上图可以看到,GATE2与端口61H的PB0相连,当PB0=1时,GATE2获得高电平,使定时器2可以在模式3(方波)下工作。

定时器2的OUT2与端口61H的PB1通过一个与门与扬声器的驱动电路相连。

当PB1=1时,允许OUT2的输出信号到达扬声器电路。

因此,只有PB0和PB1同时为“1”时,才能驱动扬声器地声。

通过以下指令实现:

INAL,61H

ORAL,3

OUT61H,AL

上面的指令用以打开扬声器,如要关闭扬声器时则为:

ANDAL,0FCH

OUT61H,AL

当从8255中采集到输入的数据时,需要确定相应的频率,所以在软件编程时要建立一个数据表:

TABLEDW493,440,392,349,329,293,261

把相应的频率送到一个寄存器上,通过公式:

计数值=533H×896÷f=1234DCH÷f

算出计数值,再把算得的计数值送给8253,就可产生所要频率的方波。

在把计数值送8253前,必须先把8253进行初始化:

MOVAL,0B6H

OUT43H,AL

使其选用通道2,工作在方式3下。

就整个电路而言,接好电路后,通过软件编程不断地采集从8255口中输入的信号,而8个开关都接在8255的A口上,只要有开关按下,就会采集到一个数据,根据这个数据与事先编好的表对应,得到一个计数值,把这个计数值送给8253的通道2,8253的通道2工作的方式3下,这样就可以产生满足频率要求的发声方波。

这个方波经驱动放大就可以使扬声器发出相应的声音。

所以8255在这里完成两个任务,它不仅从A口中采集到数据,而且B口的PB1和PB0两个位要控制发声。

8253的主要任务就是产生所要求发声的不同频率的方波。

五.电路图

下图即为本设计中所采用的方案2的硬件连线图。

在设计过程中,独立编址时,用地址线的高位部分和控制信号(如RD、WR、M/IO)进行组合产生I/O接口电路的片选信号(CS),用地址线的低位部分直接连到I/O接口芯片实现端口的选择。

在此采用的是译码器译码,电路图如下所示,经过74LS138译码后,输出作为8253的片选信号(CS),即其端口地址为40H~43H。

输出作为8255的片选信号(CS),即其端口地址为60H~63H。

六.软件思想,流程图,源程序

软件部分对整个系统来说起着重要的作用,在本电子琴系统中,软件可以分为三部分,主程序部分,发音子程序部分和延时子程序部分。

主程序的流程图如下:

发声程序包括3个步骤:

(1)在8253中的42端口送一个控制字0B6H(10110110B),该控制字对

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

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

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