MCS51单片机输出输入型外设与51的IO口

合集下载

MCS51单片机的输入输出通道接口

MCS51单片机的输入输出通道接口
直接采用数字传感器是计算机专业学生的最佳选择!
传感器的发展方向:
传感器已经成为现代信息技术系统三大支柱之一,在工 业、农业、航空航天、军事国防等领域得到了日益广泛的应 用。其发展方向主要有以下几个方面: (1)利用新的物理现象、化学反应、生物效应设计传感器。 (2)引入数据融合技术。 (3)使用新型材料,向微功耗、集成化及无源化发展。 (4)采用新的加工技术。 (5)向微型化发展。 (6)向高可靠性、宽温度范围发展等。 ( 7)器件自身是数字化的,不需要再经过数/模、模/数变换。
5.2.1 D/A转换器的性能指标
(1)分辨率:指D/A转换器能分辨的最小输出模拟增量,即相 邻两个二进制码对应的输出电压之差称为D/A转换器的分辨率。 可用最低位(LSB)表示。如,n位D/A转换器的分辨率为 1/2n。
(2)精度:精度是指D/A转换器的实际输出与理论值之间的误 差,它是以满量程VFS的百分数或最低有效位(LSB)的分 数形式表示。
NOP
MOV A,R1
;从R1中取出低8位到A寄存器
MOV R3,#08H ;循环初值 8次
AA: RLC , A ;最低位送入C寄存器
MOV P1.1,C ;位数据送上DIN
NOP
SETB P1.2 NOP NOP CLR P1.2 DJNZ R3,AA NOV R3,#08H MOV A,R2 BB: RLC A MOV P1.1,C NOP NOP SETB P1.2 NOP NOP CLR P1.2 DJNZ R3,BB SETB P1.3 CLR P1.2 是 CLR P1.1
(5)偏移量误差:偏移量误差是指输入数字量为零时,输出模
拟量对零的偏移值。
5.2.2 D/A转换器的分类

51单片机IO口工作原理

51单片机IO口工作原理

51单片机IO口工作原理一、概述51单片机是一种广泛应用于嵌入式系统的微控制器,其IO口是其最基本和重要的功能之一。

IO口可以用于输入和输出信号,实现与外部设备的数据交互。

本文将详细介绍51单片机IO口的工作原理。

二、IO口的结构51单片机的IO口由多个引脚组成,每一个引脚都有特定的功能和工作模式。

通常,一个IO口引脚可以配置为输入模式或者输出模式,具体的配置由相应的寄存器控制。

三、IO口的输入模式当一个IO口引脚配置为输入模式时,它可以接收外部设备发送的信号。

在输入模式下,引脚的电平可以是高电平(1)或者低电平(0),这取决于外部设备发送的信号。

在51单片机中,可以通过P1口和P3口来配置引脚为输入模式。

当一个引脚配置为输入模式时,相应的寄存器会设置为1,表示该引脚为输入状态。

此时,我们可以通过读取相应的寄存器值来获取引脚的电平状态。

四、IO口的输出模式当一个IO口引脚配置为输出模式时,它可以向外部设备发送信号。

在输出模式下,引脚的电平可以是高电平(1)或者低电平(0),这取决于我们设置的值。

在51单片机中,可以通过P0口、P1口、P2口和P3口来配置引脚为输出模式。

当一个引脚配置为输出模式时,相应的寄存器会设置为0,表示该引脚为输出状态。

此时,我们可以通过写入相应的寄存器值来控制引脚的电平状态。

五、IO口的工作原理在51单片机中,IO口的工作原理是通过寄存器的读写操作来实现的。

通过读取或者写入相应的寄存器值,我们可以配置引脚的工作模式和控制引脚的电平状态。

对于输入模式,我们可以通过读取相应的寄存器值来获取引脚的电平状态。

通过读取P1口和P3口的寄存器值,我们可以判断引脚的电平是高电平还是低电平。

对于输出模式,我们可以通过写入相应的寄存器值来控制引脚的电平状态。

通过写入P0口、P1口、P2口和P3口的寄存器值,我们可以将引脚的电平设置为高电平或者低电平。

六、IO口的应用场景51单片机的IO口广泛应用于各种嵌入式系统中,如电子设备、家用电器、工业控制等。

51单片机IO(输入输出)口

51单片机IO(输入输出)口
24
采用通用TTL芯片的I/O口 扩展
• 在许多情况下,有些开关量或并行数据需 直接输出或输入。 • 可采用8D锁存器和三态驱动门等进行扩展。 (74LS377、74LS273、74LS244等)
25
74LS377作为输出口
U? 3 4 7 8 13 14 17 18 11 1 D0 D1 D2 D3 D4 D5 D6 D7 C LK E 7 4 LS3 7 7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19
地址:8000H Mov dptr,#8000h Mov a,#00h Movx @dptr,a
U? A 2 C LK 3 1 7 4 LS3 2 V5 RU N U? D0 D1 D2 D3 D4 D5 D6 D7 C LK Vc c 3 4 7 8 13 14 17 18 11 1 D1 D2 D3 D4 D5 D6 D7 D8 C LK C LR 7 4 LS2 7 3 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 2 5 6 9 12 15 16 19 UP1 UP2 B EW 1 B EW 2 DW 1 DW 2 BJ RU N BJ V6 CS0 DW 2 1 W R DW 1 3
A1 0 0 1 0 0 1 1 x 1 x A0 0 1 0 0 1 0 1 x 1 x RD 0 0 0 1 1 1 1 x 0 1 WR 1 1 1 0 0 0 0 x 1 1 CS 0 0 0 0 0 0 0 1 0 0 操作 读端口A 读端口B 读端口C 写端口A 写端口B 写端口C 写控制字寄存器 数据总线为三态 非法状态 数据总线为三态
2
3
• 74LS377作为输出 口,试确定其地址, E接P2.7;CLK接 WR,377的输入端 接8031的数据口, 输出端接8个发光 二极管。 地址:7FFFH Mov dptr,#7fffh Mov a,#00h Movx @dptr,a 27

51单片机IO口工作原理

51单片机IO口工作原理

51单片机IO口工作原理51单片机(英文名为8051 Microcontroller)是一种由Intel公司于1980年推出的8位单片机,广泛应用于嵌入式系统中。

作为一种高性能、低功耗的单片机,其周围有多个IO口(Input/Output ports),可以用来实现数字输入、输出、模拟输入、输出等功能。

下面将详细介绍51单片机IO口的工作原理。

1.51单片机的IO口介绍51单片机共有4个8位的IO口,依次为P0、P1、P2和P3、每个IO 口都是一个8位的寄存器,称为端口寄存器(port register),用于和外部设备进行数据通信。

其中,P0是一个具有双重输入和输出特性的端口,可以配置为输入口或输出口;P1和P3是纯输出端口;P2是输入输出混合端口。

2.IO口的工作模式IO口的工作模式由P0、P1、P2和P3的寄存器位来配置。

每个IO口的寄存器位都有对应的功能和控制位,通过设置这些位可以控制IO口的工作模式和输出状态。

2.1输入模式在输入模式下,IO口作为输入口,接受来自外部器件的信号。

通过将对应的寄存器位设置为1,可以将IO口配置为输入模式。

在输入模式下,端口寄存器的位对应的为悬空状态,可以通过主动上拉或下拉方法来确保IO口的状态。

2.2输出模式在输出模式下,IO口作为输出口,通过控制寄存器位的值可以输出高电平或低电平信号。

将对应的寄存器位设置为0,可以将IO口配置为输出模式。

在输出模式下,直接修改端口寄存器的位即可改变IO口的输出状态。

对于纯输出端口,即P1和P3,更方便地改变IO口的状态可以通过直接操作对应的位。

2.3产生中断IO口还可以通过设置为中断产生源的方式来实现中断功能。

在输入模式下,将对应的寄存器位设置为1,即可配置IO口为中断输入。

当IO口检测到中断触发条件(例如边沿触发、电平触发等),会触发相应的中断服务程序(ISR)。

3.IO口的读取和写入操作为了读取和写入IO口的状态,可以直接访问相应的寄存器。

MCS-51单片机IO口详解

MCS-51单片机IO口详解

单片机IO口结构及上拉电阻MCS-51有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线。

一、P0口和P2口图1和图2为P0口和P2口其中一位的电路图。

由图可见,电路中包含一个数据输出锁存器(D触发器)和两个三态数据输入缓冲器,另外还有一个数据输出的驱动(T1和T2)和控制电路。

这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口,而不能象P1、P3直接用作输出口。

它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。

图1 单片机P0口内部一位结构图图2 单片机P0口内部一位结构图P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。

外部的程序存储器由PSEN信号选通,数据存储器则由WR和RD读写信号选通,因为2^16=64k,所以MCS-51最大可外接64kB的程序存储器和数据存储器。

二、P1口图3为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至"1",此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。

图3 单片机P2口内部一位结构图作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。

需要说明的是,作为输入口使用时,有两种情况:1.首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。

2.读P1口线状态时,打开三态门G2,将外部状态读入CPU。

第二章 MCS-51单片机输入输出端口

第二章 MCS-51单片机输入输出端口

1 0
1 1 1 1
§2.1 MCS-51单片光二极管,编写程序,使 、 口作输出口 口作输出口, 只发光二极管, 只发光二极管 编写程序, 发光二极管对称循环点亮。 发光二极管对称循环点亮。 2、P1.0,P1.1作输入口接两个拨动开关,P1.2,P1.3作 、 作输入口接两个拨动开关, 作输入口接两个拨动开关 作 输出口,接两个发光二极管,编写程序读取开关状态, 输出口,接两个发光二极管,编写程序读取开关状态, 将此状态,在发光二极管上显示出来。 将此状态,在发光二极管上显示出来。
1 0
2 读引脚 =0 =1 0
控制=0时 此脚用作通用 口 控制 时,此脚用作通用I/O口
§2.1 MCS-51单片机输入\输出端口
P2
读锁存器 1 内部 总线 写锁 存器
地址高8位 地址高 位 控制
=1
Vcc 内部上拉电阻
1 0
T
D Q /Q
0 1
导 截 止 通 引脚P2.X 引脚
1 0
3
CP
具体程序: 具体程序: …… NEXT:MOV 90H, #0FEH MOV 90H, #0FDH …… MOV 90H, #7FH SJMP NEXT
11111110 11111101 11111011 11110111 11101111 11011111 10111111 01111111
0FEH 0FDH 0FBH 0F7H 0EFH 0DFH 0BFH 07FH
§2.1 MCS-51单片机输入\输出端口
§2.1 MCS-51单片机输入\输出端口
复习
输出数据 输出数据 = 0 时
Vcc Vcc 读锁存器 2 内部 总线 0 写锁 存器 T

51单片机_片内外设

51单片机_片内外设
结构图
片内外设
输入时应先写“1”:在端口电路中,可以发现一个问题:端 口在输入(读引脚)时,原来锁存器的状态可能要影响引 脚电平的输入。例如:原来锁存器的状态为“0”态,即输 出极的下端FET是饱和状态,这样如果外电路向引脚输入 高电平时,电路将不能正确读入。解决的方法就是让下端 的FET截止,即事先向端口写一个“1”。 请注意下面的一段程序:
返回
P0口的位结构图
读锁存器 地址/数据 I/0 控制(=0时)
片内外设
Vcc
Vcc
内部总线
D CL
Q /Q MUX (控制=0时)
锁存器
P0.x 引脚
写锁存器
读引脚
硬件组成: 1)一个输出锁存器(D型触发器); 2)二个三态门(控制读引脚或读锁存器); 3)与门和MUX等元件组成的输出控制电路; 4)一对场效应晶体管FET构成的输出电路。
返回
片内外设
1)P0口的I/O操作(通用I/O端口)


在P0口作为通用I/O端口时,控制电路中的“控制” 为“0”电平,多路开关MUX接入下方的锁存器的/Q 端。 由于与门的一个输入端为“0”,所以它使上端的 FET截止。这就是P0口在做I/O口时输出为“漏极 开路”的结构原因。 输出操作:在执行以口为目标的指令时,数据送到 锁存器的“D”端,经“/Q”端送场效应管输出极。 如:送“1”时,/Q=“0”,使下端的FET截止。这样 出现输出极的两个FET全部截止。在这种情况下必 须在端口线上外加上拉电阻。这样在上拉电阻的作 用下,使端口为高电平。同理,若总线向口送“0” 时,锁存器的/Q=1,使下端的FET导通(上面的FET 仍然截止),这样端口呈现“0”电平。 结构图
返回

片内外设 0000H (上电启动地址)

51单片机IO端口的四种输入输出模式

51单片机IO端口的四种输入输出模式

51单片机IO端口的四种输入输出模式 (by wuleisly)单片机I O口的使用对所有单片机玩家来说都是“家常便饭”,但是你真的了解I O口吗?你真的能按你的需要配置I O口吗?一、准双向口输出准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。

这是因为当口线输出为1时驱动能力很弱,允许外部装置将其拉低。

当引脚输出为低时,它的驱动能力很强,可吸收相当大的电流。

(准双向口有3个上拉晶体管适应不同的需要)准双向口读外部状态前,要先锁存为‘1’,才可读到外部正确的状态.二、强推挽输出推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为1时提供持续的强上拉。

推挽模式一般用于需要更大驱动电流的情况。

三、仅为输入(高阻)输入口带有一个施密特触发输入以及一个干扰抑制电路。

四、开漏输出配置(若外加上拉电阻,也可读)当口线锁存器为0时,开漏输出关闭所有上拉晶体管。

当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到Vc c。

如果外部有上拉电阻,开漏的I/O口还可读外部状态,即此时被配置为开漏模式的I/O口还可作为输入I/O 口。

这种方式的下拉与准双向口相同。

开漏端口带有一个施密特触发输入以及一个干扰抑制电路。

关于I/O口应用注意事项:1.有些是I/O口由低变高读外部状态时,读不对,实际没有损坏,软件处理一下即可。

因为1T的8051单片机速度太快了,软件执行由低变高指令后立即读外部状态,此时由于实际输出还没有变高,就有可能读不对,正确的方法是在软件设置由低变高后加1到2个空操作指令延时,再读就对了.有些实际没有损坏,加上拉电阻就O K了有些是外围接的是NP N三极管,没有加上拉电阻,其实基极串多大电阻,I/O口就应该上拉多大的电阻,或者将该I/O口设置为强推挽输出.2.驱动L E D发光二极管没有加限流电阻,建议加1K以上的限流电阻,至少也要加470欧姆以上做行列矩阵按键扫描电路时,实际工作时没有加限流电阻,实际工作时可能出现2个I/O口均输出为低,并且在按键按下时,短接在一起,我们知道一个C MOS电路的2个输出脚不应该直接短接在一起,按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而8051单?片机的弱上拉口在由0变为1时,会有2时钟的强推挽高输出电流输出到另外一个输出为低的I/O口,就有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口同时为低.一种典型三极管控制电路:如果用弱上拉控制,建议加上拉电阻R1~10K),如果不加上拉电阻R1~10K),建议R2的值在15K以上,或用强推挽输出。

2.3MCS-51单片机输入输出口

2.3MCS-51单片机输入输出口

2.3 MCS-51单片机输入/输出(I/O)口在MCS-51单片机中有4个双向的8位I/O口P0~P3,在无片外存储器的系统中,这四个I/O口的每一位都可以作为准双向通用I/O口使用。

在具有片外存储器的系统中,P0口作为地址线的低8位以及双向数据总线,P2口作为高8位地址线。

这4个口除了按字节寻址外,还可以按位寻址。

2.3.1 P0口图2.6给出了P0口的逻辑结构,它由一个锁存器、两个三态输入缓冲器、一个多路复用开关以及控制电路和驱动电路等组成。

图2.6 P0口位结构P0口可以作为输入输出口,在实际应用中它通常作为地址/数据复用总线。

在访问外部存储器时,P0口为真正的双向口。

由图2.6,当P0口输出地址/数据信息时,此时控制信号为高电平“1”,模拟开关MUX将地址/数据线与场效应管T2接通,同时与门输出有效,于是输出的地址/数据信息通过与门后将去驱动T1,同时通过反相器后驱动T2。

若地址/数据线为“1”,则T1导通,T2截止,P0口输出为“1”,反之T1截止,T2导通,P0口输出为“0”。

当数据从P0口输入时,读引脚使三态缓冲器打开,端口上的数据经缓冲器后送到内部总线。

当P0口作为通用I/O口时,CPU向端口输出数据,此时MUX开关与锁存器的相连,写信号与触发器的时钟线相连,于是内部总线上的数据经反相后出现在端,再经T2反相后输出到P0端口,输出数据经过两次倒相后相位不变,但是由于T2为漏极开路输出,故此时必须外接上拉电阻。

当P0口作输入时,由于信号即加载在T2上由被送入三态缓冲器,若该接口此前刚锁存过数据“0”,则T2是导通的,T2的输出被钳位在“0”电平,此时输入的“1”无法读入,所以当P0口作为通用I/O口时,在输入数据前,必须向端口写“1”,使T2截止。

不过当在访问外部存储器时,CPU会自动向P0口写“1”。

有时我们需要先将端口的数据读入,经过修改后再输出到端口,如果此时P0口的负载正好是晶体管的基极,并且其输出为“1”,这必然导致该引脚为低,若此时读取引脚信号,则会将刚输出的“1”误读为“0”,为了避免这类误读的错误,于是单片机还提供了读锁存器的功能。

51单片机IO口应用详解

51单片机IO口应用详解

51单片机IO口应用详解MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照单片机引脚图:这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,对于初学者来说很难理解的,我这里都是按我自已的表达方式来写的,相信你也能够理解的。

P0口有三个功能:1、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。

P1口只做I/O口使用:其内部有上拉电阻。

P2口有两个功能:1、扩展外部存储器时,当作地址总线使用2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。

有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,即:编程脉冲:30脚(ALE/PROG)编程电压(25V):31脚(EA/Vpp)在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。

ALE 地址锁存控制信号:在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。

参见图2(8051扩展2KB EEPROM电路,在图中ALE与4LS373锁存器的G相连接,当CPU对外部进行存取时,用以锁住地址的低位地址,即P0口输出。

由于ALE是以晶振六分之一的固定频率输出的正脉冲,当系统中未使用外部存储器时,ALE脚也会有六分之一的固定频率输出,因此可作为外部时钟或外部定时脉冲使用。

第04讲:MCS-51单片机的并行IO口

第04讲:MCS-51单片机的并行IO口

a)P0. X 结构图
2)P2口(地址高八位)
不P0口类似,P2口除了作I/O口之外,还作为地址总 线的高8位地址输出端。在作为I/O口用时,“控制”端 为“0”,故多路转换器MUX接在锁存器的Q端,场效应 管叐锁存器的控制。在作为地址总线输出 时,“控制” 端为“1”,多路转换器MUX接在“地址”端,故场效应 管由“地址”端来控制,此时锁存器(P2的特殊功能寄 存器SFR)的内容丌发,在外部存储器读/写完毕时, P2口的地址输出的作用也结束,则“控制”端又发为 “0”,P2口继续按锁存器原来的状态输出。由亍P2口 在CPU对外部存储器读/写过程中,始终能输出地址信 号,所以P2的地址丌需要外部锁存器的锁存。
1)P0口(BUS,数据/地址时分复用)
P0口还起了数据总线和地址总线(低八位)的作用。在迚行正常的输 出(普通IO)时,“控制”端为“0”,多路转换器MUX接在锁存器的Q端。 此时上方的场效应管关断,下方的场效应管叐锁存器的控制,P0口具有 开漏输出,这时驱动外部电路时P0口需外加上拉电阻(上拉电阻的阻值 叏5.1K或者4.7K) 。 在CPU迚行外部存储器存/叏时,P0口起数据总线或地址总线的作用, “控制”端为“1”,多路转换器MUX接反相器的输出端,即相当亍接在 “地址/数据”端。当这个“地址/数据”为“1”时,上方的场效应管导通 而下主的场效应管关断,P0.X输出高电平,反之输出低电平。这时P0口 丌需外接上拉电阻,P0口的锁存器(P0的特殊功能寄存器SFR)必须写 入“1”,以便迚行外部存储器的读操作。
b)P2. X,每一根线都可以执行不口功 能无关的第二种I/O功能。由图2-5可以看出,输出驱动器叐控 亍锁存器的状态不第二输出功能的状态。 若要迚行第二功能使用时,锁存器必须先写入“1”,否则口 线将被拉为0。

mcs51单片机IO端口

mcs51单片机IO端口

51系列单片机有4个I/O端口,每个端口都是8位准双向 口,共占32根引脚。每个端口都包括一个锁存器(即专用寄 存器P0~P3)、一个输出驱动器和输入缓冲器。通常把4个端 口笼统地表示为P0~P3。 在无片外扩展存储器的系统中,这4个端口的每一位都 可以作为准双向通用I/O端口使用。在具有片外扩展存储器 的系统中,P2口作为高8位地址线,P0口分时作为低8位地 址线和双向数据总线。 51单片机4个I/O端口线路设计的非常巧妙,学习I/O端口 逻辑电路,不但有利于正确合理地使用端口,而且会给设计 单片机外围逻辑电路有所启发。
T1
读锁存器
内部总线 写锁存器
读引脚
D
Q
P0.n
CLK Q
MUX
T2
P0口 引脚
例如逻辑与指令:ANL
P0,A就属于这类指令。此指令先把 P0上的数据读入CPU,随之与累加器A内的数据按位进行逻辑 与操作,最后再把与的结果送回P0口。这类指令同样适用于 P1~P3口。
对于“读-修改-写”指令,不直接读引脚上的数据而读锁存器
单片机I/O口的使用

对单片机的控制,其实就是对I/O口的控制,无论单片机 对外界进行何种控制,或接受外部的控制,都是通过I/O 口进行的。51单片机总共有P0、P1、P2、P3四个8位双 向输入输出端口,每个端口都有锁存器、输出驱动器和输 入缓冲器。4个I/O端口都能作输入输出口用,其中P0和 P2通常用于对外部存储器的访问。
T1
读锁存器
内部总线 写锁存器
读引脚
D
Q
P0.n
CLK Q
MUX
T2
P0口 引脚
② 输入时----分读引脚或读锁存器
图中上面一个缓冲器并不直接读取端口引脚上的数据,而 是读取锁存器Q端的数据。Q端与引脚处的数据是一致的。结构 上这样安排是为了适应所谓“读-修改-写”类指令的需要。这 类指令的特点是:先读口,随之可能对读入的数据进行修改, 然后再写到端口上。 地址/数据 控制 VCC

学习笔记之-51单片机IO口详解

学习笔记之-51单片机IO口详解

学习笔记之-51单片机IO口详解前言 对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O口进行的。

51单片机每个IO端口结构都有差异,都各有各的特点。

在平时的应用中,特别是设计外围硬件的时候,如果不了解其内部结构的话设计起来也许会有问题(特别是用到P0口),所以好好了解每个端口的结构是非常有必要的。

再有一点是51单片机的引脚不像STM32那样可以支持重映射,所以硬件布局的时候也要注意这一点。

下面就是在网上找的一点资料,整理如下:51单片机I/O口内部结构1.1P0端口的结构及工作原理 P0端口8位中的一位结构图 由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。

图的右边,标号为P0.X引脚的图标,也就是说P0.X引脚可以是P0.0到P0.7的任何一位,即在P0口有8个与上图相同的电路组成。

下面,我们先介绍一下组成P0口的每个单元部份:- 输入缓冲器:在P0口中,有两个三态的缓冲器,三态门有三个状态,即在其的输出端可以是高电平、低电平,同时还有一种就是高阻状态(或称为禁止状态)。

要读取D锁存器输出端Q的数据,那就得使读锁存器的这个缓冲器的三态控制端(上图中标号为‘读锁存器’端)有效。

下面一个是读引脚的缓冲器,要读取P0.X引脚上的数据,也要使标号为‘读引脚’的这个三态缓冲器的控制端有效,引脚上的数据才会传输到我们单片机的内部数据总线上。

- D锁存器:构成一个锁存器,通常要用一个时序电路,一个触发器可以保存一位的二进制数(即具有保持功能),在51单片机的32根I/O口线中都是用一个D触发器来构成锁存器的。

上图中的D锁存器,D端是数据输入端,CP是控制端(也就是时序控制信号输入端),Q是输出端,Q非是反向输出端。

对于D触发器来讲,当D输入端有一个输入信号,如果这时控制端CP没有信号(也就是时序脉冲没有到来),这时输入端D的数据是无法传输到输出端Q及反向输出端Q非的。

51单片机 IO 口输入输出方式

51单片机 IO 口输入输出方式

51 单片机IO 口输入输出方式传统51单片机IO接口只可以作为标准双向IO接口,如果用其来驱动LED只能用灌电流的方式或是用三极管外扩驱动电路。

灌电流方式:LED正极接VCC,负极接IO口。

IO为高电平是LED两极电平相同,没有电流,LED熄灭;IO为低电平时,电流从VCC流入IO,LED点亮。

但是当你吧LED正极接在IO接口,负极接GND时,将IO接口置于高电平,LED会亮,但因为IO 接口上拉能力不足而使亮度不理想,可以用下面介绍的方式解决这个问题。

推挽工作方式:LED正负极分别接在两个IO口上,然后设置正极IO接口为推挽输出,负极IO接口为标准双向灌电流输入。

推挽方式具有强上拉能力,可以实现高电平驱动LED。

IO口的四种使用方法从I/O口的特性上看,标准51的P0口在作为I/O口使用时,是开漏结构,在实际应用中通常要添加上拉电阻;P1、P2、P3都是准双向I/O,内部有上拉电阻,既可作为输入又可以作为输出。

而LPC900系列单片机的I/O口特性有一定的不同,它们可以被配置成4种不同的工作模式:准双向I/O、推挽输出、高阻输入、开漏。

准双向I/O模式与标准51相比,虽然在内部结构上是不同的,但在用法上类同,比如要作为输入时都必须先写1置成高电平,然后才能去读引脚的电平状态。

!!!!!为什么是这样子?见下面分析。

推挽输出的特点是不论输出高电平还是低电平都能驱动较大的电流,比如输出高电平时可以直接点亮LED(要串联几百欧限流电阻),而在准双向I/O模式下很难办到。

高阻输入模式的特点是只能作为输入使用,但是可以获得比较高的输入阻抗,这在模拟比较器和ADC应用中是必需的。

开漏模式与准双向模式相似,但是没有内部上拉电阻。

开漏模式的优点是电气兼容性好,外部上拉电阻接3V电源,就能和3V逻辑器件接口,如果上拉电阻接5V电源,又可以与5V逻辑器件接口。

此外,开漏模式还可以方便地实现线与逻辑功能。

对于上面疑问的解释,有这样一个资料:高阻态这是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定。

MCS51单片机的输入输出通道接口与中断

MCS51单片机的输入输出通道接口与中断

• 要由编程控制发光二极管发光,ULN2019必须 输出低电平,而ULN2019的输入必须接89S51的P1 口,才能通过软件编程控制二极管发光,所以应借
助短路环将J2中的(1、2)、(4、5)、(7、8)、 (10、11)、(19、20)短接。 • 将J15中的(1、2)、(4、5)用短路环短接。 • 硬件电路检测。线路接好后,用万用表电阻档检 测89S51的P10、P11、P12、P13、P14、P15、P16
13
I/O接口与I/O设备
15
简单的输入接口举例
接口电路图如下:
74LS244
I0 K0
D0-D7
~
DO0
I1
K1
DO7
I2
K2
译码器
I3 K3
IOR
I4
A2
K4
A3 A4
系 统 总
A5 A6

A7
A8
≥1
I5 E1
E2
I6
K5 K6
线
A9

A15
83FCH
I7 K7

A10
~83FFH
A11
保存外设给CPU和CPU发往外设的数据
⑵ 状态寄存器(端口地址)
保存外设或接口电路的状态
⑶ 控制寄存器(端口地址)
保存CPU给外设或接口电路的命令
(4)接口电路可含有多个端口地址
39
CPU侧引脚信号: 地址信号:选择I/O接口中的不同寄存器;
数据信号:命令或数据写入到相应寄存器,或者从相 关寄存器读取数据或状态;
A12
≥1
A13 A14
+5V 16
简单的输出接口举例
➢ 锁存器:由D触发器构成

51单片机io口工作的基本原理

51单片机io口工作的基本原理

51单片机io口工作的基本原理单片机(Microcontroller)是一种集成电路芯片,它包含了一个完整的计算机系统,可被程序控制。

在单片机中,IO口(Input/Output Port)是指用于与外部设备进行数据交互的接口。

本文将介绍51单片机IO口工作的基本原理。

一、IO口概述IO口是单片机的重要组成部分,它提供了与外部设备进行数据通信的能力。

在51单片机中,通常使用的IO口是P0、P1、P2和P3。

每个IO口都包含了8个引脚,可以用来连接各种外设,如LED、按键、传感器等。

二、IO口的输入输出模式1. 输入模式:当IO口设置为输入模式时,它可以接收来自外部设备的信号。

在51单片机中,通过将IO口对应的bit位设置为1,可以将该IO口设置为输入模式。

2. 输出模式:当IO口设置为输出模式时,它可以向外部设备发送信号。

在51单片机中,通过将IO口对应的bit位设置为0,可以将该IO口设置为输出模式。

当IO口为输出模式时,我们可以通过设置IO口的电平状态(高电平或低电平)来控制外部设备。

三、IO口的控制方法1. 单独控制:我们可以通过直接对IO口进行操作来实现对外部设备的控制。

在51单片机中,通过修改IO口的电平状态,从而改变引脚的电压值,来达到控制的目的。

2. 组合控制:在某些情况下,我们可能需要同时控制多个IO口,使它们协同工作。

在51单片机中,我们可以通过设置特定的寄存器来实现对多个IO 口的同时控制。

例如,使用P0或P2口作为数据总线,通过设置P0CON或P2CON寄存器来实现对该总线上的多个引脚的控制。

四、IO口的中断功能在实际应用中,我们常常需要根据外部设备的状态来触发特定的操作。

为了实现这一功能,51单片机提供了IO口中断功能。

通过设置中断触发方式和中断掩码,当IO口的电平状态发生变化时,可以触发相应的中断服务程序。

五、IO口的工作原理1. 数据方向控制:在51单片机中,通过特定的寄存器来控制IO口的数据方向。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include <reg52.h> #include <absacc.h> void main(void) { unsigned int i,j; unsigned char d; d|=(1<<3); while(1) { XBYTE[0x8800]=d; //英特尔总线发送数据 for(i=300;i>0;i--) for(j=2000;j>0;j--); d^=(1<<3); //异或运算取反 } }
继电器


基本原理:低压电控制高压电通断,电磁铁原理。 技术指标:线圈额定电压,触点最大电压、触点最 大电流 继电器HK4100F的线圈额定电压是5V,触点电压、 电流:AC220V/DC30V,3A
相比于蜂鸣器,继电器的工作电流要大很多(蜂鸣器20mA,继电器100mA左右)
继电器应用电路图
#include <reg52.h> #include <absacc.h> sbit LED_BIT=P1^6; void main(void) { unsigned int i,j; LED_BIT=1; P0=0x01; while(1) { for(i=300;i>0;i--) for(j=2000;j>0;j--); P0<<=1; if(P0==0) P0=0X01; } }
#include <reg52.h> #include <absacc.h> sbit LED_BIT=P1^6; void main(void) { unsigned int i,j; LED_BIT=1; while(1) { P0=0xff; for(i=300;i>0;i--) for(j=2000;j>0;j--); P0=0x00; for(i=300;i>0;i--) for(j=2000;j>0;j--); } }
MCS51单片机输出型外设 与51的IO口
LED发光二极管
LED发光二极管应用电路图
例一

闪烁灯
现象:8位流水灯周期性的同时亮灭闪烁。
ORG 0000h JMP start ORG 0030h start: SETB P1.6 ;打开74HC573锁存端L,直通状态 next: MOV P0,#0ffh ;点亮所有LED ACALL delay ;延时 MOV P0,#00h ;熄灭所有LED ACALL delay ;延时 JMP next ;死循环 delay: MOV r2,#0ffh ;延时子程序 next2: MOV r3,#0ffh next1: DJNZ r3,next1 DJNZ r2,next2 RET END
#include <reg52.h> #include <absacc.h> void main(void) { unsigned int i,j; unsigned char d; d|=(1<<2); while(1) { XBYTE[0x8800]=d; //英特尔总线发送数据 for(i=300;i>0;i--) for(j=2000;j>0;j--); d^=(1<<2); //异或运算取反 } }

继电器周期性吸合与断开
ORG 0000h JMP start ORG 0030h start: MOV DPTR,#0x8800 ;74HC573外设芯片地址 next: SETB Acc.2 ;控制继电器吸和 MOVX @DPTR,A ;利用英特尔总线向外设74HC573发送数据 ACALL delay ;延时 CLR Acc.2 ;控制继电器释放 MOVX @DPTR,A ACALL delay ;延时 JMP next ;死循环 delay: MOV r2,#0ffh;延时子程序 next2: MOV r3,#0ffh next1: DJNZ r3,next1 DJNZ r2,next2 RET END

例二 1位流水灯 现象:1位发光的LED在8位LED上周期性的循环 响左移位。
ORG 0000h JMP start ORG 0030h start: SETB P1.6 ;打开74HC573锁存端L,直通状态 MOV A,#01h ;初始化 next: MOV P0,A ;点亮最末位LED ACALL delay ;延时 RL A ;循环左移1位 MOV P0,A ACALL delay ;延时 JMP next ;死循环 delay: MOV r2,#0ffh;延时子程序 next2: MOV r3,#0ffh next1: DJNZ r3,next1 DJNZ r2,next2 RET END
#include <reg52.h> #include <absacc.h> sbit KEY=P3^3;//按键检测位定义 void delay10ms(void) { unsigned int i,j; for(i=128;i>0;i--) for(j=10;j>0;j--); } void main(void) { unsigned char d; d|=(1<<3); while(1) { if(KEY==0) //有键按下 { delay10ms(); //消抖 if(KEY==0) //的确真正按下 { while(!KEY); //等待按键释放 XBYTE[0x8800]=d; //英特尔总线向外设写数据驱动蜂鸣器 d^=(1<<3); //改变鸣叫状态 } } } }
MCS51单片机输入型外设 与51的IO口
单个按键
按键抬起:1 按键按下:0
按键应用电路图
按键消抖
为什么要消抖 按 键 按 下 瞬 间 会 产 生 一 段 时 间 的 毛 刺 ( 持 续 10mS左右)然后才稳定的现象,如果不加消抖措 施会在程序中误判为多次按下按键。 通常采取软件消抖的方法,即程序检测到按键按 下后,延时10ms以上再次检测按键状态,如果状 态仍然按下则为一次可靠的按下。
蜂鸣器
有源蜂鸣器


加上电源电压即可发出鸣叫声,消耗电流 20mA左右 MSC51的IO口无法提供大电流,需要用三极 管扩流或采用74HC573等驱动芯片驱动路图

蜂鸣器周期性鸣响
ORG 0000h JMP start ORG 0030h start: MOV DPTR,#0x8800 ;74HC573外设芯片地址 next: SETB Acc.3 ;控制蜂鸣器响 MOVX @DPTR,A ;利用英特尔总线向外设74HC573发送数据 ACALL delay ;延时 CLR Acc.3 ;控制蜂鸣器不响 MOVX @DPTR,A ACALL delay ;延时 JMP next ;死循环 delay: MOV r2,#0ffh;延时子程序 next2: MOV r3,#0ffh next1: DJNZ r3,next1 DJNZ r2,next2 RET END

例 按一下S3按键蜂鸣器开始鸣响,再按一下S3则蜂鸣器关闭。
ORG 0000h JMP start ORG 0030h start: MOV DPTR,#0x8800 ;74HC573外设芯片地址 CLR A ;初始化累加器清0 next: SETB P3.3 ;P3准双向口,读之前先写入高电平1 JNB P3.3,HANDLE ;按键S3按下转移处理 HANDLE:ACALL delay ;延时10ms,消抖 JB P3.3,next ;按键S3未真正按下返回 HERE: JNB P3.3,HERE ;按键S3真正按下等待按键抬起 CPL Acc.3 ;控制蜂鸣器切换响与不响 MOVX @DPTR,A ;利用英特尔总线向外设74HC573发送数据 JMP next ;死循环 delay: MOV r2,#40;延时子程序 1us next2: MOV r3,#125 ;1us next1: DJNZ r3,next1 ;(125*2us) DJNZ r2,next2;2us total=1us+(1us+(125*2us)+2us)*40= 10.121ms RET END
相关文档
最新文档