最新51单片机的基本端口操作

合集下载

单片机:第八章 51单片机IO接口

单片机:第八章 51单片机IO接口
第八章
51单片机I/O接口
本章内容
8.1 P0-P3口的功能 (重点) 和内部结构(了解) 8.2 I/O口编程举例 (重点) 8.3 用并行口设计LED数码显示器 (掌握) 8.4 用并行口设计键盘电路 (掌握)
8.1 P0-P3口的功能和内部结构
(1)所谓双向,是既能做输入,又能做输出。
所谓准双向口,是指该端口在用作输入线时,必须先 写入“1”。 (2)内部结构是设计芯片时决定的,如果以后不设计单片 机,那么不必在意。只简单的了解即可。
g
d
(b) e
c
e
f
g
1 2 34 5
com ed c
dp
com
dp
xgf ed cba 0 1 0 1 1 0 1 1 =5bh
8.3 用并行口设计LED数码显示器
8.3 用并行口设计LED数码显示器
• (1)数码管显示方式
静态方式
动态方式
8.3 用并行口设计LED数码显示器
• (2)数码管译码方式
8.2 I/O口编程举例
• 解:4个开关对应4个LED灯,因此适合用字节的方式进行操作。
ORG 0000H
ABC: MOV P1, #0FH 的正确读入
;高四位灭,低四位送“1”,确保开关状态
MOV A, P1
;读P1口引脚开关状态至A
SWAP A
;低四位开关状态转换到高四位
ANL A, #0F0H
8.3 用并行口设计LED数码显示器
• (3)举例 –软件译码
【例8-3】 接有五个共阴极数码管的动态显示接口电路, P1.7接开关,当 开关打向位置“1”(GND)时, 显示“12345”字样,当开关打向 “2”(高电平)时,显示“HELLO”字样,试编写其程序。

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

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

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

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

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

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

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

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

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

当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到V c 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 MO S电路的2个输出脚不应该直接短接在一起,按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而8051单?片机的弱上拉口在由0变为1时,会有2时钟的强推挽高输出电流输出到另外一个输出为低的I/O口,就有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口同时为低.一种典型三极管控制电路:如果用弱上拉控制,建议加上拉电阻R1(3.3K~10K),如果不加上拉电阻R1(3. 3K~10K),建议R2的值在15K以上,或用强推挽输出。

51系列单片机P0端口具体讲解

51系列单片机P0端口具体讲解

有关单片机P0口具体讲解图1(一)在我们讲解P0端口之前我们首先梳理一下各个端口有什么不同之处:P0口有三个功能:1、外部扩展存储器时,当做数据(Data)总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址(Address)总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻(后面将详细介绍)。

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

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

图2(注:该图只是P0口的一位,也就是说P0口有8个相同的这样的结构)图3(二)由图2可以看出每个P0口都有这些元件:一个锁存器,两个三态输入缓冲器和一个输出驱动电路组成在访问外部存储器时,P0是一个真正的双向口,当P0输出地址/数据信息时,CPU内部法控制电平“1”来打开上面的与门,又使模拟开关MUX把地址/数据信息经过反相器和T1接通(我们称上面的场效应晶体管FET为T1,下面的场效应管FET为T2);输出的地址/数据信息既通过与门去驱动T1,又通过反相器去驱动T2,是两个FET构成推拉输出电路;1.当P0口作为外部扩展存储器的数据地址总线时:●若地址数据信息为“0”,那么这个信号就使得T1截止,使T2导通(经过反反相器作用使得T2接收到的信号为“1”,根据场效应晶体管的特性,T2导通),若T2导通,那么T2的上下两个N极就导通,而发射极(下面的N极)接地信号则为“0”,这样P0口就相当于接收到了“0”信号;●若地址数据信息输入“1”,则该信号使T2截止,使T1导通,在T1导通情况下,T1的上下N极导通,使得VCC与P0相同,从而输出高电平,即“1”信号;●若从P0口输入信号,信号从引脚通过输入缓冲器进入内部总线;2.当P0口作为一般I/O口使用时:●CPU内部发布控制信号“0”,封锁与门,使得T1截止,同时使模拟开关MUX把锁存器的非Q端与T2端的栅极接通;●在P0口作为输出时,由于非Q端和T2的倒相作用,那么内部总线上的信息与到达P0口上的信息是同相的,只要写脉冲加到锁存器的CL端,内部总线上的信息就会P0的引脚上;●但是由于此时T2为漏极开路输出,所以要外接上拉电阻。

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.驱动LE D发光二极管没有加限流电阻,建议加1K以上的限流电阻,至少也要加470欧姆以上做行列矩阵按键扫描电路时,实际工作时没有加限流电阻,实际工作时可能出现2个I/O口均输出为低,并且在按键按下时,短接在一起,我们知道一个CM OS 电路的2个输出脚不应该直接短接在一起,按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而8051单片机的弱上拉口在由0变为1时,会有2时钟的强推挽高输出电流输出到另外一个输出为低的I/O口,就有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口同时为低.一种典型三极管控制电路:如果用弱上拉控制,建议加上拉电阻R1~10K),如果不加上拉电阻R1~10K),建议R2的值在15K以上,或用强推挽输出。

很全的51单片机IO端口详解(带图)

很全的51单片机IO端口详解(带图)

80C51的I/O端口结构及应用特性一,I/O端口的结构1,锁存器加引脚的典型结构80C51的I/O端口都有内部总线实现操作控制。

P0-P3四个I/O 口都可以做普通I/O口,因此,要求具有输出锁存功能。

内部总线有事分时操作,因此每个I/O端口都有相应的锁存器。

然而I/O端口又是外部的输入/输出通道,必须有相应的引脚,故形成了I/O端口的锁存器加引脚的典型结构。

2,I/O口的复用功能(1)I/O口的总线复用。

80C51在使用并行总线扩展时,P0口可作为数据总线口和低8位地址总线口,这是,P0为三态双向口。

P0口输出总线的地址数据信号,P2口输出高8位地址信号。

(2)I/O口的功能复用。

I/O口的P3为功能复用的I/O端口。

端口有复用输出的控制端;引脚也有复用输入的控制端。

3,准双向结构P0,P1,P2,P3口做普通I/O口使用时,都是准双向口结构。

准双向口的典型结构见P1口位结构图。

准双向口的输入操作和输出操作本质不同,输入操作时读引脚状态;输出操作时对口锁存器的写入操作。

有口锁存器和引脚电路可知:当有内部总线对只1或只0时,锁存器的0、1状态立即反应到引脚上。

但是输入操作(读引脚)时,如果口锁存器的状态为0,引脚被嵌位在0状态,导致无法读出引脚的高电平输入。

二,I/O端口的应用特性1,引脚的自动识别。

无论P0,P2口的总线复用,还是P3口的功能复用,内部资源会自动选择,不需要通过指令的状态选择。

2,口锁存器的读、该、写操作。

许多涉及到I/O端口的操作,只是涉及口锁存器的读出、修改、写入的操作。

这些指令都是一些逻辑运算指令、置位/清除指令、条件转移指令以及将I/O口作为目的地址的操作指令。

3,读引脚的操作指令。

如果某个I/O口被指定为源操作数,则为读引脚的操作指令。

例如,执行MOV A,P1时,P1口的引脚状态传送到累加器中,执行MOV P1,A是,指令则将累加器的内容传送到P1口锁存器中。

4,准双向口的使用。

MCS-51单片机的8位并行输入输出端口(课堂PPT)

MCS-51单片机的8位并行输入输出端口(课堂PPT)
ቤተ መጻሕፍቲ ባይዱ15
为什么要读锁存器而不去读引脚?
为什么“读——修改——写”操作不是从引脚回取 信号?因为: 1. 引脚信号与外部设备连接,易受外界干扰; 2. 引脚上的电平往往不能正确反映前次的输出结果。
Vcc 负载
16
【举例】在当前状态下,将
P0.2的电平变“1”,其余
P0.0
位不变。
P0.1 P0.2
MOV A,#00000100B
26
4.5 并行端口使用中应注意的问题
如何使用并行端口来直接驱动电流比较大的负载 (如:LED)?是采用“拉电流”还是“灌电流”?
Vdd Vdd
Px.y
Vdd
Px.y
灌电流方式 输出”0”点亮LED
拉电流方式 输出高电平点亮LED
27
1. 使用灌电流的方式与电流较大的负载直接连接时, MCS51的端口可以吸收约20mA的电流而保证端口电平不高 于0.45V,但驱动逻辑并不符合人们的日常习惯。
第四章 MCS-51单片机的8位并行输入输出端口 本章内容
重点掌握MCS-51单片机的四个8位并行I/O口的硬 件结构特点和使用。
1
本章目录
4.1 P0口 4.2 P1口 4.3 P2口 4.4 P3口 4.5 并行端口使用中应注意的问题 4.6 单片机与继电器等大电流负载的接口
2
4.1 P0口
4
读锁存器 内部总线 写锁存器 读引脚
P0口的位结构图
Vcc
Vcc
地址/数据 控制(=0时)
1/0
DQ
锁存器
CL /Q
MUX (控制=0时)
P0.x 引脚
5
硬件组成: 1,一个输出锁存器(D型触发器); 2,二个三态门(控制读引脚或读锁存器); 3,与门和MUX等元件组成的输出控制电路; 4,一对场效应晶体管FET构成的输出电路.

51单片机的P1、P2、P3口的工作原理

51单片机的P1、P2、P3口的工作原理

基于proteus的51单片机仿真实例五十、51单片机的P1、P2、P 3口的工作原理1、P1口某一位的内部电路结构如下图所示,在51单片机的P0,P1,P2,P3口中,P1口的结构最简单,用途也最单一。

仅仅只作为普通的数据输入/输出(I/O)端口使用。

从图中可以看出,P0口与P1口的主要差别在于:P1端口用内部上拉电阻代替了P0端口的场效应管,并且输出的信息只有内部总线的信息,没有了数据/地址总线的复用。

1)P1口用作输入端口如果P1口用作输入端口,即Q=0,/Q=1;则场效应管导通,引脚被直接连到电源的地GND上,即使引脚输入的是高电平,被直接拉低为“0“,所以,与P0端口一样,在将数据输入P1端口之前,先要通过内部总线向锁存器写”1“,这样/Q=0,场效应管截止,P1端口输入的“1”才可以送到三态缓冲器的输入端,此时再给三态门的读引脚送一个读控制信号,引脚上的“1”就可以通过三态缓冲器送到内部总线。

具有这种操作特点的输入/输出端口,一般称之为准双向I/O口,51单片机的P1,P2,P3口都是准双向口。

而P0端口由于输出具有三态功能(输出端口的三态是指:高电平,低电平,高阻态这三态),所以在作为输入端口时,无需先写“1”然后再进行读操作。

2)P1口用作输出端口如果P1口用作输出端口,应给锁存器的写锁存CP端输入写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q和/Q端输出,如果D端输入“1”,则/Q=0,场效应管截止,由于上拉电阻的作用,在P1.X引脚输出高电平“1”,反之,如果D端输入“0”,则/Q =1,场效应管导通, P1.X引脚连到地线上,从而在引脚输出“0”。

2、P2口的内部电路结构如下图所示,可以看出P2口既有片内上拉电阻,又有切换开关MUX,所以P2口在功能上兼有P0和P1端口的特点,这主要体现在输出功能上,当切换开关向下接通时,从内部总线输出的一位数据经反相器和场效应管反相后,输出在端口引脚线上;当多路开关向上时,输出的一位地址信号也经反相器和场效应管反相后,输出在端口引脚线上。

51单片机的基本端口

51单片机的基本端口

51单片机的基本端口单片机是一种集成电路芯片,具有微处理器核心、存储器、I/O端口和各种外设接口等功能。

其中,基本端口是单片机最常用的功能之一,用于与外部设备进行数据交互和信号传输。

本文将介绍51单片机的基本端口及其使用方法。

一、引脚功能51单片机的引脚一共有40个,其中包括了多个基本端口引脚。

这些引脚的功能可以根据实际需要进行配置,比如作为输入端口、输出端口、中断源等。

以下是常用的几个基本端口引脚和其功能描述:1. P0口:P0.0~P0.7分别对应引脚号32~39,可用作通用I/O端口。

默认情况下,P0口是上拉输入模式,需要通过对应的寄存器设置为输出模式。

2. P1口:P1.0~P1.7分别对应引脚号1~7和40,同样可用作通用I/O端口。

在默认情况下,P1口是上拉输入模式,也需要通过寄存器进行配置。

3. P2口:P2.0~P2.7分别对应引脚号21~28,是可编程的8位I/O端口。

与P0和P1不同,P2口默认是输出模式,不需要进行配置。

二、使用方法在使用51单片机的基本端口之前,需要理解相关的寄存器和位控制。

以下是基本的使用方法:1. 配置端口模式:通过相应的寄存器设置,将需要使用的引脚设置为输入模式或输出模式。

2. 引脚输入:通过读取相应端口的寄存器,可以获取引脚的输入状态。

3. 引脚输出:通过写入相应端口的寄存器,可以控制引脚的输出状态。

4. 端口中断:通过对应的中断使能设置,可以使端口引脚成为一个中断源,触发中断服务程序。

需要注意的是,在编写代码时,应根据实际需要选择合适的端口和引脚进行配置和操作,以达到所需的功能。

三、示例代码下面是一个简单的示例代码,演示了如何使用51单片机的基本端口来控制LED灯的亮灭:```c#include <reg52.h>sbit LED = P1^0; // 将P1.0引脚定义为LEDvoid delay(unsigned int count){unsigned int i, j;for(i = 0; i < count; i++)for(j = 0; j < 1000; j++);}void main(){while(1){LED = 0; // LED亮delay(1000); // 延时LED = 1; // LED灭delay(1000); // 延时}}```通过以上示例代码,可以看到将P1.0引脚定义为LED,并通过改变LED引脚的输出状态来控制LED的亮灭。

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

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

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

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

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

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

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

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

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

当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到V c 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 MO S电路的2个输出脚不应该直接短接在一起,按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而8051单?片机的弱上拉口在由0变为1时,会有2时钟的强推挽高输出电流输出到另外一个输出为低的I/O口,就有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口同时为低.一种典型三极管控制电路:如果用弱上拉控制,建议加上拉电阻R1(3.3K~10K),如果不加上拉电阻R1(3. 3K~10K),建议R2的值在15K以上,或用强推挽输出。

51单片机IO端口的四种输入输出模式知识讲解

51单片机IO端口的四种输入输出模式知识讲解

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

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

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

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

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

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

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

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

如果外部有上拉电阻,开漏的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 MO S电路的2个输出脚不应该直接短接在一起,按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而8051单?片机的弱上拉口在由0变为1时,会有2时钟的强推挽高输出电流输出到另外一个输出为低的I/O口,就有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口同时为低.一种典型三极管控制电路:如果用弱上拉控制,建议加上拉电阻R1(3.3K~10K),如果不加上拉电阻R1(3.3K~10 K),建议R2的值在15K以上,或用强推挽输出。

51单片机IO端口

51单片机IO端口
51单片机4个I/O端口线路设计的非常巧妙,学习 I/O端口逻辑电路,不但有利于正确合理地使用端口, 而且会给设计单片机外围逻辑电路有所启发。
下面简单介绍一下输入/输出端口结构。
4.1.1 P0口和P2的结构
一、P0口的结构
下图为P0口的某位P0.n(n=0~7)结构图,它由一个 输出锁存器、两个三态输入缓冲器和输出驱动电路 及控制电路组成。从图中可以看出,P0口既可以作 为I/O用,也可以作为地址/数据线用。
GND
准双向口:
从图中可以看出,在读入端口数据时,由于输出
驱动FET并接在引脚上,如果T2导通,就会将输入的
高电平拉成低电平,产生误读。所以在端口进行输
入操作前,应先向端口锁存器写“1”,使T2截止,引
脚处于悬浮状态,变为高阻抗输入。这就是所谓的
准双向口。
地址/数据 VCC
读锁存器
控制
内部总线 写锁存器
单片机I/O口的使用
对单片机的控制,其实就是对I/O口的控制, 无论单片机对外界进行何种控制,或接受 外部的控制,都是通过I/O口进行的。51单 片机总共有P0、P1、P2、P3四个8位双向 输入输出端口,每个端口都有锁存器、输 出驱动器和输入缓冲器。4个I/O端口都能作 输入输出口用,其中P0和P2通常用于对外 部存储器的访问。
读锁存器
内部总线 写锁存器
地址/数据 VCC 控制
DQ CLK Q
T1
T2 MUX
P0.n P0口 引脚
读引脚
1、P0口作为普通I/O口 ①输出时
CPU发出控制电平“0”封锁“与”门,将输出上拉场效 应管T1截止,同时使多路开关MUX把锁存器与输出
读锁存器
内部总线 写锁存器

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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以上,或用强推挽输出。

51单片机各引脚及端口详解

51单片机各引脚及端口详解

51单片机各引脚及端口详解51单片机引脚功能:MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照----单片机引脚图:l ~ P0口8位双向口线(在引脚的39~32号端子)。

l ~ P1口8位双向口线(在引脚的1~8号端子)。

l ~ P2口8位双向口线(在引脚的21~28号端子)。

l ~ P2口8位双向口线(在引脚的10~17号端子)。

这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)接触过工业设备的兄弟可能会看到有些印刷线路板上会有一个电池,这个电池是干什么用的呢这就是单片机的备用电源,当外接电源下降到下限值时,备用电源就会经第二功能的方式由第9脚(即RST/VPD)引入,以保护内部RAM中的信息不会丢失。

在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢他起什么作用呢都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。

最新51单片机并行口的操作汇总

最新51单片机并行口的操作汇总
输出锁存器的输出端是Q而不是Q,多路开关之后需接 反相器。
• P2口的工作状态是I/O口状态。
在内部控制信号的作用下,多路开关的输入投向输出锁 存器的输出Q(C点)侧,这样多路开关将接通输出锁存器。
若经由内部总线输出0,输出锁存器的Q端为0,信号经多 路开关和反相器后输出1,Q0导通,A点为0,输出低电平;若 经由内部总线输出1,输出锁存器的Q端为1,反相器后输出0, Q0截止,A点为1 ,输出高电平。
B、P1口的位结构
• P1口由于只能作为I/O口使用,因而输出控制电路 结构同P0口不同。
P1口
P1口P1的口工是作一过个程8位分口析,如可下以:字节访问也可按位访问,其字节访 问地址为90H,位访问地址为90H~97H。 • P1.i位作输出口用时:CPU输出0时,D=0,Q=0,Q=l, 晶⒈体位管结Q0构导和通工,作A点原被理下拉为低电平,即输出0;CPU输出1
时包,含D输=出l,锁Q存=器1,、Q输=入0,缓晶冲体器管BUQF01截(止读,引A脚点)被、上BU拉F2为(高读锁 存电器平),以即及输由出lF。ET晶体管 Q0与上拉电阻组成的输出/输入驱
动器。
• P1.i位作输入口用时:先向P1.i位输出高电平,使FET 截止(使A点提升为高电平),此操作称为设置P1.i为输入 线。引脚的状态通过缓冲器B2进入内部总线。
⑶ 在无外接程序存储器而有片外数据存储器的系统中,P2口 使用可分为两种情况:
• 若片外数据存储器的容量<256 B:可使用“MOVX A,@Ri” 及“MOVX @Ri,A”类指令访问片外数据存储器,这时P2口不 输出地址,P2口仍可作为I/O口使用;
• P2口的工作状态是输出高8位地址。
在内部控制信号的作用下,多路开关的输入投向地址输出 (B点)侧,这样多路开关将接通地址寄存器输出。A点的电 平将随地址输出的0、1而0、1地变化。

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

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

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

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

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

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

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

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

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

当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到V c 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 MO S电路的2个输出脚不应该直接短接在一起,按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而8051单?片机的弱上拉口在由0变为1时,会有2时钟的强推挽高输出电流输出到另外一个输出为低的I/O口,就有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口同时为低.一种典型三极管控制电路:如果用弱上拉控制,建议加上拉电阻R1(3.3K~10K),如果不加上拉电阻R1(3. 3K~10K),建议R2的值在15K以上,或用强推挽输出。

MCS-51 I-O端口的使用

MCS-51 I-O端口的使用
P3口作为通用I/O口时,第二功能输出信号为1(高电平),此时,内部总线信号经锁存器和场效应 管输入/输出,工作过程与P1端口作用相同。
(2)P3口第二功能
P3口第二功能如表所示:
提示
根据实际的应用场合中的需要,一般 把几条端口线设置为第二功能,而另外几 条端口线处于第一功能运行状态。因此, 在这种情况下,不宜对P3端口作字节操作, 需采用位操作的形式。
—6—
读锁存器
读锁存器中的数据时,读锁存器三态门缓冲器 U1打开(即三态门缓冲器的控制端有效),锁存器 输出端Q的数据经三态门U1进入内部数据总线。
注意
当从内部总线输出高电平后,锁存器Q=1,Q=0,场效 应管T2截止。若外接引脚信号为低电平,此时从引脚读入的 数据与从锁存器读入的数据不同。
为避免原端口的状态被读错,MCS-51系列单片机指令系 统中提供了“读—修改—写”方式指令,如ANL、ORL、XRL等 (这些指令都需要得到原端口输出的状态,修改后再输出), 采用读锁存器方式而不是读引脚方式。
P2口作为I/O端口使用时,多路开 关的控制信号为0(低电平),多路开 关与锁存器的Q端相接,数据输出与输 入工作过程与P0端口作为通用I/O口时 相似,这里不再赘述。
P2口作为通用I/O口
—11—
P2口作为地址总线时,多路开关的控 制信号为1(高电平),多路开关与地 址线接通,地址信号→非门(数据反 相)→场效应管(数据反相)→P2.X。
—4—
① 数据输出
由数据总线向引脚输出的工作过程:写锁存器信号CP有效, 内部总线的信号→锁存器的输入端D→锁存器的反向输出 端Q→多路开关MUX→T2管(数据反相)→P0.X。
提示
当多路开关的控制信号为低电平0时,与门输出为低电平,T1管是 截止的,所以作为输出口时,P0是漏极开路输出,当驱动上接电流负 载时,需要外接上拉电阻。

51单片机的基本端口操作

51单片机的基本端口操作

第一章51单片机的基本端口操作主要对单片机最简系统在实际应用中的使用方法,从简单到复杂地实现单片机最简系统的基本功能。

“点亮最简单的单片机系统”从单片机原理上介绍单片机的基本组成和最简单系统的典型电路,以及有关单片机C51编程方法和例程。

“更加明亮的小灯”从功能上介绍如何使LED发光稳定,从原理上介绍单片机I/O口的电气特性和使用方法。

“定时亮灭的小灯”介绍如何使LED灯定时亮、灭,从单片机原理上介绍定时器的使用和编程方法。

“小灯亮灭的人工控制”从功能上介绍如何通过按键控制LED灯的亮灭,从单片机原理上介绍单片机中断的使用和编程方法。

先复习下Keil 51的操作。

1.1点亮最简单的单片机系统常用MCS-51系列单片机引脚功能说明引脚定义引脚功能功能说明Vcc +5V电源电源电压Vss 地电路接地端P0.0-P0.7 通道0 8位漏极开路的双向I/O通道P1.0-P1.7 通道1 8位拟双向I/O通道P2.0-P2.7 通道2 8位拟双向I/O通道P3.0 RXD 串行输入口P3.1 TXD 串行输出口P3.2 INT0 外部中断0输入口P3.3 INT1 外部中断1输入口P3.4 T0 定时器/计数器0外部时间脉冲输入端P3.5 T1 定时器/计数器1外部时间脉冲输入端P3.6 WR 外部数据存储器写脉冲P3.7 RD 外部数据存储器读脉冲RST/VPD 复位输入信号该引脚上有2个机器周期的高电平可以实现复位操作,在掉电情况下将只给片内RAM供电ALE/PROG 地址锁存有效信号主要作用是提供一个适当的定时信号PSEN 程序选通有效信号低电平时,指令寄存器的内容读到数据总线上EA/Vpp 片选使能当保持TTL高电平时,8051执行内部ROM的指令;当使TTL为低电平时,从外部程序存储器取出所有指令XTAL1 晶振输入端 内部振荡器外接晶振的一个输入端XTAL2 晶振输入端 内部振荡器外接晶振的另一个输入端提问:什么是单片机系统、提问:单片机中晶振有什么作用?回答:单片机访问一次存储器的时间,称之为一个及其周期,是一个时间基准。

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脚也会有六分之一的固定频率输出,因此可作为外部时钟或外部定时脉冲使用。

51单片机各引脚及端口详解

51单片机各引脚及端口详解

51单片机各引脚及端口详解51单片机引脚功能:MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照----单片机引脚图:l P0.0~P0.7 P0口8位双向口线(在引脚的39~32号端子)。

l P1.0~P1.7 P1口8位双向口线(在引脚的1~8号端子)。

l P2.0~P2.7 P2口8位双向口线(在引脚的21~28号端子)。

l P3.0~P3.7 P2口8位双向口线(在引脚的10~17号端子)。

这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)接触过工业设备的兄弟可能会看到有些印刷线路板上会有一个电池,这个电池是干什么用的呢?这就是单片机的备用电源,当外接电源下降到下限值时,备用电源就会经第二功能的方式由第9脚(即RST/VPD)引入,以保护内部RAM中的信息不会丢失。

在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。

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

51单片机的基本端口操作第一章51单片机的基本端口操作主要对单片机最简系统在实际应用中的使用方法,从简单到复杂地实现单片机最简系统的基本功能。

“点亮最简单的单片机系统”从单片机原理上介绍单片机的基本组成和最简单系统的典型电路,以及有关单片机C51编程方法和例程。

“更加明亮的小灯”从功能上介绍如何使LED发光稳定,从原理上介绍单片机I/O口的电气特性和使用方法。

“定时亮灭的小灯”介绍如何使LED灯定时亮、灭,从单片机原理上介绍定时器的使用和编程方法。

“小灯亮灭的人工控制”从功能上介绍如何通过按键控制LED灯的亮灭,从单片机原理上介绍单片机中断的使用和编程方法。

先复习下Keil 51的操作。

1.1点亮最简单的单片机系统常用MCS-51系列单片机引脚功能说明提问:什么是单片机系统、提问:单片机中晶振有什么作用?回答:单片机访问一次存储器的时间,称之为一个及其周期,是一个时间基准。

一个机器周期包括12个时钟周期。

如果一个单片机选择了12MHz 晶振,它的时钟周期是1/12us ,它的一个机器周期是12X (1/12us ),也就是1us 。

若是12MHz 的晶振,当单片机中定时/计数器的数值加1时,实际经过的时间就是1us 。

提示:晶振电路,复位电路基本电路图:发光二极管导通压降通常为1.7V-1.9V;为什么要接电阻?电路原理及器件选择?89C51:单片机,控制发光二极管亮灭OSC:晶振,在本例中选择12MHz的立式晶振C3,C2:晶振电路的起振电容,容值为22pFL1:发光二极管R1:限流电阻,阻值为1k欧地址分配和连接?P1.0:与发光二极管电路相连,控制LED发光二极管阴极的电平高低RESET:复位引脚X1,X2:单片机的晶振引脚程序设计:延时程序:我们先不使用单片机的定时器,而是直接采用软件的延时程序定时控制发光二极管的亮灭。

在12M晶振时,一个指令周期为1us,那么1M次就是1s。

程序代码:#include<reg51.h>sbit gate=P1^0; //位定义void main(void){unsigned int i,j;while(1){for(i=1000;i>0;i--) //双重循环,延时约1sfor(j=1000;j>0;j--);gate=!gate; //对P10取反,控制小灯}}补充:结合第五代开发板电路图可以看到…1.2更加明亮的小灯外加与非门做驱动电路,增大电流,当然也有相应的电子驱动芯片。

1.3定时亮灭的小灯下面我们进入单片机最重要的内容之一,定时和中断。

1.什么是单片机的定时器?MSC-51单片机一般有两个内部的16位定时器/计数器,分别成为T0和T1.分别有两个8位的RAM单元组成,即每个计数器都是16位的计数器,最大计数量为2的16次方等于65536.而定时和计数的关系是什么呢?找个同学告诉我吧。

定时器每完成一个时间的定时,计数器就加1.2.一定要计满65536个数吗?3.如何使用MCS-51单片机的定时器呢?定时器有两个特定的寄存器TMOD和TCON,就象定时器的操作界面。

首先介绍定时器/计数器的方式寄存器TMOD。

TMOD的控制字可以看到,高四位和第四位分别代表两个定时器/计数器,所以我们可以以TMOD第四位来说明各位的定义与功能。

GATE:分为两种情况,GATE=0时,定时器的起停和INT1无关,在这种情况下,定时器的起停只取决与TR0.GATE=1时,在此种情况下定时器/计数器的开关不仅要由TR0来控制,而且还要受到INT1引脚的控制,只有TR1为1时,且INT1引脚也是高电平,定时器才能开始工作。

C/T:定时/计数器功能选择。

如果C/T为0就做定时器,如果C/T为1就做计数器。

当然只能二选一。

M1,M0:用M1,M0来控制定时器/计数器4种工作方式的选择。

工作方式0:M1=0,M0=0.13位定时.计数方式。

它由TL(1/0)的低五位和TH(0/1)的8位构成13位的计数器,此时TL(1/0) 的高3位未用。

工作方式1:M1=0,M0=1.是16位定时/计数方式,其他特性与工作方式0相同。

工作方式2:M1=1,M0=0.自动重装初值的8位定时/计数器。

初值放在T(0/1)的高8位。

在工作方式2,只有低8位参与计算,而高8位不参与计算,用作预置数存放,技术范围256。

每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,计预置数进入低8位。

这是由硬件自动完成的。

通常这种方式用于波特率发生器(我们将在串行接口中讲解)工作方式3:M1=1,M0=1.这种工作方式下,定时/计数器被拆成2个独立的定时/计数器来用。

其中,TL0可以构成8位的定时器或计数器的工作方式,儿TH0则只能作为定时器来用。

只有在T1以工作方式2运行时,才让T0以工作方式3运行。

然后,我们介绍控制寄存器TCONTCON控制寄存器TR0: T0的运行控制位。

启动定时器T0没有专门的指令,而是通过TR0进行控制。

当GATE=0时,T0的运行只取决于TR0的0和1;当门控位GATE=1时,仅当TR0=1,并且外中断0引脚上的输入值为高电平时,T0才开始计数,这两个条件缺一不可TF0: T0的溢出和中断申请标志位。

当T0溢出时,硬件置位TF0,表示提出了中断申请。

该标志位可以通过软件查询,也可以用软件清零和置位,在单片机响应中断申请后,硬件自动清零。

TR1:TF1:接下来我们来看一个典型的定时器程序。

要求:定时10ms,P1.0反相。

//定义头文件和位定义#include<reg51.h>#include<stdio.h>sbit P00=P0^0;sbit P13=P1^3;void main(void){//初始化端口P0=0xFF;P13=0;//初始化定时器TMOD=0x01;TH0=0xD8;TL0=0xF0;//启动定时器,开中断TR0=1;ET0=1;EA=1;//等待循环while(1);}//定时器0中断服务子程序void timer0_ISR(void) interrupt 1 using 1 {//定时器初始重载TH0=0xD8;TL0=0xF0;//操作P00=!P00;}到这里,大家肯定就会有疑惑,什么叫做中断服务子程序,什么又叫做中断。

我们稍后解释。

这里需要提醒大家的是单片机定时/计数器各种工作方式下的最大计数量。

工作方式0:13位,2的13次方等于8192次;工作方式1:16位,2的16次方等于65536次;工作方式2和3:都是8位的,2的8次方等于256次那么就出现了一个问题,如果我想定时1s的话,该怎么做呢?大家思考一下,然后我请个同学来回答。

下面我们一起来看看如何实现1s的定时亮灭。

#include<reg51.h>#include<stdio.h>#define unit unsigned int#define uchar unsigned charsbit P00=P0^0;sbit P13=P1^3;uint overflow_count=0;void main(void){P0=0xFF;P13=0;TMOD=0x01;TH0=0xD8;TL0=0xF0;TR0=1;ET0=1;EA=1;while(1){If(overflow_count==100) { P00=!P00;Overflow_count=0;};}void timer0_ISR(void) interrupt 1 using 1{TH0=0xD8;TL0=0xF0;Overflow_count++;}完成了小灯定时亮灭,我们就基本学会了如何使用单片机定时器/计数器的使用方法。

下面,就让我们来看看前面留下的问题----“中断”。

定义:中断属于一种对事件的实时处理过程,中断源可能随时停止CPU当前的工作,转而去处理中断服务程序,待中断服务程序完成后,再返回原来工作的断点处,继续原来的工作。

再者,我们需要知道,单片机内部有多个中断,分别是定时/计数器0中断----T0中断定时/计数器1中断----T1中断外中断0----INT0中断外中断1----INT1中断串口中断----串口中断那么,当不同的中断同时发出终端申请,自然就会有一个中断优先级的问题。

优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已经产生而未结束,又有一个中断产生的情况。

最后,就是中断的响应过程。

具体来说可以分为以下几个步骤。

保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈;寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址;执行中断服务程序,用中断服务程序处理需要改变的变量或者事件;中断返回,执行完中断服务程序后,从中断断点处返回主程序,继续执行主程序。

上面分什么是中断,中断优先级,中断的响应三个部分简单介绍了中断,下面我们来看看单片机中断系统有何作用。

简单的说,单片机在自动控制中所起到的作用就两个,一个是定时/计数,另一个就是中断的使用。

中断的作用如下:第一、实现高速CPU和低速外设之间的配合,利用中断方式进行I/O口操作,在宏观上可以看成CPU和外设的并行工作;第二、可以实现实时控制。

实时处理是控制系统对单片机提出的要求,各个设备可以随时向CPU发出中断申请,而CPU也必须做出快速响应和及时处理。

第三、实现故障的紧急处理。

当外设发生故障时,可以利用中断系统请求CPU及时处理这些故障。

第四、便于人机联系。

操作人员可以利用键盘等实现中断,完成人工介入。

接下来我们学习中断的使用!中断系统主要包括5个中断请求源和4个控制寄存器IE,IP,TCON和SCON来控制中断申请,中断开关和中断优先级。

1.中断方式和标志位TCONTCON的低四位用于外部中断的控制,高4位用于T0,T1的控制。

TCON中的控制字外部中断请求源IT0: INT0触发方式控制位,可由软件进行置位和复位。

IT0=0,INT0为低电平触发方式;IT0=1,INT0为负跳变触发方式。

IE0: INT0中断请求标志位。

当有外部中断的请求时,这位就会置1;在CPU响应中断后,IE0置0;IT1:IE1:2.中断允许寄存器IE中断允许寄存器IE其中:EA:总开关,如果它等于0,则所有中断都不允许ES:串行口中断允许ET1:定时器1中断允许EX1:外中断1中断允许ET0:定时器0中断允许EX0:外中断0中断允许5个中断的自然优先级为:外中断0----INT0中断----EX0定时器0----T0中断----ET0外中断1----INT1中断----EX1定时器1----T1中断----ET1串口中断----串口中断----ES中断优先级寄存器其中某位为1,那么就为高优先级。

相关文档
最新文档