8255流水灯实验

合集下载

实验三 8255_1_输入_输出实验报告

实验三 8255_1_输入_输出实验报告

实验三开关量输入与显示
一、实验要求
编写程序,通过8255的A口读取开关的状态,并在C口所连接的LED灯上显示出来。

二、实验目的
通过使8255读取开关量,进一步掌握8255的编程方法。

三、连接图
图1
四、实验程序框图
五实验过程及步骤
1 按实验要求连接线,将K1~K8连PA0~PA7,PC0~PC7连DL1~DL8,CS连200~207H。

连线结果如上图1所示。

2 对8255进行初始化:方式控制字为90h
3 读入A口状态:
mov dx,200h
in al,dx
4 写入C口
not al
mov dx,202h
out dx,al
5延迟代码段
mov cx,0fffh
lop:loop lop ;延迟,便于观察实验现象
6 运行程序,观察实验结果。

并改变开关的状态,再运行,观察不同开关状态下,LED灯的亮灭情况。

六实验结果
开关打开,相应的LED灯会亮;开关关闭,相应的LED会熄灭。

实验源代码
code segment
assume cs:code
start:
mov dx,203h;对8255进行初始化
mov al,90h
out dx,al
gg:
mov dx,200h ;写入A口
in al,dx
not al
mov dx,202h ;从C口输出
out dx,al
mov cx,0fffh
lop:loop lop ;延迟,便于观察实验现象
jmp gg
code ends
end start。

微机原理与接口技术控制流水灯

微机原理与接口技术控制流水灯

微机原理与接口技术控制流水灯一、实验目的:掌握汇编语言设计和调试方法。

二、实验要求:利用8253、8255、8259三块芯片相接实现流水灯。

三、芯片介绍:1、intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz) 8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。

每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。

每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GA TE,另一个为输出端OUT。

每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。

执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。

输出锁存器的值是通过程序设置的。

输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。

顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。

2、8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。

同时必须具有与外设连接的接口A、B、C口。

由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。

1)与CPU连接部分根据定义,8255能并行传送8位数据,所以其数据线为8根D0~D7。

由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。

此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。

各信号的引脚编号如下:(1)数据总线DB:编号为D0~D7,用于8255与CPU传送8位数据。

利用8255A实现LED的流水点亮实验

利用8255A实现LED的流水点亮实验
moval,00000100b
outdx,al
;-
movdx,211h
moval,00000000b
outdx,al
movdx,210h
moval,40h
outdx,al
movdx,211h
moval,00000010b
outdx,al
;A
movdx,211h
moval,00000000b
outdx,al
moval,7fh
outdx,al
movdx,211h
moval,00100000b
outdx,al
;2
movdx,211h
moval,00000000b
outdx,al
movdx,210h
moval,5bh
outdx,al
movdx,211h
moval,00010000b
outdx,al
;5
movdx,211h
movdx,210h
moval,77h
outdx,al
movdx,211h
moval,00000001b
outdx,al
loop lp ;转至lp
jmplop ;跳至lop
hlt ;使处理器处于暂时停机状态.
codeends
end start
在数码管上显示“8255-A”。
三、实验分析
实验要求利用8255芯片8个开关来控制8个LED灯的开关。我们在课堂上学过8255有ABC三个口,可以输入和输入。因此首先可以想到的就是,把PA口A0-A7接8个波动开关K1-K7,并将A口调整为读入。同时将A口读入的信号用B口输出,这样就可以通过拨动开关来控制LED灯的明灭。为了让灯亮的时间足够人眼分辨出来,需要在程序里加入延时语句,其中加零语句就可以实现延时。

微机实验 可编程并行接口8255

微机实验  可编程并行接口8255

微机原理实验报告实验题目:可编程并行接口8255一、实验目的1、掌握8255的基本输入输出和PC端口位控的工作方式及应用编程。

2、掌握8255的典型应用电路接法。

二、实验知识回顾8255控制字1、控制方式2、C端口置位复位控制字三、实验内容1、 8255流水灯显示,首先用逻辑电平开关预置一个数字,从A口读入,写入01H到C端口上,左移一次在进行输出,A口读入数据作为左移次数,这样循环下去,从而实现流水灯的显示。

2、用PC端口位控制法控制LED灯,依次点亮LED灯。

四、实验器材微机原理实验箱1个电脑(带TPC-USB软件)1台插线若干五、实现过程1、8255流水灯显示(1)流程图(2)程序源代码io8255a equ 2a0h ;8255A口地址io8255b equ 2a1h ;8255B口地址io8255c equ 2a2h ;8255C口地址io8255mode equ 2a3h ;控制寄存器地址stack1 segment stackdw 256 dup(?)stack1 endsdata segmentla db ? ;定义数据变量lb db ?data endscode segmentassume cs:code,ds:datastart:mov ax,data ;程序由start处开始mov ds,axmov dx,io8255mode ;定义8255的工作方式mov al,90h ;方式0A口输入C口输出out dx,al ;mov dx,io8255a ;A口的地址存入dxin al,dx ;从dx也就是A口读入数据mov la,al ;读入的数据暂存在la变量mov dx,io8255c ;C口的地址存入dxmov al,01h ;将寄存器最低位置零out dx,al ;置位后的值输入给dx,也就是C口mov lb,al ;置位后的值暂存于变量lbloop1:call delaymov al,la ;将A口数据写入CX用以计数mov ch,00hmov cl,laloop2:call delaymov al,lbrol al,1 ;在寄存器内进行位移操作mov lb,al ;将操作后的结果重新写入变量al,为后面调用做准备mov dx,io8255c ;dx代表C口的地址out dx,al ;将al中存储的值写入dx,即C口mov ah,1 ;选择dos的模式为从键盘读取数据int 16h ;进入中断jnz quit ;ZF为0则跳到quitdec cx ;计数器减一jnz loop2 ;若cx!=0,跳到loop2quit:mov ax,4c00h ;结束程序并退出int 21hdelay proc near ;延时子程序push cxpush axmov cx,01fhd1: mov ax,0ffffhd2: dec axjnz d2loop d1pop axpop cxretdelay endpcode endsend start2、位控设置C口输出点亮LED(1)流程图(2)程序源代码io8255a equ 2a0h ;8255A口地址io8255b equ 2a1h ;8255B口地址io8255c equ 2a2h ;8255C口地址io8255mode equ 2a3h ;控制寄存器地址stack1 segment stackdw 256 dup(?)stack1 endsdata segmentla db ? ;定义数据变量lb db ?data endscode segmentassume cs:code,ds:datastart:mov ax,data ;程序由start处开始mov ds,axmov dx,io8255mode ;定义8255的工作方式mov al,00001111b ;位控设置C口最高位为1out dx,almov cx,7 ;剩余未点亮灯数为7 loop1:call delaydec aldec alout dx,aldec cxjnz loop1delay proc near ;延时子程序push cxpush axmov cx,01fhd1: mov ax,0ffffhd2: dec axjnz d2loop d1pop axpop cxretdelay endpcode endsend start(3)实验结果图六、小结通过本次试验,我进一步了解了8255的可编程性,以及如何正确的通过程序控制8255,也更加熟悉了8255 C 端口的位控输出。

《微机系统与接口技术》8255流水灯实验报告

《微机系统与接口技术》8255流水灯实验报告

《微机系统与接口技术》预习报告学院:计算机学院专业:网络工程班级学号:学生姓名:小发实验日期:指导老师:成绩评定:五邑大学计算机学院制表一,实验目的1,学习并掌握8255 的工作方式及其应用。

2,掌握 8255 典型应用电路的接法。

3,掌握程序固化及脱机运行程序的方法。

二,实验设备PC机器一台,TD-PITE实验装置或TD-PITC实验装置一套三,实验内容1,基本输入输出实验。

编写程序,使 8255 的 A 口为输入,B 口为输出,完成拨动开关到数据灯的数据传输。

要求只要开关拨动,数据灯的显示就发生相应改变。

2,流水灯显示实验。

编写程序,使 8255 的 A 口和 B 口均为输出,数据灯 D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与 D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。

四实验内容及步骤1. 基本输入输出实验本实验使 8255 端口 A 工作在方式 0 并作为输入口,端口 B 工作在方式 0 并作为输出口。

实验接线图如图 6 所示,按图连接实验线路图。

用一组开关信号接入端口 A,端口 B 输出线接至一组数据灯上,然后通过对 8255 芯片编程来实现输入输出功能。

具体步骤如下述:(1)实验接线图如图 1-4所示,按图连接实验线路图。

(2)编写实验程序,经编译、连接无误后装入系统。

(3)运行程序,改变拨动开关,同时观察 LED 显示,验证程序功能。

(4)点击“调试”下拉菜单中的“固化程序”项,将程序固化到系统存储器中。

(5)将短路跳线 JDBG 的短路块短接到 RUN 端,然后按复位按键,观察程序是否正常运行;关闭实验箱电源,稍等后再次打开电源,看固化的程序是否运行,验证程序功能。

(6)实验完毕后,请将短路跳线 JDBG 的短路块短接到 DBG 端。

图1-4 8255基本输入输出实验接线图实验程序清单(A82551.ASM)SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX, 0646HMOV AL, 90HOUT DX, ALAA1: MOV DX, 0640HIN AL, DXCALL DELAYMOV DX, 0642HOUT DX, ALJMP AA1DELAY: PUSH CXMOV CX, 0F00HAA2:PUSH AXPOP AXLOOP AA2POP CXRETCODE ENDSEND START流水灯显示实验:使 8255 的 A 口和 B 口均为输出,数据灯 D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与 D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。

(完整word版)利用8255A芯片实现流水灯闪烁设计

(完整word版)利用8255A芯片实现流水灯闪烁设计

目录摘要··2第1章利用8255A芯片实现流水灯闪烁设计的概述··2第2章三种方案的论述与最终方案的确定··22.1 第一种方案的论述··22.2 第二种方案的论述··52.3 第三种方案(最终方案)的论证··10第3章测试结果及体会心得··13第4章致谢··14第5章参考文献··14附录1 方案一Proteus仿真电路效果图··15附录2 方案一源程序代码··16附录3 方案二Proteus仿真电路效果图··18附录4 方案二源程序代码··19附录5 方案三(最终方案)Proteus仿真电路效果图··20附录6 方案三(最终方案)源程序代码··21摘要:8255A是一种通用的可编程并行I/O接口芯片(Programmable Peripherial Interface),它是为Inter系列微处理器设计的配套电路,也可用于其它微处理器系统中。

通过对它进行编程,芯片可工作于不同的工作方式。

此次课程设计的目的就是利用端口和8255协同工作来实现LED 显示功能,对8255A芯片进行编程使流水灯左移或右移,通过延时程序使流水灯进行顺序点亮。

通过这次课程设计掌握8255A的功能特点、工作原理以及显示器接口的基本原理与方法技术。

关键词:8086芯片AT89C51单片机8255A芯片LED流水灯第1章利用8255A芯片实现流水灯闪烁设计的概述流水灯在日常的生活中有着广泛的应用,例如,许多楼面上的彩灯广告就是应用了流水灯设计。

此次的课程设计的题目是利用了端口和8255A协同工作来实现LED显示功能,编写程序,使用8255的A口和B口均为输出,接8个或16个发光二极管,实现流水灯的显示效果。

微机实验-流水灯8255

微机实验-流水灯8255

电子信息工程系实验报告课程名称:微机原理与接口技术实验项目名称:8255并行接口流水灯实验 实验时间:2009.12班级: 姓名: 学号:一、实 验 目 的:(1)掌握8255的工作方式及应用编程。

(2)掌握8255的典型应用电路接法。

二、实 验 设备:PC 机一台,实验箱及外部线路一套。

三、实验内容:编写程序,使8255的A 口作为LED 灯的输出,实现8位数据灯的相对循环显示。

(思考:用B 口的一位作为输入,控制LED 灯的循环方向。

)四、实 验 原理:INTEL8255是一种通用的可编程并行I /O 接口芯片,是专为INTEL 公司的微处理器设计的,也可用于其它系列的微型机系统中。

利用8086汇编指令系统,编制初始化程序,可以变更8255 的工作方式,通用性强,使用灵活。

8255具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位。

可与外设并行进行数据交换。

A 口和B 口内具有中断控制逻辑,在外设与CPU 之间可用中断方式进行信息交换。

8255能与许多外部设备连接,例如:键盘、显示器、打印机等。

1、8255芯片特性(1)一个并行输入/输出的LSI 芯片,多功能的I/O 器件,可作为CPU 总线与外围的接口.(2)具有24个可编程设置的I/O 口,即使3组8位的I/O 口为PA 口,PB 口和PC 口.它们又可分为两组12位的I/O 口,A 组包括A 口及C 口(高4位,PC4~PC7),B 组包括B 口及C 口(低4位,PC0~PC3).A 组可设置为基本的I/O 口,闪控(STROBE)的I/O 闪控式,双向I/O3种模式。

2、8255引脚功能RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O 口均被置成输入方式。

CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU 进行通讯;/CS=1时,8255无法与CPU 做数据传输.RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU 发送数据或状态信息,即CPU 从8255读取信息或数据。

8255LED流水灯控制

8255LED流水灯控制

8255LED流水灯控制实验四8255led流水灯控制实验一、实验目的1、认识8255接口芯片、学习其在微机系统中的应用;2、学习8255编程原理;3.掌握LED水灯的汇编语言编程方法。

2、实验仪器1、dj-598kc开发系统1台2、pc机1台三、实验内容1.8086实验箱主系统电路组成★该流水灯系统采用8255芯片扩展连接“led灯”模块。

★ 测试仪包括12个发光二极管和相应的驱动电路,如下图所示。

LED控制信号输入端子l1-l12。

当输入端为低电平“0”时,LED点亮,否则LED熄灭。

2、8255编程要点指南8255是一种通用可编程并行接口芯片。

它提供三个I/O端口。

每个端口都可以编程以多种方式工作。

它广泛应用于中小型系统。

其组成结构如下图所示。

★三个i/o口,分别是pa口、pb口和pc口。

每个口提供八根数据线,如pa口线(pa0~pa7),用于连接外设。

★ dB、CB和ab总线用于连接三条CPU总线,dB用于接收来自CPU的控制命令字或数据,CB用于选择8255数据端口的读写操作,ab用于选择读写哪个端口。

★a组和b组控制电路用于编程控制pa口、pb口和pc口的工作方式选择。

见下图控制命令字格式。

如果端口a的模式0用于控制LED灯,则控制字为1000000B=80h。

★编程控制方法a、将控制命令字设置为使端口a在模式0下工作-将控制命令字写入控制端口。

b、输出要点亮的LED数据——将照明数据写入端口A。

c.8255基地址为0ff28h,则a口地址0ff28h,b口地址0ff29h,c口地址0ff2ah,控制口地址0ff2bh。

3.实验系统的建设和使用a.键盘显示器设置:jk开关置“系统”处,进入监控状态。

c、电路连接:8255A芯片a口pa0-pa7依次连接ll-l8,B口pb0-pb3依次连接l9-l12。

d.接通实验仪电源,+5vled指示灯正常发光,实验仪数码管显示闪动p.,说明实验仪初始化成功,处于待命状态。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1)设计题目分析
编写程序,使用8255的A口和B口均为输出,实现16位流水灯显示效果
2)功能扩展
i:将流水灯设计成可以正着流水,也可以倒着流水
ii:通过开关对流水灯闪烁的速度进行控制,高电平时为快,低电平时为慢速2)总体方案设计分析
要求用8255的A口和B口做为输出,接16个发光二极管,从而实现16位流水灯的显示效果,基本的界限可如下图A所示,在C口的地两位接两个开关,实现两个扩展功能的控制。

i:基本流水灯显示电路
A口和B口两个端口不能同时复制,从而在试验中可以用BX进行需要复制的数据的存储,因为BX可以分从BH BL两个部分进行独立的操作,在本次试验中用BH对A口进行赋值,用BL对B口进行赋值,通过演示一段时间再对BH BL 进行移位和输出,实现流水灯的效果。

ii:正反方向选择
把PC.0口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.0为高电平的时候则灯进行左移,同时B口与A口相反。

iii:快慢速度控制
把PC.1口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.1为高电平的时候则延时的时间缩短,使得流水灯的流水速度加快,低电平的时候则进行延时的时间变长,使得流水灯的流水速度加快。

3硬件原理设计
A该模块的WR.RD分别练到PC总线接口模块的XIOW和XIOR
B该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到PC总线接口模块的数据(D0~D7)、地址线(A0~A7)
C 8255模块选通线CA连到PC总线接口模块的IOY3
D 8255的PA0~PA7连到发光二极管的L1~L8;8255的PB0~PB7连到发光二极管的L9~L16
E 8255的PC0 PC1分别练到开关K0 K1
F 软件流程框图及程序清单
程序代码
MY8255_A EQU 09860H
MY8255_B EQU 09861H
MY8255_C EQU 09862H
MY8255_MODE EQU 09863H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,MY8255_MODE
MOV AL,81H ;设置A口、B口方式0输出,C口低四位方式0输出
OUT DX,AL
MOV CL,0
XOR BX,BX ;将BX清零
MOV DX,MY8255_B
MOV AL,0FEH
MOV BL,AL
OUT DX,AL
MOV DX,MY8255_A
MOV AL,7FH
MOV BH,AL
OUT DX,AL ;对A口、B口赋值,并将值保存在BH BL中A1:
ROL BL,1
ROR BH,1 ;对BH BL做出相应的移位
A3:
PUSH BX ;保护现场
CALL BREAK ;调用任意键退出程序
CALL DELAY ;调用延时程序
POP BX ;恢复现场
MOV DX,MY8255_A
MOV AL,BH
OUT DX,AL
MOV DX,MY8255_B
MOV AL,BL
OUT DX,AL ;将移位后的结果输出
MOV DX,MY8255_C
IN AL,DX ;将C都的数据输入
AND AL,01H ;查看PC0口是否有数据输入,改变流水灯的方向
JNZ A2 ;结果不全为0,则跳转
JMP A1
A2:
ROL BH,1
ROR BL,1
JMP A3
DELAY PROC NEAR ;延时程序
MOV CX,0FFFH
K1:
MOV BX,0FFFH
K2:
DEC BX
CMP BX,1000H
JNE K2
MOV DX,MY8255_C
IN AL,DX ;将C口的数据输入
AND AL,02H ;查看PC1是否有输入,改变延时,使得延时的时间变快
JNZ K3 结果不全为0.则跳转
LOOP K1
K3:
RET
DELAY ENDP
BREAK PROC NEAR ;按任意键退出
MOV AH,06H
MOV DL,0FFH
INT 21H
JE RETURN
MOV AX,4C00H
INT 21H
RETURN:RET
BREAK ENDP
CODE ENDS
END START
取反输出
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX, 0646H
MOV AL, 90H
OUT DX, AL
AA1: MOV DX, 0640H
IN AL, DX
CALL DELAY
MOV DX, 0642H
not AL
OUT DX, AL
JMP AA1 DELAY: PUSH CX
MOV CX,0F00H AA2: PUSH AX
POP AX
LOOP AA2
POP CX
RET
CODE ENDS
END START
流水灯两边向中间显示SSTACK SEGMENT STACK
DW 32 DUP(?) SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE START: MOV DX, 0646H
MOV AL, 80H
OUT DX, AL
MOV BX, 8001H
AA1: MOV DX, 0640H
MOV AL, BL
OUT DX, AL
ROL BL, 1
MOV DX, 0642H
MOV AL, BH
OUT DX, AL
ROR BH, 1
CALL DELAY
CALL DELAY
JMP AA1 DELAY: PUSH CX
MOV CX, 08F00H AA2: PUSH AX
POP AX
LOOP AA2
POP CX
RET
CODE ENDS
END START
4)实验心得:
写过基本输出输入之后,对本实验只是有个大概了解,直到真正懂也花了很长时间,接着做流水灯闪烁效果时,开始混乱,有很多代码不懂,后来通过问同学,问老师,自己不断地思考、理解,对不懂的代码进行注释,终于克服了代码。

再后来,在流水通闪烁时想出了自己的方案。

整个实验过程虽然不是一帆风顺,更不是一蹴而就,通过实践的积累,终于对8255有一定的理解。

相关文档
最新文档