单片机:并行接口原理与应用

单片机:并行接口

    • [1. 引言](#1. 引言)
    • [2. 并行接口](#2. 并行接口)
      • [2.1 P0口](#2.1 P0口)
      • [2.2 P1口](#2.2 P1口)
      • [2.3 P2口](#2.3 P2口)
      • [2.4 P3口](#2.4 P3口)
    • [3. 并行接口输出实例](#3. 并行接口输出实例)
    • [4. 总结](#4. 总结)

1. 引言

51系列单片机有4个8位的并行输入/输出接口,即P0、P1、P2、P3。这4个接口即可以并行输入或输出8位数据,又可以按位方式使用,即每一位均能独立作为输入输出接口使用。

2. 并行接口

2.1 P0口

接口功能:

  • 地址/数据分时复用接口 ,作为地址传输是,传输DPTR的低8位地址
  • 通用的输入/输出接口

注意:

作通用I/O接口时。

  • 输出时,须外接上拉电阻
  • 输入时,须先向输出锁存器写"1"

情况一:

控制 = 1;地址/数据 =1

MUX转换开关联通1

3号与门输出1,V2场效应管输入1,V2 场效应管联通。

4号非门输出0,V1场效应管输入0,V1场效应管截止。

P0.X 呈现高电平。

情况二:

控制 = 1;地址/数据 =0

MUX转换开关联通1

3号与门输出0,V2场效应管输入0,V2 场效应管截止。

4号非门输出1,V1场效应管输入1,V1场效应管联通。

P0.X 呈现低电平。

情况三:

控制 = 0;地址/数据 =1,内部总线输出1

MUX转换开关联通0

3号与门输出0,V2 场效应管输入0,V2 场效应管截止。

D输出1,Q非出口0,V1场效应管输入0,V2 场效应管截止。

P0.X 未知。

P0必须要外接上拉电阻,呈现高电平。

情况四:

控制 = 0;地址/数据 =1,内部总线输出0

MUX转换开关联通0

3号与门输出0,V2 场效应管输入0,V2 场效应管截止。

D输出0,Q非出口1,V1场效应管输入1,V2 场效应管联通。

P0.X 呈现低电平。

P0口的一位结构

2.2 P1口

接口功能:

无第二功能,纯通用I/O口

  • 通用的输入/输出接口

注意:

作通用I/O接口时。

  • 输入时,须先向输出锁存器写"1"
  • 内部有上拉电阻

2.3 P2口

接口功能:

  • 通用的输入/输出接口
  • 高8位地址线,传输地址时,传输DPTR的高8位地址

注意:

作通用I/O接口时。

  • 输入时,须先向输出锁存器写"1"
  • 内部有上拉电阻

2.4 P3口

接口功能:

  • 通用的输入/输出接口
  • 第二功能见下表
P3口的引脚 第二功能
P3.0 RXD 串行口输入端
P3.1 TXD 串行口输出端
P3.2 外部中断0请求输入端,低电平有效
P3.3 外部中断1请求输入端,低电平有效
P3.4 定时/计数器0外部计数脉冲输入端
P3.5 定时/计数器1外部计数脉冲输入端
P3.6 ---WR 外部数据存储器写信号,低电平有效
P3.7 ---RD 外部数据存储器读信号,低电平有效

注意:

作通用I/O接口时。

  • 输入时,须先向输出锁存器写"1"
  • 内部有上拉电阻
P3

3. 并行接口输出实例

3.1【例1】

通过51系列单片机的P0口连接8个发光二极管,输出"1"时点亮对应的发光二极管。

c 复制代码
# include <reg51.h>

void main (void)
{	
	P0=0x0f;
	while(1);
}

运行效果

运行效果

3.2【例2】

通过51系列单片机的P2口连接8个发光二极管,低电平驱动。输出"0"时点亮对应的发光二极管,编程控制8个发光二极管显示流水灯效果。

c 复制代码
# include <reg52.h>
# include <intrins.h>
# define uchar unsigned char
# define uint  unsigned int

void mDelay(uint Delay)
{
	uint i;
	for(;Delay > 0;Delay--)
	{
		for(i=0;i<110;i++);
	}
} 

void main(void)
{
	unsigned char a,i;
	while(1){
		a = 0xfe;
		for(i=0;i<8;i++)
		{
			P2 = a;
			mDelay(1000);
			a = _crol_(a,1);
		}
	}
}

运行效果

4. 总结

并行接口作为单片机与外界通信的基石之一,以其简单、高速的特点在嵌入式系统中占有一之地。理解其工作原理和时序是进行底层硬件驱动开发的基本功。