8255端口地址如何确定_8255怎样计算端口地址
8255芯片特性
(1)一个并行输入、输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。
(2)具有24个可编程设置的I/O口,即3组8位的I/O口为PA口,PB口和PC口。它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3)。A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定。
8255引脚及功能
RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输。
RD:读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低跳变沿时,即/WR产生一个低脉冲且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。
方式0&&&&基本输入输出方式;方式1&&&&选通输入/出方式;方式2&&&&双向选通输入/输出方式;
PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 工作于三种方式中的任何一种;
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 不能工作于方式二;
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。&不能工作于方式一或二。
A1,A0:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。
当A1=0,A0=0时,PA口被选择;
当A1=0,A0=1时,PB口被选择;
当A1=1,A0=0时,PC口被选择;
当A1=1.A0=1时,控制寄存器被选择.
8255应用电路
所示为8255j端口构戚的&4X8矩阵键盘。8255的PA端口初始化为输出工作方式作为列线使用,PC端口韧始化为输入工作方式作为行线使用,在每一个行线与列线的交叉点处接一个按键,再给每个按键设定一个编号【键值)。可以根据需要,将一部分按键定义为功能键,另一部分按键定义为数字键。
如何区分8255A端口地址
可编程接口8255A端口地址是由其引脚决定的
A1A0=00,代表A端口地址
A1A0=01,代表B端口地址
A1A0=10,代表C端口地址
A1A0=11,代表控制字寄存器端口地址
8255的端口地址的计算
资料1:
图2是采用74HC2244芯片进行输入接口扩展的原理电路,图3是读PO口的时序。由图3可以看出,当P2.7和RD同为低电平时,74HC2244才能将输入端的数据送到单片机的PO口。其中,P2.7决定了74HC244的地址,0000H- 7FFFH(共32K)地址都可以访问这个单元,这就是用线选法所带来的副作用。通常可选择其中的最高地作为这个芯片的地址来写程序,如这个芯片的地址是7FFFH。但这仅仅是一种习惯,并不是规定,当然也完全可以用0000H作为这个芯片的地址。当确定了地址后,其接口的输入操作程序如下:
资料2:
由于MCS-51单片机的外部RAM和I/0口是统一编址的,因此,可以把单片机外部64K字节RAM空间的一部分作为扩展外围I / 0口的地址空间。这样,单片机就可以像访问外部RAM存储器单元那样访问外部的PO口接口芯片。所以,8255的扩展端口地址不是唯一的,在0000H^ FFFFH,除了CS,A0,A1这三个位固定外,其他可以任意,如CS占用p2.7,A1占用P0.1,A0占用P0.0,那么可用的端口地址是:
A口:(cs=P2.7=0, A1A0=P0.1P0. 0=00) 0000H&7FFCH
B口:(cs=P2.7=0, A1A0=P0.1P0. 0=01 ) 0001H& 7FFDH
C 口:( cs=P2.7=0, A1A0=P0.1P0.0=10 ) 0002H& 7FFEH
控制口:(cs=P2.7=0 A1A0=P0.1P0.0=11 )
0003H&7FFFH,
发布评论请先
本文首先介绍了8255芯片的概念与特性,其次介绍了8255A引脚图及功能,最后介绍了8255a的几种....
本文首先介绍了8255芯片特性与8255引脚及功能,其次介绍了8255内部逻辑结构与8255工作方式....
8255A是为intel公司的微处理机配套的通用可编程I/O器件。该器件有24条可编程i/o脚,....
8255A的C口具有位控功能,即允许CPU用输出指令单独对C口的某一位写“1”或“0”,C口的位控字....
利用单片机的端口地址实现对液晶显示器的控制
以前寫論文收集的一些資料,學習單片機、C語言、Proteus的好資料!!!!
以前寫論文收集的一些資料,學習單片機、C語言、Proteus的好資料!!!!
基础的电子类资料,电子工程师必备文档,快来下载学习吧
系列的可编程外设接口电路(Programmable Peripher....
本内容提供了8255数码管显示电路图,希望对大家学习有所帮助
在许多使用单片机控制的场合,为改善人机界面,经常要使用液晶显示器显示控制机构的工作状态及各种参数信息....
实验九 8255扫描键盘、显示实验
一.实验要求
利用8255可编程并行口做一个扫描键盘实验,把....
8255A控制步进电机
&实验目的&了解步进电机的的基本控制原理,掌握控制步进电机的转....
The Intersil 82C55 is a high performance CMOS vers....
并行接口电路:微处理器与I/O设备进行数据传输时均需经过接口电路实现系统与设备互连的匹配。并行接口电....
8255 并口扩展实验
一、实验目的熟悉并口扩展芯片8255 的内部结构,学会使用
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-第6章 接口芯片与接口技术第6章 接口芯片与接口技术6.1 可编程并行I/O接口8255A6.2 可编程RAM/IO/CTC接口81556.3 键盘显示器接口82796.4 LED数码显示器接口 6.5 键盘接口 6.6 A/D转换器接口 6.7 D/A转换器接口第6章 接口芯片与接口技术6.1 可编程并行I/O接口8255A8255A可编程并行输入/输出接口芯片是Intel公司 生产的标准外围接口电路。它采用NMOS工艺制造,用 单一+5V电源供电,具有40条引脚,采用双列直插式封装。 它有A、B、C3个端口共24条I/O线,可以通过编程的 方法来设定端口的各种I/O功能。由于它功能强,又能方 便地与各种微机系统相接,而且在连接外部设备时,通常 不需要再附加外部电路,所以得到了广泛的应用。第6章 接口芯片与接口技术6.1.1 8255A的内部结构与引脚 1. 8255A的内部结构 8255A的内部结构如图6―1所示,由以下几部分组成。 1)数据端口A、B、C8255A有3个8位数据端口,即 端口A、端口B和端口C。编程人员可以通过软件将它们分别作为输入端口或输出端口,不过这3个端口在不同的工作方式下有不同的功能及特点,如表6―1所示。第6章 接口芯片与接口技术图6―1 8255A的内部结构图第6章 接口芯片与接口技术2) A组和B组控制电路 这是两组根据CPU的命令字控制8255A工作方式的 电路。它们的控制寄存器先接受CPU送出的命令字,然 后根据命令字分别决定两组的工作方式,也可根据CPU 的命令字对端口C的每1位实现按位“复位”或“置位”。A组控制电路控制端口A和端口C的上半部(PC7~PC4)。 B组控制电路控制端口B和端口C的下半部(PC3~PC0)。第6章 接口芯片与接口技术表6―1 8255A端口功能表第6章 接口芯片与接口技术2. 8255A的芯片引脚8255A是一种有40个引脚的双列直插式标准芯片, 其引脚排列如图6―2所示。除电源(+5V)和地址以外, 其它信号可以分为两组: (1)与外设相连接的有: PA7~PA0:A口数据线 PB7~PB0:B口数据线 PC7~PC0:C口数据线第6章 接口芯片与接口技术图6―2 8255A的芯片引脚图第6章 接口芯片与接口技术(2)与CPU相连接的有:D7~D0:8255A的数据线,和系统数据总线相连。 RESET:复位信号,高电平有效。当RESET有效时,所 有内部寄存器都被清除,同时,3个数据端口被自动设为 输入方式。CS:片选信号,低电平有效。只有当:读信号,低电平有效。当CS有效时,芯片才被选中,允许8255A与CPU交换信息。RD RD有效时,CPU可以从8255A中读取输入数据。http://www.lccdgg.cn第6章 接口芯片与接口技术WR:写信号,低电平有效。当 W R 有效时,CPU可以往8255A中写入控制字或数据。 A1、A0:端口选择信号。8255A内部有3个数据端 口和1个控制端口,当A1A0=00时选中端口A;A1A0=01时 选中端口B;A1A0=10时选中端口C;A1A0=11时选中控 制口。 、 W R 及 C S 组合所实现的各种功能 如表6-2所示。http://www.lccdgg.cn A1、A0和RD第6章 接口芯片与接口技术表6―2 8255A端口选择表第6章 接口芯片与接口技术6.1.2 8255A的工作方式8255A有3种工作方式,即方式0、方式1和方式2,这 些工作方式可用软件编程来指定。3种工作方式的传送 示意图如图6―3所示。第6章 接口芯片与接口技术图6―3 8255A的3种工作方式? (a)方式0; (b)方式1; (c)方式2第6章 接口芯片与接口技术1.方式0(基本输入/输出方式)这种工作方式不需要任何选通信号,A口、B口及C 口的高4位和低4位都可以设定为输入或输出。作为输 出口时,输出的数据均被锁存;作为输入口时,A口的数据 能锁存,B口与C口的数据不能锁存。第6章 接口芯片与接口技术2.方式1(选通输入/输出方式) 在这种工作方式下,A口可由编程设定为输入口或 输出口,C口的3位用来作为输入/输出操作的控制和同步 信号;B口同样可由编程设定为输入口或输出口,C口的 另3位用来作为输入/输出操作的控制和同步信号。在方式1下A口和B口的输入数据或输出数据都能被锁存。1)方式1下A口、B口均为输入 在方式1下,A口和B口均工作在输入状态时,需利用 C口的6条线作为控制和状态信号线,其定义如图6―4(a) 所示。第6章 接口芯片与接口技术图6―4 方式1下的信号定义?(a)A口、B口均为输入时;(b)A口、B口均为输出时第6章 接口芯片与接口技术C口所提供的用于输入的联络信号有:①STB(Strobe):选通脉冲信号(输入),低电平有效。当外设送来S T B 信号时,输入的数据被装入8255A的输入 锁存器中。 ②IBF(InputBufferFull):输入缓冲器满信号(输出), 高电平有效。此信号有效时,表示已有一个有效的外设 数据锁存于8255A的口锁存器中,尚未被CPU取走,暂不 能向接口输入数据,它是一个状态信号。第6章 接口芯片与接口技术③INTR(InterruptRequest):中断请求信号(输出),高电平有效。当IBF为高、 T B 信号由低变高(后沿)时,该信 S 号有效,向CPU发出中断请求。方式1 数据输入过程如下:当外设的数据准备好后,发出STB信号,输入的数据被装入锁存器中,然后IBF信号有效(变为高电平)。 数据输入操作的时序关系如图6―5所示。第6章 接口芯片与接口技术图6―5 方式1下的输入时序第6章 接口芯片与接口技术2) 方式1下A口、B口均为输出与输入时一样,要利用C口的6根信号线,其定义如图 6―4(b)所示。用于输出的联络信号有: (1) A C K (Acknowledge):外设响应信号(输入),低电 平有效。(2) O B F (OutputBuffeFull):输出缓冲器满信号(输出),低电平有效。 (3)INTR:中断请求信号(输出),高电平有效。第6章 接口芯片与接口技术方式1下数据输出过程如下:当外设接收并处理完1组数据后,发回A C K 响应信 号。 数据输出操作的时序关系如图6―6所示。 应当指出,当8255A的A口与B口同时为方式1的输入或输出时,需使用C口的6条线,C口剩下的2条线还可以用程序来指定数据的传送方向是输入还是输出,而且也 可以对它们实现置位或复位操作。当一个口工作在方式1时,则C口剩下的5条线也可按照上述情况工作。第6章 接口芯片与接口技术图6―6 方式1下的输出时序第6章 接口芯片与接口技术3. 方式28255A只有A口具有这种双向输入输出工作方式, 实际上是在方式1下A口输入输出的结合。在这种方式 下,A口为8位双向传输口,C口的PC7~PC3用来作为输入/ 输出的同步控制信号。在这种情况下,B口和PC2~PC0 只能编程为方式0或方式1工作,而C口剩下的3条线可作 为输入或输出线使用或用作B口方式1之下的控制线。第6章 接口芯片与接口技术图6―7 方式2下的信号定义第6章 接口芯片与接口技术在方式2时,其输入输出的操作时序如图6―8所示。1) 输入操作 当外设向8255A送数据时,选通信号STBA[TX-]也同 时送到,选通信号将数据锁存到8255A的输入锁存器中, 从而使输入缓冲器满信号IBFA成为高电平(有效),告诉外设,A口已收到数据。选通信号结束时,使中断请求信号为高,向CPU请求中断。 2)输出操作CPU响应中断,当用输出指令向8255A的A端口中写入一个数据时,会发出写脉冲信号 W R 。第6章 接口芯片与接口技术图6―8 方式2下的时序图第6章 接口芯片与接口技术6.1.3 8255A的控制字及初始化1.8255A的控制字 8255A为可编程接口芯片,以控制字形式对其工作 方式和C口各位的状态进行设置。它有两种控制字:工 作方式控制字和C口置位/复位控制字。1) 工作方式控制字工作方式控制字用于确定各口的工作方式及数据 传送方向,其格式如图6―9所示。第6章 接口芯片与接口技术对工作方式控制字作如下说明:(1) A口有3种工作方式,而B口只有2种工作方式。 (2)A组包括A口与C口的高4位,B组包括B口与C口 的低4位。 (3)在方式1或方式2下,对C口的定义(输入或输出)不影响作为联络线使用的C口各位的功能。(4)最高位(D7位)为标志位,D7=1为方式控制字。第6章 接口芯片与接口技术2) C口置位/复位控制字利用C口置位/复位控制字可以很方便地使C口8位 中的任一位清0或置1,该控制字的格式如图6―9(b)所示。 D7位为该控制字的标志位,D7=0为C口置位/复位控制字。 在使用中,该控制字每次只能对C口中的一位进行置位或复位。应注意的是,作为联络线使用的C口各位是不能采用置位/复位操作来使其置位或复位的。其数值 应视现场的具体情况而定。http://www.lccdgg.cn第6章 接口芯片与接口技术2. 8255A的初始化编程8255A初始化的内容就是向控制寄存器写入工作方 式控制字或C口置位/复位控制字。这两个控制字可按 同一地址写入且不受先后顺序限制。由于两个控制字 因标志位的状态不同,因此8255A能加以区分。第6章 接口芯片与接口技术图6―9 8255A控制字格式(a)工作方式控制字; (b)C口置位/复位控制字第6章 接口芯片与接口技术例如对8255A各口作如下设置:A口方式0输入,B口 方式0输出,C口高位部分为输出、低位部分为输入。设 控制寄存器的地址为03FFH,则其工作方式控制字可设 置为:D0=1:C口低半部输入; D1=0:B口输出;D2=0:B口方式0;D3=0:C口高半部输出; D4=1:A口输入; D6D5=00:A口方式0; D7=1:工作方式字标志。第6章 接口芯片与接口技术因此工作方式控制字为B即91H。初始化程序段为: MOV MOV MOVX DPTR,#03FFH A,#91H @DPTR,A若要使端口C的D3位置位的控制字为B(即07H),而使D3位复位的控制字为 B(即06H)。第6章 接口芯片与接口技术6.1.4 8255A与系统的连接由于8255A是Intel公司专为其主机配套设计制造的 标准化外围接口芯片,因此它与MCS-51单片机的连接是 比较简单方便的。 一般来说,MCS-51单片机扩展的I/O接口均与片外 RAM统一编址。由于单片机系统片外RAM的实际容量 一般均不太大,远远达不到64KB的范围,因此I/O接口芯 片大多采用部分译码的方法,而用得比较多的则是直接利用地址线的线选法。这种方法虽然要浪费大量的地址号,但译码电路比较简单。图6―10就是一种较常用的 连接实例。第6章 接口芯片与接口技术图6―10 8255A与8031的连接第6章 接口芯片与接口技术图6―10中,P0口为地址/数据复用口。数据通过P0口直接传送,地址的低8位是需通过锁存器74LS373得到 的,而地址的高8位则由P2口传送。 现采用线选法,利用高8位地址线的P2.7作为线选信 号,直接与8255A的片选端 C S 相连,而A1、A0则与地 址的最末2位相连。由图6―10所示接法,可得到8255A 各个端口的地址,如表6―3所示。第6章 接口芯片与接口技术表6―3 8255A各端口的地址?第6章 接口芯片与接口技术6.1.5 8255A应用举例8255A在微机和单片机控制系统中得到了广泛应用, 现举两例加以说明。 例1:要求通过8255A的PC5端向外输出1个正脉冲 信号,已知8255A的C口和控制口的地址分别为0002H和 0003H。 解:若要从PC5端输出1个正脉冲信号,可通过对 PC5位的置位和复位控制来实现。由于每送1个控制字,只能对1位作1次置位或复位操作,故产生1个正脉冲要对PC5位先送置位控制字,经过一定的延时后(延时时间视 脉宽而定),再送复位控制字即能实现。程序编制如下:第6章 接口芯片与接口技术MOV MOV MOVDPTR,#0003H A,#OBH X @DPTR,A;指向8255A的控制口 ;对PC5置1LCALL DELAY DEC MOV A;延时(调用延时子程序) ;对PC5置0X @DPTR,Ahttp://www.lccdgg.cn第6章 接口芯片与接口技术例2:8255A作为连接打印机的接口。图6―11是通过8255A连接打印机的接口电路,数据 传送采用查询方式。8255A的地址译码采用线选法,将 P0.7直接与8255A的C S 端相连(通过地址锁存器),其口地 址A口为7CH,B口为7DH,C口为7EH,命令口为7FH。第6章 接口芯片与接口技术图6―11 8255A连接打印机的接口电路第6章 接口芯片与接口技术现要求编制打印50个字符的程序,该数据存于片内RAM从20H开始的50个连续单元中。 程序如下: MOV MOV R0,#7FH A,#88H X @R0,A R1,#20H R2,#32H R0,#7EH ;指向8255A的命令口 ;取方式字:A口输出,C口低出高 ;送入方式字 ;R1指向数据区首址 ;送数据块长度 ;指向C口入MOV MOV MOV LP:MOV第6章 接口芯片与接口技术LOOP1:MOVXJB MOVA,@R0A.7,LOOP1 R0,#7CH;读入C口信息;若BUSY=1,继续查询 ;指向A口MOVMOV INCA,@R1X @R0,A R1;取RAM数据;数据输出到A口 ;数据指针加1MOVMOV MOVR0,#7FHA,#00H X @R0,A;指向命令口;C口置位/复位命令字(PC0=0) ;产生STB[TX-]的下降沿MOVMOV DJNZA,#01HX @R0,A R2,LP;改变C口置位/复位命令字(PC0=1);产生STB[TX-]的上升沿 ;未完,则反复第6章 接口芯片与接口技术6.2 可编程RAM/IO/CTC接口81556.2.1 8155的结构与引脚1. 8155的内部结构 8155的内部结构如图6―12(b)所示。它含有1个256字 节的RAM、1个14位定时/计数器以及3个并行I/O口,其中 A口、B口均为8位,C口为6位。A口、B口既可作为基本I/O口,也可作为选通I/O口;C口除可作为基本I/O口外,还可用作A口、B口的应答控制联络信号线。此外,8155内部 还有一个控制寄存器组,用来存放控制命令字。第6章 接口芯片与接口技术图6―12 8155引脚排列及结构框图(a)引脚排列; (b)内部结构框图第6章 接口芯片与接口技术图6―12 8155引脚排列及结构框图(a)引脚排列;(b)内部结构框图第6章 接口芯片与接口技术2.8 155的引脚8155为40引脚双列直插式封装芯片,其引脚排列如 图6―12(a)所示。现将其各引脚的功能简介如下:AD0~AD7:地址/数据复用线。 它与8031单片机的P0口直接相连。8155和CPU之间的地址、数据、命令 及状态信号都通过这组信号线传送。C E :片选信号,输入,低电平有效。IO / M:RAM和I/O口选择线。当IO / M=1时,选中I/O口;当IO / M=0时,选中RAM。第6章 接口芯片与接口技术ALE:地址锁存信号。R D :读选通信号,输入,低电平有效。E R :写选通信号,输入,低电平有效。TIMERIN:定时器输入。它是8155片内定时器的脉 冲信号输入端。TIMEROUT:定时器输出。通过它可以输出矩形波 或脉冲波。 PA0~PA7:A口通用的输入/输出线。由编程来决定是 输入还是输出。 PB0~PB7:B口通用的输入/输出线。由编程来决定 是输入还是输出。http://www.lccdgg.cnPC0~PC5:C口的输入/输出或控制信号线。第6章 接口芯片与接口技术6.2.2 8155的RAM和I/O口的编址与其它接口芯片一样,8155芯片中的RAM和I/O口均 占用单片机系统片外RAM的地址,其中高8位地址由CE和IO/[AKM-]信号决定。当 C E=0,且IO/ M =0时,低8位的00H~FFH为RAM的有效地址;当 C E =0,且IO/ M =1时,由低8位地址中的末3位(A2A1A0)来决定各个口的地址,如表6―4所示。第6章 接口芯片与接口技术表6―4 8155端口地址表第6章 接口芯片与接口技术对于多数单片机应用系统来说,由于片外RAM区的容量较大(最大为64KB),因此通常采用线选法对接口芯 片进行编址。对8155来说,常用高8位地址中的两位来选择IO/CEM和IO/M。例如将P2.7接至CE,将P2.0接至,那么8155的RMA和I/O口的编址为:第6章 接口芯片与接口技术RAM:P2.7=0,P2.0=0,其地址范围为:010 B, 即:7E00H~7EFFH。 I/O口:P2.7=0,P2.0=1,口地址范围为: 011 B,即7F00H~7F05H。第6章 接口芯片与接口技术具体分配如下:命令口:7F00H A口:7F01H B口:7F02H C口:7F03H定时器低8位:7F04H定时器高8位:7F05H第6章 接口芯片与接口技术6.2.3 8155I/O口的工作方式8155有3个I/O口,即A口、B口和C口,其中C口只有6 位。A口和B口均可工作于基本I/O方式或选通I/O方式。 C口既可作为I/O口线,工作于基本I/O方式,也可作为A 口、B口选通工作时的状态联络控制信号线。 1.基本I/O基本I/O为无条件传送,这是最简单的I/O操作,不需 要任何联络信号,随时可以进行。2.选通I/O 选通I/O为条件传送,传送的方式可用查询方式,也可 用中断方式。第6章 接口芯片与接口技术(1)BF:I/O缓冲器满空标志,输出,高电平有效。(2) S T B :选通信号,输入,低电平有效。 (3)INTR:中断请求信号,输出,高电平有效。 以上这些信号线对A口与B口均适用,分别称之为 ABF、 S T B 、AINTR与BBF、 B S T B 、BINTR。它们都 是由C口提供的,如表6―5所示。第6章 接口芯片与接口技术表6―5 8155的PC口线联络信号定义第6章 接口芯片与接口技术6.2.4 8155的命令/状态字8155有1个命令/状态寄存器,实际上这是两个不同的 寄存器,分别存放命令字和状态字。由于对命令寄存器只 能进行写操作,而对状态寄存器只能进行读操作,因此把 它们编为同一个地址,合在一起称之为命令/状态寄存器。 1.命令字 命令字共8位,用于定义I/O端口及定时器的工作方式。 对命令寄存器只能写入不能读出(读出的将是状态寄存器的内容)。命令字的格式如图6―13所示。第6章 接口芯片与接口技术图6―13 8155的命令字格式第6章 接口芯片与接口技术对C口工作方式的说明:D3D2=00(ALT1):A口、B口为基本I/O,C口为输入。 D3D2=01(ALT2):A口、B口为基本I/O,C口为输出。 D3D2=10(ALT3):A口选通I/O,B口基本I/O,C口低3 位为联络信号,高3位输出(参阅表6―5)。D3D2=11(ALT4):A口、B口均为选通I/O,C口低3位作为A口联络信号,高3位作为B口联络信号(参阅表 6―5)。第6章 接口芯片与接口技术关于定时器运行控制位(TM2、TM1)补充说明如下:当TM2、TM1=11时,其操作为:当计数器未计数时, 装入计数长度和方式后立即开始计数;当计数器正在计 数时,待计数器溢出后以新装入的计数长度和方式进行 计数。 2.状态字 8155的状态寄存器与命令寄存器共用1个地址,当使 用读操作时,读入的便是状态寄存器中的内容。其格式如图6―14所示。第6章 接口芯片与接口技术图6―14 8155的状态字格式第6章 接口芯片与接口技术6.2.5 8155的定时/计数器8155的定时/计数器是1个14位的减法计数器,由两 个8位寄存器构成,其格式如下:D7 T7 T6 T5 T4 T3 T2 T1 D0 T0M2M1T13T12T11T10T9T8第6章 接口芯片与接口技术其中低14位组成计数器,剩下的两个高位(M2M1) 用于定义计数器输出的信号形式,如图6―15所示。8155的定时/计数器与MCS-51单片机芯片内部的定 时/计数器在功能上是相同的,都有定时和计数两种功能。 但是在使用上却有很多不同之处。具体表现在: (1)8155的定时/计数器为减法计数,而MCS-51单片机 内部的定时/计数器却是加法计数。 (2)MCS-51单片机内部的定时/计数器有多种工作方 式,而8155的定时/计数器却只有一种固定的工作方式, 即14位计数,通过软件方法进行计数值的加载。第6章 接口芯片与接口技术(3)MCS-51单片机内部的定时/计数器有两种计数脉冲:当定时工作时,由芯片内部按机器周期提供固定频率 的计数脉冲;当计数工作时,从芯片外部引入计数脉冲。 (4)MCS-51单片机内部的定时/计数器,在计数溢出时 自动置位TCON寄存器中的计数溢出标志位TF,供用户以 查询或中断方式使用;而8155的定时/计数器,在计数溢出 时却是通过TIMEROUT引脚向外部发出1个脉冲信号。第6章 接口芯片与接口技术图6―15 定时/计数器输出方式第6章 接口芯片与接口技术另外,8155的定时器在计数过程中,计数器的值并不直接表示外部输入的脉冲。若作为外部事件计数,那么 由计数器的现行计数值求输入脉冲数的方法为: (1) 停止计数器计数。 (2) 分别读出计数器的两个字节内容。(3) 取其低14位数作为现行计数值。(4) 算出现行计数值与初始计数值之差即可。第6章 接口芯片与接口技术6.2.6 8155和MCS-51单片机的接口电路8155可以和MCS-51单片机直接相连,而不需外加 逻辑电路。图6―16所示为8155和MSC-51相连的一种 基本连接方法。 按图6―16所示接法,8155的RAM和各端口地址如下: RAM的地址:0000H~00FFH命令口:0200HA口:0201H B口:0202H C口:0203H 定时器低位:0204H定时器高位:0205H第6章 接口芯片与接口技术图6―16 8155与MCS-51的连接方法第6章 接口芯片与接口技术6.2.7 8155的初始化编程及应用举例8155初始化编程的主要内容为写入8155的命令字和 定时/计数器的初值以及输出方式。现举例说明如下。 例1:采用如图6―16所示的接口电路,设A口与C口 为输入口,B口为输出口,均为基本I/O。定时器为连续方 波工作方式,对输入脉冲进行24分频。试编写8155的初 始化程序。第6章 接口芯片与接口技术解:命令字可选取为 PA=0:A口输入 PB=1:B口输出 PC2、PC1=00:A口、B口基本I/O,C口输入 IEA=0,IEB=0:A口、B口均禁止中断 TM2、TM1=11:立即启动计数器 所以命令字为B=C2H。第6章 接口芯片与接口技术计数初值的选取方法为:由于计数值为24,所以定时器的低8位为18H,高6位为000000B。 定时器的输出方式要求为连续方波,选M2M1=01, 那么定时器的高8位为H。 RAM及端口地址与前面的相同。第6章 接口芯片与接口技术初始化程序:MOV MOV MOVX INC DPTR,#0204H A,#18H @DPTR,A DPTR ;指向定时器的低8位 ;取定时器低8位的值 ;写入定时器低8位 ;指向定时器高8位MOVMOVX MOV MOV MOVXA,#40H@DPTR,A DPTR,#0200H A,#C2H @DPTR,A;取定时器高8位的值;写入定时器高8位 ;指向命令口 ;取8155的命令字 ;写入命令字第6章 接口芯片与接口技术例2:仍采用图6―16所示的接口电路,从8155的A口输入数据并进行判断:若不为0,则将该数据存入8155的 RAM中(从起始单元开始存放,数据的总数不超过256个),同时从B口输出,并将PC0置“1”;若为0,则停止输入输出,同时将PC0清“0”。试编写能完成上述任务的初始 化及应用程序。 解:初始化及应用程序如下: MOV DPTR,#0200H ;指向命令口MOVMOVA,#BX @DPTR,A;取命令字;写入命令字第6章 接口芯片与接口技术MOVMOVR0,#00HR1,#00H;指向8155的RAM区首址;数据总数为256个LOOP1:MOV DPTR,#0201H ;指向A口 MOV JZ X A,@DPTR LOOP3 ;从A口输入数据 ;为0则转MOVINC INC MOV INCX @R0,AR0 DPTR X @DPTR,A DPTR;不为0,则存入RAM中;指向下一单元 ;指向B口 ;从B口输出 ;指向C口第6章 接口芯片与接口技术MOVSETB MOV DJNZ LOOP2:SJMPX A,@DPTRACC,0 X @DPTR,A R1,LOOP1 $;取C口数据;使PC0置1 ;回送 ;未完则反复 ;暂停LOOP3:MOVMOVX SJMPDPTR,#0203H@DPTR,A LOOP2;指向C口;回送第6章 接口芯片与接口技术6.3 键盘显示器接口82796.3.1 8279的组成及引脚 8279芯片有40条引脚,由单一+5V电源供电。它主 要由以下几部分组成:(1) I/O控制和数据缓冲器;(2) 控制和定时寄存器及定时控制部分; (3) 扫描计数器; (4)回送缓冲器与键盘去抖动控制电路; (5)FIFO(先进先出)寄存器和状态电路;(6)显示器地址寄存器及显示RAM。第6章 接口芯片与接口技术8279的引脚如图6―17所示,下面对引脚名称作 简要说明。DB0~DB7:双向数据总线。A0:命令状态或数据选择线。A0=1,表示从 DB0~DB7线上传送的是命令或状态字;A0=0表示为 数据。RD、W R :读、写信号线。IRQ:中断请求线。 SL0~SL3:扫描线。可进行译码扫描(4选1),也可 进行编码扫描(16选1),但要使用4-16译码器。若用38译码器的话,则扫描线为8选1。http://www.lccdgg.cn第6章 接口芯片与接口技术图6―17 8279引脚图第6章 接口芯片与接口技术RL0~RL7:回送线。内部有上拉电阻,从此线上得到键盘的回扫信号。 OUTA0~OUTA3、OUTB0~OUTB3:显示器刷新寄 存器输出,与扫描线同步。第6章 接口芯片与接口技术6.3.2 8279的接口电路与应用举例图6―18给出了用8279芯片管理24个键的键盘和6 个LED数码显示器的实际应用接口电路,以及它与 8031单片机的接口方法。 作 为 一 个 外 设 接 口 芯 片 , 8 2 7 9 的 片C S 信 号 选 由8031的P25、P26、P27这3条地址线经地址译码器译 码后得到的(P27、P26、P25=011)。其片内寻址线A0与 8031系统的地址线A0相连,此时8279数据口的地址号为6000H,命令/状态口的地址号为6001H。第6章 接口芯片与接口技术图6―18 8279应用实例第6章 接口芯片与接口技术该接口电路的工作过程简述如下:每当按下一个键,8279会自动识别键号,产生相 应的键编码自动送入先进先出寄存器FIFO中,同时产 生中断请求信号IRQ,向CPU请求中断。当CPU响应中 断,执行中断服务程序,并从FIFO中读取编码数据之 后,则IRQ信号将自动撤消。第6章 接口芯片与接口技术6.4 LED数码显示器接口6.4.1 LED数码显示器的结构与显示段码 1. LED数码显示器的结构 LED数码显示器是1种由LED发光二极管组合显示 字符的显示器件。它使用了8个LED发光二极管,其中7 个用于显示字符,1个用于显示小数点,故通常称之为7段(也有称作8段)发光二极管数码显示器。其内部结构如图6―19所示。第6章 接口芯片与接口技术图6―19 7段LED数码显示器第6章 接口芯片与接口技术LED数码显示器有两种连接方法:(1)共阳极接法。 把发光二极管的阳极连在一起构成公共阳极,使用 时公共阳极接+5V,每个发光二极管的阴极通过电阻与 输入端相连。 (2)共阴极接法。 把发光二极管的阴极连在一起构成公共阴极,使用 时公共阴极接地。每个发光二极管的阳极通过电阻与输入端相连。第6章 接口芯片与接口技术2. LED数码显示器的显示段码为了显示字符,要为LED显示器提供显示段码(或称 字形代码),组成一个“8”字形字符的7段,再加上1个 小数点位,共计8段,因此提供给LED显示器的显示段码 为1个字节。各段码位的对应关系如下:段码位 显示段D7 dpD6 gD5 fD4 eD3 dD2 cD1 bD0 a第6章 接口芯片与接口技术表6―6 十六进制数及空白字符与P的显示段码第6章 接口芯片与接口技术6.4.2 LED数码显示器的接口方法与接口电路1.LED数码显示器的接口方法 单片机与LED数码显示器有以硬件为主和以软件为 主的两种接口方法。 1)以硬件为主的接口方法这种接口方法的电路如图6―20所示。第6章 接口芯片与接口技术图6―20 以硬件为主的LED显示器接口电路第6章 接口芯片与接口技术2)以软件为主的接口方法这种接口方法的电路如图6―21所示,它是以软件 查表代替硬件译码,不但省去了译码器,而且还能显示更 多的字符。但是驱动器是必不可少的,因为仅靠接口提 供不了较大的电流供LED显示器使用。第6章 接口芯片与接口技术图6―21 以软件为主的LED显示器接口电路第6章 接口芯片与接口技术2. LED数码显示器的接口电路实际使用的LED数码显示器位数较多,为了简化线 路、降低成本,大多采用以软件为主的接口方法。对于 多位LED数码显示器,通常采用动态扫描显示方法,即逐 个地循环地点亮各位显示器。这样虽然在任一时刻只 有1位显示器被点亮,但是由于人眼具有视觉残留效应, 看起来与全部显示器持续点亮的效果基本一样(在亮度 上要有差别)。http://www.lccdgg.cn第6章 接口芯片与接口技术图6―22 8155作6位LED显示器接口的电路第6章 接口芯片与接口技术6.4.3 LED数码显示器的显示方法对于多位数码显示器来说,为了简化线路、降低成本, 往往采用以软件为主的接口方法,即不使用专门的硬件译 码器,而采用软件程序进行译码。如前所述,由于各位数码 管的显示段码是互相并联的,因此在同一时刻只能显示同 一种字符。对于这种接口电路来说,其显示方法有静态显 示和动态显示两种。 1.静态显示 所谓静态显示,就是在同一时刻只显示1种字符,或者说 被显示的字符在同一时刻是稳定不变的。其显示方法比 较简单,只要将显示段码送至段码口,并把位控字送至位控 口即可。所用指令为:第6章 接口芯片与接口技术MOV MOV MOV MOV MOV MOVDPTR,#SEGPORT A,#SEG X @DPTR,A DPTR,#BITPORT A,#BIT X @DPTR,A;指向段码口 ;取显示段码 ;输出段码 ;指向位控口 ;取位控字 ;输出位控字第6章 接口芯片与接口技术2.动态显示如果要在同一时刻显示不同的字符,从电路上看,这 是办不到的。因此只能利用人眼对视觉的残留效应,采 用动态扫描显示的方法,逐个地循环点亮各位数码管,每 位显示1ms左右,使人看起来就好象在同时显示不同的 字符一样。 在进行动态扫描显示时,往往事先并不知道应显示 什么内容,这样也就无从选择被显示字符的显示段码。为此,一般采用查表的方法,由待显示的字符通过查表得到其对应的显示段码。第6章 接口芯片与接口技术下面介绍一种动态扫描显示子程序:DIR: MOV MOV MOV MOV R0,#7AH R3,#01H A,#00H R1,#BITPORT ;指向显示缓冲区首址 ;从右边第1位开始显示 ;取全不亮位控字 ;指向位控口MOVLD1: MOV MOV MOV MOVX @R1,AA,@R0 DPTR,#DSEG C A,@A+DPTR R1,#SEGPORT;瞬时关显示;取出显示数据 ;指向显示段码表首址 ;查显示段码表 ;指向段码口第6章 接口芯片与接口技术MOVMOV MOV MOV LCALLX @R1,AR1,#BITPORT A,R3 X @R1,A DELY;输出显示段码;指向位控口 ;取位控字 ;输出位控字 ;延时1msINCJB RL MOV SJMPR0A.5,LD2 A R3,A LD1;指向下一个缓冲单元;已到最高位则转返回 ;不到,向显示器高位移位 ;保存位控字 ;循环第6章 接口芯片与接口技术LD2: RETDSEG:DBC0H,F9H,A4H,B0H,99H,92H,82H ;显示段码表 DB F8H,80H,90H,88H,83H,C6H,A1H DB 86H,84H,FFH第6章 接口芯片与接口技术程序说明:(1)本例接口电路是以软件为主的接口电路,显示数 据有6位,每位数码管对应1位有效显示数据。 (2)由程序可知,由于数码显示器的低位(最右边的位) 显示的是显示缓冲区中的低地址单元中的数,因此数 在显示缓冲区中存放的次序为低地址单元存低位,高地 址单元存高位。 (3)在动态扫描显示过程中,每位数码管的显示时间约1ms,这由调用延时1ms子程序DELY来实现。第6章 接口芯片与接口技术(4)本程序是利用查表方法来得到显示段码的,这是一种既简便又快速的方法。由于MCS-51单片机具有查 表指令(MOVC指令),因此用来编制查表程序是非常方 便的。 (5)由于在显示段码表中,将“空白”字符排在字母 “F”的后边,因此在使用查表指令时,若要查“空白” 字符的显示段码,那么在累加器A中应放入数据“10H”。 (6)在实际的单片机应用系统中,一般将显示程序作为1个子程序供监控程序调用。第6章 接口芯片与接口技术6.4.4 LED数码显示器应用举例1.静态显示举例 例1:在数码显示器的最左边1位上显示1个“P”字。 数码显示器的接口电路如图6―22所示,设8155的端口地 址为7F00H~7F05H,数码管为共阳极。试编写相应的显 示程序。 解:本例要显示的字符已知,且在同一时刻只显 示1种字符,故可采用静态显示的方法。由图6―22可知,当采用共阳极数码管时,应按共阳极规律控制。在程序的开始,应对8155进行初始化编程,设A、B口 均为输出。第6章 接口芯片与接口技术程序如下:MOV MOV A,#03H DPTR,#7F00H ;8155命令字(A、B口均为输出) ;指向命令口MOVMOV INCX @DPTR,AA,#8CH DPTR;输出命令字;取“P”字符的显示段码 ;指向A口MOVINC INCX @DPTR,ADPTR DPTR;输出显示段码;指向C口MOVMOV SJMPA,#20HX @DPTR,A $;取位控字(最左边一位上显示);输出位控字 ;暂停第6章 接口芯片与接口技术例2:开始时在数码显示器的最右边一位上显示1个“0”字,以后每隔0.5秒将“0”字左移1位,直到最左 边一位后则停止显示。接口电路与端口地址同上,设有20ms延时子程序D20MS可供调用。试编写相应的程序。解:本例仍可采用静态显示的方法。 程序如下: MOV MOV A,#03H ;8155命令字(A、B口均为输出) ;指向命令口DPTR,#7F00HMOVMOVX @DPTR,AA,#C0H;输出命令字;取“0”字的显示段码第6章 接口芯片与接口技术INCMOV INCDPTRX @DPTR,A DPTR;指向A口;输出显示段码INCMOV LOOP1:MOV MOV LOOP2:LCALLDPTRA,#01H R0,#19H D20MS X @DPTR,A;指向C口;取位控字(最右边一位上显示) ;输出位控字 ;延时0.5秒DJNZJB RL AR0,LOOP2A.5,LOOP3 ;若已到最左边一位,则转 ;未到,则将位控字左移1位第6章 接口芯片与接口技术SJMPLOOP3:MOV MOV SJMPLOOP1A,#00H X @DPTR,A $;继续;停止显示;暂停2.动态显示举例例3:编一动态显示程序,使数码显示器同时显示“ABCDEF”6个字符。设显示缓冲区的首地址为7AH, 可调用动态扫描显示子程序DIR(参见643小节)。第6章 接口芯片与接口技术解: MOVMOV MOV LOOP:MOV INCA,#0FHR0,#7AH R1,#06H @R0,A R0;取最右边1位字符;指向显缓区首址(最低位) ;共送入6个字符 ;将字符送入显缓区 ;指向下一显示单元DECDJNZ MM: LCALL SJMPAR1,LOOP DIR MM;取下一个显示字符;6个数未送完,则重复 ;扫描显示一遍 ;重复扫描第6章 接口芯片与接口技术例4:在一串单字节无符号数中找出最大值,并在数码显示器的最右边两位上显示。设数据串的长度为20, 存放在片内RAM从30H单元开始的一段区域中。解:根据题意,LED数码显示器必须采用动态扫描显示的方法。 本例要显示的是两位数,而数码显示器有6位。在不 显示数字的位上数码管应该不亮,而动态扫描显示子程 序每次对6位数码管全扫描一遍。第6章 接口芯片与接口技术程序按如下思路编写:(1)先求出最大值。 (2)将最大值拆字节后存入显示缓冲区,应注意数的 存放次序。根据题意,低位数应存入显示缓冲区的低地 址单元。 (3)将“空白”字符的查表值10H送入不显示位所对 应的显示缓冲区中。 (4)反复调用动态扫描显示子程序。第6章 接口芯片与接口技术程序如下:MOV MOV MOV M1: INC R0,#30H R1,#13H A,@R0 R0 ;R0指向数据区首地址 ;比较次数送R1 ;取第1个数 ;指向下一个数MOVCJNE M2: DJNZ SJMP M3: JNC70H,@R0A,70H,M3 R1,M1 M4 M2;下一个数送入70H单元中;若前后两个数不相等则转 ;若相等,则判比较完否? ;若已完,则转至显示处理 ;前一个数大,转至判结束否?第6章 接口芯片与接口技术MOVSJMP M4: MOV ANL MOVA,70HM2 R2,A A,#0FH 7AH,A;前一个数小,将大数换入A中;转至判结束处 ;暂存最大值 ;保留低位数 ;将低位数存入显示缓冲区中MOVANL SWAP MOVA,R2A,#F0H;恢复最大值;保留高位数 ;将高位换入低位中7BH,A;存入高位数第6章 接口芯片与接口技术MOVMOV MOV MOV MOVA,#10H;取“空白”字符查表值7CH,A ;放入显示缓冲区不显示位的单元中 7DH,A 7EH,A 7FH,A ;高4位不显示MM:LCALLSJMPDIRMM;扫描显示一遍;重复扫描,显示最大值第6章 接口芯片与接口技术6.5 键盘接口键盘实际上是由排列成矩阵形式的一系列按键开关组成的,它是单片机系统中最常用的人机联系的一 种输入设备。用户通过键盘可以向CPU输入数据、地址和命令。键盘按其结构形式可分为编码式键盘和非编码式键 盘两大类。 编码式键盘是由其内部硬件逻辑电路自动产生被按 键的编码。这种键盘使用方便,但价格较贵。第6章 接口芯片与接口技术单片机系统中普遍使用非编码式键盘。这类键盘应主要解决以下几个问题: (1)键的识别; (2)如何消除键的抖动; (3)键的保护。在以上几个问题中,最主要的是键的识别。第6章 接口芯片与接口技术6.5.1 非编码式键盘的结构与工作原理1.非编码式键盘的结构 非编码式键盘一般采用行列式结构并按矩阵形式排 列,如图6―23所示。 图6―23示出4×4行列式键盘的基本结构示意图。4×4表示有4根行线和4根列线,在每根行线和列线的交叉点上均分布1个单触点按键,共有16个按键。第6章 接口芯片与接口技术2.非编码式键盘的工作原理非编码式键盘识别闭合键通常有两种方法:一种称 为行扫描法,另一种称为线反转法。 1)行扫描法 所谓行扫描法,就是通过行线发出低电平信号,如果该行线所连接的键没有按下的话,则列线所连接的输出端口得到的是全“1”信号;如果有键按下的话,则得到 的是非全“1”信号。第6章 接口芯片与接口技术图6―23 非编码式键盘行扫描法的工作原理? (a)无键按下;(b)有键按下;(c)扫描第0行;?(d)扫描第1行;(e)扫描第2行;(f)扫描第3行第6章 接口芯片与接口技术图6―23 非编码式键盘行扫描法的工作原理? (a)无键按下;(b)有键按下;(c)扫描第0行;?(d)扫描第1行;(e)扫描第2行;(f)扫描第3行第6章 接口芯片与接口技术图6―23 非编码式键盘行扫描法的工作原理? (a)无键按下;(b)有键按下;(c)扫描第0行;?(d)扫描第1行;(e)扫描第2行;(f)扫描第3行第6章 接口芯片与接口技术具体过程如下:首先,为了提高效率,一般先快速检查整个键盘中是 否有键按下;然后,再确定按下的是哪一个键。 其次,再用逐行扫描的方法来确定闭合键的具体位 置。方法是:先扫描第0行,即输出1110(第0行为“0”, 其余3行为“1”),然后读入列信号,判断是否为全“1”。第6章 接口芯片与接口技术2) 线反转法线反转法也是识别闭合键的一种常用方法。该方 法比行扫描法速度要快,但在硬件电路上要求行线与列线均需有上拉电阻,故比行扫描法稍复杂些。3.如何消除键的抖动 由于按键为机械开关结构,因此机械触点的弹性及 电压突跳等原因,往往在触点闭合或断开的瞬间会出现 电压抖动,如图6―24所示。 http://www.lccdgg.cn第6章 接口芯片与接口技术图6―24 键闭合和断开时的电压抖动第6章 接口芯片与接口技术4.键的保护键的保护问题指的是当有双键或多键同时按下时会 出现什么问题以及如何加以解决。 以图6―23所示为例,若在同一行上有两个键同时按 下,从硬件上来说,不会出现什么问题;从软件上来说,由 于这时读入的列代码中出现了两个0,由此代码与行值组 合成的键特征值就超出了原设定键的范围,因此也就查 不出有效的键值来。一旦出现这样情况,一般作为废键处理。第6章 接口芯片与接口技术6.5.2 键盘接口电路对于8031型单片机来说,如果P1口不作其它用途的 话, 则 可 与 4 × 4 的键 盘相连接 , 如 图6 ―25 所 示,其 中 P1.0~P1.3作为输出口,P1.4~P1.7作为输入口。 对于型单片机来说,如果不再外扩程序 存储器的话,则可以利用P0~P2口中的任意两个口构成 多达8×8的键盘,其中1个作为输出口,1个作为输入口, 既可以采用行扫描法,也可以采用线反转法。第6章 接口芯片与接口技术图6―25 键盘的接口电路(行扫描法)第6章 接口芯片与接口技术如果单片机本身的口线已被占用的话,则可以通过外扩I/O接口芯片来构成键盘接口电路,较常用的是 A等接口芯片。图6―26是采用8155接口芯片构成8×4键盘的接口电路,其中A口为输出,作为行线;C口为输入,作为列线(只用了PC0~PC3四根口线)。第6章 接口芯片与接口技术图6―26 采用8155的键盘接口电路第6章 接口芯片与接口技术6.5.3 键盘扫描程序现以图6―26所示接口电路为例,说明键盘扫描程序 的编制方法。 1.采用行扫描法 采用行扫描法识别闭合键的程序流程图见图6―27。第6章 接口芯片与接口技术图6―27 键分析程序流程图第6章 接口芯片与接口技术首先调用全扫描子程序,检查有无闭合键。若无键 闭合,则对数码显示器扫描显示1遍;若有键闭合,则先消 抖。这里采用调用两次数码显示器扫描循环显示子程 序的方法,每次6ms共12ms。然后再次检查有无键闭合, 若无键闭合,则返回主程序;若有键闭合,则进行逐行扫 描,以判别闭合键的具体位置。 本例介绍的是第1种方法,采用的计算公式为键值=行号×4+列号 (6―1) 对于8×4的键盘来说,其具体键值由式(6―1)可计算 出,见表6―7。第6章 接口芯片与接口技术表6―7 8×4键盘键值计算法第6章 接口芯片与接口技术计算出闭合键的键值后,再判断键释放否?若键未释放,则等待;若键已释放,则再延时消抖,然后判断是 命令键还是数字键。若是命令键,则转入命令键处理程 序,完成命令键的功能;若是数字键,则转入数字键处理 程序,进行数字的存储和显示等。第6章 接口芯片与接口技术键盘扫描程序:KEY1: LCALL JNZ LJMP LK1: LCALL KS1 LK1 LK8 DIR ;检查有闭合键否? ;A非0,有键闭合则转 ;无键闭合转返回 ;有键闭合,则延时12msLCALLLCALL JNZ LJMP LK2: MOVDIRKS1 LK2 LK8 R3,#00H;消抖;再次检查有键闭合否? ;有键闭合则转 ;无键闭合转返回 ;行号初值送R3第6章 接口芯片与接口技术MOVLK3: MOV MOVR2,#FEHDPTR,#0101H A,R2;行扫描初值送R2;指向8155口A ;行扫描值送AMOVINC INC MOV ANLX @DPTR,ADPTR DPTR X A,@DPTR A,#0FH;扫描1行;指向8155口C ;读入列值 ;保留低4位MOVCJNE MOVR4,AA,#0FH,LK4 A,R2;暂存列值;列值非全“1”则转 ;行扫描值送A第6章 接口芯片与接口技术JNBRL MOVA.7,LK8A R2,A;已扫到最后1行则转;未扫完,则移至下1行 ;行值存入R2中INCSJMP LK4: MOV ADD MOVR3LK3 A,R3 A,R3 R5,A;行号加1;转至扫描下1行 ;行号送入A ;行号×2 ;暂存ADDMOV MOVA,R5R5,A A,R4;行号×4;存入R5中 ;列值送入A第6章 接口芯片与接口技术LK5:RRCJNC INCALK6 R5;右移1位;该位为0则转 ;列号加1SJMPLK6: PUSH LK7: LCALL LCALL JNZLK5R5 DIR KS1 LK7;列号未判完继续;保护键值 ;扫描1遍显示器 ;发全扫描信号 ;键未释放则等待LCALLLCALL POPDIRDIR A;键已释放;延时12ms,消抖 ;键值存入A中第6章 接口芯片与接口技术KND: RETLK8: MOV RET KS1: MOV MOV A,#FFH;返主;无闭合键标志FFH存入A中 ;返主 DPTR,#0101H A,#00H ;有无闭合键判断子程序 ;取全扫描信号MOVINC INC MOV ANLX @DPTR,ADPTR DPTR X A,@DPTR A,#0FH;发全扫描信号;指向8155口C ;读入列值 ;保留低4位第6章 接口芯片与接口技术ORLCPL RETA,#F0HA ;返主;高4位取“1”;取反,无键按下则全0DIR数码显示器扫描显示子程序可参阅LED数码 显示器接口一节。2.采用线反转法本例程序采用线反转法来识别闭合键。为简单起见, 采用4×4的键盘,其接口电路如图6―28所示。第6章 接口芯片与接口技术图6―28 键盘接口电路(线反转法)第6章 接口芯片与接口技术与上例不同的是,本例先求出闭合键的特征值,然后采用查表的方法求出键值,因此预先要建立1个键值表。 如果采用一般的查表方法,由于键的特征值不是依次排 列的数值,因此键值表的长度将会很长。例如对于4×4 的键盘来说,有效键值只有16个,键的特征值也是16个。 但这16个特征值却不是依次排列的,而是从77H到EEH 共占用了半页左右的范围(即占用了100多个地址单元)。 如果键的数目增加的话,那么占用的范围还要增加。实 际上这是对有效地址单元的一种浪费。第6章 接口芯片与接口技术程序中有一点需要说明的是,8031的P1口是准双向口,在输入之前先要输出高电平。由于本例采用4×4的 键盘,P1口的低4位作为输出,高4位作为输入。在先输出 低4位全扫描信号的同时,将高4位输出全“1”信号,所 以就不需要再专门输出高4位的全“1”信号了。 与上例程序一样,本例程序也应作为子程序,执行一 遍后,若(A)=FFH,则无闭合键;若(A)≠FFH,则有闭合键,A 中存放的即为该闭合键的键值。第6章 接口芯片与接口技术线反转法程序如下:KEYZ: LCALL JNZ LJMP MK1: LCALL KS2 MK1 MK7 DIR ;检查有闭合键否? ;A非0,有键闭合则转 ;无键闭合转返回 ;有键闭合,则延时12msLCALLLCALL JNZ LJMP MK2:MOVDIRKS2 MK2 MK7 P1,#F0H;消抖;再次检查有键闭合吗? ;若有键闭合则转 ;若无键闭合则转返回 ;发行线全扫描信号,列线全“1”第6章 接口芯片与接口技术MOVANL CJNE LJMPA,P1A,#F0H A,#F0H,MK3 MK7;读入列状态;保留高4位 ;有键按下则转 ;无闭合键转返回MK3:MOV R2,A ;保存列值ORLMOV MOV ANLA,#0FHP1,A A,P1 A,#0FH;列线信号保留,行线全“1”;从列线输出 ;读入P1口状态 ;保留行线值ADD A,R2 ;将行线值和列线值合并得到键特征值第6章 接口芯片与接口技术MOVMOV MOV MOV MK4:CLR A MOV MOV MOVR2,AR3,#00H DPTR,#TRBE R4,#10H C A,@A+DPTR 70H,A A,R2;暂存于R2中;R3存键值(先送初始值0) ;指向键值表首址 ;查找次数送R4 ;表中值送入A ;暂存于70H单元中 ;键特征值送入ACJNEMK5:LCALL LCALLA,70H,MK6DIR KS2;未查到则转;扫描1遍显示器 ;还有键闭合否?第6章 接口芯片与接口技术JNZLCALL LCALL MOV RETMK5DIR DIR A,R3;若键未释放,则等待;若键已释放,则延时12消抖 ;将键值存入A中 ;返主MK6: INCINC DJNE MK7: MOV RETR3DPTR R4,MK4 A,#FFH;键值加1;表地址加1 ;未查到,反复查找 ;无闭合键标志存入A中 ;返主第6章 接口芯片与接口技术KS2: MOVMOV ANL CPL RETP1,#F0HA,P1 A,#F0H A;闭合键判断子程序;发全扫描信号,读入列线值 ;保留列线值 ;取反,无键按下为全0 ;返主TRBE: DB 7EH,BEH,DEH,EEH,7DH,BDH,DDH,EDHDB 7BH,BBH,DBH,EBH,77H,B7H,D7H,E7H第6章 接口芯片与接口技术6.6 A/D转换器接口6.6.1 A/D转换器概述 A/D转换器用以实现模拟量向数字量的转换。按转换原 理可分为4种:计数式、双积分式、逐次逼近式及并行式A/D转换器。目前最常用的是双积分式和逐次逼近式。双积分式 A/D转换器的主要优点为转换精度高、抗干扰性能好、价格便宜;缺点为转换速度较慢。因此这种转换器主要用于速度要求不高的场合。常用的产品有 ICL7106/ICL7107/ICL7126系列、MC1443以及ICL7135等。第6章 接口芯片与接口技术另一种常用的A/D转换器是逐次逼近式。逐次逼近式A/D转换器是一种速度较快、精度较高的转换器,其转换时 间大约在几微秒到几百微秒之间。常用的这类芯片有:(1)ADC0801~ADC0805型8位MOS型A/D转换器;(2)ADC型8位MOS型A/D转换器; (3)ADC型8位MOS型A/D转换器。 量化间隔和量化误差是A/D转换器的主要技术指标之 一。量化间隔可由下式求得:? ?满量程输入电压2 ?1n?满量程电压2n(6―2)第6章 接口芯片与接口技术其中n为A/D转换器的位数。量化误差有两种表示方法:一种是绝对量化误差; 另一种是相对量化误差。可分别由下式求得: 绝对量化误差? ?相对量化误差量化间隔?? 2(6―3)2? ?21n ?1(6―4)第6章 接口芯片与接口技术例如,当满量程电压为5V,采用10位A/D转换器的量化间隔、绝对量化误差、相对量化误差分别为: 量化间隔:? ? 1 2 ? 210? 4 .8 8 m V绝对量化误差:? ?? 4 .8 8 m V 2 ? 2044m V相对量化误差:? ? 1 211? 0 .0 0 0 4 9 ? 0 .0 4 9 %第6章 接口芯片与接口技术6.6.2 典型A/D转换器芯片ADC0809简介ADC0809是典型的8位8通道逐次逼近式A/D转换器, 采用CMOS工艺制造。 1.ADC0809的内部逻辑结构 ADC0809的内部逻辑结构如图6―29所示。第6章 接口芯片与接口技术图6―29 ADC0809的内部逻辑结构图第6章 接口芯片与接口技术 表6―8 ADC0809通道选择表?第6章 接口芯片与接口技术图6―30 ADC0809的引脚图第6章 接口芯片与接口技术2.ADC0809的引脚ADC0809芯片为28引脚双列直插式封装,其引脚排 列见图6―30。 (1)IN7~IN0:模拟量输入通道。 (2)ADDA、ADDB、ADDC:模拟通道地址线。(3)ALE:地址锁存信号。(4)START:转换启动信号。 (5)D7~D0:数据输出线。 (6)OE:输出允许信号。 (7)CLK:时钟信号。第6章 接口芯片与接口技术(8) EOC:转换结束状态信号。(9)VCC:+5V电源。 (10)Vref:参考电压。第6章 接口芯片与接口技术6.6.3 MCS-51单片机与ADC0809的接口ADC0809与MCS-51单片机的一种常用连接方法如 图6―31所示。 电路连接主要涉及两个问题,一个是8路模拟信号的 通道选择,另一个是A/D转换完成后转换数据的传送。 1. 8路模拟通道选择 ADDA、ADDB、ADDC分别接系统地址锁存器提 供的末3位地址,只要把3位地址写入0809中的地址锁存器,就实现了模拟通道选择。第6章 接口芯片与接口技术图6―31 ADC的连接图第6章 接口芯片与接口技术启动A/D转换只需使用1条MOVX指令。在此之前,要将P2.0清0并将末3位与所选择的通道号相对应的口 地址送入数据指针DPTR中。例如要选择IN0通道时,可 采用如下两条指令,即可启动A/D转换: MOV MOV DPTR,#FE00H X @DPTR,A ;送入0809的口地址 ;启动A/D转换(IN0)注意:此处的A与A/D转换无关,可为任意值。第6章 接口芯片与接口技术图6―32 ADC0809信号的时间配合第6章 接口芯片与接口技术2.转换数据的传送A/D转换后得到的数据为数字量,这些数据应传送给 单片机进行处理。数据传送的关键问题是如何确认A/D 转换的完成,因为只有确认数据转换完成后,才能进行 传送。通常可采用下述3种方式。 1)定时传送方式 对于一种A/D转换器来说,转换时间作为一项技术 指标是已知的和固定的。 2)查询方式 A/D转换芯片有表示转换结束的状态信号,例如 ADC0809的EOC端。第6章 接口芯片与接口技术3)中断方式如果把表示转换结束的状态信号(EOC)作为中断请 求信号,那么,便可以中断方式进行数据传送。 不管使用上述哪种方式,只要一旦确认转换结束,便 可通过指令进行数据传送。所用的指令为MOVX读指 令,仍以图6―31所示为例,则有 MOV MOVX DPTR,#FE00H A,@DPTR第6章 接口芯片与接口技术例如与D0~D2相连。这时启动A/D转换的指令与上述类似,只不过A的内容不能为任意数,而必须和所选输 入通道号IN0~IN7相一致。例如当ADDA、ADDB、 ADDC分别与D0、D1、D2相连时,启动IN7的A/D转换 指令如下: MOV MOV MOV DPTR,#FE00H A,#07H ;送入0809的口地址;D2D1D0=111,选择IN7通道X @DPRT,A ;启动A/D转换第6章 接口芯片与接口技术6.6.4 A/D转换应用举例设有一个8路模拟量输入的巡迥检测系统,使用中断 方式采样数据,并依次存放在外部RAM的A0H~A7H单 元中。采集完一遍以后即停止采集。其数据采样的初 始化程序和中断服务程序如下: 初始化程序:http://www.lccdgg.cn MOV MOV R0,#A0H R2,#08H ;设立数据存储区指针 ;8路计数值SETBSETBIT1EA;边沿触发方式;CPU开中断第6章 接口芯片与接口技术SETBMOV LOOP:MOV HERE:SJMP 中断服务程序:EX1;允许外部中断1中断DPTR,#FEF0H ;送入口地址并指向IN0 X @DPTR,A HERE ;启动A/D转换 ;等待中断MOVMOV INCX A,@DPTRX @R0,A DPTR;采样数据;存数 ;指向下一个模拟通道第6章 接口芯片与接口技术INCDJNZ CLR CLR RER0R2,INT1 EA EX1 TI;指向数据存储区下一个单元;8路未转换完,则继续 ;已转换完,则关中断 ;禁止外部中断1中断 ;从中断返回INT1:MOVREX @DPTR,ATI;再次启动A/D转换;从中断返回第6章 接口芯片与接口技术6.7 D/A转换器接口6.7.1 D/A转换器接口的技术性能指标 D/A转换器的输入为数字量,经转换后输出为模拟量。 有关D/A转换器的技术性能指标很多,例如绝对精度、 相对精度、线性度、输出电压范围、温度系数、输入 数字代码种类(二进制或BCD码)等等。对这些技术性能指标,这里不作全面详细说明,仅对几个与接口有关的技术性能指标作一介绍。第6章 接口芯片与接口技术(1)分辨率。分辨率是D/A转换器对输入量变化敏感程度的描述, 与输入数字量的位数有关。如果数字量的位数为n,则 D/A转换器的分辨率为2-n。这就意味着D/A转换器能对 满刻度的2-n输入量作出反应。 (2)建立时间。 建立时间是描述D/A转换速度快慢的一个参数,指 从输入数字量变化到输出达到终值误差±1/2LSB(最低有效位)时所需的时间,通常以建立时间来表明转换速度。第6章 接口芯片与接口技术(3)接口形式。D/A转换器与单片机的接口方便与否,主要决定于 转换器本身是否带数据锁存器。 6.7.2 典型D/A转换器芯片DAC0832简介 DAC0832为一个8位D/A转换器,单电源供电,在+5~+15V范围内均可正常工作。基准电压的范围为±10V,电流建立时间为1μs,CMOS工艺,低功耗20mW。 DAC0832的内部结构框图如图6―33所示。第6章 接口芯片与接口技术图6―33 DAC0832内部结构框图第6章 接口芯片与接口技术图6―34 0832运算放大器接法第6章 接口芯片与接口技术图6―35 DAC0832引脚图第6章 接口芯片与接口技术各引脚的功能如下:(1)D7~D0:转换数据输入端。 (2) C S :片选信号,输入,低电平有效。 (3)ILE:数据锁存允许信号,输入,高电平有效。 (4) W R 1 :写信号1,输入,低电平有效。(5) W R 2 :写信号2,输入,低电平有效。(6) X F E R :数据传送控制信号,输入,低电平有效。 (7)IOUT1:电流输出1,当DAC寄存器中各位为全“1”时,电 流最大;为全“0”时,电流为0。第6章 接口芯片与接口技术(8)IOUT2:电流输出2,电路中保证IOUT1+IOUT2=常数。 (9)Rfb:反馈电阻端,片内集成的电阻为15kΩ。 (10)Vref:参考电压,可正可负,范围为-10~+10V。 (11)DGND:数字量地。 (12)AGND:模拟量地。第6章 接口芯片与接口技术6.7.3 MCS-51单片机与DAC0832的接口MCS-51单片机与DAC0832的接口有3种连接方式, 即直通方式、单缓冲方式及双缓冲方式。直通方式不 能直接与系统的数据总线相连,需另加锁存器,故较少应 用。下面介绍单缓冲与双缓冲两种连接方式。 1.单缓冲方式 所谓单缓冲方式就是使DAC0832的两个输入寄存器 中有一个处于直通方式,而另一个处于受控的锁存方式,当然也可使两个寄存器同时选通及锁存。第6章 接口芯片与接口技术2.双缓冲方式所谓双缓冲方式,就是把DAC0832的两个锁存器都 接成受控锁存方式。 由于两个锁存器分别占据两个地址,因此在程序中 需要使用两条传送指令,才能完成一个数字量的模拟转换。假设输入寄存器地址为FEFFH,DAC寄存器地址为FDFFH,则完成一次D/A转换的程序段应为:第6章 接口芯片与接口技术MOVMOV MOV MOV MOVA,#DATADPTR,#FEFFH X @DPTR,A DPTR,#FDFFH X @DPTR,A;转换数据送入A;指向输入寄存器 ;转换数据送输入寄存器 ;指向DAC寄存器 ;数据进入DAC寄存器并进行D/A转换第6章 接口芯片与接口技术图6―36 DAC0832的3种单缓冲连接方式? (a)DAC寄存器直通方式;(b)输入寄存器直通方式;(c)两个寄存器同时选通及锁存方式第6章 接口芯片与接口技术图6―36 DAC0832的3种单缓冲连接方式? (a)DAC寄存器直通方式;(b)输入寄存器直通方式;(c)两个寄存器同时选通及锁存方式第6章 接口芯片与接口技术图6―36 DAC0832的3种单缓冲连接方式? (a)DAC寄存器直通方式;(b)输入寄存器直通方式;(c)两个寄存器同时选通及锁存方式第6章 接口芯片与接口技术图6―37 DAC0832的双缓冲连接方式图第6章 接口芯片与接口技术6.7.4 D/A转换应用举例D/A转换器是计算机控制系统中常用的接口器件, 它可以直接控制被控对象,例如控制伺服电动机或其它 执行机构。它也可以很方便地产生各种输出波形,如矩 形波、三角波、阶梯波、锯齿波、梯形波、正弦波及 余弦波等。第6章 接口芯片与接口技术图6―38 DAC0832的双极性输出接口第6章 接口芯片与接口技术在图6―38中,运算放大器A2的作用是把运算放大器A1的单极性输出变为双极性输出。例如,当Vref=+5V 时,A1的电压输出范围为0~-5V。当VOUT1=0V 时,VOUT2=-5V;当VOUT1=-2.5V时,VOUT2=0V;当VOUT1=-5V 时,VOUT2=+5V。VOUT2的输出范围为-5V~+5V。VOUT2与 参考电压Vref的关系为:VOUT 2 ?数字码 ? 1 2 8128? V ref(6―2)第6章 接口芯片与接口技术几点说明:(1)以上程序产生的是矩形波,其低电平的宽度由延 时子程序DMS1所延时的时间来决定,高电平的宽度则 由子程序DMS2所延时的时间来决定。 (2)改变延时子程序DMS1和DMS2的延时时间,就 可改变矩形波上下沿的宽度。若DMS1=DMS2(两者延 时一样),则输出的是方波。 (3)改变上限值或下限值便可改变矩形波的幅值:单 极 性 输 出 时 为0 ~ - 5 V 或 0 ~ + 5 V ; 双 极 性 输 出 时 为5~+5V。第6章 接口芯片与接口技术2.产生锯齿波利用DAC0832产生锯齿波的参考程序如下: MOV MOV MM:MOV A,#00H ;取下限值DPTR,#FEFFH ;指向0832口地址 X @DPTR,A ;输出INCNOP NOP NOP SJMPA;转换值增量;延时MM;反复第6章 接口芯片与接口技术几点说明:(1)程序每循环1次,A加1,可见锯齿波的上升沿是由 256个小阶梯构成的。 (2)可通过循环程序段的机器周期数,计算出锯齿波 的周期,并可根据需要通过延时的办法来改变波形周期。(3)通过A加1,可得到正向的锯齿波;如要得到负向的锯齿波,只要将A加1改为A减1指令即可实现。 (4)程序中A的变化范围为0~255,所得到的锯齿波为 满幅度。第6章 接口芯片与接口技术3.产生三角波利用DAC0832产生三角波的参考程序如下: MOV MOV SS1:MOV A,#00H DPTR,#FEFFH X @DPTR,A ;取下限值 ;指向0832口地址 ;输出NOPNOP NOP;延时第6章 接口芯片与接口技术SS2: INCJNZ SS3: DEC MOV NOPASS1 A;转换值增量;未到峰值,则继续 ;已到峰值,则取后沿X @DPTR,A ;输出 ;延时NOPNOP JNZ SJMP SS3 SS2 ;未到谷值,则继续 ;已到谷值,则反复第6章 接口芯片与接口技术几点说明:(1)本程序所产生的三角波谷值为0,峰值为+5V(或5V)。若改变下限值和上限值,那么三角波的谷值和峰 值也随之改变。 (2)改变延时时间可改变三角波的斜率。(3)若在谷值和峰值处延时较长时间的话,则输出梯形波,延时时间的长短取决于梯形波上下边的宽度。}