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

  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
相关文档
最新文档