单片机并行I O口应用
3.1MCS-51单片机的并行IO口
一、并行I/O口的功能结构
2、接口功能 (2)通用I/O接口
(四)P0口
此时“控制”信号为“0”,多路开关 MUX向下,输出驱动器处于开漏状态,故需 外接上拉电阻,这种情况下,电路结构与P1 相同,所以也是一个准双向口,当要作为输 入时,必须先向口锁存器写“1”。
一、并行I/O口的功能结构
(四)P0口
这是由接口的特殊结构所决定的。每一个 口都包含一个锁存器,一个输出驱动器和两 个(P3口为3个)输入缓冲器。各口的结构也 P 3 有些差异,下面分别介绍。
一、并行I/O口的功能结构
1、接口结构
(一)P1口
P1口一位的结构如下图所示:
图2.15
一、并行I/O口的功能结构
1、接口结构
(一)P1口
接口结构中锁存器起输出锁存作用, 8位锁存器组成特殊功能寄存器P1,场 效应管和上拉电阻组成输出驱动器,以 增大负载能力,三态门1和三态门2分别 用于控制输入引脚和锁存器的状态。
作为I/O口应用的一个实例,下面介绍 8031单片机的最小应用系统如下图所示
二、产生接口控制信号的指令
(四)P0口
8051指令系统中能与接口打交道的指令 大体可分两类 1.一般的输入/输出指令 2.“读-修改-写”指 令
二、产生接口控制信号的指令
1.一般的输入输出指令
(四)P0口
输入指令执行时,内部产生“读引脚”信号, 直接从口线读入,亦称“读引脚”指令。 下面是属于这种指令的各种实例:
二、产生接口控制信号的指令
(四)P0口 2.“读-修改-写”指令 INC P2 接口锁存器加1 DEC P1 接口锁存器内容减1 DJNZ P3,LOOP 减1后不为零则跳转 还有三条虽不明显,但也属此列: MOV P1.1,C CLR P1.1 SETB P1.1 将进位位送接口的某位 清接口的某一位 接口的某一位置位
2.3 80C51单片机的并行端口结构
80C51单片机的并行端口结构80C51共有4个8位的并行I/O口,分别记作P0、P1、P2、P3。
被归入专用寄存器。
I/O端口有串行和并行之分,串行I/O端口一次只能传送一位二进制信息,并行I/O端口一次能传送一组二进制信息。
(1)并行I/O口的功能①PO口:电路中包括一个数据输出锁存器和两个三态数据输入缓存器,另外还有一个数据输出的驱动和控制电路。
这两组端口用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口的总线接口,而不像P1、P3直接用做输出口。
P0.0~P0.7,P0口是8位双向I/O口,P0.i引脚可以是P0.0到P0.7的任何一位,即在P0口有8个与上图相同的电路组成。
该8位都是漏极开路(漏极开路即高阻状态,适用于输入/输出,其可独立输入/输出低电平和高阻状态)输出,每个引脚可以驱动8个LS型TTL负载且内部没有上拉电阻,执行输出功能时外部必须接上拉电阻(10K 即可)。
若要执行输入功能,必须先输出高电平方能读取该端口所连接的外部数据;若在访问外部存储器(RAM、ROM)和扩展的I/O口时,P0可作为地址总线(A0~A7)和数据总线(D0~D7),分时进行工作。
在指令的前半周期,P0口作为地址总线的低8位,在指令的后半周期为8位的数据总线。
P1口的各个单元:输入缓冲器:在P0口中,有两个三态的缓冲器,三态门有三个状态,即在其输出端可以是高电平、低电平和高阻状态(或称为禁止状态)。
上面一个是读锁存器的缓冲器,也就是说,要读取D锁存器输出端Q的数据,那就得使读锁存器的这个缓冲器的三态控制端(上图中标号为…读锁存器‟端)有效。
要读取P0.i引脚上的数据,也要使标号为…读引脚‟的这个三态缓冲器的控制端有效,引脚上的数据才会传输到我们单片机的内部数据总线上。
D锁存器:存储器中可以存放电荷,加一个小的存储器的单元,并在它的面前加一个开关,要让这一位输出时,就把开关打开,信号就进入存储器的单元,然后马上关闭开关,这一位的状态就被保存下来,直到下一次命令让它把开关再打开为止,这就是锁存器。
单片机并行I-O口的扩展方法
单片机并行I/O口的扩展方法摘要:由于在MCS-51单片机开发中P0口经常作为地址/数据复用总线使用,P2口作为高8位地址线使用,P3口用作第二功能(定时计数器、中断等)使用,所以对于51单片机的4个I/O口,其可以作为基本并行输入/输出口使用的只有P1口。
因此在单片机的开发中,对于并行I/O口的扩展十分重要,主要分析3种扩展并行I/O口的方法。
关键词: MCS-51单片机; 并行I/O口; 扩展MCS-51单片机有4个并行的I/O口,分别为P0口、P1口、P2口和P3口,4个并行I/O 口在单片机的使用中非常重要,可以说对单片机的使用就是对这4个口的使用。
这4个并行I/O口除了作为基本的并行I/O口使用,还常作为其他功能使用,如P0口经常作为地址/数据复用总线使用[1], P2口作为高8位地址线使用,P3口用作第二功能(定时计数器、中断等等)使用。
这样,单片机只有P1口作为基本的并行I/O口使用,如果在单片机的使用中对并行I/O口需求较多,对于并行I/O口的扩展就非常重要了。
下面通过具体的实例(8位流水灯设计)来给出几种不同的并行I/O口扩展方法。
为了更好地说明以下几种不同的并行I/O口扩展方法,假设利用单片机实现流水灯的设计。
采用单片机的P1口设计流水灯,电路。
由图1可知,8只LED直接连接在单片机的P1口上,通过对单片机进行编程即可以实现8只发光二极管产生流水灯。
1 使用单片机的串行口扩展并行I/O口单片机有一个全双工的串行口[2],这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为移位寄存器使用。
当单片机的串行口工作在模式0时,若外接一个串入/并出的移位寄存器(74LS164),就可以扩展一个8 bit并行输出口;若外接一个并入/串出的移位寄存器(74LS165),就可以扩展一个8 bit并行输入口。
,单片机外接一个串入/并出的移位寄存器(74LS164),这样就可以扩展8 bit并行输出口。
单片机应用技术(C语言版)第2版课后习题答案-王静霞
3
LED数码若采用动态显示方式,下列说法错误的是__________。
A.将各位数码管的段选线并联
B.将段选线用一个8位I/O端口控制
C.将各位数码管的公共端直接连接在+5V或者GND上
D.将各位数码管的位选线用各自独立的I/O端口控制
C
4
共阳极LED数码管加反相器驱动时显示字符“6”的段码是_________。
规定一个机器周期的宽度为12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。
当振荡脉冲频率为12MHz时,一个机器周期为1µs;当振荡脉冲频率为6MHz时,一个机器周期为2µs。
序号
知识点
题型
内容
答案
1
项目三单片机并行I/O端口的应用
3.1单项选择题
下面叙述不正确的是()
A.一个C源程序可以由一个或多个函数组成
P3口各引脚与第二功能表
引脚
第二功能
信号名称
P3.0
RXD
串行数据接收
P3.1
TXD
串行数据发送
P3.2
外部中断0申请
P3.3
外部中断1申请
P3.4
T0
定时/计数器0的外部输入
P3.5
T1
定时/计数器1的外部输入
P3.6
外部RAM写选通
P3.7
外部RAM读选通
3
什么是机器周期?机器周期和晶振频率有何关系?当晶振频率为6MHz时,机器周期是多少?
voiddelay(void)
{inti;
for(i=0; i<10000; i++);
}
10000
12
在单片机的C语言程序设计中,______________类型数据经常用于处理ASCII字符或用于处理小于等于255的整型数。
第3章MCS-51单片机的内部资源及应用
MOV P0, A ANL P0, #data ORL P0, A
(2)读端口数据方式: CPU读入的这个数据并非端口引脚线 上的数据。读端口数据可以直接读端口。例如,下面的指 令均可以从P1口输入数据,这是锁存器上的数据。
2.P2口
P2口常用做外部存储器的高8位地址 口。当不用做地址口时,P2口也可作为 通用I/O口,这时它也是一个准双向I/O 口。不必外接上拉电阻就可以驱动任何 MOS驱动电路,且只能驱动4个TTL输 入。P2口的位结构如右图所示。
3.P1口
P1口常用做通用I/O口,它也是一 个标准的准双向I/O口,不必外接上拉 电阻就可以驱动任何MOS驱动电路, 且只能驱动4个TTL输入。P1口的位结 构如右图所示。
制。
(3)中断允许控制寄存器IE (0A8H)
EA
ES ET1 EX1 ET0 EX0
(3)中断允许控制寄存器IE (0A8H)
中断与子程序的最主要区别:子程序是预先安排好的,中断 是随机发生的。
中断涉及的几个环节:中断源、 中断申请、开放中断、保护 现场、中断服务、恢复现场、中断返回。
2. 中断源
中断源是指引起中断的设备或事件,或发出中断请求的源头。
3. 中断的分类
中断按功能通常可分为可屏蔽中断、非屏蔽中断和软件中断三类。 可屏蔽中断是指CPU可以通过指令来允许或屏蔽中断的请求。 非屏蔽中断是指CPU对中断请求是不可屏蔽的,一旦出现,CPU必须响应。 软件中断则是指通过相应的中断指令使CPU响应中断。
1.I/O口直接用于输入/输出
在I/O口直接用做输入/输出时,CPU既可以把它们看做数据口,也可以看 做状态口,这是由用户决定的。
单片机原理及接口技术第5章 IO口应用-显示与开关键盘输入
图5-1
发光二极管与单片机并行口的连接
5
如果端口引脚为低电平,能使灌电流Id从单片机的外部流入内部,则将
大大增加流过的灌电流值,如图5-1(b)所示。所以,AT89S51单片机任 何一个端口要想获得较大的驱动能力,要采用低电平输出。 如果一定要高电平驱动,可在单片机与发光二极管之间加驱动电路,如 74LS04、74LS244等。 5.1.2 单片机I/O端口控制发光二极管的编程 发光二极管与单片机的I/O端口的连接,如图5-1(b)所示。如要点亮 某发光二极管,只需该I/O端口位写入“0”即可。下面通过一个例子介绍如
21
图5-6 4位LED静态显示的示意图
示字符。这样在同一时间,每一位显示的字符可以各不相同。但是,静态
显示方式占用I/O口线较多。 对于图5-6所示电路,要占用4个8位I/O口(或锁存器)。如果数码管 数目增多,则还需要增加I/O口的数目。在实际的系统设计中,如果显示位 数较少,可采用静态显示方式。但显示位数较多时,为了降低成本,一般 采用动态显示方式。 2. 动态扫描显示方式 显示位数较多时,静态显示所占用的I/O口多,为节省I/O口与驱动电路
单片机控制的8位I/O口锁存器输出相连。如果送往各个LED数码管所显示字 符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到
送入下一个显示字符的段码。因此,静态显示方式的显示无闪烁,亮度较
高,软件控制比较容易。 图5-6所示为4位LED数码管静态显示电路,各个数码管可独立显示,
只要向控制各位I/O口锁存器写入相应的显示段码,该位就能保持相应的显
闭合时,P3.0引脚为低电平。单片机对开关状态的检测是由程序检测
10
图5-3
开关、LED发光二极管与P1口的连接
第4讲 单片机并行IO口的应用
(4)电机转动程序流程图
程序如下:
TUN: MOV R2,#0
;循环计数器
MOTO_L:
MOV DPTR,TABA2 ;正转数据表
SJMP TUN
MOTO_R:
MOV DPTR,TABA3 ;反转数据表
TUN1: MOV A,R2
MOVC A,@A+DPTR ;取输出参数
; 置P1口为输入 ;查是否有按键? ;延时20mS ;按键仍有效吗? ;是,等待按键释放 ;累计按键次数
;延时与显示
2.矩阵式键盘电路Βιβλιοθήκη 理与编程1. 矩阵式键盘的结构
矩阵式键盘结构如图所示, 它由行线和列线组成, 按键位于行线和列线的交叉点上。
2.按键的识别
当键盘上没有键闭合时,所有的
行线和列线断开,行线X0~X3呈高 电平。当某个键闭合时,该键对应 的行列线短路,行线的状态由列线 状态决定。如右表所示:
1.电路设计
2.应用程序 若要实现以下功能:
开始时,P1.0亮,延时1S后左移至P1.1亮,如此移到P1.7 亮后,8个灯全亮,延时2S后,P1.7灭,然后由P1.7至P1.0 逐位熄灭。程序如下
ORG START: MOV
MOV
1000H ;程序从1000H单元开始存放
A,#1 R0,#8 ;循环8次
JNB ACC.1,KS2 ;P1.1=0,转KS2
P1.7
JNB ACC.2,KS3 ;P1.2=0,转KS2
89C51
:
:
开关应用接口电路
JNB ACC.7,KS8 ;P1.7=0,转KS8
PASS:
四.独立式按键的程序处理
单片机IO口应用及键盘实验4-1
其他:
通道0作为I/O输出时,需要上拉电阻。驱动 MOS电路时,阻值为4.7K欧姆,驱动LED 显示器时为470欧姆;
通道0作为数据/地址线工作时,不需要上拉 电阻;
并口输出应用举例
VCC
R
VCC 220
2k Px.x
OUT LED
继电器
2 键盘扩展原理
消除键抖:JNB P口,分支
延迟程序
JB
P口,分支
按下一次键,在很短时间内弹起,算一次键抖
K3,K4处理程序结构
按键按下 消抖
寄存器加一/减一
寄存器判断
没有达到要求, 寄存器值赋值给A
达到要求, 寄存器值修改, 再把值送入A
查表显示
逻辑分析
先制一张表,表里面放入要显示的数值0~9共 十个数,表中数值地址也为0~9
KeyDown: CLR UpDown ;第四个键按下后的处理 KEY_RET: RET
采用中断方式 ?如何编程?
3 键盘实验(独立键盘)
键盘硬件连接如图 实验要求: 编写程序实现: 1)按K1,数码管显示0;按K2,数码管显示9 2)按K3,数码管当前数值加一 按K3,数码管当前数值减一
键盘的按键有触点式和非触点式 ; 按键开关的抖动问题 数字、功能、命令 键号、键值 重键
图2
键盘
键盘的类型: 独立式 行列式(或矩阵式) 键盘的工作方式 编程扫描(查询法) 定时扫描 中断
键盘和单片机的连接
和I/O相连:将每个按键的一端接到单片机的I/O口,另 一端接地,如图3所示是实验板上按键的接法,四个 按键分别接到P3.0 、P3.1、P3.2和P3.3
单片机I/O口应用及键盘实验
单片机IO口介绍
P0口和P2的结构 口和P2 4.1.1 P0口和P2的结构
一、P0口的结构
下图为P0口的某位P0.n(n=0~7)结构图,它由一个 输出锁存器、两个三态输入缓冲器和输出驱动电路 及控制电路组成。从图中可以看出,P0口既可以作 为I/O用,也可以作为地址/数据线用。
地址/数据 地址/ 控制 读锁存器
地址/数据 地址/ 控制 读锁存器
T1 P0.n D Q MUX
VCC
内部总线 写锁存器
T2:如果此时该端口的负载恰是一个晶体管基极,且原端 口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若 此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0” 电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓 冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能 发生的错误。** 地址/数据 地址/ 控制 读锁存器
二、P3 P3第二功能(Q=1) P3 此时引脚部分输入(Q=1、W=1) ,部分输出(Q=1、W输出)
第二输出功能 第二输出功能 读锁存器 VCC
。
W
R P3.n P3口
D Q
内部总线 写锁存器
T
CLK Q
引脚
读引脚 第二输入功能 第二输入功能
P3第二功能各引脚功能定义: P3
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外部读控制
地址/数据 地址/ 控制 读锁存器
T1 P0.n D Q MUX
VCC
内部总线 写锁存器
T2
P0口 P0口 引脚
单片机IO口扩展技术
单片机IO口扩展技术] 0 引言在单片机家族的众多成员中,MCS-51系列单片机以其优越的性能、成熟的技术、高可靠性和高性价比,占领了工业测控和自动化工程应用的主要市场,并成为国内单片机应用领域中的主流机型。
MCS-51单片机的并行口有P0、P1、P2和P3,由于P0口是地址/数据总线口,P2口是高8位地址线,P3口具有第二功能,这样,真正可以作为双向I/O口应用的就只有P1口了。
这在大多数应用中是不够的,因此,大部分MCS-51单片机应用系统设计都不可避免的需要对P0口进行扩展。
由于MCS-51单片机的外部RAM和I/O口是统一编址的,因此,可以把单片机外部64K字节RAM空间的一部分作为扩展外围I/O口的地址空间。
这样,单片机就可以像访问外部RAM存储器单元那样访问外部的P0口接口芯片,以对P0口进行读/写操作。
用于P0口扩展的专用芯片很多。
如8255可编程并行P0口扩展芯片、8155可编程并行P0口扩展芯片等。
本文重点介绍采用具有三态缓冲的74HC244芯片和输出带锁存的74HC377芯片对P0口进行的并行扩展的具体方法。
1 输入接口的扩展MCS-51单片机的数据总线是一种公用总线,不能被独占使用,这就要求接在上面的芯片必须具备“三态”功能,因此扩展输入接口实际上就是要找一个能够用于控制且具备三态输出的芯片。
以便在输入设备被选通时,它能使输入设备的数据线和单片机的数据总线直接接通;而当输入设备没有被选通时,它又能隔离数据源和数据总线(即三态缓冲器为高阻抗状态)。
1.1 74HC2244芯片的功能如果输入的数据可以保持比较长的时间(比如键盘),简单输入接口扩展通常使用的典型芯片为74HC244,由该芯片可构成三态数据缓冲器。
74HC244芯片的引脚排列如图1所示。
74HC244芯片内部共有两个四位三态缓冲器,使用时可分别以1C和2G作为它们的选通工作信号。
当1 C和2G都为低电平时,输出端Y和输入端A状态相同;当1G和2G都为高电平时,输出呈高阻态。
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口
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。
89C51单片机并行口及应用
P3口的结构 P3口是一个多功能口,结构如图,与 是 个多功能 结构如图 与P1口相比, 相 增加了与非门和缓冲器,使P3口除了有准双向口外, 还具有第 功能 还具有第二功能。
P3口第二功能 不需要程序切 换 由硬件自 换,由硬件自 动完成。
zhousun@
8
P3口第二功能
zhousun@
6
P2口结构 P2口也有两种用途,一是做普通I/O 口使用,二是做高8位地址总线,与P1口相比,多 了一个转换控制部分,作为普通I/O使用时,MUX倒 向锁存器。 在使用小容量RAM时, 可以释放P2口。 口
zhousun@
7
zhousun@
17
5.位操作与位域
通过位域型数据,可以方便地实现位操作也可用C 语言的位运算进行 例:将a的第三位清0 void id main(void) i ( id) { static t ti unsigned i d char h a; a=0xff; a&=~(1<<3); & (1 3) } 将a第三位取反 a^=1<<3 第三位置 位置1 a|=1<<3 | 将a第
zhousun@
位长度 32 32 32 32 8/16 1 8 16
表示范围 -2147483648~2147483647 0 4294967295 0~4294967295
-128~+127; -32768~32767 0,1 0 255 0~255 0~65535
12
zhousun@
流水灯:(逻辑运算:与、或、非)
main() { unsigned char LED; LED = 0x01; while(1) { P2 =~LED; y ( ); delayms(250); if(LED == 0x80 ) LED = 0x01; else LED = LED << 1;
单片机IO口介绍
单片机IO口介绍单片机(Microcontroller)是一种集成了微处理器、存储器和各种I/O接口的芯片。
其中,I/O口是单片机与外部设备进行数据交换的通道,它是单片机最重要的功能之一、本文将详细介绍单片机的I/O口。
一、I/O口的基本概念在单片机中,I/O口是单片机与外部设备进行数据交换的接口。
它通过I/O线与外部设备相连接,可以实现数据的输入和输出。
单片机的I/O口可以分为通用I/O口和特殊功能I/O口两种类型。
通用I/O口是单片机常用的一种I/O口,它可以通过软件编程实现不同的功能,包括数字输入、数字输出和模拟输入输出等。
通用I/O口可以根据实际需求进行设置,提供灵活的数据交换方式。
特殊功能I/O口是单片机固定的一些特殊功能接口,通常用于特定的应用,如定时器、比较器、串行通信等。
特殊功能I/O口具有特殊的功能和特殊的操作要求,需要根据具体的应用进行设置。
二、通用I/O口的工作原理通用I/O口是单片机最常用的一种I/O口,它可以通过软件编程实现不同的功能。
通用I/O口的工作原理如下:1.输入模式:通用I/O口可以设置为输入模式,接收来自外部设备的输入信号。
在输入模式下,通用I/O口通常通过上拉或下拉电阻来实现输入的稳定性,并通过软件读取输入信号的状态。
2.输出模式:通用I/O口可以设置为输出模式,向外部设备输出信号。
在输出模式下,通用I/O口可以输出高电平或低电平信号,并通过软件控制输出的状态。
通用I/O口的状态可以通过软件进行设置和读取,可以实现灵活的数据交换。
通用I/O口的应用非常广泛,可以用于控制开关、驱动显示、读取按键等。
三、特殊功能I/O口的工作原理特殊功能I/O口是单片机固定的一些特殊功能接口,通常用于特定的应用。
特殊功能I/O口具有特殊的功能和特殊的操作要求,需要根据具体的应用进行设置。
下面介绍一些常见的特殊功能I/O口。
1.定时器/计数器:定时器/计数器是特殊功能I/O口中最常用的一个。
并行IO端口的基本结构与功能
单片机硬件结构-并行I/O端口的结构与功能王莉副教授河南理工大学总述▼51单片机有32个I/O引脚,分属于4个8位端口(P0~P3)。
▼这4个端口的电路结构不完全相同,功能也有区别。
▼作为并行输入接口(作为信息输入通道)▼作为并行输出接口(作为信息输出通道)▼可作为串行通信通道(双机通讯的连接通道)▼作为并行扩展接口通道(作为地址线,数据线使用)P1口包含P1.0~P1.7共8个相同结构的电路P1.X = 1个锁存器 + 1个场效应管驱动器 + 2个三态门缓冲器P1.0~P1.7中的8个锁存器共同组成P1特殊功能寄存器,地址为90H 。
21D Q CK/Q读引脚读锁存器写锁存器内部总线Vcc引脚P1.X内部上拉电阻P1.X 有三种工作方式:读锁存器输出读引脚 21D Q CK/Q读引脚读锁存器写锁存器内部总线Vcc引脚P1.X内部上拉电阻输出数据 为 1 时1 1 0P1口直接作输出口时,输出信息的过程(将1送到P1.X 引脚的过程)21D Q CK/Q读引脚读锁存器写锁存器内部总线 Vcc引脚P1.X 内部上拉电阻截止=1输出数据 为 0 时0 0 1P1口直接作输出口时,输出信息的过程(将0送到P1.X 引脚的过程)21D Q CK/Q读引脚读锁存器写锁存器内部总线 Vcc引脚P1.X 内部上拉电阻导通=01 1 021D Q CK/Q读引脚读锁存器写锁存器内部总线 Vcc引脚P1.X 内部上拉电阻截止▼ P1在作为输入口,读引脚时,需先向端口数据锁存器输出1,使场效应管截止,保证数据读入的正确性;P1口作为输入口,读引脚21D Q CK/Q读引脚读锁存器写锁存器内部总线 Vcc引脚P1.X内部上拉电阻▼读-修改-写方式的指令,从锁存器读入信号,其它指令则从端口引脚线上读入信号。
P1口作为输入口,读锁存器例如: ANL P0,AP0口21DQCK /Q读引脚读锁存器写锁存器内部总线地址/数据 控制引脚P0.X34VccP0.0~P0.7中的8个锁存器构成了P0口特殊功能寄存器,地址为80H与P1.X 区别: 输出控制电路 输出驱动电路 增加总线功能P0口(作为I/O 口,输出)21D Q CK/Q读引脚 =1读锁存器写锁存器内部总线 地址/数据 控制 引脚P0.X3 41 0截止截止=0Vcc Vcc▼输出条件:控制端自动为“0”( 上方场效应管截止,多路开关与Q 连通)▼输出“1”时,两个场效应管均截止。
51单片机外设功能及应用
漏极开路电路,若驱动NMOS或其它拉流负载
时,需要外接上拉电阻。P0的输出级可驱动8
个LSTTL负载。
地址/数据 VCC
读锁存器
控制
内部总线 写锁存器
DQ CLK Q
T1
P0.n P0口
T2
引脚
MUX
读引脚
P0口作为通用输入
P0口作为输入口使用时,即为读引脚情况。所谓读 引脚就是直接读取P0.X引脚的状态,这时在“读引 脚”信号的控制下把缓冲器打开,将端口引脚上的
关于扩展I/O端口,将在系统扩展的相关章节中介 绍。
80C51单片机一般有4个8位的双向并行I/O 口,分别记作P0、P1、P2和P3。既可以作输 入口,又可以作输出口。因此,P0~ P3口在 结构和特性上有相同之处,但又各具特色。 它们的电路设计非常巧妙。熟悉它们的逻辑 电路,不但有利于正确合理使用这四个并行I/ O口,而且会对设计单片机外围逻辑电路有 所启发。
读锁存器
地址 控制 VCC
内部总线 写锁存器
DQ CLK Q
R
P2.n P2口
T
引脚
MUX
读引脚
P2口作为通用I/O口
在P2口作为一般I/O口使用时,与P1口类似, 用于输出时不需要外接上拉电阻,当用于输入 时,仍需要向锁存器先写入“1”,然后再读取。
读锁存器
内部总线 写锁存器
地址 控制 VCC
读锁存器
控制
内部总线 写锁存器
DQ CLK Q
T1
T2 MUX
P0.n P0口 引脚
读引脚
P0口作为地址/数据总线使用
应当指出,P0口在作为一般输入口使用时在读取管 脚之前还应向锁存器写入“1”,使上下两个场效应 管均处于截止状态,使外接的状态不受内部信号的
单片机 51系列单片机的功能
4.1.3.1 P2口某位的结构
P2的位结构比P1口多了一个转换控制部分。
4.1.3.2 P2口的功能特性
8位准双向口I/O口。在访问外部存储器, 可以作为扩展高8位地址总线输出高8位地址。 在对EPROM编程和程序验证期间,它接收 高8位地址。P2口可以驱动4个LSTTL负载。
4.1.5 并行口的应用
BEEP:MOV R7,#5
BEEPL:CLR P1.0
LCALL DEL5
SETB P1.0
DEL10
LCALL
R7,BEEPL
DJNZ
RET
此子程序中,DEL5和DEL10分 别为延时0.5s和1s的子程序。
4.1.5 并行口的应用
4.1.5 并行口的应用
分析下述程序的功能
P1.4-P1.7的状态值不变。
RET 错误指令:MOV P1.3,P1.7 ;位变量的传送必须经过
4.1.2.1 P3口某位的结构
与P1.n口相比,多了一个“与非门”和一个三态输 入缓冲器。
4.1.2.2 P3口的功能特性
8位准双向I/O口,在MCS-51系列单片机中, 这8个引脚以及P1.0和P1.1口还用于专门功 能,是复用双功能口。P3口能驱动4个 LSTTL负载。
第4章 51系列单片机的功能模块及其应用
本章学习目标: 掌握89C52的并行口结构及其应用。 了解定时器/计数器的一般结构并熟练掌
握其应用。 掌握串行口的工作原理及应用。
4.1 并行口及其应用
MCS-51系列单片机有四个8位准双向的并行 I/O口,共占32根引脚。每个端口都包含一个锁 存器、一个输出驱动器和两个三态输入缓冲器。 我们把这四个端口称为P0~P3,它们在特殊功 能寄存器SFR中占四个单元。这四个端口的功能 各不相同:在无片外扩展存储器的系统中,这四 个端口的每一位都可以作为双向I/O端口使用; 在具有片外扩展存储器的系统中,由P2送出高8 位地址,P0分时工作,先送出低8位地址,然后 可用作数据双向总线;P1只能作为通用并行I/O 口;P3是双功能口,除作为I/O口使用外,每位 还独立定义了第二I/O功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关系运算符
关系运算符 优先级
高
<
<=
>
>=
== !=
低
关系表达式
用关系运算符将两个表达式(可以是算术表达 式、关系表达式、赋值表达式或逻辑表达式) 连接起来的式子,称为关系表达式。 关系表达式的值为逻辑值“真”或“假”,以 1代表“真”,以0代表“假”。 例如: (1)关系表达式“8==4”的值为 ,表达式的 值为 。 (2) 关系表达式“5>0”的值为 ,表达式的 值为 。
选择语句
基本if语句的格式如下: if (表达式) { 语句组; } if语句执行过程:当“表达式”的结果为“真”时,执 行其后的“语句组”,否则跳过该语句组,继续执行下 面的语句。
表达式 真(非0) 假(0)
语句组
选择语句
if语句中的“表达式”通常为逻辑表达式或关系表达式, 也可以是任何其他的表达式或类型数据,只要表达式的 值非0即为“真”。以下语句都是合法的: if(3){……} if(x=8){……} if(P3_0){……} 在if语句中,“表达式”必须用括号括起来。 在if语句中,花括号“{ }”里面的语句组如果只有一条 语句,可以省略花括号。如“if (P3_0==0) P1_0=0;”语 句,但是为了提高程序的可读性和防止程序书写错误, 建议读者在任何情况下,都加上花括号。
下一条语句
while执行过程
循环语句
循环体 格式:do { 循环体语句组; 绝对不能少分号! 花括号不 } while(循环继续条件); 能丢掉! 请问:下述程序实现了什么功能? do-while语句用来实现“直到型”循环 main( ) 执行过程:先无条件执行一次循环体, { int i,sum=0; 然后判断条件表达式,当表达式的值 do 为真(非0)时,返回执行循环体直 { sum=sum+i; 到条件表达式为假(0)为止。 i++; }while(i<=100); }
选择语句
if-else语句的一般格式如下: if (表达式) { 语句组1; } else { 语句组2; } if-else语句执行过程:当“表达式”的结果为“真”时,执行其后的“语 句组1”,否则执行“语句组2”
真(非0)
表达式
假(0)
语句组1
语句组2
选择语句
if-else-if语句是由 if else 语句组成的嵌套,用来实现多个条件分支的选择, 其一般格式如下: if (表达式1) { 语句组1; } else if (表达式2) { 语句组2; } … else if (表达式n) { 语句组n; } else { 语句组n+1; }
循环体语句组
非0(真)
循环继续的条 件表达式
0(假) 下一条语句
循环语句
总循环次数已确定的情况下,可采用for语句形式为: for语句的一般形式: for(循环变量赋初值;循环继续条件;循环变量增 值 ) 分隔符 { 为分号 循环体语句组; }
请问:下述程序实现了什么功能? main( ) { int i,y=0; for(i=1;i<=10;i++) { y=y+i; } }
P1口的结构
P1口逻辑电路
P1口的结构
Hale Waihona Puke P1口是准双向口,只能作为通用I/O口使用。 P1口作为输出口使用时,无需再外接上拉电阻。 P1口作为输入口使用时,应区分读引脚和读端口。读 引脚时,必须先向电路中的锁存器写入“1”,使输出级 的FET截止。
P2口的结构
P2口逻辑电路
P2口的结构
单片机系统扩展时,P2口还可以用来作为高8位地址 线使用,与P0口的低8位地址线共同组成16位地址总线, 此时多路开关应接通“地址”端。 P2口是准双向口,在实际应用中,可以用于为系统提 供高8位地址,也能作为通用I/O口使用。 P2口作为通用I/O口的输出口使用时,与P1口一样无 需再外接上拉电阻。 P2口作为通用I/O口的输入口使用时,应区分读引脚 和读端口。读引脚时,必须先向锁存器写入“1”。
自增、自减运算
自增运算符(++)和自减运算符(--): (1)前置运算──++变量、--变量 即先增减、后运算。 (2)后置运算──变量++、变量-- 即先运算、后增减。
实战演练:请说明程序运行完后x,y,z,m,n的值分别是多 少? main() { int x=6,y,z,m,n; y=++x; z=x--; m=y/z; n=y%z; }
练习一:
1、按一下S1键LED全亮,按一下S2键LED全灭。 (单分支选择语句)
2、按住S1键LED全亮,松开S1键LED全灭。
(双分支选择语句)
3、按下S1键点亮LED,按S2键熄灭LED,且S2优 先,只要S2被按住LED就不能被点亮。
(if else if语句) 4、按S1键,D1亮;按S2键,D2亮;按S3键,D3 亮;按S4键,D4亮,每次只能亮一个LED灯。
可以一行书写多条语句。
认识C语言
结构化语言 丰富的数据类型 便于维护管理 与汇编语言相比,C语言的优点如下: 不要求编程者详细了解单片机的指令系统,但需了 解单片机的存储器结构; 寄存器分配、不同存储器的寻址及数据类型等细节 可由编译器管理; 结构清晰,程序可读性强; 编译器提供了很多标准库函数,具有较强的数据处 理能力。
循环语句
格式:while(循环继续的条件表达式) { 语句组; }
花括号不 能丢掉!
循环体
循环继续的条 件表达式 非0(真) 循环体语句组
0(假)
while语句用来实现“当型”循环, 执行过程:首先判断表达式, 请问:下述程序实现了什么功能? 当表达式的值为真(非0)时, main( ) 反复执行循环体。为假(0)时 { int i,sum=0; 执行循环体外面的语句。 while(i<=10) { sum=sum+i; i++; } }
循环变量增值
for的下一条语句
for(循环变量赋初值;循环继续条件;循环变量增值 ) { 循环体语句组; }
C语言数据与运算
1. 赋值运算符 2. 算术运算符和算术表达式 3. 关系运算符和关系表达式 4. 逻辑运算符和逻辑表达式
分隔符 为分号
赋值运算符
赋值语句的作用是把某个常量或变量或 表达式的值赋值给另一个变量。
C语言的基本语句
C语言程序的执行部分由语句组成。C语言提供了丰富 的程序控制语句,按照结构化程序设计的基本结构:顺 序结构、选择结构和循环结构,组成各种复杂程序。这 些语句主要包括表达式语句、复合语句、选择语句和循 环语句等。
表达式语句和复合语句
表达式语句是最基本的C语言语句。表达式语句由表 达式加上分号“;”组成,其一般形式如下: 表达式; 执行表达式语句就是计算表达式的值。 在 C 语言中有一个特殊的表达式语句,称为空语句。 空语句中只有一个分号“;”,程序执行空语句时需要 占用一条指令的执行时间,但是什么也不做。在C51程 序中常常把空语句作为循环体,用于消耗CPU时间等待 事件发生的场合。
P3口的结构
P3口逻辑电路
P3口的结构
当P3口作为I/O端口使用时,“第二输出功能”端应 保持高电平。 P3口是准双向口,可以作为通用I/O口使用,还可以 作为第二功能使用。作为第二功能使用的端口,不能同 时当作通用I/O口使用,但其他未被使用的端口仍可作为 通用I/O口使用。 P3口作为通用I/O的输出口使用时,不用外接上拉电 阻。
P0口的结构
除了I/O功能以外,在进行单片机系统扩展时,P0口 是作为单片机系统的地址/数据线使用的,一般称为地址 /数据分时复用引脚。 当输出地址或数据时,由内部发出控制信号,使 “控制”端为高电平,打开与门,并使多路开关MUX处 于内部地址/数据线与驱动场效应管栅极反相接通状态。 此时,输出驱动电路由于两个FET处于反相,形成推拉 式电路结构,使负载能力大为提高。输入数据时,数据 信号直接从引脚通过输入缓冲器进入内部总线。
符号为‘=’。这里并不是等于的意思, 只是赋值,等于用‘==’表示。 赋值语句左边必须是变量或寄存器,且 必须先定义。 常量不能出现左边。
赋值运算符和赋值表达式
简单的赋值运算符:
=
复合的赋值运算符
i+=2 等价于 i = i + 2 a*=b+ + =、-=、*= 5 等价于 a = a * (b + 5) x% /= 等价于 x = x%3 、%=、= 3
算术运算符
+(加法运算) -(减法运算) * (乘法运算符) /(除法运算符) % (求余运算符,或称模运算符)如: ++ (变量自加1) -- (变量自减1)
4 % 2=0
注
意
两个整数相除结果为整数,如8/5的结果为1,舍去小数部分。 如果参加运算的两个数中有一个数为实数,则结果是实型。 求余运算要求%两侧都是整型数据。
第3章 单片机并行I/O口应用
本章内容
并行I/O口电路结构 认识C语言
C语言的基本语句
C语言数据与运算 数组的概念
并行I/O口电路结构
MCS-51系列单片机共有四个8位并行I/O口,分别 用P0、P1、P2、P3表示。 每个I/O口既可以按位操作使用单个引脚,也可以按
字节操作使用8个引脚。
选择语句
表达式1 真(非0) 假(0) 表达式2 真(非0) 假(0) 表达式„ 真(非0) 假(0) 表达式n 真(非0)
语句组1
语句组2
语句组„
语句组n
语句组n+1
选择语句
多分支选择的switch语句, 其一般形式如下: switch(表达式) { case常量表达式1: 语句组1;break; case常量表达式2: 语句组2;break; …… case常量表达式n: 语句组n;break; default : 语句组n+1; } 该语句的执行过程是:首先计算表达式的值,并逐个与case后的常量表达 式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行对应 该常量表达式后的语句组,再执行break语句,跳出switch语句的执行,继 续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同, 则执行default后的语句组。