单片机:并行接口
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 呈现低电平。

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"。
- 内部有上拉电阻

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