第4章 并行IO口的应用与扩展讲解
IO接口的扩展方法
P2.7 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 /WR
8051
OE D7 Q7 D6 Q6 D5 Q5 D4 Q4 D3 Q3 D2 Q2 D1 Q1 D0 Q0 G
74LS373
D7 D6 D5 D4 D3 D2 D1 D0
输出Байду номын сангаас备
程序如下: MOV DPTR, #7FFFH MOV A, 60H MOVX @DPTR, A
C口置位/复位控制字
D7 × × × D3 D2 D1 D0 0: 复位 1: 置位 位选择 0 00 0 01 0: 复位 1: 置位 位选择 0 00 0 01 PC0 PC1 0 10 0 11 1 00 1 01 1 10 1 11 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7
例:如图上页所示,假设8255A芯片的PA接一组8只状态指示灯,PB接一组
8个开关,现须将开关闭合的状态输入到片内60H单元保存,将70H单元的内 容送状态指示灯显示,并置位PC7引脚,编写相应程序。
解:根据题意,设置8255A的A口方式0输出,B口方式0输入,C口高四位输
出 , 则 8255A 的 方 式 字 为 82H ( 10000010B ) , C 口 置 位 / 复 位 字 为 0FH ( 00001111B), 8255A的方式字及置位 /复位控制字地址为 7FFFH。初始化 过程及输入/输出的程序如下:
方式 1: 选通输入/输出方式。 共有3口, 被分为两组。A组包括A口和PC7-PC4, A口可由 编程设定为输入或输出, PC7-PC4作为输入/输出操作的选通信 号和应答信号。B组包括B口和PC3-PC0, 这时C口作为 8255A和 外设或CPU之间传送某些状态信息及中断请求信号。 方式 2: 双向传送方式。 只有A口有方式 2, 此时, A口为8位双向传送数据口, C
并行IO口扩展控制讲义
并行IO口扩展控制讲义概述并行IO口扩展控制是一种常见的硬件设计技术,用于将单一的IO 口扩展为多个并行IO口,以增加系统的输入输出能力。
在本讲义中,我们将介绍并行IO口扩展控制的根本原理、应用场景以及具体的硬件设计方法。
根本原理并行IO口扩展控制的根本原理是通过串并转换器和多路复用器实现的。
串并转换器将串行信号转换为并行信号,多路复用器将并行信号转换为串行信号。
通过这种方式,可以将一个IO口的输出信号转换为多个并行输出信号,或者将多个并行输入信号转换为一个IO口的输入信号。
应用场景并行IO口扩展控制在很多场景中都有广泛的应用。
以下是一些常见的应用场景:1.高速数据采集系统:在一些需要高速数据采集的系统中,通常需要同时采集多个传感器的数据。
通过并行IO口扩展控制,可以将单一的IO口扩展为多个并行输入口,以实现并行采集多个传感器的数据。
2.并行通信接口:在一些通信设备中,需要同时处理多个并行数据流。
通过并行IO口扩展控制,可以将单一的IO口扩展为多个并行输入输出口,以实现并行处理多个数据流。
3.扩展外设控制:在一些嵌入式系统中,IO口通常是有限的。
通过并行IO口扩展控制,可以将单一的IO口扩展为多个并行输入输出口,以控制更多的外设。
硬件设计方法下面是一种常见的硬件设计方法,用于实现并行IO口扩展控制:1.确定需要扩展的IO口数量:根据特定的应用需求,确定需要扩展的IO口数量。
2.选择串并转换器和多路复用器:根据需要扩展的IO口数量,选择适宜的串并转换器和多路复用器。
常见的串并转换器包括移位存放器和时序控制器,常见的多路复用器包括数据选择器和多路选择器。
3.连接串并转换器和多路复用器:将串并转换器和多路复用器按照设计图纸进行连接。
4.调试和验证:完成硬件连接后,进行调试和验证。
确保IO口扩展功能正常工作。
总结通过并行IO口扩展控制,可以将单一的IO口扩展为多个并行IO 口,以增加系统的输入输出能力。
第四讲 并行IO口的应用
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
89C51
开关应用接口电路
四.独立式按键的程序处理
键盘实质上是一组开关,常用的按键都为机械弹 性开关,利用机械触点的断、合作用来实现按键功 能。当按键或键松开时,由于机械撞击的作用,开 关的动作会产生抖动,时间在5~10mS,若不作处 理,很容易误把一次按键当多次按键。 解决的办法是: A: 加去抖动硬件电路。 B:用软件延时,待键稳定后再作键输入处理
A AB B BC C CA
注:若按6、5、4、3、2、1方向输出,则电机反方向运行
输出波形图:
P1.0
P1.1
P1.2
(2)转速显示: 设最快转速时相序输出周期为1ms,可用按键调 节,调节分10档,每档周期增加1ms,档位用LED数 码管显示0~9来指示。 (3)键盘电路:如右图
系统采用其中四个按键, 安排如下: K1: 正转启动 K2:反转启动 K3:停机 K4:速度循环调节
1.特性 4个口可以字节输入、输出,也可以位输入、输出。 P0口作输出口使用时要加上拉电阻,阻值约0.5K~10K, 视负载而定。 P0口最大负载能力为8个TTL负载;P1~P3口最大负载能 力为4个TTL负载(注:指的是高电平输出,若低电平 输出负载能力可加大)。 4个都是准双向I/O口,作输入时,必须先向端口写入 “1”,使端口处于高阻状态。 单片机复位时,所有端口全为“1”。
二、静态LED数码管显示与驱动 1.LED显示器结构及其工作原理 LED显示器是由发光二极管组成的用来显示特定字 段的显示器。常用的有7段码和“米”字形两种,当 然也可以由用户根据自己的需要定制。 发光二极管分共阳极和共阴极两种,如图所示。
并行IO口扩展
PA0-PA7 PB0-PB7 PC0-PC5 AD0-AD7 IO/ M TIMER IN TIMER OUT RD、WR ALE CE RESET
端口A的I/O线(8位,接外设) 端口B的I/O线(8位,接外设) 端口C的I/O线(6位,接外设) 三态地址/数据复用线(8位,一般接单片机P0 口,CPU与8155之间的地址、数据、命令、状 态等信号都通过它来传送) 端口/存储器 选择控制 “0”选择片内RAM “1”选择片内I/O口 8155片内定时器/计数器的计数脉冲输入引脚 8155片内定时器/计数器的计满回零输出引脚 分别是对8155片内的RAM或I/O口的的读、写控 制信号 地址锁存引脚 选片 复位引脚
2、8255A内部结构 8255A内部结构由以下四部分组成: 数据端口A、B、C;A组控制和B组控制;读/写控制逻 辑电路;数据总线缓冲器。结构如图所示
端口A:包括一个 8 位的数据输出锁存/缓冲器和一个 8位的数 据输入锁存器,可作为数据输入或输出端口, 并工作于三种 方式中的任何一种。 端口B: 包括一个 8 位的数据输出锁存/缓冲器和一个 8位的 数据输入缓冲器,可作为数据输入或输出端口, 但不能工作 于方式2。 端口C: 包括一个 8 位的数据输出锁存/缓冲器和一个 8位的 数据输入缓冲器, 可在方式字控制下分为两个4位的端口(C 端口上和下),每个4位端口都有4位的锁存器, 用来配合端 口A与端口B锁存输出控制信号和输入状态信号,不能工作于 方式1或2。 A组和B组控制的作用如下: A组控制逻辑控制端口A及端口C的上半部; B组控制逻辑控制端口B及端口C的下半部。
Y2 Y1 Y0
ALE AD0~AD7 RD WE CE PA PB
8155 PC
+5V
并行IO口
P1口只能作为通用I/O口, 内部结构如图所示,由于 内部有上拉电阻,因此输 出时无需加上拉电阻,但 输入时,同P0口一样,必 须向端口输出‘1’,
P2口既可以作为通用I/O 口,在扩展程序存储器、 外部数据存储器或I/O口时, 也可作为地址总线的高8位。 作为I/O口使用时,用法与 P1口一样。
P0口的基本功能是数据的 输入与输出,此外在扩展 程序存储器、外部数据存 储器或I/O口时,作为数 据总线和低8位地址总线。
是P0口作为输出口使用时 需加上拉电阻, ;P0作为 输入口使用时,必须首先 写端口输出‘1’.
在实际应用中,P0口常作为地址/数据总 线口用,即,P0口先输出片外存储器的低8
并行I/O口
I/O端口是单片机实现信息交换和对外控制的重 要通道。
单片机内部有P0、P1、P2、P3 4个8位双向I/O 口,外设与这些端口可以直接相连,无需另外的 接口芯片。P0~P3既可以按字节输入或输出,也 可以按位进行输入输出,共32条口线,其控制十 分灵活方便。各个端口的结构、功能有所不同 。
P2口除了I/O使用外,还可以作为地址端 口使用,当使用外存储器时,与P0口一起 组成16位地址,这是,P2口输出高8位地址 。
注意:P1口输出()地址。
P3口除了双向输入/输出 口功能外,还具有第二功 能,其内部结构如图所示。 其输入/输出的用法同P1 口。
Ps:P0作输入时不需要上拉电阻,但要先置1。 因为P0口作一般I/导通,永远只能 读到0。 因此在输入前置1,使下拉场效应管截止,端口会 处于高阻浮空状态,才可以正确读入数据。 至于输出时,输出0是正常的,输出1时由于端口 处于浮空状态不能正确输出1,因此才需要接上拉 电阻。
单片机并行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并行输出口。
第4章1节并行接口扩展技术
举例:将片外RAM6000开始的连续10个字 节内容清零
• xdata unsigned char buffer[10] _at_ 0x6000;
• void main( ) • { unsigned char index; • for(index=0;index<10;index++) • { buffer[index]=0; • } •}
3、地址的使用(绝对地址的访问)
•
包括片内RAM、片外RAM及I/O的访问。 C51语言提供了两种比较常用的访问绝 对地址的方法。 • (1)绝对宏 • 用#include<absacc.h>即可使用其中 声明的宏来访问绝对地址,包括CBYTE 、XBYTE、PWORD、DBYTE、CWORD、 XWORD、PBYTE、DWORD,具体使用方法 参考absacc.h头文件。其中:
(1)线译码
• 所谓线译码是低位地址线用作I/O接口芯 片的片内译码,剩余的高位地址线直接作为 I/O接口芯片的片选,即一线选中。
地址范围: (X为不用的地址线,设定为1)
(2)译码器译码 所谓译码器 译码是低位地址 线用作I/O接口 芯片的片内译码, 剩余的高位地址 线接译码器的输 入,译码器的输 出接片选信号 。
4.1.2
总线与译码
• 1、51单片机的总线
芯片一般的外部引脚:
• • • • • • • • • 并行存储器一般不需要扩展了。 D7-D0:数据线,和单片机数据总线相连; A?-A0:地址线(不同的芯片, 地址线的数量不一样) /RD:读允许 /WR:写允许 /CS:片选 I/O:和外部设备相连 的信号线,不同的芯片有不同的I/O线。
• 如设置8255A工 作于方式0,且 PA口为输出、 PB口为输出、 PC口为输入, 则控制字为: 10001001B,即 89H。
单片机应用之单片机并行IO端口课件
并行IO端口具有速度快、数据传 输量大、实时性高等优点,适用 于需要大量数据传输和控制的应 用场景。
并行IO端口的种类
独立并行IO端口
每个端口独立控制,可以同时进行多 个输入输出操作。
共享并行IO端口
多个端口共享一组数据线,需要通过 分时复用的方式进行数据传输。
并行IO端口的应用场景
工业控制
并行IO端口的配置与优化
配置IO端口中断
根据需要配置IO端口的中断功能,以 便在特定事件发生时产生中断。
优化IO端口性能
根据实际应用需求,优化IO端口的性 能,如调整数据传输速率、降低功耗 等。
04
单片机并行IO端口的使用 注意事项
并行IO端口的兼容性问题
总结词
在单片机并行IO端口的应用中,兼容性是一个重要的问 题。
总结词
了解并遵循相关技术规范和标准,如SPI、I2C等,有助于 提高并行IO端口的兼容性。
详细描述
不同厂商生产的单片机可能具有不同的并行IO端口协议 ,因此在设计或选择单片机时,需要确保所选的单片机与 目标系统或应用兼容。
详细描述
遵循标准协议可以确保不同厂商生产的设备之间的互操作 性,从而简化系统集成和降低开发成本。
单片机应用之单片 机并行IO端口课件
目录
• 单片机并行IO端口概述 • 单片机并行IO端口的工作原理 • 单片机并行IO端口的编程方法 • 单片机并行IO端口的使用注意事项 • 单片机并行IO端口的应用实例
01
单片机并行IO端口概述
定义与特点
定义
并行IO端口是单片机上的一种接 口,可以同时进行输入和输出操 作。
并行IO端口的抗干扰能力
• 总结词:并行IO端口的抗干扰能力对于其稳定性和可靠性至关重要。
第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:
四.独立式按键的程序处理
(9)IO口扩展
+5V
R 8
WR P2.0 RD
1
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 G
D0 D1 D2 D3 D4 D5 D6 D7
K0 K1 K2 K3 K4 K5 K6 K7
74LS244
程序如下:
ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV DPTR,#0FEFFH;数据指针指向I/O口地址 MOVX A,@DPTR ;从244读入数据,检测按键 MOVX @DPTR,A ;向273输出数据,驱动LED AJMP MAIN END
同时,段选线上输出相应位要显示字符的字型码, 这样同一时刻,4位LED中只有选通的那一位 显示出字符,而其它三位则是熄灭的。
同样,在下一时刻,只让下一位的位选线处于选 通状态,而其它各位的位选线处于关闭状态时, 在段选线上输出相应位将要显示字符的字型码, 则同一时刻,只有选通位显示出相应的字符, 而其它各位则是熄灭的。如此循环下去,就可 以使各位显示出将要显示的字符, 虽然这些字符是在不同时刻出现的,而且同一时 刻,只有一位显示,其它各位熄灭,但由于人 眼有视觉暂留现象, 只要每位显示间隔足够短便可造成多位同时亮的 假象,达到显示的目的。
// a b c d e f g h // Msb.......................................Lsb Const uchar table[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6} Const uchar counttable[4]={0x00,0x10,0x20,0x30} uchar Dispbuf[4]; uchar DispCount=0; /********************************************************** *原型:void Display(void) *功能:显示缓冲区的数值。 *参数:无 *返回:无 **********************************************************/ void Display(void) { LedPort = LedPort&0x0f; //先将为选择信号置为零 LedPort = LedPort | counttable[DispCount]; //输出下一位数码管的为选择信号 PORTA = Dispbuf[DispCount]; //输出对应缓冲区的段信号 DispCount ++; if( DispCount == 4 ) { DispCount=0; } }
单片机原理及应用 第4章 MCS-51单片机系统的扩展技术
2.数据存储器典型扩展电路
6264的地址范围为:0000H~1FFFH。
[例题] 在上页图的数据存储器扩展电路中,将片内RAM 以50H单 元开始的16个数据,传送片外数据存储器0000H开始的单元中。
程序如下:
ORG 1000H MOV R0, #50H MOV R7, #16 MOV DPTR, #0000H AGAIN: MOV A, @R0 MOVX @DPTR, A INC R0 INC DPTR DJNZ R7, AGAIN RET END ; 数据指针指向片内50H单元 ; 待传送数据个数送计数寄存器 ; 数据指针指向数据存储器6264的0000H单元 ; 片内待输出的数据送累加器A ; 数据输出至数据存储器6264 ; 修改数据指针 ; 判断数据是否传送完成
4.2.1
程序存储器扩展
单片机内部没有ROM,或虽有ROM但容量太小时,必须扩 展外部程序存储器方能工作。最常用的ROM器件是EPROM 1. 常用EPROM程序存储器 EPROM主要是27系列芯片,如:2764(8K)/27128(16K) /27256(32K)/27040(512K)等,一般选择8KB以上的芯片作为 外部程序存储器。
4.2.3 MCS-51对外部存储器的扩展
下图所示的8031扩展系统中,外扩了16KB程序存储器(使用两片 2764芯片)和8KB数据存储器(使用一片6264芯片)。采用全地址译码方 式,P2.7用于控制2―4译码器的工作,P2.6, P2.5参加译码,且无悬空地 址线,无地址重叠现象。 1# 2764, 2# 2764, 3# 6264的地址范围分别为:0000H~1FFFH, 2000H~3FFFH, 4000~5FFFH。
MOV DPTR, #7FFFH ; 数据指针指向74LS377 MOV A, 60H ; 输出的60H单元数据送累加器A MOVX @DPTR, A ; P0口将数据通过74LS377输出
并行io口的工作原理
并行io口的工作原理咱们今天来聊聊并行 I/O 口这个有趣的玩意儿。
并行 I/O 口就像是一个多面手,能同时处理好多事情。
想象一下,它就像是一个有好多只手的小超人,可以一下子抓住好多东西。
比如说,它可以同时接收好几个数据,就像一只手抓一个苹果,另一只手抓一个香蕉,还有的手抓着橙子、草莓啥的。
这可太厉害了,一下子就能处理好多信息,速度那叫一个快!那它是怎么做到的呢?其实啊,并行 I/O 口里面有好多小通道,就像是一条条小路。
这些小路可以让数据同时通过,就像好多辆车在不同的车道上一起跑。
当我们要给并行 I/O 口发送数据的时候,就像是给它送礼物。
这些数据会排好队,一个一个地走进对应的小通道,然后一下子就都到了并行 I/O 口那里。
反过来,如果并行 I/O 口要把数据送出去,那就像是它把自己的宝贝分享给大家。
数据们也会整整齐齐地通过那些小通道,快速地跑出去。
而且哦,并行 I/O 口还很聪明呢。
它能知道哪些数据是重要的,哪些可以先放一放。
就像它能分辨出哪个是最甜的水果,先尝尝那个。
比如说,如果有紧急的数据需要处理,它会优先照顾这些数据,让它们快点通过。
还有啊,并行 I/O 口还得和其他小伙伴好好配合。
比如说,和处理器呀、内存呀等等。
它们就像是一个团队,一起完成各种各样的任务。
有时候,并行 I/O 口可能会有点忙不过来,就像一个人手里拿了太多东西,有点手忙脚乱。
这时候,就得靠其他小伙伴来帮帮忙,一起把事情搞定。
总的来说,并行 I/O 口就像是我们生活中的超级小能手,能快速又高效地处理好多数据,让我们的电子设备变得更加聪明和厉害!怎么样,是不是觉得并行 I/O 口很有趣呀?。
第4章 并行IO口的应用与扩展g 2
并行I/O口的 应用与扩展
本章学习目标
掌握MCS-51单片机并行I/O口的应用 掌握键盘与显示器的扩展原理及方法
4.1 单片机的并行接口P0~P3
MCS-51单片机有P0、P1、P2、P3四个8位双向I/O口,每个 端口可以按字节输入或输出,也可以按位进行输入或输出,四个 口共32根口线,用作位控制十分方便。
a b c d e f gp d a b c d e f g d p a b c d e f gp d
3 9 8 6 7 4 1 2 3 9 8 6 7 4 1 2 3 9 8 6 7 4 1 2
采取以上措施,躲开了两个抖动期t1和t3的影响。
4.4.2
键盘接口的工作原理
独立式按键接口和矩阵式键盘接口。
1.独立式键盘接口
各键相互独立,每个
按键各接一根输入线,
通过检测输入线的电平 状态可很容易判断哪个 键被按下。 此种接口适于键数较少或操作速度较高的场合。
2. 矩阵式键盘接口
由行线和列线组成,按键位于行、列的交叉点上。 如图所示。
+5V
接成灌电流形 式,能增加驱 动能力,使二 极管更亮些。
控制程序如下:
ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV A,#0FFH MOV P1,A ;熄灭发光二极管, ; P1口低位写 “1” MOV A,P1 ;读入开关状态 SWAP A ;A高低半字节交换 MOV P1,A ;开关状态输出 AJMP MAIN END
4.2 并行I/O口的直接应用 首先,在应用设计中应理解,计算机内由 数字电路组成只存在两种TTL电平,高电平 3.5~5V和低 电平0V,对应着的数字为“1”和 “0”。 外设的状态要通过电路转换成高、低电 平,计算机才能识别(如开关电路)。 计算机输出数据“1”即输出3.5V~5V,输 出 数据“ 0”即输出 0V ,根据外设需要的电平要 求
并行I-O接口的扩展
MOVDPTR,#OFF7DH;B口地址→DPTR MOVA,#DATA1;要输出的数据#DATA1→A MOVX@DPTR,A;将#DATA1送B口输出 MOVDPTR,#OFF7EH ;C口地址→DPTR MOVA,#DATA2;#DATA2→A MOVX@DPTR,A;将#DATA2送C口输出
8255A的C口8位中的任一位,均可用指令来置位或复位。例 如,如果想把C口的PC5置1,相应的控制字为00001011B=0BH (关于8255A的C口置位/复位的控制字说明参见图5 18),程 序如下:
MOVDPTR,#OFF7FH;控制口地址→DPTR MOVA,#0BH;控制字→A MOVX@DPTR,A;控制字→控制口,PC5=1
(2)方式1:选择输入/输出方式。方式1主要用于中断和查 询数据传送方式,只有A口和B口可以选择这种工作方式。 (3)方式2:双向传送方式。只有A口可以使用方式2,既可以输 入数据,也可以输出数据,此时C口中的PC3~PC7用做A口的控制 和联络信号。
8255A的3种工作 方式由写入控制字寄 存器的方式控制字来 决定。方式控制字的 格式如图所示。3个 端口中C口被分为两 个部分,上半部分随 A口称为A组,下半部 分随B口称为B组。其 中A口可工作于方式0、 1和2,而B口只能工 作在方式0和1。
输入操作: MOV DPTR,#
0FEFFH
MOVX A,
@DPTR
输出操作: MOV A,#DATA
输
入 0FDFFH
信 号
MOV DPTR,# MOVX @DPTR,
A
1.2 可编程并行I/O接口8255A
单片机中的IO口扩展原理及应用
单片机中的IO口扩展原理及应用单片机是一种在微处理器中集成了中央处理器、内存、输入/输出控制和时钟等功能的微型计算机。
在实际应用中,单片机的使用每況愈下,并逐渐被更高级的处理器所取代。
然而,在一些特殊应用领域,如嵌入式系统和物联网设备中,单片机仍然扮演着重要的角色。
在单片机中,IO口的扩展是一项关键的技术,用来增加单片机的输入和输出接口数量。
本文将探讨单片机中的IO口扩展原理及其应用。
一、单片机IO口扩展原理在单片机中,IO口(Input/Output Port)用于连接外部电路和其他设备,扮演着数据输入和输出的桥梁角色。
然而,通常单片机内部只有有限的IO口数量。
为了满足复杂的应用需求,需要通过扩展技术来增加IO口的数量。
1. 并行IO口扩展其中一种常见的IO口扩展技术是通过并行IO口扩展芯片来增加IO口数量。
该芯片通常由一个并行输入/输出移位寄存器和控制逻辑组成。
通过串行通信协议,单片机可以控制并行IO口扩展芯片,以实现扩展IO口的输入和输出功能。
这种方式适用于需要大量IO口的应用,如工业控制和自动化设备。
不过需要注意的是,并行IO口扩展芯片策略相对复杂,需要额外的引脚和电路设计,并且使用的软件协议需要单片机和外部芯片之间的高速通信支持。
2. 串行IO口扩展另一种常见的IO口扩展技术是通过串行IO口扩展芯片来增加IO口数量。
串行IO口扩展芯片通常采用常用的串行通信协议,如I2C(Inter-Integrated Circuit)或SPI(Serial Peripheral Interface),通过少量的引脚连接到单片机。
通过控制寄存器和数据寄存器,单片机可以发送指令和数据来控制扩展IO口的输入和输出。
这种方式相对于并行IO口扩展芯片来说,引脚数量较少,实现简单,适用于需要较少IO口数量的应用。
同时,由于使用串行通信协议,可以通过级联多个串行IO口扩展芯片,进一步增加IO口数量。
二、单片机IO口扩展应用单片机IO口扩展技术在各种嵌入式系统和物联网设备中都有广泛的应用。
并行IO口
读锁存器
地址/数据 VCC 控制
内部总线 写锁存器
DQ CLK Q
T1
P0.n P0口
T2
引脚
MUX
读引脚
-
单片机原理与应用
9
准双向口:
从图中可以看出,在读入端口数据时,由于输出
驱动FET并接在引脚上,如果T2导通,就会将输入的
高电平拉成低电平,产生误读。所以在端口进行输
入操作前,应先向端口锁存器写“1”,使T2截止,引
脚处于悬浮状态,变为高阻抗输入。这就是所谓的
准双向口。
地址/数据 VCC
读锁存器
控制
内部总线 写锁存器
DQ CLK Q
T1
P0.n P0口
T2
引脚
MUX
读引脚
-
单片机原理与应用
10
2、P0作为地址/数据总线
在系统扩展时,P0端口作为地址/数据总线使用时, 分为:
▪ P0引脚输出地址/输出数据信息。
读锁存器
内部总线 写锁存器
第二输出功能 VCC
W
DQ CLK Q
R
P3.n P3口引
T
脚
读引脚
第二输入功能
-
单片机原理与应用
18
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
T2 MUX
P0.n P0口 引脚
读引脚
-
单片机原理与应用
8
**原因:如果此时该端口的负载恰是一个晶体管基极,且原端 口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若 此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0” 电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓 冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能 发生的错误。**
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对应的4×4矩阵键盘的按键键号,如表8-1所示。
(4)键盘的扫描方式
通常,键盘扫描方式有3种,即编程扫描、定 时扫描和中断扫描。
1). 编程扫描方式
只有当单片机空闲时,才调用键盘扫描子程序, 扫描键盘。
键盘扫描程序一般应包括以下内容: 判别有无键按下。 有键按下,用软件延时的方法消除按键抖动的影响。 键盘扫描取得闭合键的位置码,既行、列值。 用计算法或查表法将键的位置码转换为键值(0、1、 2…F)。 返回闭合键的键值。
求 输出“1”或“0”数据,这就是程序控制外设
并行I/O口的直接应用举例
从P1.0~P1.3 输入开关状态,再经P1.4~P1.7输出
去驱动发光二极管,使发光二极管显示开关的状态。
+5V
P1.0 P1.1 P1.2 P1.3
89C51
P1.4 P1.5 P1.6 P1.7
100 4
5.1k 4 K0
二、并行接口的三种操作:
1.输出锁存:输出将使数据写入输出锁存器。
输出指令:MOV P1,A MOV P1.0,C
2.输入三态:输入从I/O引脚上输入信号,读信号打开,引脚
信号通过下三态门进入内部总线。为保证可靠
输入,先写入“1”。
MOV P1,#0FFH ;使输出驱动器截止
MOV A,P1
;输入
B3
A4
B4Βιβλιοθήκη A5B5A6
B6
+5A7
B7
DIR E
U6 7 4ALS2 45
18 a 17 b 16 c 15 d 14 e 13 f 12 g 11 dp
+5
1
19
6 7 8
12 14
J P2 12 34
SN74 AS00
6
5 4
U1 0B
3
2 1
U1 0A
S1 10 S2
5 S3 10 S4
5 S5 10 S6
A
;A高低半字节交换
P1,A ;开关状态输出
AJMP MAIN
END
4.3 LED显示器的扩展
单片机应用系统中,常常使用发光二极管( LED)来指示系统运行状态,使用数码管显示检测 参数和数据。显示程序涉及到硬件电路的连接,显 示结果最为直观,所以,学习单片机显示程序编写 有利于提高读者的学习兴趣,同时也为后续调试较 大程序提供故障诊断的方法。
K1 K2 K3
LED0
LED1
接成灌电流形
LED2
式,能增加驱
LED3
动能力,使二
+5V 极管更亮些。
控制程序如下:
ORG 0000H
AJMP
MAIN
ORG 0030H
MAIN:MOV MOV
MOV SWAP MOV
A,#0FFH
P1,A ;熄灭发光二极管,
; P1口低位写 “1”
A,P1 ;读入开关状态
R12 1K
S2
R11 1K
+5
1 2 3 +5 6 4 5
A
Y0
B
Y1
C
Y2
Y3
G1
Y4
G2A Y5
G2B Y6
Y7
15 2 14 3 13 4 12 5 11 6 10 7 98 79
A0 A1 A2 A3 A4 A5 A6 A7
B0 B1 B2 B3 B4 B5 B6 B7
18 S1 17 S2 16 S3 15 S4 14 S5 13 S6 12
1.独立式键盘接口 各键相互独立,每个 按键各接一根输入线, 通过检测输入线的电平 状态可很容易判断哪个 键被按下。
此种接口适于键数较少或操作速度较高的场合。
2. 矩阵式键盘接口
由行线和列线组成,按键位于行、列的交叉点上。
如图所示。
+5V
X3 12 13 14 15
X2 8 9 10 11
按键 输出
3.如何消除按键的抖动 常用软件来消除按键抖动。
基本思想:检测到有键按下,键对应的行线为低,软 件延时10ms后,行线如仍为低,则确认该行有键按下。
有键松开时,行线变高,软件延时10ms后,行线仍为 高,说明按键已松开。
采取以上措施,躲开了两个抖动期t1和t3的影响。
4.4.2 键盘接口的工作原理 独立式按键接口和矩阵式键盘接口。
0
0
1
F
0
1
1
1
0
0
0
1
H
0
1
1
1
0
0
0
1
P
1
1
1
1
0
0
1
1
十六进制代码
共阴
共阳
3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 7CH 39H 5EH 79H 71H 76H 73H
C0H F9H A4H B0H 99H 92H 82H F8H 80H 90H 88H 83H C6H A1H 86H 8EH 89H 8CH
特点:CPU需不停的扫描键盘,工作效率较低。
2). 定时扫描方式
利用单片机内的定时器,产生10ms的定时中断,对 键盘进行扫描。
3).中断扫描方式
只有在键盘有键按 下时,才执行键盘扫 描程序,
如无键按下,单片 机将不理睬键盘。
4.4.3.键输入过程与软件结构
(2) 、按键的识别方法
常用的为扫描法
图8-5中6号键被按下为例,来说明此键是如何被 识别出来的。
扫描法进行按键识别的方法,分两步进行:
第1步:识别键盘有无键按下
把所有列线置0,检查各 行线电平是否有变化,如有 变化,说明有键按下,如无 变化,则无键按下。
第2步:如有键被按下,识 别出具体的按键。
P0~P3的复位状态均为FFH,自动处于输入状态。
3.读-修改-写: 修改输出锁存器的内容。锁存器中的数据通过
上三态门进入内部总线,修改后再写入到锁存
器中。
读-修改-写指令:并行口为目的操作数的指令:
如:ANL P1,A
4.2 并行I/O口的直接应用 首先,在应用设计中应理解,计算机内由 数字电路组成只存在两种TTL电平,高电平 3.5~5V和低 电平0V,对应着的数字为“1”和 “0”。 外设的状态要通过电路转换成高、低电 平,计算机才能识别(如开关电路)。 计算机输出数据“1”即输出3.5V~5V,输出 数据“0”即输出0V,根据外设需要的电平要
C16 18
3 0PF Y1
XTAL2
C17 19
1 1. 0 59 2 MHz 3 0PF
XTAL1
2 0 Vss
U1
P1. 5 P1. 6 P1. 7
INT0 /P3 .2 T0/P3. 4
40
39
2
38
3
37
4
36
5
35
6
34
7
33
8
32
9
3 1 R6 1 0K +5
A0
B0
A1
B1
A2
B2
A3
单片机应用系统中,最常用的是七段式LED显 示器,又称数码管。
4.3.1 LED数码显示器的结构与原理
常见数码管的管脚排列如下图(a)所示,其中COM为公共
点。根据内部发光二极管的接线形式,可分为共阴极型(图(b))
和共阳极型(图(c))。
g f GND a b
a
b
a
c
fgb
d
edc
e
dp
f
1234
+5V
100Ω×8
共阴极 LED
所有位的段码线相应段并在一起,由一个8位I/O口控制,各位 的公共端分别由相应的I/O线控制。分时轮流选通数码管的公共端, 使得各数码管轮流导通,在选通的LED 上得到显示字形码。
一个接口完成字形码的输出(字形选择),另一接口完成各数码 管的轮流点亮(字位选择)。
2.动态显示:
11
+5
U7 SN74 ALS1 3 8
DIR E
1 19
U8 7 4ALS2 45
4.4 矩阵式键盘的扩展
4.4.1 键盘接口原理 1. 键盘输入的特点
键盘:一组按键开关的集合。 行线电压信号通过键盘开关机械触点的断开、闭合,输出波 形如图。
2. 按键的确认
检测行线电平 高电平:断开;低电平:闭合,
5
DS1
DS2
a b c d e f g dp
DS1 a b c d e f g dp
a fb
g
a fb
g
a fb
g
a fb
g
DS3 a b c d e f g dp
a
f
b
g
a fb
g
e
c
d dp
com1
e
c
d dp
com2
e
c
d dp
com1
e
c
d dp
com2
e
c
d dp
com1
e
c
d dp
com2
依次把某一列置低电平, 其余各列为高电平,检查各 行线电平的变化,如果某行 线电平为低,可确定此行列 交叉点处的按键被按 下。
扫描结果:列线Y2为低 电平,行线X1为低电平
(3)键盘的编码
可采用依次排列键号的方式对按键进行编码。以图8-5中的 4×4键盘为例,可将键号编码为:0、1、2、…F等16个键 号。编码相互转换可通过计算或查表的方法实现。