可编程8255接口实验报告
㈠ 实验目的
1.掌握可编程并行接口芯片的基本工作原理及其使用方,熟悉8255可编程
并行I/O扩展接口。 2.掌握8255可编程并行I/O扩展接口方法,能够利用8255可编程并行接口
芯片设计简单应用系统。
㈡ 实验器材
1. G6W仿真器 一台 2. MCS-51实验板 一台 3. PC机 一台 4. 电源 一台
㈢ 实验内容及要求
1.声光报警器实验
8255是可编程的通用并行输入输出扩展接口。8255芯片的片选信号CS4 及口地址选择线AA0、AA1分别由8051的地址线提供。8255的A口设置为 输入数据端口,B口设置为输出数据端口,通过控制位操作控制字将C口某 一位置位或复位,B口与发光二极管LED相连,C口与蜂鸣器相连,读取A 口数据,只要有一位为“1”,则点亮发光二极管LED(B口输出为低,LED 亮,反之,LED 灭),同时蜂鸣器响(若 C口某一位置1,蜂鸣器不响)。 2.交通灯控制实验?
通过并行接口8255实现十字路nb 口交通灯的模拟控制。L6~L8与PC5~PC7
相连,作为南北路口的交通灯,L1~L3与PC0~PC2相连,作为东西路口的 交通等。编程使六个灯按以下规律变化:南北路口的“绿”灯(L8)、东西 路口的“红”灯(L1)同时亮30秒(要求有倒计时显示);南北路口的“黄” 灯(L7)闪烁若干次,同时东西路口“红”灯(L1)继续亮;南北路口的“红” 灯(L6)、东西路口的“绿”灯(L3)同时亮30秒(要求有倒计时显示);东 西路口的“黄”灯(L2)闪烁若干次,南北路口的“红”灯(L6)继续亮; 重复以上步骤。
㈣ 实验步骤
1.连接8255芯片的片选信号CS4及口地址选择线AA0、AA1,并根据片选信
号及口地址选择线确定8255的各I/O口地址和控制字寄存器的地址。 2.声光报警器实验的连线
①8255的A口的8位根据需要接入高低电平。
②8255的B口中任一口与TEST相连,运行程序,即可观察L9发光二极管。
③在实验板上接入蜂鸣器,并且8255的PC7与BEEP相连,运行程序,即可听到蜂鸣器鸣响声。 3.交通灯控制实验的连线
8255的PC口与J2相连。
㈤ 思考题
1. 8051和 8255的接口电路同单片机CPU与I/O之间的数据传送方式有关,
传送方式可分为无条件传送方式、查询传送方式和中断传送方式。本实验是采用无条件传送方式,那么在中断传送方式中8255与单片机之间是如何连接的?
说明8255A的A口在方式1的选通输入方式下的工作过程。
解:当外设输入一个数据并送到PA7-PA0上时,输入设备自动在选通输入线STBA向8255A发送一个低电平选通信号。8255A收到选通信号后:首先把PA7-PA0上输入的数据存入A口的输入数据缓冲/锁存器;然后使输入缓冲器输出线IBFA变成高电平,以通知输入设备,8255A的A口已收到它送来的输入数据。8255A检测到联络线STBA由低电平变成了高电平、IBFA为1状态和中断允许触发器INTEA为1时,使输出线INTRA(PC3)变成高电平,向8031发出中断请求。(INTEA的状态可由用户通过对PC4的置位/复位来控制。8031相应中断后,可以通过中断服务程序从A口的输入数据缓冲/锁存器读取外设发来的输入数据。当输入数据被CPU读走后,8255A撤销INTRA上的中断请求,并使IBFA变为低电平,以通知输入外设可以送下一个输入数据。
2. 用实验结果来说明8255方式0的特点。 3. 用实验结果来说明8255方式1的工作情况。
1.方式0一般使用在同步传送和查询式传送中。
2. 方式1的输出端口一般用于中断方式与CPU相联系。 方式1有如下特点:
①端口A和端口B可分别作为两个数据口工作于方式1,并且任何一个端口可作为输入或输出口。
②若只有一个端口工作于方式1,则端口C有三位被规定配合其工作,其余共13位可工作于方式0。
③若两个端口都工作于方式1,则端口C有6位被规定配合其工作,端口C所剩2位仍可作为输入或输出。
3.方式2应用于分时工作的双向外设(输入输出设备)的连接 4.如何实现对8255的复位,有哪些方法,你实践的结果如何?
8255引脚功能RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 5.如何实现8255输出连续的方波信号,有哪些方法?如何实现? 6.实验中遇到什么问题,有什么建议?
声光报警器流程图:
写方式控制字 进行数据回放
将PA口内容读入A中
判断 A 中是否有一位为 1 无 有 执行NEXT2,L9灭,蜂鸣器不响
执行 NEXT2 , L9 亮,蜂鸣器响 执行完后返回继续读PA口内容
声光报警器实验: ORG 0000H AJMP MAIN ORG 0030H MAIN:
MOV DPTR,#7FFFHD
MOV A,#90H ;写方式控制字,PA口方式0输入,PB口方式0输出 MOVX @DPTR,A START:
MOV DPTR,#7FFCH
MOV A,@DPTR ;将PA口内容读入A中 ANL A,#01H ;屏蔽PA口高七位
JZ NEXT1 ;PA为0,则执行NEXT1
NEXT2: ;PA有一位为1,则执行NEXT2 MOV DPTR, #7FFDH MOV A , #00H
MOVX @DPTR,A ;PB.0复位,L9亮 MOV DPTR, #7FFEH MOV A, #00H
MOV @DPTR,A ;PC.7复位,蜂鸣器响 JMP START NEXT1:
MOV DPTR, #7FFDH MOV A, #FFH
MOVX @DPTR,A ;PB.0置位,L9灭 MOV DPTR, #7FFEH MOV A, #0FFH
MOV @DPTR,A ;PC.7置位,蜂鸣器不响 JMP START
实验一小结:首先是在一轮判断响应结束后返回时,不要反复写控制字,控制字只要写一次就够了;其次是弄懂了A口,B口,C口的地址究竟是怎样确定的;最后是学会了将PA口内容输入,怎样将PB口,PC口的输出,对于8255的无条件传送方式得到了进一步的理解。
交通灯流程图:
写方式控制字,PC口输出
进行初始化,为显示和计时做准备
南北路口的“绿”灯(L8)、东西路口的“红灯(L1)同时亮
倒计时 30S 并进行显示 南北路口的“黄灯”灯(L7)闪烁、东西路口的“红灯(L1)继续亮
黄灯闪烁5次 南北路口的“红”灯(L6)、东西路口的“绿灯(L3)同时亮 倒计时30S并进行显示 东西路口的“黄灯”灯(L2)闪烁、南北路口的“红灯(L6)继续亮 黄灯闪烁5次
交通灯实验:
状态一:南北路口的“绿”灯(L8,PC7)、东西路口的“红”灯(L1,PC0)同时亮30
秒(要求有倒计时显示);
状态二:南北路口的“黄”灯(L7,PC6)闪烁若干次,同时东西路口“红”灯(L1,
PC0)继续亮;
状态三:南北路口的“红”灯(L6,PC5)、东西路口的“绿”灯(L3,PC3)同时亮30
秒(要求有倒计时显示);
状态四:东西路口的“黄”灯(L2,PC2)闪烁若干次,南北路口的“红”灯(L6,PC5)
继续亮;重复以上步骤。
ORG 0000H
MOV DPTR,#7FFFH
MOV A,#90H ;写方式控制字,PC口输出 MOVX @DPTR,A MAIN:
MOV 41H,#0BBH ;对几个存放地址进行初始化 MOV 42H,#0BBH MOV 43H,#0BBH MOV 44H,#0BBH
MOV SCON,#00H ;初始化串行口控制寄存器,设置其为方式0 LCALL LED ;初始化显示