51单片机8255A扩展IO口解析
- 格式:ppt
- 大小:1.23 MB
- 文档页数:23
单片机用8255A扩展I/O口图中,P0口为地址/数据复用口,数据通过P0口直接传送,地址的低8位通过74LS373锁存,系统的读/写控制及复位信号与8255A的读/写及控制端对应相连,系统地址总线的A1、A0(P0。
1、P0.0)直接与8255A的地址线A1、A0对应相连,利用高8位地址线的P2。
7作为选通信号,直接与8255A的片选端相连,A口接8个发光二极管作为输出,B口接1只8位拨码开关作为输入,C口空置.8255A地址设置表单片机引脚P27 P26 P25 P24 P23 P22 P21 P20 P07 P06 P05 P04 P03 P02 P01 P00 8255A引脚CS A1 A0 A口0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 B口0 1 1 1 1 1 1 1 1 1 1 1 1 1 O 1 控制口0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 十六进制值7 F F X 8255A各端口的地址如下:A口地址:7FFCH;B口地址:7FFDH;C口地址:7FFEH;控制口地址:7FFFH.控制字设置D7=1,方式控制,D6、D5决定控制方式,D4决定A口,D1决定B口。
8255A控制字:82H。
用C语言编写的控制程序如下:#include〈reg51.h>#include〈absacc。
h> //扩展地址解析头文件#define PAC XBYTE[0x7FFF]//控制地址定义#define PA XBYTE[0x7FFC] //A口地址定义#define PB XBYTE[0x7FFD]//B口地址定义void delay(void) //延时子程序{unsigned int m,n;for(m=0;m<500;m++)for(n=0;n〈500;n++);}void main(void){unsigned char n;//数据存储变量PAC=0x82;//设控制字while(1){n=PB;//从B口读数据delay();PA=n; //在A口输出数据delay();}}控制功能:B口上预置的拨码开关状态会由A口上发光二极管的显示反映出来。
单片机io口扩展技术详解
单片机如何扩展IO口?
首先我们先讲讲为什幺要扩展IO口。
在我们使用51单片机的时候,有时候会出现IO口不够用的情况。
比如键盘!这个时候IO口的资源就十分有限了。
按键是我们常用的器件,做某些东西的时候又不能缺少按键。
如果一个按键对应一个IO口,那幺可想而知,按键所占的IO口的数量是很大的。
单片机IO口的资源是有限的,因此我们要采取一些方法来扩展单片机的IO 口,控制按键所占的单片机IO口。
下面有几种方法可以扩展单片机的IO口:
1. 通过数据缓存器、锁存器来扩展单片机IO口。
这里采用74HC164来扩展单片机IO口。
单片机并行I/O口的扩展方法摘要:由于在MCS-51单片机开发中P0口经常作为地址/数据复用总线使用,P2口作为高8位地址线使用,P3口用作第二功能(定时计数器、中断等)使用,所以对于51单片机的4个I/O口,其可以作为基本并行输入/输出口使用的只有P1口。
因此在单片机的开发中,对于并行I/O口的扩展十分重要,主要分析3种扩展并行I/O口的方法。
关键词: MCS-51单片机; 并行I/O口; 扩展MCS-51单片机有4个并行的I/O口,分别为P0口、P1口、P2口和P3口,4个并行I/O 口在单片机的使用中非常重要,可以说对单片机的使用就是对这4个口的使用。
这4个并行I/O口除了作为基本的并行I/O口使用,还常作为其他功能使用,如P0口经常作为地址/数据复用总线使用[1], P2口作为高8位地址线使用,P3口用作第二功能(定时计数器、中断等等)使用。
这样,单片机只有P1口作为基本的并行I/O口使用,如果在单片机的使用中对并行I/O口需求较多,对于并行I/O口的扩展就非常重要了。
下面通过具体的实例(8位流水灯设计)来给出几种不同的并行I/O口扩展方法。
为了更好地说明以下几种不同的并行I/O口扩展方法,假设利用单片机实现流水灯的设计。
采用单片机的P1口设计流水灯,电路。
由图1可知,8只LED直接连接在单片机的P1口上,通过对单片机进行编程即可以实现8只发光二极管产生流水灯。
1 使用单片机的串行口扩展并行I/O口单片机有一个全双工的串行口[2],这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为移位寄存器使用。
当单片机的串行口工作在模式0时,若外接一个串入/并出的移位寄存器(74LS164),就可以扩展一个8 bit并行输出口;若外接一个并入/串出的移位寄存器(74LS165),就可以扩展一个8 bit并行输入口。
,单片机外接一个串入/并出的移位寄存器(74LS164),这样就可以扩展8 bit并行输出口。