用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读取信息或数据。
微机实验_8255并行输入输出
实验六8255并行输入输出一、实验目的1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示。
2)掌握8段数码管的动态刷新显示控制。
3)分析掌握8255工作方式1时的使用及编程,进一步掌握中断处理程序的编写。
二、实验内容(1)8255方式0:简单的输入输出按图连接好电路,8255C口输入接逻辑电平开关K0~K7,编程A口输出接LED 显示电路L0~L7;用指令从C口输入数据,再从A口输出。
程序为:ioport equ 0b800h-0280hio8255a equ ioport+288hio8255b equ ioport+28bhio8255c equ ioport+28ahstacks segment stackdb 100 dup(?)stacks endscode segmentassume cs:code,ss:stacks main proc farstart: mov ax,stacksmov ss,axmov dx,io8255bmov al,8bh out dx,al inout: mov dx,io8255c in al,dxmov dx,io8255a out dx,almov dl,0ffhmov ah,06hint 21hjz inoutmov ah,4chint 21hmain endpcode endsend start运行结果为:用逻辑电平开关可以控制LED灯的亮灭。
(2)电路图如(1)图,编程将A口L0~L7控制成流水灯,流水间隔由软件产生,流水方向由K0键产生,流水间隔时间也可由K4~K7键编码控制。
程序为:data segmentioport equ 0b800h-0280h io8255a equ ioport+288h io8255b equ ioport+28bh io8255c equ ioport+28ah data endsstacks segment stackdb 100 dup (?)stacks endscode segmentassumecs:code,ds:data,ss:stacks start: mov ax,stacksmov ss,axmov dx,io8255bmov al,8bhout dx,alinout: mov cl,01hmov dx,io8255cin al,dxtest al,01jne rightjmp leftright: mov dx,io8255cin al,dxand al,11110000b cmp al,00h je rightmov al,clcall delay1 rol cl,1 mov dx,io8255c in al,dx test al,01 jne right jmp left left: mov dx,io8255c in al,dx and al,11110000b cmp al,00h je left mov al,cl call delay1 ror cl,1 mov dx,io8255c in al,dx test al,01 jne right jmp left delay1 proc near mov dx,io8255aout dx,alcall delaymov al,0out dx,alcall delayretdelay1 endpdelay proc near push cxpush bxmov bx,0fffhcc: mov cx,0ffffhccc: loop cccdec bxjnz ccpop bxpop cxretdelay endpcode endsend start运行结果为:K0控制流水方向,K4~K7为0000时停止,0001时为1秒。
利用8255A实现LED的流水点亮实验
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基本输入输出
4.3 8255A可编程并行接口实验4.3.1 实验目的1、掌握8255A并行接口芯片的基本结构及工作原理。
2、掌握8255A工作方式0的特点及其使用方法。
3、掌握8255A的A口或B口工作于方式1时的特点及其使用方法;掌握方式1输入或输出时C口用作联络信号的引脚的定义及功能。
4.3.2 实验提示基本输入输出实验程序流程图流水灯显示实验程序流程图4.3.3 实验内容1.基本输入输出实验。
编写程序,使8255A的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就改变。
完整源代码:code segmentassume cs:codestart: mov al,10000010bmov dx, 1443hout dx, alnext: mov dx, 1441hin al, dxmov dx, 1442hout dx, almov ah,0bhint 21hcmp al,0je nextmov ah,4chint 21hcode endsend start2.流水灯显示实验。
编写程序,使8255的A口和B口均为输出,实现16位数据灯的相对循环显示。
完整源代码:MY8255_A EQU 1460HMY8255_B EQU 1461HMY8255_C EQU 1462HMY8255_MODE EQU 1463HDA TA SEGMENTLA DB ?LB DB ?DA TA ENDSCODE SEGMENTA SSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,MY8255_MODEMOV AL,80HOUT DX,ALMOV DX,MY8255_AMOV AL,7FHOUT DX,ALMOV LA,ALMOV DX,MY8255_BMOV AL,0FEHOUT DX,ALMOV LB,ALCALL DALL YA1: MOV AL,LAROR AL,1MOV LA,ALMOV DX,MY8255_AOUT DX,ALMOV AL,LBROL AL,1MOV LB,ALMOV DX,MY8255_BOUT DX,ALCALL DALL YCALL BREAKJMP A1DALL Y: MOV CX,3FFHD1: MOV AX,0FFFFHD2: DEC AXJNZ D2LOOP D1RETBREAK PROC NEARMOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODE ENDSEND START实验小结:通过本次实验,我对8255并行接口有了进一步的了解,实验过程中,有很多问题使得实验很难进行,最后通过和同学的讨论并且在网上查资料等,问题很快得到了解决。
并行IO口8255扩展实验
并行I/O 口8255扩展实验
一、实验目的
了解8255芯片的结构及编程方法,学习模拟交通灯控制的实现方法。
二、实验内容
用
8255
1. 因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化情况和规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1东西绿灯通车,南北红灯。
过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。
再转状态3,南北绿灯通车,东西红灯。
过一段时间转状态4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯,最后循环至状态1
四、实验程序框图
五、实验原理图
①8255 PC0—PC7、PB0—PB3依次接发光二极管L1—L12。
②以连续方式从0630H开始执行程序,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮南北路口的红灯亮,东西路口方向通车。
延时一段时间后东西路口的绿灯熄灭,黄灯开始闪烁。
闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁。
闪烁若干次后,再切换到东西路口方向,之后重复以上过程。
附:实验位置图。
8255并行接口实验
8255并行接口实验4.5.1 实验目的1. 学习并掌握8255的工作方式及其应用。
2. 掌握8255典型应用电路的接法。
3. 掌握程序固化及脱机运行程序的方法。
4.5.2 实验设备PC 机一台,TD-PITE 实验装置或TD-PITC 实验装置一套。
4.5.3 实验内容1. 基本输入输出实验。
编写程序,使8255的A 口为输入,B 口为输出,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
2. 流水灯显示实验。
编写程序,使8255的A 口和B 口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
4.5.4 实验原理I/O I/O I/O I/O PA7-PA0PC7-PC4PC3-PC0PB7-PB0图4.31 8255内部结构及外部引脚图并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。
CPU 和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是Intel 公司生产的通用并行I/O 接口芯片,它具有A 、B 、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图4.31所示,8255工作方式控制字和C 口按位置位/复位控制字格式如图4.32所示。
位(a )工作方式控制字(b )C 口按位置位/复位控制字1图4.32 8255控制字格式8255实验单元电路图如图4.33所示:图4.33 8255实验单元电路图4.5.5 实验步骤1. 基本输入输出实验本实验使8255端口A 工作在方式0并作为输入口,端口B 工作在方式0并作为输出口。
用一组开关信号接入端口A ,端口B 输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。
8255并口控制器应用实验报告
HUNAN UNIVERSITY 课程实验报告实验名称8255并口控制器应用实验学生姓名学生学号专业班级指导老师2014-12-10实验二8255并口控制器应用实验一、实验目的1.掌握8255的工作方式及应用编程;2.掌握8255的典型应用电路接法。
二、实验内容1.流水灯显示实验。
编写程序,使8255的A口和B口均为输出,实现16位数据灯的相对循环显示;2.基本输入输出实验。
编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就改变。
三、实验原理并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。
图1 8255内部结构及引脚图8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2所示。
图2 8255控制字四、实验步骤及结果1、流水灯显示实验图3 流水灯显示程序流程图首先分别向A口和B口写入80H和01H,然后分别将该数右移和左移一位,再送到端口上,这样循环下去,从而实现流水灯的显示。
参考实验程序流程如图3所示。
图4 流水灯显示接线图a)实验接线图如图4所示,按图连接实验线路图,连接好的实物图如图5所示。
图5 8255连接实物图b)运行Tdpit集成操作软件,根据实验内容,编写实验程序,编译、链接,代码如下:IOY0 EQU 3000H ;片选IOY0对应的端口始地址MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDA TA SEGMENTLA DB ? ;定义数据变量LB DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,MY8255_MODE ;定义8255工作方式MOV AL,89H ;工作方式0,A口和B口为输出OUT DX,ALMOV DX,MY8255_A ;写A口发出的起始数据MOV AL,01HOUT DX,ALMOV LA,ALMOV DX,MY8255_B ;写B口发出的起始数据MOV AL,80HOUT DX,ALMOV LB,ALLOOP1: CALL DALL YMOV AL,LA ;将A口起始数据右移再写入A口ROL AL,1MOV LA,ALMOV DX,MY8255_AOUT DX,ALMOV AL,LB ;将B口起始数据左移再写入B口ROR AL,1MOV LB,ALMOV DX,MY8255_BOUT DX,ALMOV AH,1 ;判断是否有按键按下INT 16HJZ LOOP1 ;无按键则跳回继续循环,有则退出QUIT: MOV AX,4C00H ;结束程序退出INT 21HDALL Y PROC NEAR ;软件延时子程序PUSH CXPUSH AXMOV CX,0FFFHD1: MOV AX,0FFFFHD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALL Y ENDPCODE ENDSEND STARTc)运行程序,观察LED灯的显示,验证程序功能程序结果。
实验七 8255 并行IO扩展实验
实验七8255 并行I/O扩展实验一、实验要求利用8255 可编程并行口芯片,实现输入、输出实验,实验中用8255PA 口作读取开关状态输入,8255PB 口作控制发光二极管输出。
二、实验目的1、了解8255 芯片结构及编程方法。
2、了解8255 输入、输出实验方法。
三、实验电路及连线1、Proteus 实验电路2、硬件验证实验硬件连接表四、实验说明1、8255A 芯片简介:8255A 可编程外围接口芯片是INTEL 公司生产的通用并行接口芯片,它具有A、B、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0:基本输入/ 输出方式方式l:选通输入/ 输出方式方式2:双向选通工作方式2、使8255A 端口A 工作在方式0 并作为输入口,读取Kl-K8 个开关量,PB 口工作在方式0作为输出口。
五、实验程序流程图六、实验步骤1、Proteus 仿真a.在Proteus 中打开设计文档8255_STM.DSN;b.建立实验程序并编译,仿真;c.如不能正常工作,打开调试窗口进行调试。
参考程序:CODE SEGMENTASSUME CS:CODEIOCON EQU 8006HIOA EQU 8000HIOB EQU 8002HIOC EQU 8004H START:MOV AL,90HMOV DX,IOCONOUT DX,ALNOPSTART1:NOPNOPMOV AL,0MOV DX,IOAIN AL,DXNOPNOPMOV DX,IOBOUT DX,ALJMP START1 CODE ENDSEND START2、实验板验证a.通过USB 线连接实验箱b.按连接表连接电路c.运行PROTEUS 仿真,检查验证结果。
(完整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并口控制器应用实验一、实验目的1. 掌握8255 的工作方式及应用编程。
2. 掌握8255 典型应用电路的接法。
二、实验内容1. 基本输入输出实验。
编写程序,使8255 的A 口为输出,B 口为输入,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就改变。
2.流水灯显示实验。
编写程序,使8255 的A 口和B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
四、实验原理与步骤实验步骤(1)基本输入输出实验实验说明:本实验使8255的端口A作为输出口工作在方式0,端口 B 作为输入口工作在方式0。
用一组开关信号接入端口B,端口A 输出线接至一组数据灯上,然后通过对8255 芯片编程来实现输入输出功能。
图3-2 8255基本输入输出实验参考接线图实验步骤如下:①实验接线图如图3-2所示,按图连接实验线路图。
②运行Tdpit 集成操作软件,根据实验内容,调用程序代码(T8255-1.ASM),填写程序代码中的空缺处,编译、链接。
③运行程序,改变拨动开关,同时观察LED 显示,验证程序功能。
实验代码如下:IOY0 EQU 9860H ;片选IOY0对应的端口始地址MY8255_A EQU 9860H ;8255的A口地址MY8255_B EQU 9861H ;8255的B口地址MY8255_C EQU 9862H ;8255的C口地址MY8255_MODE EQU 9863H ;8255的控制寄存器地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX,MY8255_MODE ;初始化8255工作方式MOV AL, 82H ;工作方式0,A口输出,B口输入OUT DX,ALLOOP1: MOV DX,MY8255_B ;读B口IN AL,DXMOV DX,MY8255_A ;写A口OUT DX,ALMOV AH,1 ;判断是否有按键按下INT 16HJZ LOOP1 ;无按键则跳回继续循环,有则退出QUIT: MOV AX,4C00H ;结束程序退出INT 21HCODE ENDSEND START(代码结束)(2)流水灯显示实验实验说明:使8255 的A 口和B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
东南大学仪器科学 微机实验 8255 并行输入输出
《微机实验》实验报告实验六8255并行输入输出姓名:学号:学院:仪器科学与工程实验室:金智楼516室实验时间:2017年5月11日报告时间:2017年5月15日评定成绩:审阅教师:实验目的:1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示;2)掌握8段数码管的动态刷新显示控制;实验内容:6-1、8段数码管静态显示:编程从键盘输入一位十进制数字(0~9),在数码管上显示出来。
6-2、8段数码管动态显示:在两个数码管上同时显示不同的两位数字或字母,保持不变直至退出。
(如56或7f,参考程序p69)6-3 静态显示:用逻辑电平开关预置某个数字(0~9)的ASCII码,将该数据用8255的C口读入,并用A口输出,并在数码管显示出来;如果预置的ASCII码不是数字(0~9),数码管显示E字母。
6-4 动态显示:在两个数码管上滚动循环显示不同的0~f字符。
(即开始时两个数码管显示01,12,23,34 ··f0,一直循环直至退出)实验程序框图:实验程序主要部分和流程图:实验硬件连接图:6-1、6-36-2、6-4编写建议:1.写好汇编程序的总框架,按照题目要求合理设置数据段,堆栈段。
2.将流程图转化为汇编指令,建议使用标明行数的编辑器编写,利于在后面根据汇编报错时快速定位。
3.如果发现运行结果与预期不符,应耐心进行动态调试。
4.输入输出的接口地址的计算5.实验台的七段数码管为共阴性,段码同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码的输入端高电平选中。
6.8255的A口、B口、C口和控制口的端口地址分别为288H~28BH。
编程首先要设置控制字输出到控制口。
7.逻辑电平开关向上拨到“ 1”时输出高电平;向下拨到“0”时输出低电平。
8.动态显示时应先从A口输出段码,然后再从C口输出位码,然后应该延时一段时间才能看到数码管的显示。
其中段码需要查表Led db 3fh,06h,…………71h位码分别为:左边的数码管xxxxxx10右边的数码管xxxxxx01。
实验 并行IO口8255扩展
}
}
//刷新显示一段时间后递增1,形成滚动效果,最大索引为14
i= (i+1)%15;
}
}
0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
//共阳极的7段集成式数码管对应编码
// 0:0xc0
// 1:0xcf
// 2:0xa4
// 3:0xb0
// 4:0x99
// 5:0x92
// 6:0x82
// 7:0xf8
// 8:0x80
#define PC XBYTE[0x0002] //定义8255B地址
#define COM XBYTE[0x0003] //定义8255B控制寄存器地址
//待显示字符队列编码
uchar code DSY_CODE_Queue[ ]=
{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// 9:0x90
// A:0x88
// B:0x83
// C:0xc6
// D:0xa1
// E:0x86
// F:0x8e
// DOT:0x7f
// -:0xaf
//数码管选通
uchar DSY_Index[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
实验三并行I/O口8255扩展
一、实验目的
1、了解8255A芯片的结构以及编程方法
2、掌握通过8255A并行口读取开关数据的方法
二、实验说明
本次实验用通过8255扩展接口,仅通过P0端口控制8只集成式7段数码管的显示控制。8255A的PA、PB端口分别连接8位数码管的段码和位码,程序控制数码管滚动显示一串数字。
8255流水灯实验((
8255流水灯实验((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总线接口模块的IOY3D 8255的PA0~PA7连到发光二极管的L1~L8;8255的PB0~PB7连到发光二极管的L9~L16E 8255的PC0 PC1分别练到开关K0 K1F软件流程框图及程序清单图A实验中肮凶的连按设置控制字,对A 口B 口赋匾分别保存在BH BUBH右移左移卩*保护现场程序代码MY8255_A EQU 09860HMY8255_B EQU 09861HMY8255_C EQU 09862H MY8255_MODE EQU 09863H CODE SEGMENTASSUME CS:CODESTART:MOV DX,MY8255_MODEMOV AL,81HOUT DX,ALMOV CL,0XOR BX,BXMOV DX,MY8255_BMOV AL,0FEHMOV BL,ALOUT DX,ALMOV DX,MY8255_AMOV AL,7FHMOV BH,ALOUT DX,ALA1:ROL BL,1ROR BH,1A3:PUSH BXCALL BREAKCALL DELAYPOP BXMOV DX,MY8255_AMOV AL,BHOUT DX,ALMOV DX,MY8255_BMOV AL,BLOUT DX,ALMOV DX,MY8255_C IN AL,DX AND AL,01HJNZ A2JMP A1A2:ROL BH,1ROR BL,1JMP A3 ;设置A 口、B 口方式0 输出,C 口低四位方式0 输出; 将BX 清零;对A 口、B 口赋值,并将值保存在BH BL中;对BH BL做出相应的移位;保护现场; 调用任意键退出程序; 调用延时程序;恢复现场;将移位后的结果输出;将C 都的数据输入; 查看PC0 口是否有数据输入,改变流水灯的方向;结果不全为0,则跳转MOV CX,0FFFHK1:MOV BX,0FFFH K2:DEC BXCMP BX,1000HJNE K2MOV DX,MY8255_CIN AL,DXAND AL,02HJNZ K3LOOP K1K3:RET DELAY ENDP BREAK PROC NEAR MOV AH,06H MOVDL,0FFHINT 21HJE RETURNMOV AX,4C00H INT 21H RETURN:RET BREAK ENDP CODE ENDSEND START ;将C 口的数据输入;查看PC1 是否有输入,改变延时,使得延时的时间变快结果不全为0.则跳转;按任意键退出。
8255可编程并行接口(基本输入输出、动静态七段数码管、竞赛抢答器)微机原理实验报告
微机实验报告书学号: XXXXX 姓名: XXXXX 班级: XXXXX同组名单: XXXXXXXXX 实验日期: 5实验题目: 8255可编程并行接口实验目标: 1、掌握8255方式0的工作原理及使用方法。
2、进一步掌握中断处理程序的编写。
3、掌握数码管显示数字的基本原理。
4、了解微机化竞赛抢答器的基本原理。
实验步骤:实验一、 8255A的基本输入输出图1. 8255A的基本输入输出接线图实验步骤如下:(1)实验电路如图1,8255A的C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
(2)编程从8255A的C口输入数据,再从A口输出。
实验二、七段数码管图2. 七段数码管接线图实验步骤如下:(1)静态显示:按图2(a)连接好电路,将8255A的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dP接地(关闭)。
编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
(2)动态显示:按图2(b)连接好电路,七段数码管段码连接不变,位码驱动输入端S1接+5V(选中),S0接8255A的C口的PC1。
编程在两个数码管上显示“56”。
实验三、竞赛抢答器图3. 竞赛抢答器电路图实验步骤如下:图3位竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当于某组抢答按钮按下。
在七段数码管上将其组号(0~7)显示出来。
程序框图:实验一:实验二:实验三:程序清单:;*************************;;* 8255A的基本输入输出 *;;*************************;IOPORT EQU0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHCODE SEGMENTASSUME CS:CODESTART:MOV DX,IO8255K ;对8255进行设定,A输出,C输入MOV AL,10001001BOUT DX,ALINPUT:MOV DX,IO8255C ;从C输入IN AL,DXMOV DX,IO8255A ;从A输出OUT DX,ALMOV DL,0FFH ;判断是否有按键MOV AH,06HINT21HJZ INPUT ;若无,则继续C输入,A输出MOV AH,4CH ;否则,返回DOSINT21HCODE ENDSEND START;************************************;;*键盘输入数据(0-9)控制LED数码管显示*;;************************************;DA TA SEGMENTIOPORT EQU 0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHMESG1 DB 0DH,0AH,'Input a num (0--9),other key is exit:',0DH,0AH,'$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AXMOV DX,IO8255K ;使8255的A口为输出方式MOV AX,10000000BOUT DX,ALSSS: MOV DX,OFFSET MESG1 ;显示提示信息MOV AH,09HINT 21HMOV AH,01 ;从键盘接收字符INT 21HCMP AL,'0' ;是否小于0JL EXIT ;若是则退出CMP AL,'9' ;是否大于9JG EXIT ;若是则退出SUB AL,30H ;将所得字符的ASCII码减30HMOV BX,OFFSET LED ;BX为数码表的起始地址XLAT ;求出相应的段码MOV DX,IO8255A ;从8255的A口输出OUT DX,ALJMP SSS ;转SSSEXIT: MOV AH,4CH ;返回INT 21HCODE ENDSEND START;******************************;;* LED数码管实验动态显示“56”*;;******************************;DA TA SEGMENTIOPORT EQU 0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段码BUFFER1 DB 6,5 ;存放要显示的个位和十位BZ DW ? ;位码DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,IO8255K ;将8255设为A口输出MOV AL,80HOUT DX,ALMOV DI,OFFSET BUFFER1 ;设di为显示缓冲区LOOP2: MOV BH,02LLL: MOV BYTE PTR BZ,BHPUSH DIDEC DIADD DI, BZMOV BL,[DI] ;bl为要显示的数POP DIMOV AL,0MOV DX,IO8255COUT DX,ALMOV BH,0MOV SI,OFFSET LED ;置led数码表偏移地址为SIADD SI,BX ;求出对应的led数码MOV AL,BYTE PTR [SI]MOV DX,IO8255A ;自8255A的口输出OUT DX,ALMOV AL,BYTE PTR BZ ;使相应的数码管亮MOV DX,IO8255COUT DX,ALMOV CX,3000DELAY: LOOP DELAY ;延时MOV BH,BYTE PTR BZSHR BH,1JNZ LLLMOV DX,0FFHMOV AH,06INT 21HJE LOOP2 ;有键按下则退出MOV DX,IO8255CMOV AL,0 ;关掉数码管显示OUT DX,ALMOV AH,4CH ;返回INT 21HCODE ENDSEND START;***************;;* 模拟抢答器 *;;***************;DA TA SEGMENTIOPORT EQU 0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;数码表DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,IO8255K ;设8255为A口输出,C口输入MOV AL,10001001BOUT DX,ALMOV BX,OFFSET LED ;使BX指向段码管首址SSS: MOV DX,IO8255CIN AL,DX ;从8255的C口输入数据OR AL,AL ;比较是否为0JE SSS ;若为0,则表明无键按下,转sssMOV CL,0FFH ;cl作计数器,初值为-1 RR: SHR AL,1INC CLJNC RRMOV AL,CLXLATMOV DX,IO8255AOUT DX,ALMOV DL,7 ;响铃ASCII码为07MOV AH,2INT 21HWAI: MOV AH,1INT 21HCMP AL,20H ;是否为空格JNE EEE ;不是,转eeeMOV AL,0 ;是,关灭灯MOV DX,IO8255AOUT DX,ALJMP SSSEEE: MOV AH,4CH ;返回INT 21HCODE ENDSEND START运行结果:实验一:当逻辑开关K0~K7中的一个或几个打开时,对应的LED灯就会亮起来,即利用8255A实现了基本的输入输出控制。
利用8255A实现拨动开关和LED流水点亮实验
实验二:利用8255A实现拨动开关和LED流水点亮实验安全0901 王宇航 09283020实验报告1.实验目的:该实验的目的在于掌握8255A和微机接口的连接方法,了解8255A的基本的工作原理和编程方法。
掌握使用8255并行接口连接拨动开关,控制LED显示输出的技术。
2.实验步骤:按图3-2将8255端口A与8位拨动开关连接,8255端口B与8位LED连接,选择8255 为方式0工作,编程序完成LED实时显示开关状态的功能,即每位LED对应一位开关状态。
开关往下拨动,对应LED灭,开关往上拨动,对应LED点亮。
当执行程序后LED按K1-K8初始设定的值点亮,并向右流动(8255A工作在方式0)。
同时在6位数码管显示:8255-1编程涉及8255端口地址有四个,由于8255片选信号线与地址译码区的200~2FH连接,即8255的I/O偏移地址为0~3,加上前一个实验所获知的I/O基址,两者相加之后才是最终访问8255的I/O地址。
注意,该地址一定是一个16位数,所以I/O操作要使用IN AL,DX 和OUT DX, AL指令。
3.实验代码:code segment ;定义代码段assume cs:codestart:;初始化,设置A口B口的工作方式mov dx,203h ;8255命令口地址mov al,10010000b ;控制字out dx,al;让数码管显示8255-A;显示A口输入的数并循环移位xor ax,ax ;将ax清零mov bl,0lop:;自定义的标号mov dx,200h ;给dx赋值(送到寄存器中)in al,dx ;将200h送给寄存器al;m ov dx,201h;o ut dx,al ;把al的值送给dx端口;j mp lop ;段内转移cmp al,ah ;al和ah进行比较jz next ;跳转到nextmov ah,almov bl,ahrol bl,1 ;不带进位循环左移1位next:ror bl,1 ;不带进位循环右移1位mov al,blmov dx,201hout dx,almov cx,3fffhlp: ; 从lp到最后都是表示显示8255-A这个字,它的作用是实现灯的延时,即保证灯的闪烁时间不至于过快,如果去除的话在人眼的视觉暂留情况下将可能产生连续不断的灯光闪烁,使得间隔时间太短。
利用8255A芯片实现流水灯闪烁设计
目录摘要 (2)第1章利用8255A芯片实现流水灯闪烁设计的概述 (2)第2章三种方案的论述与最终方案的确定 (2)2.1第一种方案的论述 (2)2.2第二种方案的论述 (5)2.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个发光二极管,实现流水灯的显示效果。
在实验中8255A的A和B两个端口不能同时赋值,从而我们可以用通用寄存器BX对所需要赋值的数据进行存储,因为BX可以分从高8位寄存器BH和低8位寄存器BL两部分进行独立的操作,我们用寄存器BH对A口进行赋值,用寄存器BL对B口进行赋值,通过延时一段时间再对BH 和BL进行移位和输出,实现了流水灯的效果。
实验六 8255并行输入输出
.东南大学《微机实验及课程设计》实验报告实验六 8255并行输入输出姓名:学号:专业:测控技术与仪器实验室: 516同组人员:评定成绩:..一、实验目的1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示;2)掌握8段数码管的动态刷新显示控制;二、 (1)实验内容(必做)6-1、8段数码管静态显示:编程从键盘输入一位十进制数字(0~9),在数码管上显示出来。
6-2、8段数码管动态显示:在两个数码管上同时显示不同的两位数字或字母,保持不变直至退出。
(如56或7f)(2)实验内容(必做一题,选做一题)6-3 静态显示:用逻辑电平开关预置某个数字(0~9)的ASCII码,将该数据用8255的C口读入,并用A口输出,并在数码管显示出来;如果预置的ASCII 码不是数字(0~9),数码管显示E字母。
6-4 动态显示:在两个数码管上滚动循环显示不同的0~f字符。
(即开始时两个数码管显示01,12,23,34 ··f0,一直循环直至退出)三、实验原理(1)实验预备知识数码管的符号和引脚LED 图八段式..(2) 6-1流程图:开设825控制字端口输出从键盘输入字N0~是否Y将对应段码输出8255端结6-1源代码:data segmentioport equ 0ec00h-0280hio8255a equ ioport+288h ;8255A口地址io8255b equ ioport+28bh ;8255控制寄存器端口地址led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码mesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$';提示data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;使8255的A口为输出方式mov ax,80hout dx,alsss: mov dx,offset mesg1 ;显示提示信息mov ah,09hint 21h..mov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;若是则退出cmp al,'9' ;是否大于9jg exit ;若是则退出sub al,30h ;将所得字符的ASCII码减30Hmov bx,offset led ;bx为数码表的起始地址xlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,aljmp sss ;转SSSexit: mov ah,4ch ;返回DOSint 21hcode endsend start(3)6-2接线图:6-2源代码:data segmentequ 0ec00h-0280h ioportequ ioport+288h io8255aequ ioport+28ah io8255cequ ioport+28bhio8255kled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码存放要显示的个位和十位buffer1 db 5,6 ; bz dw ? ;位码data endsstacks segment stackdb 100 dup(?)..stacks endscode segmentassume cs:code,ds:data,ss:stacksstart: mov ax,datamov ds,axmov ax,stacksmov ss,axmov dx,io8255k ;将8255设为A口输出mov al,80hout dx,almov di,offset buffer1 ;设di为显示缓冲区loop2: mov bh,02送全灭断码 lll: mov al,0 ;自8255A口输出mov dx,io8255a ;out dx,almov byte ptr bz,bhpush didec diadd di, bz为要显示的数 mov bl,[di] ;bl pop di mov bh,0置led mov si,offset led ;数码表偏移地址为SI求出对应的led数码 add si,bx ;mov al,byte ptr [si]自8255A mov dx,io8255a ;的口输出out dx,al使相应的数码管亮 mov al,byte ptr bz ;mov dx,io8255aout dx,almov cx,3000延时delay: loop delay ;mov bh,byte ptr bzshr bh,1jnz lllmov dx,0ffhmov ah,06int 21h有键按下则退出 je loop2 ;mov dx,io8255a关掉数码管显示 mov al,0 ; out dx,al 返回mov ah,4ch ; int 21h..code endsend start(4)6-3流程图:开设825控制字口输入口输口输入一数YN是否属0~对应段码输将对应段码输N是否有键输入Y结6-3源代码:data segmentioport equ 0ec00h-0280h ;tpc卡中设备的io地址io8255a equ ioport+288h ;8255A口地址io8255k equ ioport+28bh ;8255控制寄存器端口地址io8255c equ ioport+28ah ;8255C口地址led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh data endsstacks segment stackdb 100 dup (?)stacks ends..code segmentassume cs:code,ss:stacks,ds:datamain proc farstart: mov ax,stacksmov ss,axmov ax,datamov ds,axmov dx,io8255k ;设8255为C口输入,A口输出 mov al,8bh ;1000 1011out dx,alinout: mov dx,io8255c ;从C口输入一数据call delayin al,dxcmp al,'0' ;是否小于0jl exit1 ;若是则显示Ecmp al,'9' ;是否大于9jg exit1 ;若是则显示Emov bx,offset led ;bx为数码表的起始地址 sub al,30hxlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,almov ah,06 ;是否有键输入mov dl,0ffhint 21h ;是则退出jne exitjmp inout ;转inoutexit1: mov al,79hmov dx,io8255aout dx,almov ah,06 ;是否有键输入mov dl,0ffhint 21h ;是则退出jne exitjmp inout ;转inoutexit: mov ah,4ch ;返回DOSint 21hmain endpdelay proc near ;延时子程序mov bx,2000ZZZ: mov cx,0ZZ: loop ZZdec bx..jne ZZZretdelay endpcode endsend start6-3接线图:实验中遇到的问题及解决方案四、芯片8255在实验初始,发现七段数码管的a不亮,排除故障发现是由于(1)不能输出高电平;的PA0只有在每次运后来发现,在各个实验中,连线后发现数码管都没有反应,(2)行前运行一下演示实验,再运行自己的程序才出正确结果;即若开关初始时,数码管显示的数字是开关预置的数字,在实验6-3中,)(3Ⅱ码;,但是实验要求为预置的为ASC0000,0001,则数码管显示1置为达到实验要求则就是数值,发现若直接用从检查代码,C口输入的数据,的操作;C口输入的数据进行减30h还需对从操作指令前未加延时程序)在这次的课时in 上次实验总未完成部分(在(4)则屏幕一直显示提示信息;1,上实现,上次的实验结果是,若开关预置全,则开始会显示提示信息,片刻后不再提示,说明若不1若开关预置非全开关预置的数据会输入,,0ffh但片刻后,用加延时,in指令输入的会是没有用到的延时程序是借用之前实验中的,遗憾部分是,程序不再提示; CX改变数据以观察需加延时的最短时间; 5().。
8255并行接口流水灯显示实验
探※※※※※※※※探※※※※※※※※微机原理课程设计报告书课题名称8255并行接口流水灯显示实验指导教师一、设计任务及要求:设计任务:流水灯显示实验。
编写程序,使8255的A 口和B 口均为输出,数据灯D7〜DO 由左向右,每次仅亮一个灯,循环显示,D15〜D8与D7〜DO正相反,由右向左,每次仅点亮一个灯,循环显示。
要求:指导教师签名:2009年6月8日、指导教师评语:指导教师签名:2009 年6 月8 日二、成绩验收盖章2009年6月8日RD―0O—cA1——A0------ RESET——二二二三二三一3「.FloDsD.1o7>64o11-TJ-山nPAFAPAPA^个评?氏o9 s6_-3 4!J 1-1o 9-86 5-4 r-r-4I4nJ333nJ3IT-33 IL-Rf « 7-ll.~冷-nr-2J陵o 1 3456 7 £9 o11「-to-rd—Jir-Jal 11 1* 11-al 11 11 11 «1 1iTiC76-54JPAPAPAPAMEEDC'D1D2D3D4D5D6D:WPB 8255并行接口流水灯显示实验一、设计目的1. 学习并掌握8255的工作方式及其应用;2. 掌握8255典型应用电路的接法。
二、设计要求流水灯显示实验。
编写程序,使8255的A 口和B 口均为输出,数据灯D7〜D0由左向右,每次仅亮一个灯,循环显示,D15〜D8与D7〜D0正相反,由右向左,每次仅点亮一个灯,循环显示。
三、电路及连线设计并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU 和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是In tel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。