单片机输入输出接口
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P1.0 P1.1 P1.2 P1.3
1K×4
P1.4 P1.5
P1.6 P1.7 EA
330×4 +5V
例3.用P1.0输出1KHz的音频信号驱动扬 声器,作报警信号,P1.7接一开关进行控制, 当开关合上响报警信号,当开关断开告警信号 停止,编出程序。
5.3 I/O口设计LED数码显示器和键盘 LED显示器结构与原理 LED显示器是由发光二极管显示字段的显 示器件。在单片机应用系统中通常使用的是 七段LED,这种显示器有共阴极与共阳极两 种。
LED灯的判别
例如图5.5是接有五个共阴极数码管的动态 显示接口电路,用74LS373接成直通的方式作 驱动 电路,阴极用非门74LS04反相门驱动, 字形选择由P1口提供,位选择由P3口控制。
当P3.0~P3.4轮流输出1时,五个数码管 轮流显示。P1.7接开关,当开关打向位置“1” 时, 显示“12345”字样,当开关打向“2”时, 显示“HELLO”字样,程序清单如下:
P3口
P3.X
图1-7 P3口的位结构
P3口是一个双功能I/O口 若不设定自动处于第一功能 1. 普通I/O口 作普通I/O口时,选择输出功能端为高电平,场 效应管受输出锁存器的控制,是一个准双向I/O口。 2. 第二功能口 P3口的每一位都具有第二功能。
P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
图1-12 8031,8051,8751芯片管脚图
MCS-51系列单片机有四组8位并行I/O口, 记作P0、P1、P2和P3。每组I/O口内部都有 8位数据输入缓冲器、8位数据输出锁存器及 数据输出驱动等电路。 四组并行I/O端口即可以按字节操作,又可以 按位操作。当系统没有扩展外部器件时,I/O 端口用作双向输入输出口;当系统作外部扩展 时,使用P0、P2口作系统地址和数据总线、 P3口有第二功能,与MCS-51的内部功能器 件配合使用。
用C语言完成上述功能编程 #include<reg51.h> #define uint unsigned int #define uchar unsigned char sbit P17=P1^7; main( ) { uchar code tab1[5]= {0x86,0xdb,0xcf,0xe6,0xed}; /*“1~5”的字 形码, 因P1.7接的开关,最高位送“1”*/ uchar code tab2[5]={0xf8,0xf9,0xb8,0xb8,0xbf}; /*“HELLO”的段码, 最高位送 “1”*/
2.
地址/数据复用总线 当单片机系统进行存储器、I/O口或其它功能 扩展时,P0口要用作系统总线。在P0口上分时输 出目标地址的低8位和要交换的字节数据。 用作地址/数据复用总线时,多路开关的控制 信号为1,输出与上方的地址/数据线反向器的输出 相连,由于控制信号为1,上面的场效应管受地址/ 数据信号控制,与下面的场效应管成为推挽输出 形态。外部不再需要上拉电阻,P0口为真正的双 向I/O口。 操作过程:假如要读外部程序存储器中 0x1245单元的指令,首先从P0口输出45H,P2口 输出12H,控制器输出ALE地址锁存信号,再发出 指令输出允许信号PSEN,外部程序存储器 0x1245单元的内容出现在总线上,由CPU读入程 序指令寄存器,译码执行。
RD
WR
T1
T0
INT1 INT0
TxD
RxD
归纳四个并行口使用的注意事项如下: 1。如果单片机内部有程序存贮器,不需要扩展外 部存贮器和I/O接口,单片机的四个口均可作 I/O口使用。 2。四个口在作输入口使用时,均应先对其写 “1”,以避免误读。 3。P0口作I/O口使用时应外接10K的上拉电阻,其 它口则可不必。 4。P2可某几根线作地址使用时,剩下的线不能作 I/O口线使用。 5。P3口的某些口线作第二功能时,剩下的口线可 以单独作I/O口线使用。
单片机原理与应用
5.1 P0-P3端口功能与内部结构
输入输出接口的作用 数据缓冲功能 信号转换功能 接受和执行CPU命令的功能
51单片机具有的输入输出接口: P0、P1、P2、P3 4个8位双向I/O口
P0.0~P0.7 Vcc Vss
P2.0~P2.7
P0驱动器
P2驱动器
RAM 地址 寄存器
RAM
七段显示器与单片机接口:只要将一个8位并行输 出口与显示器的发光二极管引脚相连即可。8位并行输 出口输出不同的字节数据即可获得不同的数字或字符, 如下表所示。通常将控制发光二极管的8位字节数据称 为段选码。
显示字符 共阴段选码 共阳段选码 显示字符 共阴段选码 共阳段选码
0 1 2 3 4 5 6 7
P3驱动器 P3.0~P3.7
图1-1 MCS-51总体结构框图
8051单片机的引脚
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET P3.0/RxD P3.1/TxD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD XTAL2 XTAL1 GND
5.1.1 端口功能
P0口:地址(低8位)/数据时分复用口 普通I/O口
P1口:普通I/O口
P2口:地址(高8位) 普通I/O口
1. 2.
P3口是一个双功能I/O口 普通I/O口 第二功能口 P3口的每一位都具有第二功能。
P3.6 WR P3.5 T1 P3.4 T0 P3.3 P3.2 P3.1 TxD P3.0 RxD
P3.7 RD
INT1 INT0
P3口的第二功能大多与其内部功能部件有关, RD、WR是外部数据存储器的写、读控制信号。
8XX51单片机扩展程序存储器2732的电路图见图
P0口
图1-5 P0口的位结构
P0口有两种用途: 1. 普通I/O端口 当单片机系统没有扩展外部芯片时,P0口 用作双向输入输出端口。这时图中多路开关的 控制信号为低电平,输出与锁存器的反向输出 端相连,同时上面的场效应管由于与门输出为 低电平而截止。 ① 作输出时:输出0时,将0输出到内部总线 上,在写锁存器信号控制下写入锁存器,锁存 器的反向输出端输出1,下面的场效应管导通, 输出引脚成低电平。输出1时,下面的场效应管 截止,上面的场效应管也是截止状态,输出引 脚成高阻态,不是希望的1状态,这时,必须外 加上拉电阻
uchar i; uint j; while(1) { P3=0x01; for(i=0;i<5;i++) { if(P17==1)P1=tab1[i]; else P1=tab2[i]; P3<<=1; for(j=0;j<=25000;j++); }}} 课本习题5.8
D6
D5
D4
D3
D2
D1
D0
I/O (2)
图 八位LED动态显示器电路
由于所有位的段选码皆由一个I/O控制,因此, 在每个瞬间,8位LED只可能显示相同的字符。要想 每位显示不同的字符,必须采用动态扫描显示方式。 即在每一瞬间只使某一位显示相应字符。在此瞬间, 位选控制I/O口在该显示位送入选通电平(共阴极 送低电平、共阳极送高电平)以保证该位显示相应 字符,段选控制I/O口输出相应字符段选码。如此 轮流,使每位显示该位应显示字符,并保持延时一 段时间,以造成视觉暂留效果。 不断循环送出相应的段选码、位选码,就可以获 得视觉稳定的显示状态。由人眼的视觉特性,每一 位LED在一秒钟内点亮不少于30次,其效果和一直 点亮相差不多。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Vcc P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA ALE PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
I/O 口段选控制
a b c d e f g dp
a b c d e f g dp
a b c d e f g dp
a b c d e f g dp
a b c d e f g dp
· · ·
I/O 口位选控制
图 N位LED显示器
N位LED显示器有N根位选线和8×N根段选线。根据显示方式 不同,位选线与段选线的连接方法不同。段选线控制字符选择,位 选线控制显示位的亮、灭。
GND/+5V
GND/+5V
GND/+5V
图
四位静态LED显示器电路
(2) LED动态显示方式
将所有LED的段选线并联在一起,由一个八位I/O口控制, 而位选线分别由相应的I/O口线控制。 如:8位LED动态显 示电路只需要两个八位I/O口。其中一个控制段选码,另一 个控制位选。
I/O (1)
D7
P1口
图1-8
P1口的位结构
P2口
图1-6
P2口的位结构
P2口也有两种使用方式 1. 做普通I/O口 这时,控制信号将驱动场效应管的反向器的输 入与P2口输出锁存器的Q端相连。当作输出时与 P0口类似,但P2口内部有上拉电阻,不需外接。 当输入使用时,输出锁存器也必须写1。所以,P2 口也是一个准双向I/O口。 2. 作地址总线 当单片机系统进行存储器、I/O口或其它功能 扩展时,P2口要用作地址总线,输出目标地址的 高8位。这时控制信号将驱动场效应管的反向器的 输入与地址线相连。 P2口没有复用要求,所以外部不需地址锁存器。 应当注意:当P2口的几位作地址线使用时,剩下的P2 口线不能作I /O口线使用。
LED显示器有静态显示与动态显示两种方式。 (1) LED静态显示方式 各位LED的位选线连在一起接地或接+5V; 每位LED的段选线(a-dp)各与一个八位并行口相连。 在同一时间里每一位显示的字符可以各不相同。
I/O (1) I/O (2) I/O (3) I/O (4)
GND/+5V
GND/+5V
Fra Baidu bibliotek
5.2 编程举例
例5.1 例5.2 #include“reg51.h” main( ) { P1=0xff; while(1) { P1=P1<<4; P1=P1|0x0f;} }
LED正偏时才能发亮,按电路接法,当P1.0
输出“1”,LED正偏而发亮,当P1.0 输出“0” , LED 的两端电压为 0 而熄灭。
3FH 06H 5BH 4FH 66H 6DH 7DH 07H
C0H F9H A4H B0H 99H 92H 82H F8H
8 9 A B C D E F
7FH 6FH 77H 7CH 39H 5EH 79H 71H
80H 90H 88H 83H C6H A1H 86H 8EH
LED显示器与显示方式
。
g f
a b
10 9 8 7 6
a f g e d
1
b c
dp
2 3 4 5
e d
c dp
(a) 共阴极
(b) 共阳极 图 LED显示器
(c) 管脚配置
(a)共阴极LED显示器的发光二极管阴极共地,当某个发光二极 管的阳极为高电平时,该发光二极管则点亮; (b)共阳极LED显示器的发光二极管阳极并接。
+5V 10uF
Vcc -EA
RST
LED P1.0
+5V 89C51 89S51 1K
1K 30P
XTAL1
P1.1
K
30P
XTAL2 GND
例5-2.在图5.3中P1.4~P1.7接四个发光二 极管LED,P1.0~P1.3接四个开关,编程将开关 的状态反映到发光二极管上。
+5V
89C51/89S51
P0锁存器
P2锁存器
EPROM ROM
ACC 寄存器B 暂存2 ALU PSEN ALE 定时 及 控制 指 令 寄 存 器
SP
程序地址 寄存器
暂存1
中断、串行口及定时 器模块
缓冲器
PC加1 PC DPTR
PSW
EA
RST
振荡器
P1锁存器
P3锁存器
P1驱动器 XTAL1 XTAL2 P1.0~P1.7
② 作输入时:P0端口引脚信号通过一个输入 三态缓冲器接入内部总线,再读引脚信号控制 下,引脚电平出现在内部总线上。为了能读到 真实的引脚信号,下面的场效应管必须截止, 即锁存器的内容必须是1。为了能正确读取引 脚信号,锁存器必须先写1,因而P0口是一个 准双向口。(读引脚) 在图的左上方有一个三态缓冲器,是为 了读取锁存器内容而设。如指令: P0 = P0 | 0XF0;将P0口的输出状态与 0XF0按位或后再输出到P0口,这里读的数据 是P0口锁存器的内容,运算结果又写入到P0 口锁存器。(读锁存器)
1K×4
P1.4 P1.5
P1.6 P1.7 EA
330×4 +5V
例3.用P1.0输出1KHz的音频信号驱动扬 声器,作报警信号,P1.7接一开关进行控制, 当开关合上响报警信号,当开关断开告警信号 停止,编出程序。
5.3 I/O口设计LED数码显示器和键盘 LED显示器结构与原理 LED显示器是由发光二极管显示字段的显 示器件。在单片机应用系统中通常使用的是 七段LED,这种显示器有共阴极与共阳极两 种。
LED灯的判别
例如图5.5是接有五个共阴极数码管的动态 显示接口电路,用74LS373接成直通的方式作 驱动 电路,阴极用非门74LS04反相门驱动, 字形选择由P1口提供,位选择由P3口控制。
当P3.0~P3.4轮流输出1时,五个数码管 轮流显示。P1.7接开关,当开关打向位置“1” 时, 显示“12345”字样,当开关打向“2”时, 显示“HELLO”字样,程序清单如下:
P3口
P3.X
图1-7 P3口的位结构
P3口是一个双功能I/O口 若不设定自动处于第一功能 1. 普通I/O口 作普通I/O口时,选择输出功能端为高电平,场 效应管受输出锁存器的控制,是一个准双向I/O口。 2. 第二功能口 P3口的每一位都具有第二功能。
P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
图1-12 8031,8051,8751芯片管脚图
MCS-51系列单片机有四组8位并行I/O口, 记作P0、P1、P2和P3。每组I/O口内部都有 8位数据输入缓冲器、8位数据输出锁存器及 数据输出驱动等电路。 四组并行I/O端口即可以按字节操作,又可以 按位操作。当系统没有扩展外部器件时,I/O 端口用作双向输入输出口;当系统作外部扩展 时,使用P0、P2口作系统地址和数据总线、 P3口有第二功能,与MCS-51的内部功能器 件配合使用。
用C语言完成上述功能编程 #include<reg51.h> #define uint unsigned int #define uchar unsigned char sbit P17=P1^7; main( ) { uchar code tab1[5]= {0x86,0xdb,0xcf,0xe6,0xed}; /*“1~5”的字 形码, 因P1.7接的开关,最高位送“1”*/ uchar code tab2[5]={0xf8,0xf9,0xb8,0xb8,0xbf}; /*“HELLO”的段码, 最高位送 “1”*/
2.
地址/数据复用总线 当单片机系统进行存储器、I/O口或其它功能 扩展时,P0口要用作系统总线。在P0口上分时输 出目标地址的低8位和要交换的字节数据。 用作地址/数据复用总线时,多路开关的控制 信号为1,输出与上方的地址/数据线反向器的输出 相连,由于控制信号为1,上面的场效应管受地址/ 数据信号控制,与下面的场效应管成为推挽输出 形态。外部不再需要上拉电阻,P0口为真正的双 向I/O口。 操作过程:假如要读外部程序存储器中 0x1245单元的指令,首先从P0口输出45H,P2口 输出12H,控制器输出ALE地址锁存信号,再发出 指令输出允许信号PSEN,外部程序存储器 0x1245单元的内容出现在总线上,由CPU读入程 序指令寄存器,译码执行。
RD
WR
T1
T0
INT1 INT0
TxD
RxD
归纳四个并行口使用的注意事项如下: 1。如果单片机内部有程序存贮器,不需要扩展外 部存贮器和I/O接口,单片机的四个口均可作 I/O口使用。 2。四个口在作输入口使用时,均应先对其写 “1”,以避免误读。 3。P0口作I/O口使用时应外接10K的上拉电阻,其 它口则可不必。 4。P2可某几根线作地址使用时,剩下的线不能作 I/O口线使用。 5。P3口的某些口线作第二功能时,剩下的口线可 以单独作I/O口线使用。
单片机原理与应用
5.1 P0-P3端口功能与内部结构
输入输出接口的作用 数据缓冲功能 信号转换功能 接受和执行CPU命令的功能
51单片机具有的输入输出接口: P0、P1、P2、P3 4个8位双向I/O口
P0.0~P0.7 Vcc Vss
P2.0~P2.7
P0驱动器
P2驱动器
RAM 地址 寄存器
RAM
七段显示器与单片机接口:只要将一个8位并行输 出口与显示器的发光二极管引脚相连即可。8位并行输 出口输出不同的字节数据即可获得不同的数字或字符, 如下表所示。通常将控制发光二极管的8位字节数据称 为段选码。
显示字符 共阴段选码 共阳段选码 显示字符 共阴段选码 共阳段选码
0 1 2 3 4 5 6 7
P3驱动器 P3.0~P3.7
图1-1 MCS-51总体结构框图
8051单片机的引脚
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET P3.0/RxD P3.1/TxD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD XTAL2 XTAL1 GND
5.1.1 端口功能
P0口:地址(低8位)/数据时分复用口 普通I/O口
P1口:普通I/O口
P2口:地址(高8位) 普通I/O口
1. 2.
P3口是一个双功能I/O口 普通I/O口 第二功能口 P3口的每一位都具有第二功能。
P3.6 WR P3.5 T1 P3.4 T0 P3.3 P3.2 P3.1 TxD P3.0 RxD
P3.7 RD
INT1 INT0
P3口的第二功能大多与其内部功能部件有关, RD、WR是外部数据存储器的写、读控制信号。
8XX51单片机扩展程序存储器2732的电路图见图
P0口
图1-5 P0口的位结构
P0口有两种用途: 1. 普通I/O端口 当单片机系统没有扩展外部芯片时,P0口 用作双向输入输出端口。这时图中多路开关的 控制信号为低电平,输出与锁存器的反向输出 端相连,同时上面的场效应管由于与门输出为 低电平而截止。 ① 作输出时:输出0时,将0输出到内部总线 上,在写锁存器信号控制下写入锁存器,锁存 器的反向输出端输出1,下面的场效应管导通, 输出引脚成低电平。输出1时,下面的场效应管 截止,上面的场效应管也是截止状态,输出引 脚成高阻态,不是希望的1状态,这时,必须外 加上拉电阻
uchar i; uint j; while(1) { P3=0x01; for(i=0;i<5;i++) { if(P17==1)P1=tab1[i]; else P1=tab2[i]; P3<<=1; for(j=0;j<=25000;j++); }}} 课本习题5.8
D6
D5
D4
D3
D2
D1
D0
I/O (2)
图 八位LED动态显示器电路
由于所有位的段选码皆由一个I/O控制,因此, 在每个瞬间,8位LED只可能显示相同的字符。要想 每位显示不同的字符,必须采用动态扫描显示方式。 即在每一瞬间只使某一位显示相应字符。在此瞬间, 位选控制I/O口在该显示位送入选通电平(共阴极 送低电平、共阳极送高电平)以保证该位显示相应 字符,段选控制I/O口输出相应字符段选码。如此 轮流,使每位显示该位应显示字符,并保持延时一 段时间,以造成视觉暂留效果。 不断循环送出相应的段选码、位选码,就可以获 得视觉稳定的显示状态。由人眼的视觉特性,每一 位LED在一秒钟内点亮不少于30次,其效果和一直 点亮相差不多。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Vcc P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA ALE PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
I/O 口段选控制
a b c d e f g dp
a b c d e f g dp
a b c d e f g dp
a b c d e f g dp
a b c d e f g dp
· · ·
I/O 口位选控制
图 N位LED显示器
N位LED显示器有N根位选线和8×N根段选线。根据显示方式 不同,位选线与段选线的连接方法不同。段选线控制字符选择,位 选线控制显示位的亮、灭。
GND/+5V
GND/+5V
GND/+5V
图
四位静态LED显示器电路
(2) LED动态显示方式
将所有LED的段选线并联在一起,由一个八位I/O口控制, 而位选线分别由相应的I/O口线控制。 如:8位LED动态显 示电路只需要两个八位I/O口。其中一个控制段选码,另一 个控制位选。
I/O (1)
D7
P1口
图1-8
P1口的位结构
P2口
图1-6
P2口的位结构
P2口也有两种使用方式 1. 做普通I/O口 这时,控制信号将驱动场效应管的反向器的输 入与P2口输出锁存器的Q端相连。当作输出时与 P0口类似,但P2口内部有上拉电阻,不需外接。 当输入使用时,输出锁存器也必须写1。所以,P2 口也是一个准双向I/O口。 2. 作地址总线 当单片机系统进行存储器、I/O口或其它功能 扩展时,P2口要用作地址总线,输出目标地址的 高8位。这时控制信号将驱动场效应管的反向器的 输入与地址线相连。 P2口没有复用要求,所以外部不需地址锁存器。 应当注意:当P2口的几位作地址线使用时,剩下的P2 口线不能作I /O口线使用。
LED显示器有静态显示与动态显示两种方式。 (1) LED静态显示方式 各位LED的位选线连在一起接地或接+5V; 每位LED的段选线(a-dp)各与一个八位并行口相连。 在同一时间里每一位显示的字符可以各不相同。
I/O (1) I/O (2) I/O (3) I/O (4)
GND/+5V
GND/+5V
Fra Baidu bibliotek
5.2 编程举例
例5.1 例5.2 #include“reg51.h” main( ) { P1=0xff; while(1) { P1=P1<<4; P1=P1|0x0f;} }
LED正偏时才能发亮,按电路接法,当P1.0
输出“1”,LED正偏而发亮,当P1.0 输出“0” , LED 的两端电压为 0 而熄灭。
3FH 06H 5BH 4FH 66H 6DH 7DH 07H
C0H F9H A4H B0H 99H 92H 82H F8H
8 9 A B C D E F
7FH 6FH 77H 7CH 39H 5EH 79H 71H
80H 90H 88H 83H C6H A1H 86H 8EH
LED显示器与显示方式
。
g f
a b
10 9 8 7 6
a f g e d
1
b c
dp
2 3 4 5
e d
c dp
(a) 共阴极
(b) 共阳极 图 LED显示器
(c) 管脚配置
(a)共阴极LED显示器的发光二极管阴极共地,当某个发光二极 管的阳极为高电平时,该发光二极管则点亮; (b)共阳极LED显示器的发光二极管阳极并接。
+5V 10uF
Vcc -EA
RST
LED P1.0
+5V 89C51 89S51 1K
1K 30P
XTAL1
P1.1
K
30P
XTAL2 GND
例5-2.在图5.3中P1.4~P1.7接四个发光二 极管LED,P1.0~P1.3接四个开关,编程将开关 的状态反映到发光二极管上。
+5V
89C51/89S51
P0锁存器
P2锁存器
EPROM ROM
ACC 寄存器B 暂存2 ALU PSEN ALE 定时 及 控制 指 令 寄 存 器
SP
程序地址 寄存器
暂存1
中断、串行口及定时 器模块
缓冲器
PC加1 PC DPTR
PSW
EA
RST
振荡器
P1锁存器
P3锁存器
P1驱动器 XTAL1 XTAL2 P1.0~P1.7
② 作输入时:P0端口引脚信号通过一个输入 三态缓冲器接入内部总线,再读引脚信号控制 下,引脚电平出现在内部总线上。为了能读到 真实的引脚信号,下面的场效应管必须截止, 即锁存器的内容必须是1。为了能正确读取引 脚信号,锁存器必须先写1,因而P0口是一个 准双向口。(读引脚) 在图的左上方有一个三态缓冲器,是为 了读取锁存器内容而设。如指令: P0 = P0 | 0XF0;将P0口的输出状态与 0XF0按位或后再输出到P0口,这里读的数据 是P0口锁存器的内容,运算结果又写入到P0 口锁存器。(读锁存器)