实验 并行IO口8255扩展
单片机可编程并行接口芯片8255的应用实验
单片机可编程并行接口芯片8255的应用实验一:实验目的和要求1、掌握中断系统外部中断源的使用方法。
2、掌握延时程序的编程及使用方法。
3、掌握Proteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
二:设计要求1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与8255接口。
2、在8255PA口或PB口的某一口线上产生周期500μS的连续方波,接示波器观察波形。
3、在8255PC口的PC0-PC3上接4个按键作输入,PC4-PC7上接4个发光二极管作输出,编程实现发光二极管正确指示按键的状态三:电路原理四:流程框图五:实验结果六:实验总结通过本次试验,掌握了如何在单片机外部扩展I/O口,并且如何在程序中使用这些扩展出来的I/O口,为以后的学习和使用打下了一定的基础,存在的问题是在编写程序时不够熟练,需要多练习七:思考题1、在8255PC口上外接8个发光二极管,利用8255PC口的置位/复位控制字控制其按某种规律变化四:流程框图开始工作方式初始化开定时器定时器初始化查询计数标志位溢出否取反输出口A中内容送DPTR设置C口命令DPTR指向控制位是否开始DPTR指向C口C口内容送累加器DPTR指向控制位交换累加器内容高低位累加器中内容送C开始DPTR指向控制位A中内容送DPTR 定义查表执行次数查表数据送C口调用延时子程序查询次数完否否是修改变量值1秒延时程序子程序返回程序清单ORG 0000H MOV DPTR, #0003H MOV A, #80H MOVX @DPTR, AMOV DPTR, #0000H MOV A, #0FFH MOVX @DPTR, AMOV IE, #00H MOV TMOD, #20H SETB TR1MOV TL1, #06H MOV TH1, #06H LOOP0:JBC TF1, LOOP1 AJMP LOOP0 LOOP1:CPL ACC.0 MOVX @DPTR, A AJMP LOOP0 END#include<reg52.h>#include<absacc.h>#define uchar unsingned char #define uint unsingned int #define COM8255 XBYTE[0X0003] #define PA8255 XBYTE[0X0000] #define PB8255 XBYTE[0X0001] char A;void main(){TMOD=0X11;IE=0;TH1=0XFF;TL1=0X06;PA8255=0XFF;TR1=1;A=1;for( ; ;){do {} while(!TF1);A=!A;if(A==0){PA8255=0XFE;TL1=0X06;TH1=0XFF;TF1=0;}if(A==1){PA8255=0XFF;TL1=0X06;TH1=0XFF;TF1=0;}}}ORG 0000HMOV DPTR, #0003HMOV A, #81HMOVX @DPTR, AMOV DPTR, #0002H LOOP: MOVX A, @DPTRSWAP AMOVX @DPTR, ALJMP LOOPEND#include<reg52.h>#include<absacc.h>#define uchar unsingned char#define uint unsingned int#define COM8255 XBYTE[0X0003]#define PA8255 XBYTE[0X0000]#define PB8255 XBYTE[0X0001]#define PC8255 XBYTE[0X0002]void main(){COM8255=0X81;PC8255=0XFF;while(1){PC8255=PC8255/16+PC8255%16*16;}}ORG 0000HLOOP2: MOV DPTR, #0003HMOVX @DPTR, AMOV R0, #00HMOV R1, #10HLOOP:MOV DPTR, #TABLEMOV A, R0MOVC A, @A+DPTRMOVX @DPTR, ALCALL DELAY1SINC R0DJNZ R1, LOOPLJMP LOOP2TABLE:DB 00H,01H,02H,03H,04H,05H,06H,07H08H,09H,0AH,0BH,0CH,0DH,0EH,0FH DELAY1S:MOV R7, #0A7HDL1:MOV R6, #0ABHDL0:MOV R5, #10HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1NOPRETEND#include <reg52.h>#include <absacc.h>#include <intrins.h>#define uchar unsigned char#define PROTECT XBYTE[0X0003]#define PA8255 XBYTE[0X0000]#define PB8255 XBYTE[0X0001] #define PC8255 XBYTE[0X0002] void delay1s();main(){uchar n=16;uchar h=0xfe;PROTECT=0x80;while(1){PC8255=h;delay1s();h=_crol_(h,1);}}void delay1s(void){unsigned char a,b,c;for(c=167;c>0;c--)for(b=171;b>0;b--)for(a=16;a>0;a--);_nop_(); }五:实验结果。
微机实验_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秒。
实验5(8255并行接口键盘及显示实验)
8255接口键盘及显示综合设计实验(曹建文2009年10月10日)一、实验目的1、掌握8255的工作方式及应用编程。
2、自行设计、制作和连接基于8255并行接口的键盘及显示实验电路。
3、实现扫描式矩阵键盘的功能和作用。
二、实验设备PC机1台,TD-PIT实验台1台,实验元器件若干。
三、实验内容1、使用8255实现键盘按键和七段LED数码显示管显示功能。
2、根据实验要求自行设计实验线路图,制作和焊接实验电路板和实验元器件。
3、按照实验要求和实验电路图编写实验程序,使得按下不同的数字按键后数码管显示相应的数字值(4位数码管)。
4、按照实验要求设计和编写实验程序,实现普通计算器的加/减法功能。
四、实验原理1、8255结构及原理并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图-2所示。
图-1:8255内部结构及引脚图(a)工作方式控制字(b)c口按位置位/复位控制字图-2:8255控制字格式(1)8255的内部结构如图-1所示,8255的内部结构由以下4个部分组成:(1)输入/输出端口A、B、C 。
这三个端口均可看作是I/O端口,但它们的结构和功能也稍有不同。
A口和B口是一个独立的8位I/O口。
C口可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。
(2)A组和B组控制电路。
这是两组根据CPU命令控制8255工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255的工作方式,也可以根据编程命令来对C口的指定位进行置位/复位的操作。
微机实验 可编程并行接口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 端口的位控输出。
并行IO扩展芯片8255
1
1
1
PC7
8255与单片机的连接
74LS373
AT89C51
P0.0-P0.7 ALE P2.7 WR RD RESET 8D G Q0 Q1 OE
D0-D7
PA
A0 A1
8255
CS WR RD RESET
PC
PB
EA
+5V
接片选/CS端,8255的(一组)寄存器地址可以是:
PA口:7000H PB口:7001H PC口:7002H 命令口:7003H
8255与单片机的连接
74LS373
AT89C51
P0.0-P0.7 ALE 8D G Q0 Q1 Q7 OE WR RD RESET
D0-D7 PA A0 A1 CS PC7 PC0
微型 打印机
8255
WR RD RESET
EA
+5V
Q7接片选/CS端,8255的(一组)寄存器地址可以是:
PA口:0000H PB口:0001H PC口:0002H 命令口:0003H
CPU向PA口输出数据
CPU向PB口输出数据 CPU向PC口输出数据 对控制寄存器写控制字 初始化8255时必须做的工作 没有选中,8255不工作 非法状态 非法状态 8255对系统总线呈高阻态 控制寄存器只能写不能读 8255对系统总线呈高阻态 向8255的I/O口写有效
注意:对PA,PB,PC三个口的任何读/写操作,就是对 PA,PB,PC这三个寄存器进行I/O操作.第4个寄存器是 控制字寄存器(命令字寄存器)
K0 K1 K2 K3 K4 K5 K6 K7
图8.5 简单I/O接口扩展电路
74HC244
简单并行I/O扩展(锁存器扩展) 在单片机的I/O口线不够用的情况下,可以借助 外部器件对I/O口进行扩展。可资选用的器件很 多,方案也有多种。
实验二可编程并行接口(8255方式0).doc
实验二一、实验题目:可编程并行接口(8255方式0)二、实验目的掌握8255方式0的工作原理及使用方法。
三、实验内容1、按下图连线。
2、编程从8255C口输入数据,再从A口输出.四、程序流程图五、源程序ioport equ 0d400h-0280hio8255a equ ioport+288hio8255b equ ioport+28bhio8255c equ ioport+28ahcode segmentassume cs:codestart: mov dx,io8255b ;设8255为C口输入,A口输出mov al,8bhout dx,alinout: mov dx,io8255c ;从C口输入一数据in al,dxmov dx,io8255a ;从A口输出刚才自C口out dx,al ;所输入的数据mov dl,0ffh ;判断是否有按键mov ah,06hint 21hjz inout ;若无,则继续自C口输入,A口输出mov ah,4ch ;否则返回DOSint 21hcode endsend start六、实验结果分析按上述的代码执行,观察LED灯的状态,可以发现实验结果和预期的相同:打开K0,关闭K1、K2、K3、K4、K5、K6、K7,L0亮;打开K1,关闭K0、K2、K3、K4、K5、K6、K7,L1亮;打开K2,关闭K0、K1、K3、K4、K5、K6、K7,L2亮;打开K3,关闭K0、K1、K2、K4、K5、K6、K7,L3亮;打开K4,关闭K0、K1、K2、K3、K5、K6、K7,L4亮;打开K5,关闭K0、K1、K2、K3、K4、K6、K7,L5亮;打开K6,关闭K0、K1、K2、K3、K4、K5、K7,L6亮;打开K7,关闭K0、K1、K2、K3、K4、K5、K6,L7亮;按任意键,退出该实验。
七、实验心得1、通过本次实验,了解了8255芯片的基本内部结构和它的管脚,掌握了8255方式0的工作原理及使用方法,2、本次实验前,自己认真地做了预习,实验过程中,认真思考,积极探索,实验后,查阅资料,提炼总结。
8255A并行口实验
学号实习报告计算机应用综合实习—硬件起止日期:2009 年09月14日至2009 年09月21日学生姓名班级成绩指导教师(签字)电子与信息工程系2009年9 月20 日一、实习目的(1)利用微机接口芯片8255,并行控制LED点阵显示。
(2)掌握8088微机系统与LED点阵之间接口电路设计及编程。
二、实习要求利用589H实习系统扩展接口CZ7座,在控制板MC1上以并行方式控制LED点阵显示。
要求自建字库,编制程序将自己的姓名或图形实现左移、右移,上下移动。
三、编程指南根据提供I/O地址、功能,有不同I/O口分别提供自行代码送行,列扫描信号送列扫描行,凡字形代码位“1”、列扫描信号“0”该点点亮,否则灯熄,通过逐行扫描,循环点亮字形获曲线。
四、硬件连接图五、程序代码;CODE SEGMENT;ASSUME CS:CODE ;USR-LED 16X16XPA EQU 8000H ;L-SAO-1,CTL-MODE:BING XIN KO XPB EQU 8001H ;L-SAO-2;----------------------------------------------------------------------------------------------PA EQU 0FF28H ;H-CODE-1XPC EQU 8002H ;H-CODE-2XPCTL EQU 8003HPCTL EQU 0FF2BHDATA SEGMENT AT 0ORG 2db0HFL DB ? ;BL SAO FLAGR0 DW ?;H-CODER1 DB ? ;L-CODER6 DW ?;XPA/XPBDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAORG 2DC0HSTART: MOV DX,XPCTLMOV AL,80HOUT DX,ALMOV DX,PCTLOUT DX,ALCALL OFFLEDMOV AL,00HMOV FL,ALMOV R6,8000H ;XPAX0: MOV R0,0000HX1: CALL DEL1INC R0INC R0CMP R0,0130HJNZ X1JMP X0DISPW:PUSH R0 ;H-NUMMOV R1,01H ;L-NUMDISP1: MOV AX,R0MOV BX,OFFSET TAB ADD BX,AXMOV AL,CS:[BX]MOV DX,PAOUT DX,ALINC R0MOV AX,R0MOV BX,OFFSET TAB ADD BX,AXMOV AL,CS:[BX]MOV DX,XPCOUT DX,ALMOV DX,R6MOV AL,R1NOT ALOUT DX,ALMOV CX,0080HLOOP $CALL OFFLEDINC R0RCL R1,1JNC DISP1CMP FL,00HJNZ EXITINC FLCLCMOV R1,01HMOV R6,8001HJMP DISP1EXIT: MOV R6,8000H MOV FL,00HPOP R0RETOFFLED: MOV DX,XPA MOV AL,0FFHOUT DX,ALMOV DX,XPBOUT DX,ALDEL1: MOV CX,0020HCON1: PUSH CXCALL DISPWPOP CXLOOP CON1RETTAB: d b00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h db00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h DB02H,00H,04H,10H,08H,14H,10H,92H,20H,51H,0C0H,30H,60H,13H,1C H,1CHDB08H,10H,00H,00H,0E0H,1FH,04H,00H,02H,00H,0FCH,0FFH,00H,00H, 00H,00HDB00H,12H,00H,12H,80H,12H,7FH,14H,0A2H,0FFH,22H,14H,0A2H,10H, 22H,03HDB22H,7CH,22H,48H,22H,48H,0BFH,4FH,00H,48H,00H,48H,00H,08H,00 H,00HDB02H,00H,04H,10H,08H,14H,10H,92H,20H,51H,0C0H,30H,60H,13H,1C H,1CHDB08H,10H,00H,00H,0E0H,1FH,04H,00H,02H,00H,0FCH,0FFH,00H,00H, 00H,00HDB04H,00H,04H,40H,04H,40H,0FCH,43H,04H,40H,04H,40H,04H,40H,04 H,40HDB0FCH,7FH,04H,41H,04H,41H,04H,41H,04H,41H,04H,41H,04H,40H,00 H,00HDB06H,02H,0F8H,12H,04H,12H,02H,12H,0FEH,0FFH,42H,12H,42H,12H, 02H,41H0FAH,43H,12H,7DH,12H,41H,12H,45H,12H,43H,0FAH,7DH,02H,00H,00H,00HDB21H,00H,21H,00H,22H,01H,22H,7DH,24H,45H,28H,45H,30H,45H,0E0H,45HDB30H,45H,28H,45H,24H,45H,26H,7DH,23H,01H,22H,00H,20H,00H,00H,00HDB00H,02H,00H,04H,0FEH,0FH,00H,38H,00H,0E2H,80H,44H,80H,08H,90H,10HDB88H,28H,8EH,0E7H,94H,12H,0A0H,08H,0C0H,06H,80H,03H,00H,02H,00H,00HDB00H,00H,80H,08H,80H,30H,80H,24H,80H,24H,80H,24H,82H,24H,81H,0A4HDB0FEH,67H,80H,24H,80H,24H,80H,24H,80H,24H,80H,30H,00H,20H,00H,00Hdb00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00hdb00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00hdb00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00hdb00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00hCODE ENDSEND STAR T六、总结这次试验,硬件连接和软件使用起初并不是很熟练,而且在联机的时候出现问题,主要是硬件设施的连接牢固性。
实验七 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 仿真,检查验证结果。
微机原理与接口实验-4.1-IO端口扩展-8255-赖晓铮
选PB口:A1A0=01
初始化PB口,LED全灭
(M地址:机器指令) 00H:00110000 01H:10000110 02H:01010010 03H:00110000 04H:10010001 05H:01010000 06H:00110000 07H:10000010 08H:01010010 09H:00110000 0AH:11111111 0BH:01010000
keyboard
汇编助记符
注释
(M地址:机器指令)
HLT XOR R0, R1
JZ 33H
按键要保持到此断点后才能松开! 无键按下,R0是,R0=R1
有键按下,R0低四位1110/1101/1011/0111
行输出1001无键按下,跳转 L2:
23H:00000001 24H:10110001 25H:00011000 26H:00110011
重启过程(跳出“断点”)
1) 时钟信号CLK接开关MANUAL,手 动令复位信号端#RESET的状态 “101”变化,即重启完成, 跳出“断点”继续执行 。
注:跳出“断点”后,CPU进入HLT指令的 后续下一条指令的取指周期。
8255应用电路图
可编程并行IO接口芯片8255A结构图
#CS #RD #WR A1 A0 0 0 1 00 0 0 1 01 0 0 1 10 0 1 0 00 0 1 0 01 0 1 0 10 0 1 0 11 1 X X XX
微程序版“CPU+8255”电路图
初始化过程
1) 时钟信号CLK接手动开关MANUAL,启动仿真,使能复位信号 #RESET=0;
2) 手动按钮MANUAL开关“010”,然后令信号#RESET=1.
实验 并行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并行口实验年级专业班级:级专业班级学号:姓名:学号:姓名:学号:姓名:时间:2013 年11 月23 日一、实验目的、要求:1)在构成一台完整的模型机的基础上,控制真实的外围接口芯片,进行基本的8255并行口实验。
2)熟悉用微过程控制模型机的数据通路,使学生掌握系统各功能模块的基本工作原理3)培养学生单片机应用系统的设计能力;4)使学生较熟练地应用电子线路CAD工具完成单片机系统的硬件设计任务5)学习设计与调试计算机的基本步骤及方法。
6)将预习时编写的五条机器指令的微程序上机调试,通过执行机器指令,掌握各部联机运行情况,进一步建立整机概念。
二、实验仪器设备、器件及环境:仪器设备名称规格型号编号备注DVCC-C8J20112037 计算器组成原理实验系统H20110598PC00112E42三、实验方法、原理:实验模型机CPU结构[1] 运算器单元(ALU UINT)运算器单元由以下部分构成:两片74LS181构成了并-串型8位ALU;两个8位寄存器DR1和DR2为暂存工作寄存器,保存参数或中间运算结果。
ALU的S0~S3为运算控制端,Cn 为最低进位输入,M为状态控制端。
ALU的输出通过三态门74LS245连到数据总线上,由ALU-B控制该三态门。
[2] 寄存器堆单元(REG UNIT)该部分由3片8位寄存器R0、R1、R2组成,它们用来保存操作数用中间运算结构等。
三个寄存器的输入输出均以连入数据总线,由LDRi和RS-B根据机器指令进行选通。
[3] 指令寄存器单元(INS UNIT)指令寄存器单元中指令寄存器(IR)构成模型机时用它作为指令译码电路的输入,实现程序的跳转,由LDIR控制其选通。
[4] 时序电路单元(STA TE UNIT)用于输出连续或单个方波信号,来控制机器的运行。
[5] 微控器电路单元(MICRO-CONTROLLER UNIT)微控器主要用来完成接受机器指令译码器送来的代码,使控制转向相应机器指令对应的首条微代码程序,对该条机器指令的功能进行解释或执行的工作。
单片机并行IO口8255扩展实验
实验一并行I/O口8255扩展实验
一、实验目的
了解8255芯片的结构及编程方法,学习模拟交通灯控制的实现方法。
二、实验内容
用8255做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
三、实验说明
因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化情况和规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1东西绿灯通车,南北红灯。
过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。
再转状态3,南北绿灯通车,东西红灯。
过一段时间转状态4,南北绿灯灭,黄灯闪烁几次,东西仍然红灯,最后循环至状态1。
四、实验原理图
五、实验程序框图(8255.ASM)
六、实验步骤
①8255 PC0-PC7、
PB0-PB3分别接L0~L11
红、黄、绿发光二极管;
②8255CS接Y0(在仿
真插头所在扩展总线区);
③打开8255接口区中的
电源开关S1;
④调试、运行程序(内
程序,外数据);
⑤初始态为四个路
口的红灯全亮之后,东西
路口的绿灯亮南北路口的
红灯亮,东西路口方向通
车。
延时一段时间后东西
路口的绿灯熄灭,黄灯开
始闪烁。
闪烁若干次后,
东西路口红灯亮,而同时
南北路口的绿灯亮,南北
路口方向开始通车,延时
一段时间后,南北路口的
绿灯熄灭,黄灯开始闪烁。
闪烁若干次后,再切换到东西路口方向,之后重复以上过程。
.。
微机接口 8255并行接口实验报告
浙江工业大学计算机学院实验报告实验名称 8255并行接口实验姓名徐洁学号 ************班级计科1301班教师雷艳静日期 2015/12/31一、实验内容与要求1.1 实验内容8255方式0实验一:从8255端口C输入数据,再从端口A输出,即TPC-USB平台按逻辑电平开关K0~K7通过编程使端口C接收,然后再通过端口A输出到LED显示电路L0~L7,这样逻辑电平开关的值就可以通过8255芯片显示在LED显示电路上。
8255方式1输出实验:编程实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断,让CPU进行一次中断服务:依次输出01H、02H、04H、08H、10H、20H、40H、80H 使LED显示电路L0~L7依次发光,中断8次结束。
8255方式1输入实验:编程实现每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务,读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。
1.2 实验要求(1) 具有一定的汇编编程的基础,能编写一些基本语句来实现实验。
实验前根据实验流程图,写出对应代码;(2) 要了解8255A并行接口芯片内部结构和外部引脚,理解8255芯片的工作方式和程序设计方法;(3) 熟悉实验平台TPC-USB了解各个接口的名称与功能,进行实验时能快速并正确地连接好实验电路;(4) 8255方式0实验一:连接PC与TPC-USB平台,用微机实验软件运行程序,用TPC-USB平台上的逻辑电平开关与LED显示电路观察,LED显示的值与逻辑电平开关设的值对应;(5) 8255方式1输出实验:连接PC与TPC-USB平台,用微机实验软件运行程序,手按单脉冲按钮,观察LED显示电路能依次发光,按8次后,中断结束,程序结束;(6) 8255方式1输入实验:连接PC与TPC-USB平台,用微机实验软件运行程序,用TPC-USB平台的逻辑电平开关设置一个ASCII码,按一次单脉冲,屏幕就能显示该ASCII码对应的字符,变更逻辑电平的开关,按一次单脉冲,屏幕就会显示变更的ASCII码对应的字符。
8255扩展并口芯片
8255扩展并口芯片8255并口扩展实验一、实验目的熟悉并口扩展芯片8255的内部结构,学会使用8255扩展并口。
二、实验设备及器件IBMPC机一台DP-51PROC单片机综合仿真实验仪一台8255PACK 模块(选配件)一套三、实验内容通过片外总线方式访问并口扩展芯片8255,并使它的PA口闪烁点亮8个LED。
四、实验要求理解掌握并口扩展芯片8255的原理和该芯片的编程方法,学会使用并口扩展芯片8255进行8位并行接口的扩展。
五、实验步骤1.将8255PACK模块(选配件)插入PARK2区;2.使用导线连接A7区的P2_IO1、P2_IO2、P2_IO5和P2_CS分别至A2区的A8、A9、P10和A15;3.使用排线连接8255PACK模块上的J1接口(PA口)至D1区的J52接口;4.运行编写好的程序,观察8个LED的点亮情况。
六、实验预习要求认真预习本节实验内容,按照实验的要求提前做好实验准备工作,认真阅读8255的数据手册。
七、实验参考程序2.C51程序://---------------------------------------------------------//网站://---------------------------------------------------------#include#include#include#define_Nop()_nop_()#definePACXBYTE[0x7fff]#definePAXBYTE[0x7cff]typedefunsignedcharbyte;sbitRST=P1^0;voidini_cpu(void) {RST=1;_nop_();_nop_();_nop_();_nop_();_nop_();RST=0;PAC=0x80;}voiddelay(void){bytem,n;for(m=0;m<255;m++)for(n=0;n<255;n++);}voidmain(void){ini_cpu();while(1){PA=0x00;delay();PA=0xff;delay();}}//---------------------------------------------------------//网站://---------------------------------------------------------#include#include#defineucharunsignedchar#defineuintunsignedint#definePAXBYTE[0X0000]#definePBXBYTE[0x0001]#definePCXBYTE[0X0002]#defineCOMXBYTE[0X0003]ucharcodeDSY_CODE[]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XA4,0XC0,0XC0,0X80,0XC0,0X80,0XF9,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};ucharcodeDSY_index[]={0x10,0x02,0x04,0x08,0x10,0x20,0x40,0x80};voiddelayms(uintms){uchari;while(ms--)for(i=0;i<120;i++);}voidmain(){uchari,j,k;COM=0x80;while(1){{for(j=0;j<40;j++){for(k=0;k<8;k++){PB=DSY_index[k]; PA=DSY_CODE[k+i]; delayms(5);}}i=(i+1)%15;}}。
并行IO接口的扩展实验报告
并行IO接口的扩展实验报告一、实验目的1、了解并行IO接口的扩展方法2、掌握可编程接口芯片8255A的工作原理、编程方式和使用方法二、实验条件1、DOS操作系统平台2、8255A接口芯片三、实验原理1、并行IO口的扩展方法:(1)通过通用的IO扩展芯片实现(2)通过TTL、CMOS 锁存器、缓冲器芯片实现。
如74LS377、74LS273、74LS244、74LS245 等。
(3)通过串行通信口扩展并行I/O 口。
2、8255A 扩展I/O 端口:(1)8255A 具有三种基本工作方式,即方式0、方式1、方式2。
各端口的工作方式及输入输出方向都由方式控制字设定(通过写入控制寄存器)。
8255A 的控制字有方式控制字和C 口置位/复位控制字两种。
3、8255A 的工作方式:(1)方式0 是一种基本I/O 方式。
在这种工作方式下,三个端口都可由程序设定为输入或输出,这种方式不使用联络信号,其基本功能为:a. 两个8 位端口(A、B) 和两个4 位端口(C)。
b. 任一个端口可以作为输入或输出。
c. 输出锁存,输入不锁存。
d. 在方式0 时,各端口都可以作为数据端口,CPU 用简单的输入或输出指令来进行读或写。
(2)方式1 是一种选通I/O 方式。
在这种方式下,端口A 和B 可作为数据端口,但C 口的某口的其它位仍可工作于方式0。
方式1 的基本功能为:a. 用作一个或两个选通端口。
b. 每个选通端口包含有:8 位数据瑞口,3 条控制线,提供中断逻辑。
c. 任一端口可输入或输出。
d. 若只有一个端口工作于方式1,余下的13 位可以工作于方式0。
e. 若两个端口工作于方式1,C 口余下2 位可以工作于方式0。
(3)方式2 是一种双向I/O 方式,只有端口 A 具有这种工作方式,其基本功能为:a. 一个8 位双向数据端口(A)和一个5 位控制端口(C)。
b. 输入和输出锁存。
c. 5 位控制端口用作端口A 的状态和控制信息。
实验二_8255并行接口应用实验
实验二8255并行接口应用实验一.实验目的1. 掌握8255工作方式的编程设计。
2. 8255与外部设备进行连接的应用。
二.实验设备与材料:TDN86/88教学实验系统一台,扁平插线若干。
三.实验原理:INTEL8255是一种通用的可编程并行I/O接口芯片,是专为INTEL公司的微处理器设计的,也可用于其它系列的微型机系统中。
利用8086汇编指令系统,编制初始化程序,可以变更8255 的工作方式,通用性强,使用灵活。
8255具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位。
可与外设并行进行数据交换。
A口和B口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换。
8255能与许多外部设备连接,例如:键盘、显示器、打印机等。
(a)工作方式控制字 (b)C口按位置位/复位控制字四.实验内容及步骤1.8255的一般输入输、出方式本系统中的8255芯片8255的数据线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出,供8255实验使用,其线路如图1所示。
图1 8255接口实验中端口地址如表1所示表1按图所示实验线路,8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。
用一组开关信号接入端口B, 端口A输出线接至一组发光二极管上,通过对8255编程来实现输入输出功能。
实验步骤●图2 8255输入输出方式实验接线图注:圆圈处是要求接的连线。
(1)按图2接线。
用扁平线(8头)分别插在8255的A口和发光二极管的插针上。
用扁平线分别插在8255的B口和拨动开关的插针上。
(2)输入源程序,汇编、连接后装入系统。
●参考程序1STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AL,82H ;设8255方式字10000010 A位输出,B口位输入。
OUT 63H,AL A1: IN AL,61HOUT 60H,AL JMP A1CODE ENDS END START(3)执行程序后,拨动开关组K0-K7,观察发光二极管LED0-LED7变化,它应是与开关组K0-K7的值是一一对应的变化。
实验九、8255可编程并行IO扩展接口实验
实验九、8255可编程并行I/O扩展接口实验一、实验目的1.熟悉8255并行接口芯片的基本工作原理及应用2.掌握单片机与8255的接口电路设计和编程二、实验设备1.仿真器2.8255可编程并行I/O扩展接口模块3.单片机最小系统模块4.发光二极管阵列模块三、实验要求连接单片机最小系统、8255扩展接口、数码管动态扫描显示模块、矩阵式键盘模块组成的电路,要求在键盘按下时,8位LED动态显示器上最低位显示相应的字符,以前的各位字符向高位推进1位。
请参看实验二的相关内容。
四、实验原理8255是一个具有3个8位的8位并行口,并且可编程为多种工作模式的接口芯片。
由于每个端口上具有输入/输出的缓冲和锁存功能,因此可用于扩展单片机有限的I/O口,作为单片机和外围器件的中间接口电路。
3.1引脚说明8255共40个引脚,采用了双列直插的封装,主要引脚功能如下:◆D7—D0:三态双向数据线,与单片机数据总线连接;◆CS:片选信号,低电平有效;◆RD:读出信号线,低电平有效;◆WR:写入信号线,低电平有效;◆PA7—PA0:A口输入/输出线;◆PB7—PB0:B口输入/输出线;◆PC7—PC0:C口输入/输出线;◆RESET:芯片复位信号线;◆A1—A0:地址线,用来指定8255内部端口。
3.2内部结构和工作方式(1)端口A、B、C端口A为8位数据传送,数据输入或输出时均受到锁存。
端口B为8位数据传送,数据输入时不受锁存,而数据输出时受到锁存。
端口C 为8位数据传送,数据输入时不受锁存,而数据输出时受到锁存。
(2)8255接口工作状态选择表9-1(3)8255的基本工作方式8255可编程并行I/O 扩展芯片是通过在控制端口中设置控制字来决定它的工作方式的。
8255有以下三种基本工作方式:⏹ 方式0——基本输入/输出方式。
⏹ 方式1——选通输入/输出方式。
⏹ 方式2——双向传送方式。
8255A 的端口A 可以工作在三种工作方式中的任何一种,端口B 只能工作在方式0或方式1,端口C 则常常配合端口A 和端口B 工作,为这两个端口的输入/输出传送提供控制信号和状态信号。
8255接口实验报告
8255接口实验报告8255接口实验报告引言:8255接口是一种常见的数字输入输出设备,它可以连接到计算机的并行接口上。
本实验旨在通过使用8255接口,实现计算机与外部设备之间的数据传输与控制。
一、实验背景计算机与外部设备之间的数据交互是计算机系统中非常重要的一部分。
而8255接口作为一种常见的数字输入输出设备,广泛应用于各种工业控制和数据采集系统中。
了解和掌握8255接口的工作原理和使用方法,对于我们深入理解计算机与外部设备之间的数据传输与控制有着重要的意义。
二、实验目的1. 了解8255接口的基本工作原理;2. 掌握8255接口的连接方法和操作步骤;3. 实现计算机与外部设备之间的数据传输与控制。
三、实验过程1. 连接8255接口首先,将8255接口与计算机的并行接口连接起来。
确保连接的稳固和正确。
2. 编写程序使用C语言编写程序,通过并行接口与8255接口进行通信。
程序中需要包含相关的头文件和函数库,以实现对8255接口的控制和数据传输。
3. 实现数据输入通过编写程序,实现从外部设备向计算机输入数据的功能。
可以通过连接外部开关或传感器等设备,将数据输入到计算机中。
4. 实现数据输出通过编写程序,实现从计算机向外部设备输出数据的功能。
可以通过连接LED灯或其他输出设备,将计算机中的数据输出到外部设备上。
5. 运行程序将编写好的程序加载到计算机中,并运行。
观察计算机与外部设备之间的数据传输和控制情况,检查是否实现了预期的功能。
四、实验结果与分析通过实验,我们成功地实现了计算机与外部设备之间的数据传输与控制。
通过编写程序,我们可以将外部设备上的数据输入到计算机中,并将计算机中的数据输出到外部设备上。
通过观察实验结果,我们可以判断数据传输和控制是否正常。
如果数据传输和控制出现异常,我们可以通过调试程序或检查硬件连接来解决问题。
五、实验总结通过本次实验,我们深入了解了8255接口的工作原理和使用方法。
单片机设计教案-项目6 任务2:并行IO扩展和8255扩展IO口
所谓可编程的接口芯片是指其功能可由微处理机的指令来加以改变的接口芯片, 利用编程的方法,可以使一个接口芯片执行不同的接口功能。目前,各生产厂家 已提供了很多系列的可编程接口,MCS-51单片机常用的两种接口芯片是8255 以及8155,本书主要介绍这两种芯片在51单片机中的使用。
8255和MCS-51相连,可以为外设提供三个8位的I/O端口:A口、B口 和C口,三个端口的功能完全由编程来决定。
单片机应用技术
1. 8255的内部结构和引脚排列
图6.17为8255的内部结构和引脚图。
A组
控制
34 D0
33 D1
32 D2
31 30
D3 D4
29 D5
28 D6
27 D7
PA0 4
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
8031
WR P2.0 RD
≥1
≥1
D0 D1 D2 D3 D4 D5 D6
D7
CP
74LS 273
Q0 LED0 Q1 LED1 Q2 LED2 Q3 LED3 Q4 LED4 Q5 LED5 Q6 LED6 Q7 LED7
输入控制信号由P2.0和相“或”后形成。当二者都为0时,74LS244的控 制端有效,选通74LS244,外部的信息输入到P0数据总线上。当与74LS244相 连的按键都没有按下时,输入全为1,若按下某键,则所在线输入为0。
单片机应用技术
单片机应用技术
输出控制信号由P2.0和相“或”后形成。当二者都为0后,74LS273的控制端有 效,选通74LS273,P0上的数据锁存到74LS273的输出端,控制发光二极管LED, 当某线输出为0时,相应的LED发光。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#define COM XBYTE[0x0003] //定义8255B控制寄存器地址
//待显示字符队列编码
uchar code DSY_CODE_Queue[ ]=
{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
// 6:0x82
// 7:0xf8
// 8:0x80
// 9:0x90
// A:0x88
// B:0x83
// C:0xc6
// D:0xa1
// E:0x86
// F:0x8e
// DOT:0x7f
//数码管选通
uchar DSY_Index[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
// 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};
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
while(1)
{
for (j=0;j<40;j++) //刷新一段时间,使显示内容不会滚动过快
{
for (k=0;k<8;k++) //在8只数码管上动态显示各字符
{
PB= DSY_Index[k]; //位码
PA= DSY_CODE_Queue[k+i]; //段码
DelayMS (1);
}
}
//刷新显示一段时间后递增1,形成滚动效果,最大索引为14
DelayMS (1);
}
}
//刷新显示一段时间后递增1,形成滚动效果,最大索引为14
i= (i+1)%15;
}
}
/*******************************************
实验33:用8255实现接口扩展
******************************************/
#include <reg51.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
//PA,PB,PC端口及命令端口地址定义
#define PA XBYTE[0x0000]//定义8255A地址
#define PB XBYTE[0x0001]//定义8255B地址
#define PC XBYTE[0x0002]//定义8255B地址
//延时
void DelayMS (uint ms)
{uchar i;
while(ms--) for (i=0;i<120;i++);
}
/********主程序********/
void main( )
{
uchar i,j,k;
//8255工作方式选择:PA,PB均输出,工作方式0
COM=0x80;
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
uchar code DSY_CODE_Queue_TIME[ ]=//时间段码
{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xcf, 0x82, 0x7f, 0xa4, 0xb0,
while(1)
{
for (j=0;j<40;j++) //刷新一段时间,使显示内容不会滚动过快
{
for (k=0;k<8;k++) //在8只数码管上动态显示各字符
{
PA= DSY_Index[k];//位码
PC= DSY_CODE_Queue_DAY[k+i];//日期段码
PB= DSY_CODE_Queue_TIME[k+i]; //时间段码
i= (i+1)%15;
}
}
2、用Proteus软件仿真
经过Keil软件编译通过后,可利用Proteus软件仿真。在Proteus ISIS编辑环境中绘制仿真电路图。开配套实验3仿真原理图文件“ex3.DSN”,将编译好的“ex3.hex”文件载入AT89C51,启动仿真。
五、思考题
本实验中仅使用了PA、PB端口,完成本次实验调试后,再加一组相同的8位数码管,用PA控制两组数码管,PB控制第一组数码管,PC控制第二组数码管,在两组数码管上同时显示出年月日和时分秒等信息。
实验三并行I/O口8255扩展
一、实验目的
1、了解8255A芯片的结构以及编程方法
2、掌握通过8255A并行口读取开关数据的方法
二、实验说明
本次实验用通过8255扩展接口,仅通过P0端口控制8只集成式7段数码管的显示控制。8255A的PA、PB端口分别连接8位数码管的段码和位码,程序控制数码管滚动显示一串数字。
0xA4,0xC0,0xC0,0x80,0xC0,0x80,0xF9,0x80,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
//共阳极的7段集成式数码管对应编码
// 0:0xc0
// 1:0xcf
// 2:0xa4
// 3:0xb0
// 4:0x99
// 5:0x92
#include <reg51.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
//PA,PB,PC端口及命令端口地址定义
#define PA XBYTE[0x0000] //定义8255A地址
#define PB XBYTE[0x0001] //定义8255B地址
//延时
void DelayMS (uint ms)
{uchar i;
while(ms--) for (i=0;i<120;i++);
}
/********主程序********/
void main( )
{
uchar i,j,k;
//8255工作方式选择:PA,PB均输出,工作方式0
COM=0x80;
三、实验线路图
四、实验步骤
1、先建立文件夹“ex3”,然后建立“ex3”工程项目,最后建立源程序文件“ex3.c”,输入如下源程序;
/*******************************************
实验3:用8255实现接口扩展
******************************************/
#define COM XBYTE[0x0003]//定义8255B控制寄存器地址
//待显示字符队列编码
uchar code DSY_CODE_Queue_DAY[ ]=//日期段码
{0xff, 0xff, 0xff,
0xA4, 0xC0, 0xcf, 0xa4, 0xbf, 0xcf, 0xcf, 0xbf, 0xc0, 0x80,