实验4 单片机端口扩展 联系客服

发布时间 : 星期一 文章实验4 单片机端口扩展更新完毕开始阅读47a0cda82af90242a995e531

实验4 单片机端口扩展

实验目的

通过此实验学习单片机I/O口的扩展,实验通过扩展芯片8255A实现。

实验内容

通过8255A芯片进行单片机I/O口扩展。

实验步骤

1、在Proteus环境中绘制仿真电路图。在前面实验中加入一个74LS373锁存器

(关键词‘74LS373’),一个8255A扩展芯片(关键词‘8255A’),LED灯,电阻,开关(关键词‘BUTTON’)搭建如图5-1所示仿真电路。

图5-1 I/O扩展实验仿真电路图

2、连线说明:

74LS373锁存器11引脚主要进行信号的状态选择控制,它直接与CPU的ALE管脚相连,当它为“1”时, 锁存器输出状态(Q0~Q7)同输入状态(D0~D7);当它由“1”变“0”时,数据打入锁存器中。本文设计中用锁存器出口的Q0、Q1和Q7与8255A芯片的A0、A1和/CS管脚相连,/CS管脚为片选信号输入管脚,A0、A1为8255A芯片出口模式选择信号引脚。

3、8255A端口地址确定简介:

端口地址随硬件电路连接的变化而变化,一片8255A占4个端口地址:PA口、PB口、PC口、控制口,由/CS、A1、A0决定。/CS、A1、A0接单片机的地址总线,构成单片机访问8255A的16位地址:

16位总线访问地址=片选地址+片内地址

/CS、A1、A0与地址总线的连接方案不同,端口地址也就不同。

比如:

将没有连接的地址线设为1,由上面的连接方式,8255A四个端口地址分别为: PA=7FFCH;PB=7FFDH;PC=7FFEH;控制口=7FFFH;端口地址与电路连接关系密切,端口地址的正确确定是CPU对8255访问的关键。

在本实验电路设计中,利用锁存器实现端口地址的锁存,由连线可以看到P0.0、P0.1和P0.7分别与8255A芯片的A0、A1和/CS引脚相连,则可以确定本实验8255A芯片各端口地址为:

PA=FF7CH;PB=FF7DH;PC=FF7EH;控制口=FF7FH

4、8255A的控制字介绍:

(1)工作方式控制字:作用是设置3个并行口I/O选择和设置8255A的工作方式。

PA口有3种工作方式,PB口有2种工作方式,PC口只有一种工作方式0,各个端口的工作方式这里不再详细介绍。在方式1或方式2,PC口自动作为PA口、PB口的控制信号。位为0时,为输出口;为1时,为输入口。

方式控制字各位的含义:

标志位 A组方式设置 1 含义 1 / 0 1 / 0 A口 1 / 0 C上 口 1 / 0 B组方式 1 / 0 B口 1 / 0 C下 口 1 / 0 方式0、1、2 输入/输出 输入/输出 方式0、1 输入/输出 输入/输出 在本实验中,设置8255A芯片A口为输出,B口为输入,均工作在方式0,则控制字设定为:0X82即可。

(2)PC口置/复位控制字:其作用是用来设置PC口某位输出高电平或低电平。实现某些位控制,如启/停外设、开关的通/断、继电器的吸合/释放等 。

5、编写如下代码:

ORG 0000H

MOV DPTR,#0FF7FH ;片外数据存储器地址指针DPTR赋初值 MOV A,#82H ;确定PA、PB、PC口的工作方式 MOVX @DPTR,A ;写刚工作方式控制字

MOV P2,#0FFH ;片外数据存储器地址指针P2和R1赋初值 MOV R1,#7DH ;指针指向PB口 Loop: MOVX A,@R1 ;读PB口的数据 DEC R1 ;指针指向PA口

MOVX @R1,A ;把读回来PB口的数据写向PA口 INC R1 ;指针指向PB口 ACALL Delay ;调用延时子程序 SJMP Loop ;返回,重新读PB口数据 Delay:MOV R7,#10 ;软件延时子程序 Loop3:MOV R6,#200 Loop2:MOV R5,#200 Loop1:DJNZ R5,Loop1 DJNZ R6,Loop2 DJNZ R7,Loop3 RET

6、在Keil环境下打开库函数的方法很简单,只是需要选中需要打开的库函数,

(如图5-2所示)然后点击鼠标右键,选中键选择Close即可(如图5-3所示)。

标签,库函

数中的定义就出现在软件界面了,需要关闭时,在库函数的标签上,点击鼠标右

图5-2 库函数打开

图5-3 库函数关闭