单片机原理与接口技术第4章并行输入输出接口
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51系列单片机的并行输入/输出接口
P0口有两个用途,一是作为普通I/O口使用, 另一用途是作为地址/数据总线使用。图4-1 所示的是P0口的一位结构图。它包含两个三 态输入缓冲器、一个输出锁存器以及输出驱 动电路、输出控制电路。输出驱动电路由两 只场效应管V1和V2组成,其工作状态受输出 控制电路的控制。输出控制电路包括与门、 反相器和多路模拟开关MUX。
sbit D2=P1^1; I/O口
//设置控制绿灯
void delay1ms(uint t) 数
//定义延时函
{ uint i,j;
for(i=0;i<t;i++)
for( j=0;j<120;j++);
void main()
{uchar i;
P20=1; 1
//P2.0作输入先置
while(1)
{ if(P20==0) 红灯闪烁3次
// 有障碍物,
{ for(i=0;i<3;i++)
{D1=0;delay1ms(200);
D1=1;delay1ms(200);
}
}
if(P20==1) 次
//无障碍物,绿灯闪烁3
{ for(i=0;i<3;i++)
{D2=0;delay1ms(200);
#include <reg51.h> #include <intrins.h>
#define uint unsigned int #define uchar unsigned char
void delay(uint t)
{ uint i,j;
for(i=0;i<t;i++)
for( j=0;j<120;j++);
障碍物检测
1.目的与要求
通过用单片机控制障碍物检测传感器来控制 2个LED发光二极管实现两种不同的亮灯现象, 当检测到前方有障碍物时,传感器输出低电 平,红灯闪烁3次;当检测到前方无障碍物时, 传感器输出高电平,绿灯闪烁3次;掌握单片 机并行I/O口作输入/输出口的使用方法。
2.电路设计
电路如图4-6所示。传感器的输出接单片机的 P2.0引脚,P1.0和P1.1分别接红灯和绿灯
P3口能用作通用I/O口,同时每一引脚还有 第二功能。P3口的一位结构如图所示。
流水灯设计 1.目的与要求 通过用单片机P1口控制8个LED发光二极管点亮 流水灯系统的设计与制作,掌握单片机并行I/O 口作输出口的使用方法。 2.电路设计 流水灯电路如图4-5所示。P1口接8个共阳极的 发光二极管,RN1为排阻8*300Ω,起分压限流 作用。I/O口输出低电平时,对应的发光二极管 点亮,I/O口输出高电平时,对应的发光二极管 灭。
源程序设计如下:
#include <reg51.h #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint t) { uint i,j;
for(i=0;i<t;i++) for( j=0;j<120;j++); }
}
void main()
{ uchar k,m;
while(1) { k=0xff; for(m=0;m<9;m++)
{ P1=k; delay(1000); k=k<<1; }
k=0x00; for(m=0;m<9;m++)
{ P1=k; delay(1000); k=(k>>1)|0x80; } } }
P1口
P1口只用作通用I/O口,所以它没有转换开关, 其位结构图如图4-2所示。P1口的驱动部分 与P0口不同,P1口内部有上拉电阻。当P1口 输出高电平时,可以向外提供拉电流负载, 不必再接上拉电阻,当输入数据时,应先向 该位的锁存器写“1”,使场效应管截止。
P2口有两种用途:一是用作通用I/O口,二 是作为高8位地址总线,其位结构如图所示
Biblioteka Baidu
D2=1;delay1ms(200);
}
}
for(i=0;i<20;i++) 检测
//延时2s后,进行下轮
delay1ms(100);
}
}
本章小结
1. 51系列单片机的4个I/O口都可以作输入输 出口,但大多数应用系统中,P2口用于输出 高8位地址,P0口接锁存器输出低8位地址, P0口还作数据口使用。
2.51系列单片机的4个I/O口作输入口使用 时,需向端口锁存器相应位写1,使场效应管 截止,保证从引脚上正确读入数据。
void main() { uchar k;
k=0xfe; while(1) { P1=k;
delay(1000); k=_crol_(k,1);
} }
现象二源程序 首先8个灯全灭,然后点亮连接到P1.0引脚的
发光二极管,1个灯亮,延时一段时间后,再点 亮连接到P1.0和P1.1引脚的发光二极管,2个灯 亮,如此依次点亮每个发光二极管,直到点亮最 后一个连接到P1.7引脚的发光二极管,8个灯全 亮。然后依次熄灭,即先熄灭连接到P1.7引脚的 发光二级管,1个灯灭;再熄灭连接到P1.6引脚 的发光二级管,2个灯灭;依次增加,最后8个 灯全灭 。再从头开始,循环不止,产生流水灯 的动态效果
3.流程图
#include <reg51.h>
//包含
reg51.h头文件,定义单片机特殊功能寄存器
#define uchar unsigned char //宏定义 无符号字符数据类型
sbit P20=P2^0; 出口
//定义传感器输
sbit D1=P1^0; I/O口
//设置控制红灯
P0口有两个用途,一是作为普通I/O口使用, 另一用途是作为地址/数据总线使用。图4-1 所示的是P0口的一位结构图。它包含两个三 态输入缓冲器、一个输出锁存器以及输出驱 动电路、输出控制电路。输出驱动电路由两 只场效应管V1和V2组成,其工作状态受输出 控制电路的控制。输出控制电路包括与门、 反相器和多路模拟开关MUX。
sbit D2=P1^1; I/O口
//设置控制绿灯
void delay1ms(uint t) 数
//定义延时函
{ uint i,j;
for(i=0;i<t;i++)
for( j=0;j<120;j++);
void main()
{uchar i;
P20=1; 1
//P2.0作输入先置
while(1)
{ if(P20==0) 红灯闪烁3次
// 有障碍物,
{ for(i=0;i<3;i++)
{D1=0;delay1ms(200);
D1=1;delay1ms(200);
}
}
if(P20==1) 次
//无障碍物,绿灯闪烁3
{ for(i=0;i<3;i++)
{D2=0;delay1ms(200);
#include <reg51.h> #include <intrins.h>
#define uint unsigned int #define uchar unsigned char
void delay(uint t)
{ uint i,j;
for(i=0;i<t;i++)
for( j=0;j<120;j++);
障碍物检测
1.目的与要求
通过用单片机控制障碍物检测传感器来控制 2个LED发光二极管实现两种不同的亮灯现象, 当检测到前方有障碍物时,传感器输出低电 平,红灯闪烁3次;当检测到前方无障碍物时, 传感器输出高电平,绿灯闪烁3次;掌握单片 机并行I/O口作输入/输出口的使用方法。
2.电路设计
电路如图4-6所示。传感器的输出接单片机的 P2.0引脚,P1.0和P1.1分别接红灯和绿灯
P3口能用作通用I/O口,同时每一引脚还有 第二功能。P3口的一位结构如图所示。
流水灯设计 1.目的与要求 通过用单片机P1口控制8个LED发光二极管点亮 流水灯系统的设计与制作,掌握单片机并行I/O 口作输出口的使用方法。 2.电路设计 流水灯电路如图4-5所示。P1口接8个共阳极的 发光二极管,RN1为排阻8*300Ω,起分压限流 作用。I/O口输出低电平时,对应的发光二极管 点亮,I/O口输出高电平时,对应的发光二极管 灭。
源程序设计如下:
#include <reg51.h #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint t) { uint i,j;
for(i=0;i<t;i++) for( j=0;j<120;j++); }
}
void main()
{ uchar k,m;
while(1) { k=0xff; for(m=0;m<9;m++)
{ P1=k; delay(1000); k=k<<1; }
k=0x00; for(m=0;m<9;m++)
{ P1=k; delay(1000); k=(k>>1)|0x80; } } }
P1口
P1口只用作通用I/O口,所以它没有转换开关, 其位结构图如图4-2所示。P1口的驱动部分 与P0口不同,P1口内部有上拉电阻。当P1口 输出高电平时,可以向外提供拉电流负载, 不必再接上拉电阻,当输入数据时,应先向 该位的锁存器写“1”,使场效应管截止。
P2口有两种用途:一是用作通用I/O口,二 是作为高8位地址总线,其位结构如图所示
Biblioteka Baidu
D2=1;delay1ms(200);
}
}
for(i=0;i<20;i++) 检测
//延时2s后,进行下轮
delay1ms(100);
}
}
本章小结
1. 51系列单片机的4个I/O口都可以作输入输 出口,但大多数应用系统中,P2口用于输出 高8位地址,P0口接锁存器输出低8位地址, P0口还作数据口使用。
2.51系列单片机的4个I/O口作输入口使用 时,需向端口锁存器相应位写1,使场效应管 截止,保证从引脚上正确读入数据。
void main() { uchar k;
k=0xfe; while(1) { P1=k;
delay(1000); k=_crol_(k,1);
} }
现象二源程序 首先8个灯全灭,然后点亮连接到P1.0引脚的
发光二极管,1个灯亮,延时一段时间后,再点 亮连接到P1.0和P1.1引脚的发光二极管,2个灯 亮,如此依次点亮每个发光二极管,直到点亮最 后一个连接到P1.7引脚的发光二极管,8个灯全 亮。然后依次熄灭,即先熄灭连接到P1.7引脚的 发光二级管,1个灯灭;再熄灭连接到P1.6引脚 的发光二级管,2个灯灭;依次增加,最后8个 灯全灭 。再从头开始,循环不止,产生流水灯 的动态效果
3.流程图
#include <reg51.h>
//包含
reg51.h头文件,定义单片机特殊功能寄存器
#define uchar unsigned char //宏定义 无符号字符数据类型
sbit P20=P2^0; 出口
//定义传感器输
sbit D1=P1^0; I/O口
//设置控制红灯