版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章单片机的I/O扩展本章内容系统扩展的含义I/O口的扩展利用I/O接口芯片:82C51、81C51的I/O口扩展8.1单片机的系统扩展系统扩展的含义在单片机芯片外加相应的芯片、电路,使得有关功能得以扩充,我们称为系统扩展。系统扩展包括:外部存储器扩展,I/O接口扩展,总线扩展等系统扩展分类单一功能的扩展综合功能的扩展8.2I/O扩展概述单片机本身接口功能有限单片机控制应用中的复杂接口要求扩展I/O接口电路的功能:速度协调输出数据锁存输入数据三态缓冲数据转换为什么要扩展I/O口常用编址方法有:独立编址和统一编址。MCS-51单片机采用与外部RAM统一编址方法,即每一个扩展的I/O口相当于一个扩展的RAM单元;访问外部I/O口的指令同访问外部数据存储器指令。扩展I/O接口编址方法例如:MOVX @DPTR,A MOVX A,@DPTRMOVX @RI,AMOVX A,@RI;其中,DPTR、RI中装I/O对应的地址(1)无条件传送方式无条件传送也称为同步程序传送。只有那些能一直为数据I/O传送作好准备的设备,才能使用无条件传送方式。因为在进行I/O操作时,不测试设备的状态,可以根据需要随时进行数据传送操作。该方式适用于两类设备的数据输入/输出:具有常驻的数据信号变化缓慢的数据信号的设备。单片机I/O控制方式在I/O操作之前,要先检浏设备的状态,以了解设备是否已为数据I/O作好了准备;只有在确认设备已“准备好”的情况下,单片机才能执行数据I/O操作为了实现查询方式的数据传送,需要由接口电路提供设备状态,并以软件方法进行状态测试。因此这是一种软硬件方法结合的数据传送方式。程序查询方式,电路简单,查询软件也不复杂,而且通用性强。(2)查询方式(有条件传送方式)中断方式又称程序中断方式、它与查询方式的主要区别在于知何知道设备是否为数据传送作好了准备,查询方式是单片机的主动形式,而中断方式则是单片机等待通知(中断请求)的被动形式。采用中断方式进行数据传送时,当设备为数据传送作好准备之后,就向单片机发出中断请求;单片机接收到中断请求之后,即作出响应,暂停正在执行的原程序,而转去为设备的数据输入/输出服务待服务完成之后,程序返回,单片机再继续执行被中断的原程序。(3)中断方式并行口扩展的分类利用锁存器、缓冲器进行并行口简单扩展用可编程并行接口芯片进行扩展I/O接口扩展常用芯片8.3简单I/O口扩展8.3.1简单接口常用锁存器、缓冲器芯片I/O口的简单扩展输出口----利用锁存器扩展输入口----利用缓冲器扩展74LS377、74LS273、74LS244、74LS2458位数据/地址锁存器74LS273/373(1)74LS27374LS273是一种带清除功能的8D触发器其内部结构如图8.1所示引脚分布如图8.2所示真值表见表8.1所示1D~8D为数据输入端1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。表8-174LS273真值表图8.174LS273内部结构图图8.274LS273封装图
(2)74LS37374LS373是一种带有三态输出门的8D触发器其内部结构如图8.3所示引脚分布如图8.4所示数据输入由允许端G控制数据输出由数据输出控制端控制各触发器仅输出单一状态D1~D8为数据输入端Q1~Q8为数据输出端触发器的功能如表8.2所示常用作数据/地址锁存器图8.374LS373内部结构图表8-274LS373真值表图8.474LS373引脚功能图(3)74LS24474LS244是三态八缓冲器/线驱动器/线接收器(3S,两组控制)内部结构逻辑图:(3)74LS244(续)引出端符号:1A1~1A4,2A1~2A4: 输入端1G#,2G#: 三态允许端(低电平有效)1Y1~1Y4,2Y1~2Y4: 输出端真值表:表8-374LS244真值表(4)74LS24574LS245:8位双向3态缓冲电路,主要使用在数据的双向缓冲。内部结构逻辑图:(4)74LS245(续)真值表表8-474LS245真值表8.3.2简单I/O口扩展简单输入口扩展图8.574LS244扩展输入接口电路简单输出口扩展图8.674LS377扩展输出接口电路简单并行口扩展应用举例图8.774LS系列扩展输入/输出接口电路8.4可编程并行接口芯片的扩展8.4.1利用可编程并行接口芯片8255的I/O扩展常用的外围I/O接口芯片:82C55:可编程通用并行接口(3个8位I/O口)。81C55:可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口,256RAM单元,1个14位的减法计数器)。都可以和AT89S51直接连接,接口逻辑简单。8255的结构图8.88255的内部结构框图8255的扩展逻辑电路MCS-51单片机可以和8255直接连接,图8.9给出了一种扩展电路。图8.98255的扩展逻辑电路图8255并口扩展举例【例8-1】8255与8031连接如图8.10所示,要求:试确定8255A的端口地址欲使A口:方式0,输出口;B口:方式1,输入口;上C口:方式0,输入口。编写初始化程序欲使8051内部RAM30H的内容从PA口输出,试编程。欲使PC3向外输出一个正脉冲信号,试编程。
/RD/WRP0.7P0.6…P0.1P0.08031ALEP2.7D7Q7D6Q674LS373D1Q1D0GQ0/RD/WRPA7-08255A1PB7-0A0D7D6PC7-0D0/CS………图8.108255与8031连接图【例8-1】解答 P2 P0 0×××,××××,××××,××00
A口:
7FFCH(0000H)0×××,××××,××××,××01
B口:
7FFDH(0001H)0×××,××××,××××,××10
C口:
7FFEH(0002H)0×××,××××,××××,××11 控制口:
7FFFH(0003H)MOV DPTR,#7FFFH ;控制口地址MOV A,#8EH ;MOVX @DPTR,A初始化编程确定地址程序段MOV A,30HMOV DPTR,#7FFCHMOVX @DPTR,A④程序段MOV DPTR,#7FFFHMOV A,#00HMOVX @DPTR,AMOV A,#86HMOVX @DPTR,AACALL DELAY1MOV A,#87HMOVX @DPTR,AACALL DELAY1DEC AMOVX @DPTR,AACALL DELAY2【例8-1解答】【例8-2】设单片机通过8255来控制一顺序控制过程,该系统连接如图8.11,A口输出6路顺序控制信号,以指示灯指示,6道工序,每道工序时间为10秒。PC0输入启动信号,PC7输入停止信号,分别与SA1和SA2相连。试编写此应用程序。图8.118255A的应用举例(2)端口的工作方式为方式0,A口为输出口,C口为输入口,
8255的控制字为89H。(1)8255四个端口的地址:××××,××00,××××,××00BA口地址:FCFCH××××,××00,××××,××01BB口地址:FCFDH××××,××00,××××,××10BC口地址:FCFEH××××,××00,××××,××11B控制口地址:FCFFH【例8-2】解答ORG0100HMA:MOV DPTR,#0FCFFH ;控制寄存器地址MOV A,#89H ;控制字MOVX @DPTR,A ;控制字送控制寄存器MOV DPTR,#0FCFEH ;C口地址QD:MOVX A,@DPTR ;读C口JNB ACC.0,QD ;判断有无启动信号LOOP:MOV DPTR,#0FCFCH ;A口地址MOV A,#01H ;第一路控制信号LOOP1:MOVX @DPTR,A ;输出第一路控制信号ACALL DELAY ;延迟10秒RL A ;下一路控制信号JNB ACC.6,LOOP1 ;判断6路控制信号有无输出完(3)控制程序如下:MOV DPTR,#0FCFEH ;C口地址MOVX A,@DPTR ;读C口JB ACC.7,TZ ;判断有无停止信号JMP LOOP ;无停止信号则进行下一轮控制TZ:MOV DPTR,#0FCFCH ;有停止信号则使A口输出清零CLR AMOVX @DPTR,ASJMP $ORG 1000H ;延时子程序DELAY:MOV 22H,#50HL1: MOV 21H,#100HL2: MOV 20H,#250HL3: NOP NOP DJNZ 20H,L3 DJNZ 21H,L2 DJNZ 22H,L1 RET(3)控制程序(续):8.4.2可编程并行接口芯片8155的扩展8155的结构与引脚8155芯片内部逻辑由三部分组成:存储单元为256字节静态RAM三个可编程I/O口:PA口,8位PB口,8位PC口,6位14位二进制减法计数器8155芯片的内部结构图8.128155芯片的内部结构8155芯片的引脚图8.138155芯片的引脚8155芯片的引脚(续)PA0—PA7端口A的I/O线(8位,接外设)PB0—PB7端口B的I/O线(8位,接外设)PC0—PC5端口C的I/O线(6位,接外设)AD0—AD7三态地址/数据复用线(8位,一般接单片机P0口)CPU与8155之间的地址、数据、命令、状态等信号通过它来传送IO/M#端口/存储器选择控制:“0”选择片内RAM;“1”选择片内I/O口TIMERIN8155片内定时器/计数器的计数脉冲输入引脚TIMEROUT8155片内定时器/计数器的计满回零输出引脚RD#、WR#分别是对8155片内的RAM或I/O口的的读、写控制信号ALE地址锁存引脚CE#选片RESET复位信号。复位后A口、B口和C口均为数据输入方式8155的使用与工作方式8155内部RAM的使用:与一般外部数据存储器的使用基本一样,唯一区别是事先要使IO/M#为低电平。8155各端口(包括定时器)的使用:A、B、C各端口可工作于不同的工作方式,使用前要进行初始化(写命令字到命令口)。8155的3个I/O口,分别称为PA、PB和PC。PA和PB是8位通用数据口,主要用于数据传送,只有输入/输出两种工作方式;PC口为6位口,既可作为数据I/O口,还可作为控制口,用于传送控制信号和状态信号,对PA和PB的I/O操作进行控制;PC口共具有四种工作方式:输入方式(ALT1)输出方式(ALT2)PA口控制端口方式(ALT3)PA和PB口控制端口方式(ALT4)I/O口的工作方式:I/O口的工作方式(续):当以无条件方式传送数据时,无需联络信号,此时,PA、PB、PC皆可进行数据的输入/输出;当PA或PB以中断方式进行数据传送时,所需的联络信号由PC提供:PC2~PC0是为PA提供;PC5~PC3是为PB提供联络信号共有三个:INTR:中断请求信号(输出),高电平有效,送给C51的外中断请求。BF:缓冲器满信号(输出),高电平有效。STB#:选通信号(输入),低电平有效。数据输入时,STB#是外设送来的选通信号;数据输出时,STB#是外设送来的应答信号。PC口的联络信号定义方式1(ALT1)方式2(ALT2)方式3(ALT3)方式4(ALT4)PC0输入输出A口中断请求(AINTR)A口中断请求(AINTR)PC1输入输出A口缓冲器满(ABF)A口缓冲器满(ABF)PC2输入输出A口选通(ASTB#)A口选通(ASTB#)PC3输入输出输出B口中断请求(BINTR)PC4输入输出输出B口缓冲器满(BBF)PC5输入输出输出B口选通(BSTB#)8155方式4时的逻辑结构设备数据线设备数据线至中断请求输入线至设备来自设备至中断请求输入线至设备来自设备AINTRBINTRABFBBFASTBBSTBPAPB8155PC0PC1PC2PC3PC4PC58155共有256个RAM单元;6个可编址的端口,这6个端口是:
①命令/状态寄存器;②
PA口;③PB口;④
PC口;⑤定时器/计数器低8位;⑥定时器/计数器高8位RAM使用AD7~AD08位地址进行编址可编址端口只需使用AD2~AD0即可实现编址RAM地址:(当IO/M#加低电平)
此时AD0~AD7上得到的地址值是指8155的某一RAM单元的地址,地址范围是00H~FFH。RAM单元地址及I/O口编址8155端口地址(当IO/M#加高电平)表8-58155的端口地址编码AD7AD6AD5AD4AD3AD2AD1AD0对应端口×××××000命令/状态寄存器×××××001A口×××××010B口×××××011C口×××××100定时器/计数器低8位×××××101定时器/计数器高8位8155内部有一个8位地址锁存器,无需外接锁存器;8155的许多信号与MCS-51单片机兼容,可以直接连接。表8-5列出了这些信号的对应关系。在二者的连接中,8155的地址译码即片选端可以采用线选法、全译码等方法;IO/M#的连接可用或非门产生使用高位地址8155与单片机的连接8155与MSC-51的兼容信号8155MCS-518155MCS-51AD0~AD7P0口RD#RD#ALEALEWR#WR#RESETRST表8-68155与MSC-51的兼容信号IO/M#的连接图8.15(a)或非门产生IO/M#信号IO/M#的连接图8.15(b)高位地址作IO/M#信号硬件接口电路举例图8-16AT89S51单片机与81C55的接口电路硬件接口电路举例表8-781C55的各端口及RAM单元地址在图8-16中,单片机P0口输出的低8位地址不需要另外加锁存器(8155片内集成有地址锁存器),而直接与8155的AD0~AD7相连,既可作为低8位地址总线,又可作为数据总线,地址锁存控制直接用AT89S51发出的ALE信号。81C55的CE#端接P2.7,IO/M#端与P2.0相连。当P2.7=0时,若P2.0=0,则访问8155的RAM单元。由此可得到图8-17中8155的各端口以及RAM单元的地址编码,见表8-7。定时器/计数器的计数结构8155的定时器/计数器是一个14位的减法计数器,由两个8位寄存器构成,以其中的低14位组成计数器,剩下的两个高位(M2,M1)用于定义计数器输出的信号形式。8155的定时器/计数器D7D6D5D4D3D2D1D0T7T6T5T4T3T2T1T0D7D6D5D4D3D2D1D0M2M1T13T12T11T10T9T8输出方式计数器高6位计数器低8位8155具有定时、计数功能,与51单片机定时器的使用类似,其不同之处为:8155的定时器/计数器是减法计数。8155的定时器/计数器则只有一种固定的工作方式,即14位计数,通过软件方法进行计数值加载。8155的定时器/计数器,由外部提供计数脉冲,信号引脚是TIMERIN。8155的定时器/计数器,计数溢出时向芯片外边输出一个信号(TIMEROUT)。这一信号有脉冲和方波两种形式,供用户进行选择,具体由:M2、M1
两位定义。定时器/计数器的使用8155的定时器/计数器的输出方式命令字用于设置端口及定时器/计数器的工作方式;命令寄存器只能写不能读。状态字用于寄存各端口及定时器/计数器的工作状态状态字只能读不能写8155的控制使用8155主要通过对命令字/状态字的设置来控制8155命令字格式TM1TM2IEBIEAPC2PC1PAPAPBA口方式B口A口计数器方式00:空操作01:停止计数10:计满后停止11:启动计数0:输入1:输出0:禁止中断1:允许中断00011011方式1:A、B口基本I/O;C口输入方式2:A、B口基本I/O;C口输出方式3:A口选通I/O,B口基本I/O方式4:A、B口选通I/OB口方式C口方式8155状态字格式A口中断请求标志:0:无;1:有
定时器中断标志:1:有定时器溢出中断0:读状态字后或硬件复位后INTEBTIMERBBFINTRBINTEAINTRAABF×A口中断允许:0:禁止;1:允许B口缓冲器:0:空;1:满B口中断请求标志:0:无;1:有A口缓冲器:0:空;1:满B口中断允许:0:禁止;1:允许8155定时器/计数器的工作方式由命令字中的高两位
D7D6(M2M1)进行控制。D7D6=00:不影响计数器工作。D7D6
=01:停止计数。如计数器未启动则无操作,如计数器正运行则停止计数。D7D6
=10:达到计数值(计数器减为0)后停止。D7D6
=11:启动。如计数器没运行,则在装入计数值后开始计数;如计数器已运行,则在当前计数值计满后,再以新的计数值进行计数。任何时候都可设置计数器长度和工作方式,将控制字写入控制寄存器。如果计数器正在计数,只有在写入启动命令后,计数器才接收新计数长度并按新的工作方式计数。定时器/计数器的控制8155定时器/计数器的工作方式由命令字中的高两位
D7D6(M2M1)进行控制。若写入计数器的初值为奇数,引脚的方波输出是不对称的。例如,初值为9时,计数器的输出,在5个计数脉冲周期内为高电平,4个计数脉冲周期内为低电平,如图8-17所示。定时器/计数器的控制图8-17计数长度为奇数时的不对称方波输出(长度为9)8155定时器/计数器的工作方式由命令字中的高两位
D7D6(M2M1)进行控制。定时器/计数器的控制注意,81C55的计数器初值不是从0开始,从2开始。这是因为,如果选择计数器的输出为方波形式(无论是单方波还是连续方波),则规定是从启动计数开始,前一半计数输出为高电平,后一半计数输出为低电平。显然,如果计数初值是0或1,就无法产生这种方波。因此81C55计数器的写入初值范围是3FFFH~2H。如果硬要将0或1作为初值写入,其效果将与送入初值2的情况一样。81C55复位后使计数器停止计数(1)初始化通常要完成两项任务:确定命令字计数初值81C55的接口软件编程初始化举例:【例8-3】要求使用8155定时器/计数器对计数脉冲进行千分频,即计数1000后,TIAMEROUT端电平状态发生变化,并重新置数以产生连续方波。此外假定A口为输出方式,允许中断;B口为输入方式,禁止中断;C口为对A口控制方式(ALT3)。请编写初始化程序。8155初始化举例(续)要求输出连续方波,所以定时器/计数器的最高两位:M2M1=01;计数初值:1000,其16进制数:03E8H,则定时器/计数器的高8位:43H,低8位:0E8H;命令字的设置如下:
计数器B口A口C口B口A口装入后启动禁止中断允许中断ALT3输入输出11011001因此,命令字的内容为0D9H。8031与8155的连接如图8155的RAM地址:7E00H~7EFFHI/O口地址:7F00H~7F05H,其中:PA:7F01H,PB:7F02H
,PC:7F03H,命令口:7F00H
定时器低位:7F04H,定时器高位:7F05H初始化程序:MOV DPTR,#7F00H ;命令/状态寄存器地址MOV A,#0D9H ;命令字MOVX @DPTR,A ;装入命令字MOV DPTR,#7F04H ;计数器低8位地址MOV A,#0E8H ;低8位计数值MOVX @DPTR,A ;写入计数值低8位INC DPTR ;计数器高8位地址MOV A,#43H ;高8位计数值MOVX @DPTR,A ;写入计数值高8位P2.7……………P2.0P0.7………………P0.0
RAM单元
0XXXXXX000000000
0号地址0000H
0XXXXXX011111111
255号00FFH8155的扩展应用举例【例8-4】设计一段程序把8155片内RAM全部填满FFH。由于是对8155片内RAM操作,不需要初始化芯片;8155片内RAM地址是:0000H~00FFH,其存储单元地址映像如表8-8:表8-88155片内RAM地址【例8-4】设计一段程序把8155片内RAM全部填满
FFH。MOV R7,#00H ;R7作计数器,从0开始共减
;256次再到0MOV A,#0FFH ;准备送FFHMOV DPTR,#0000H ;DPTR指向第一个单元LOOP:MOVX @DPTR,A ;送数INC DPTR ;调整指针,指向下一个单元DJNZ R7,LOOP ;循环控制SJMP $程序如下:【例8-5】在单片机实验开发装置上实现变速的“8”字循环显示。首先以“8”字显示20ms的速度循环10次,然后变为慢速,以每个“8”字显示0.1秒的速度循环一次,然后再变为快速循环,如此不断重复,试编此有关的程序。单片机实验器和LED显示器通过8155连接,设连接图如图8.15所示。已知时钟频率为12MHz,LED为其阳极器件,“8”的显示代码为80H。【例8-5】LED显示器通过8155连接图图8.188031通过8155与LED显示器的连接电路【例8-5】分析端口地址:控制口:0000H,PA:0001H,PB:0002H,PC:0003H,定时器高位:0004H,定时器低位:0005H;8155控制字:应规定A口为输出(D0=l),C口为输出方式(ALT2),(D3D2=01),不要中断。控制字为:00000101B=05H。单片机时钟为l2MHz,用T1作定时,设置为工作方式l,则其工作方式字为l0H;20ms的定时初值为: 216-(20×10-2)/10-2=45536=B1E0H不能直接用定时器产生0.1秒延时,要用软件计数器,用20ms定时5次来获得0.1秒。在中断服务程序中处理“8”字的快或慢速循环显示。利用程序状态寄存器PSW中的用户标志位F0作快慢控制,令F0=0为慢速显示,F0=l为快速显示。编程如下:ORG 0000HLJMP MAINORG 00lBHLJMP TlORG l000HMAIN:MOV SP,#52HMOV A,#05H ;8155命令字MOV R0,#00H ;8155命令口地址MOVX @R0,A ;装8155控制字MOV TMOD,#10H ;设置T1为定时模式,工作方式1MOV TH1,#0B1H ;设定时器初值高位MOV TL1,#0E0H ;设定时器初值低位MOV IE,#88H ;开中断MOV A,#80H ;“8”字显示代码编程如下:(续);续前INC R0 ;A口地址MOVX @R0,A ;输出字形码MOV
A,#01H ;LED最右一位位码MOV
R0,#03H ;C口地址MOVX @R0,A ;位码输出MOV
R1,#10 ;快速循环10次MOV
R2,#5 ;慢速定时计数5次SETB
F0 ;先实现快速显示SETB
TR1 ;启动T1SJMP $编程如下:(续)ORG 1500HT1:MOV TH1,#0B1H ;赋初值MOV TL1,#0E0HJNB F0,SLOW ;F0为零转慢速JNB ACC.5,NEXT2 ;设显示一遍,转出MOV A,#01H ;显示一遍,重开始DJNZ R1,NEXT3 ;不是10次,转出CLR F0 ;已l0次,转慢速MOV R1,#10 ;重装R1值SJMP NEXT3SLOW:DJNZ R2,NEXT4 ;0.l秒不到,转出JNB ACC.5,NEXT1 ;设显示一遍,转出编程如下:(续);续前MOV A,#0lH ;显示一遍SETB F0 ;转为快速MOVR2,#05 ;重装R2值NEXT1:MOV R2,#05NEXT2:RL ANEXT3:MOVX @R0,ANEXT4:RETI【例8-6】综合功能多芯片扩展的扩展:使用多个芯片来进行综合功能扩展,本例使用:1片8155,扩展I/O口;1片2716,外部扩展ROM(2KB);2片6116,外部扩展RAM(4KB);1片373,地址锁存器;1片138,3:8地址译码器。【例8-6】综合功能多芯片扩展的扩展:硬件连线图图8.19综合功能多芯片的扩展:连接电路图选片问题单一芯片扩展,由于端口较少,占用地址线少,常使用P2口的某一线接片选端CE#,即线选方式;多芯片扩展,端口很多,占用地址线多,常使用译码器芯片作片选译码器问题本例使用138芯片,是3:8译码器,它在这里的作用是输出选片信号;输出端Y0、Y1、Y2分别用来选择8155、6116(1)、6116(2)问题分析:表8-9
138功能表控制引脚输入引脚输出引脚G1G2AG2BCBAY7Y6Y5Y4Y3Y2Y1Y01000001111111010000111111101100010111110111000111111011110010011101111100101110111111001101011111110011101111111
6116(1)的地址范围是:0800H-0FFFH;
6116(2)的地址范围是:1000H-17FFH图中的8155的各端口地址分别是:
0000H、0001H、……、0005H其内部RAM地址范围是:
0000H--00FFH地址分配地址分析:图中8155的CE#接138的Y0,138的G2B、G2A和CBA分别接到8031的P2.7-P2.3,所以要选中8155,即要CE=0,则必有Y0=0,由Y0=0得到必有G1=1,且G2A=G2B=0,CBA=000,即8031的P2.7-P2.3=00000时,选中8155,在此前提下,当8031的P0口输出地址是:
00000000~11111111;且IO/M#=0时,选中8155的RAM单元,所以其内部RAM地址范围是 0000H--00FFH。8031的P0口输出地址是:XXXXX000~XXXXX101,且IO/M#=1时,选中8155的各端口,即P2.7……………P2.0P0.7……………P0.0
端口00000
00000000000(0000H)命令口00000
00000000001(0001H)PA口00000
00000000010(0002H)PB口00000
00000000011(0003H)PC口00000
00000000100(0004H)计数器低00000
00000000101(0005H)计数器高所以8155的各端口地址分别是:0000H、0001H、……、0005H8155各端口地址分析:图中6116(1)的CE#接138的Y1#,所以要选中6116(1),则必有Y1#=0,则CBA=001,且G1=1,G2A=G2B=0,即8031的P2.7-P2.3=00001时,选中6116(1)。在此前提下,当8031的P2.2-P2.0,P0.7-P0.0输出地址:00000000000-11111111111时,选中6116(1)中的某一个单元。故6116(1)的地址范围是:0000100000000000-0000111111111111即0800H-0FFFH(共2K)。同理,故6116(2)的地址范围是:1000H-17FFH6116地址分析:8.5用51单片机的串行口扩展并行口串口的方式0用于I/O扩展。方式0为同步移位寄存器工作方式,波特率为fosc/12。数据由RXD端(P3.0)输入,同步移位时钟由TXD端(P3.1)输出。用74LS165扩展并行输入口图8-20串口扩展两个8位并行输入口。74LS165是8位并行输入串行输出的寄存器。当74LS165的S/L#端由高到低跳变,并行输入端的数据被置入寄存器;当S/L#=1,且时钟禁止端(15脚)为低时,允许TXD(P3.1)移位时钟输入,在该脉冲作用下,数据由右向左方向移动。TXD与所有74LS165的CP相连;RXD与74LS165的串行输出端QH相连;P1.0与S/L#相连,控制74LS165的串行移位或并行输入;15脚接地,允许时钟输入。当扩展多个8位输入口时,相邻两芯片的首尾(QH与SIN)相连。图8-20利用74LS165扩展并行输入口【例8-7】从16位扩展口读入5组数据(每组2B),把它们转存到内部RAM20H开始的单元。
MOV R7,#05H ;设置读入组数 MOVR0,#20H ;设置内部RAM数据区首址START: CLRP1.0 ;并行置入数据,S/=0 SETBP1.0 ;允许串行移位,S/=1 MOVR2,#02H ;设每组字节数,即74LS165的个数RXDATA: MOVSCON,#10H ;设置串口方式0,允许接收,启动接收过程WAIT: JNB
RI,WAIT ;未接收完一帧,循环等待
CLRRI
;RI标志清“0”,准备下次接收
MOVA,SBUF ;读入数据
MOV@R0,A ;送至RAM缓冲区
INCR0
;指向下一个地址
DJNZR2,RXDATA ;未读完一组数据,继续
DJNZR7,START ;5组数据未读完重新并行置入
………… ;对数据进行处理串行接收过程采用查询等待的方式,如必要,可改中断方式。用74LS164扩展并行输出口图8-21为串口外接两片74LS164(8位串入并出移位寄存器)扩展两个8位并行输出口的接口电路。图8-21利用74LS164扩展并行输出口用74LS164扩展并行输出口图8-21为串口外接两片74LS164(8位串入并出移位寄存器)扩展两个8位并行输出口的接口电路。当串口工作在方式0的发送,串行数据由P3.0(RXD)送出,移位时钟由P3.1(TXD)送出。注意,由于74LS164无并行输出控制端,在串行输入中,其输出端的状态会不断变化,故某些场合,在74LS164输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。图8-21利用74LS164扩展并行输出口【例8-8】将内部RAM单元30H、31H的内容经串行口由74LS164并行输出的子程序。START: MOV R7,#02H ;设置要发送的字节个数 MOV R0,#30H ;设置地址指针 MOV SCON,#00H ;设置串行口为方式0SEND: MOV A,@R0
MOV SBUF,A
;启动串行口发送过程WAIT: JNB TI,WAIT ;一帧未发完,等待
CLR TI
INC R0
;取下一个数
DJNZ R7,SEND
;未发完,继续,从子程序返回
RET9.6用I/O口控制的声音报警接口当单片机测控系统发生故障或处于某种紧急状态时,单片机系统应能发出提醒人们警觉的声音报警。用I/O口很容易实现该功能。919.6.1蜂鸣音报警接口购买市售的压电式蜂鸣器,用一根I/O口线驱动蜂鸣器发声。约需10mA的驱动电流,可用7406或7407低电平驱动,如图9-23所示,也可以用一个晶体管驱动,如图9-24所示。
图9-23
通过74LS06来驱动蜂鸣器的报警电路91
图9-24
使用三极管驱动的蜂鸣器报警电路在图9-23中,P1.7接驱动器的输入端。当输出高电平时,7406的输出为低电平,使压电蜂鸣器两加上近5V的直流电压,由压电效应而发出蜂鸣音。当P1.7端输出低电平,7406的输出端高约+5V,压电蜂鸣器的两引线间的直流电压降至接近于0V,发音停止。在图9-24,当P1.7输出高电平时,晶体管导通,压电蜂鸣器两端获得约+5V电压而鸣叫;当P1.7输出低电平,三极管截止,蜂鸣器停止发声。下面是连续蜂鸣100ms程序,两个接口电路都适用。SOUND:SETBP1.7 ;P1.7输出高电平,蜂鸣器开始鸣叫 MOVR4,#64H ;延时100msLOOP: MOVR3,#0F9HLOOP1:DJNZR3,LOOP1 ;延时1ms的循环 DJNZR4,LOOP CLRP1.7 ;P1.7输出低电平,蜂鸣器停止鸣叫 RET94如果想要发出更大的声音,可采用功率大的扬声器,采用相应的功率驱动电路。9.6.2音乐报警接口音乐报警电路克服了蜂鸣音报警音调比较单调的不足。发声电路可购买市售的乐曲发生器,发出的乐曲声可用来作为某种提示信号或报警信号。设计者可根据自己对的喜好来购买。音乐报警接口由两部分组成:(1)乐曲发生器,即集成电子音乐芯片;(2)放大电路,也可采用集成放大器。94音乐报警接口如图9-25所示,图中采用华尔兹乐曲的电子音乐芯片7920A。当从P1.7输出高电平时,输出端Vout便发出乐曲信号,经M51182L放大而驱动扬声器发出乐曲报警声,音量大小由10kΩ电位器调整。若P1.7输出低电平,则7920A因MT输入电位变低而关闭,故扬声器停止奏曲。参考程序:START:SETBP1.7;P1.7为高电平,发出音乐报警乐曲 RETSTOP:
CLRP1.7;P1.7为低电平,音乐报警乐曲停止 RET图9-25
音乐报警接口电路8.5单片机键盘接口技术单片机使用的键盘可分为独立式和矩阵式独立式:结构:一组相互独立的键盘,每个键盘都与单片机的I/O口的一条口线连接,相互独立。原理:当任何一个键被按下时,与其相连的输入线被置成“0”,平时该线为“1”。特点:接口简单,但若键较多,将占用许多I/O线。8.51键盘的工作原理图8.17独立式键盘结构键处理程序ORG2000HSTART:MOV A,#0FFH ;先置P1口为“1”MOV P1,AMOV A,P1 ;输入键状态JNB ACC.0,P0F ;查询0号键JNB ACC.1,P1F ;查询1号键JNB ACC.2,P2F ;查询2号键JNB ACC.3,P3F ;查询3号键JNB ACC.4,P4F ;查询4号键JNB ACC.5,P5F ;查询5号键JNB ACC.6,P6F ;查询6号键JNB ACC.7,P7F ;查询7号键LJMP START键盘扫描键处理程序(续)P0F: LJMP PROM0 ;入口地址表P1F: LJMP PROM1
……
P6F: LJMP PROM6P7F: LJMP PROM7PROM0: ……
;0号键功能程序
…… LJMP START ;0号键处理完返回键盘扫描
……
PROM7: ……
;7号键功能程序
…… LJMP START ;7号键处理完返回键盘扫描矩阵式(行列式):结构:键的数目多,将键按行列排成矩阵形式。矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上。特点:节省I/O口线按键识别原理及过程:先判断有无键按下列线输出0000,然后输入行线状态,若没有键按下,则行线状态为全1(1111);若有任一键按下,则行线状态不为全(1111);按键识别过程:再确认哪个键被按下列线逐行输出0(如1110),然后输入行线状态,若没有键按下,则行线状态为全1(1111);若有任一键按下,则行线状态不为全为1(如0111,说明右上角那个键被按下)确定每个键的键值正逻辑表示----行列线数据直接组合,上例中的各键值分别为:77H
7BH 7DH 7EH B7H BBH BDH
BEH D7H
DBH
DDH
DEH E7H
EBH
EDH
EEH按键识别过程:确定每个键的键值负逻辑表示----行列线数据求反组合,上例中的各键值分别为:88H
84H 82H 81H 48H 44H 42H
41H 28H
24H
22H
21H 18H
14H
12H
11H图8.18矩阵式键盘结构键盘接口完成的主要功能:键盘扫描:判断是否有键按下;键识别:确定闭合键的行列位置;产生闭合键键码;排除多键、串键(复按)及去抖动。键的识别和键功能实现键的识别由接口电路完成,即键盘接口问题;键的功能实现由中断程序完成。MCS-51单片机实现键盘接口的方法和接口芯片使用单片机本身的并行口;使用单片机本身的串行口;使用通用接口芯片(8255、8155等);使用专用接口芯片82798.5.2单片机键盘接口和键功能的实现键盘接口需要完成几项任务:判定有没有键被按下
例如矩阵式键盘:先经输出口向所有列线输出低电平,然后再输入各行线状态;若行线状态皆为高电平,则表明无键按下;若行线状态中有低电平,则表明有键被按下键盘接口的处理键盘接口需要完成的任务(续):再判定被按键的位置。先经输出口使一条列线输出低电平,然后再输入各行线状态。因为在键盘矩阵中有键被按下时,被按键处的行线和列线被接通,使穿过闭合键的那条行线变为低电平。通过逐行扫描探知了按键所在的行和列,确定了按键位置;图8.19扫描法识别按键图示去抖动当扫描表明有键被按下之后,紧接着应进行去抖动处理;去抖动有硬件和软件两种方法。硬件方法就是在键盘中附加去抖动电路。软件方法则是采用时间延迟以躲过抖动。图8.20键闭合和断开时的电压抖动抖动时间<10ms开关动作时间>100ms“1”“0”<10ms键码计算例如图821所示的键号是按从左到右、从上向下的顺序编排的。键码=行首号+列号图8.21键码图等待健释放是为了保证键的一次闭合仅进行一次处理等待键释放键盘接口的控制方式在单片机的运行过程中,何时执行键盘扫描和处理,可有以下3种情况:随机方式:每当CPU空闲时执行键盘扫描程序。中断方式:每当有健闭合时才向CPU发出中断请求,中断响应后执行健盘扫描程序。定时方式:每隔一定时间执行一次键盘扫描程序,定时可由单片机的定时器完成。键处理子程序在计算机中每一个键都对应一个处理子程序,得到闭合键的键码后,转相应的健处理子程序,实现该键所设定的功能。8.5.3使用8155作为键盘接口接口电路逻辑图8155扩展I/O口组成的行列式键盘8155PA口地址7F01HPC口地址7F03H判断有无键按下PA口输出00H,PC口输入行状态信号;若PC3~PC0≠1111,有键按下
去抖动延时5~10ms后再判断有无键按下确认哪个键被按下及其键号8155的PA口依次输出下列扫描字:键扫描及识别过程8155:PA口输出列扫描信号,PC口输入行状态信号PA7PA6PA5PA4PA3PA2PA1PA011111110FEH11111101FDH……011111117FH,则每个键的键值(列行组合)FE╳E、FD╳E、FB╳E、F7╳E、EF╳E、DE╳E、BF╳E、7F╳EFE╳D、FD╳D、FB╳D、F7╳D、EF╳D、DE╳D、BF╳D、7F╳DFE╳B、FD╳B、FB╳B、F7╳B、EF╳B、DE╳B、BF╳B、7F╳BFE╳7、FD╳7、FB╳7、F7╳7、EF╳7、DE╳7、BF╳7、7F╳7每个键的键号(自己安排)N=行首键号+列号确认哪个键被按下及其键号(续)8155的PC口输入行状态可能为下列之一:PC5PC4PC3PC2PC1PC0××1110×EH××1101×DH××1010×BH××0111×7H等待键释放后再进行进一步处理。键扫描程序框图入口有键按下?延时12ms有键按下?①①NYNY键号入栈保存按键抬起?NY键号送A返回判断按键是否抬起(以防止重复进行键处理)
键扫描程序ORG 1000HKEY1:ACALL KS1 ;调用判断有无键按下子程序JNZ LK1 ;有键按下,转去抖动AJMP KEY1 ;无键按下,返回LK1:ACALL TM12S ;延时12msACALL KS1 ;再查有无键按下JNZ LK2 ;确实有键按下,逐行扫描,确定具体键AJMP KEY1 ;无键按下,返回LK2:MOV R2,#0FEH ;首列扫描字送R2MOV R4,#00H ;首列号R4LK4:MOV DPTR,#7F01H ;首列扫描字送8155的PA口MOV A,R2 ;第一列扫描MOVX @DPTR,A ;使第i列为0(R2中Di位为0)键扫描程序(续)INC DPTRINC DPTR ;指向8155的PC口MOVX A,@DPTR ;读入行状态JB ACC.0,LONE ;0行无键按下,转查1行MOV A,#00H ;0行有键按下,行首键号#00H送AAJMP LKP ;求键号LONE:JB ACC.1,LTWO ;1行无键按下,转查2行MOV A,#08H ;1行有键按下,行首键号#08H送AAJMP LKP ;求键号LTWO:JB ACC.2,LTHR ;2行无键按下,转查3行MOV A,#10H ;2行有键按下,行首键号#10H送AAJMP LKP ;求键号LTHR:JB ACC.3,NEXT ;3行无键按下,转查下一列MOV A,#18H ;3行有键按下,行首键号#18H送A键扫描程序(续)LKP:ADD A,R4 ;求键号=行首键号+列号PUSH ACC ;键号入栈LK3:ACALL KS1 ;等待键释放JNZ LK3 ;未释放,继续等待POP ACC ;已释放,键号送ARETNEXT:INC R4 ;指向下一列,列号加1MOV A,R2 ;判断8列扫描完没有JNB ACC.7,KND ;8列扫描完,返回RL A ;没扫描完,置下一列扫描字MOV R2,A ;扫描字送AAJMP LK4 ;继续下列扫描KND:AJMP KEY1 ;8列扫描完,返回键扫描程序(续)KS1:MOV DPTR,#7F01H ;查有无键按下子程序MOV A,#00HMOVX @DPTR,A ;8155PA口输出全扫描字#00HINC DPTRINC DPTR ;指向8155的PC口MOVX A,@DPTR ;读入行状态,若有键按下,则A≠0FFHCPL A ;改成正逻辑,若有键按下,则A≠00HANL A,#0FH ;屏蔽高四位RET ;子程序返回,当有键按下时,AA≠00HT12sm:MOV R7,#18H ;12sm延时子程序TM:MOV R6,#0FFHTM6:DJNZ R6,TM6 ;td=[1+(1+255*2+2)*24+2]*MCDJNZ R7,TMRET键操作及功能处理求出键号后要进行键处理:先判断是何种键,然后:对数字键----送显示缓冲区显示;对功能键----执行相应的功能键处理程序。设:0~15号键为数字键,即键号<10H的是数字键;16~31号键为功能键,即键号≥10H的是功能键;其功能键处理程序入口地址分别为:AAA、BBB、CCC、……PPP。键操作及功能处理(续)ORG 8000HKEYADR:MOV A,BUFF ;键号送ACLR CSUBB A,#10H ;Y与10H比较JC DIGPRO ;<10H,数字键,转KEYTBL:MOVDPTR,#JMPTBLRL A ;使键值为0、2、4、6、…偶数AJMP @A+DPTR则转入功能键处理程序清单如下:键操作及功能处理(续)JMPTBL:AJMP AAA ;2字节指令散转到16个功能键处理AJMP BBB ;程序入口AJMP CCCAJMP DDDAJMP EEEAJMP FFFAJMP GGGAJMP HHHAJMP IIIAJMP JJJAJMP KKKAJMP LLLAJMP MMMAJMP NNNAJMP OOOAJMP PPP8.5.4可编程键盘/显示器接口芯片82798279是一种专用于键盘/显示器的可编程接口电路,能对键盘自动扫描,给出闭合键的键码,能自动向数码管显示器输出显示代码和位代码。其中键盘接口电路可与64键点阵式键盘联接,具有二键封锁或N键巡回功能,可自动消除按键抖动。显示器接口电路可与8位或16位数码管显示器联接。8279内部结构电路逻辑分为三个部分:(1)芯片接口控制逻辑数据缓冲器I/O控制电路(2)键盘接口控制逻辑扫描计数器扫描回送电路键盘去抖动与控制电路8×8FIFO/传感器RAM与状态电路控制与时序寄存器及时序控制电路1.8279内部结构(3)显示器接口控制逻辑16×8显示用RAM显示寄存器显示地址寄存器8279内部结构8279内部结构I/O控制FIFO/传感器RAM状态SL3-0RL7-0控制/选通移位时序与控制扫描计数器回送48数据缓冲器RDW/RCSA0DB7-DB0CLKRESETIRQ显示寄存器OUTA3-0OUTB3-08控制与时序寄存器显示地址寄存器16×8显示RAM8×8FIFO/传感器RAM键盘去抖动与控制BD8279内部结构图读状态字1010读FIFORAM或显示RAM0010写命令字1100写显示RAM0100操作A0RDWRCS控制与定时寄存器:寄存键盘及显示器工作方式,完成控制功能
定时控制:包括基本的计数器是可编程N计数器,N由编程指定(2~31),对CLK分频,获得内部所需100kHz工作时钟;其他再分频,为键盘及显示器扫描提供扫描时钟4位的计数器,有译码、编码两种方式,由编程设定译码方式:最低两位经译码,由SL0~3输出,作为键盘及显示器的扫描信号.(任何时刻,SL0~3只有一个信号有效,实现4选1)编码方式:计数器的状态由SL0~3直接输出,再经外部译码,才能作为扫描信号.(实现16选1)(1)芯片接口控制逻辑
实现8279和单片机接口,主要包括:数据缓冲器双向、三态的数据缓冲器用于芯片内部总线和系统总线的连接,进行单片机和8279之间的数据传送,信号引脚为DBO~DB7。I/O控制电路I/O控制电路用于接收单片机方面送来的控制信号,并产生所需的8279内部控制信号,例如控制数据缓冲器的数据输入/输出等。中断请求产生电路根据键盘存储区的状态产生中断请求信号。(2)键盘接口控制逻辑扫描计数器扫描计数器电路用于为键盘提供扫描信号,4位扫描信号从扫描线SL3~SL0输出,并具有两种输出形式①译码方式(也称内部译码形式)指扫描代码直接由扫描线SL0~SL3输出,每次只有1位是低电平(4选1);②编码方式(也称外部译码形式)指扫描代码经SL0~SL3外接译码器输出扫描输出波形(2)键盘接口控制逻辑(续)控制与时序寄存器及时序控制电路用于对键盘扫描进行控制。时序控制部件包括基本定时计数器,其中第一个N计数器是一个N预分频定标器,可通过编程使内部时序与CPU相适应。预分频定标器的分频系数可由程序设定为2~31。使内部计数频率为100KHz时,给出5.1mS的键盘扫描时间和10.3mS的去抖动时间。其它计数器将此基本计数频率再分频,以提供适当的键扫描、行扫描、键盘矩阵扫描及显示器扫描时间。(2)键盘接口控制逻辑(续)回送缓冲器与键盘去抖动和控制电路输入每次扫描的列线RL0~RL7状态,以进行闭合键的搜索。回送缓冲器具有锁存功能,可对8条回送线RL7~RL0上的信息进行缓冲和锁存。在键盘工作方式下,对回送线逐条扫描,以确定该行中哪一个键闭合。当去抖动电路测得某一按键闭合后,等待10mS,然后再重新检查该键是否闭合,如果仍然闭合,那么该键在阵列中的地址及SHIFT和CNTL的状态被送入先进先出寄存器FIFO。在扫描传感器矩阵方式下,每次扫描按键时直接把回送线上的内容送入传感器RAM的相应单元中去。在选通输入方式下,回送线的状态将在控制/选通线上的脉冲上升沿送入先进先出寄存器。(2)键盘接口控制逻辑(续)FIFO/传感器RAM与状态电路FIFO/传感器RAM是一个双功能8×8RAM,在键盘或选通输入方式下是一个先进先出寄存器(FIFO);信息输入时,每一组信息写入RAM中的下一单元,然后按写入顺序读出;FIFO状态电路存放FIFO中的字符数目以及FIFO满或空的状态;FIFO写入或读出次数超过FIFO的容量时,视为出错;在扫描传感器矩阵方式下,该存储器用作传感器RAM;当检测到一个传感器状态发生变化时,IRQ变为高电平,向CPU发中断请求。(3)显示器接口控制逻辑显示存储区8279可连接8位和16位的LED显示器;为给每位显示器提供显示数据,在8279芯片中有一个16×8的RAM存储区,其中每一个8位RAM单元对应一位LED显示器,即0到15地址对应LED显示器的0~15位,显示器的0位在最左边,15位在最右边。显示缓冲器(显示更新寄存器)用于为显示器提供段控数据;使用时,8279自动对显示器扫描,将显示缓冲器中的数据输出在显示器上显示出来。显示器地址寄存器及显示用RAM显示器地址寄存器用来存放CPU正在读/写的字节地址,以及正在显示的两个4位的半字节地址。读/写地址由编程设定,也可设定每次读/写后地址自动加1。在设定适当的工作方式和地址以后,CPU可直接读出显示用RAM中的内容。A、B两个半字节地址由8279自动刷新,以便与CPU输出值相对应。A、B两半字节可以分别输出,也可作为一个字节输出,由工作方式确定。数据送显示器的方式可设定为左端送入,也可以设定为右端输入。8279的信号引脚8279共有40个引脚,采用双列直插式封装图8279引脚与逻辑符号图1 402 393 384 375 366 357 348 339 3210 3111 3012 2913 2814 2715 2616 2517 2418 2319 2220 218279RL2RL3CLKIRQRL4RL5RL6RL7RESETRDWRDB0DB1DB2DB3DB4DB5DB6DB7VSSVCCRL1RL0CNTL/STBSHIFTSL3SL2SL1SL0OUTB0OUTB1OUTB2OUTB3OUTA0OUTA1OUTA2OUTA3BDCSA0(a)引脚图CPU接口444键数据扫描显示数据(b)符号图VSSWRIRQBUSA0RESETCLKRDCSBD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 8231-2024高粱
- 2024年度租赁合同违约责任条款
- 酒店营销策划与管理课件
- 2024年度房地产技术咨询服务合同
- 2024年度物联网项目开发分包合同2篇
- 安全用电施工协议书模板3
- 2024年度港口马拉松赛事承办承包合同
- 2024年度桥架工程设计与施工合同3篇
- 《华诞国寿金箔保单》课件
- 上海财经大学经济学课件m
- led电子灯箱制作方法
- 《机电设备维修技术》课程标准
- 蓝紫色渐变插画风职业生涯规划PPT模板
- 《图形创意设计》PPT课件(完整版)
- 天津市武清区城乡总体规划
- 稀土发光材料及其发光原理.
- 2022版义务教育(体育与健康)课程标准(含2022年修订部分)
- 学校教师队伍建设实施方案
- 全国爱眼日预防近视保护视力主题PPT课件(带内容)
- 西师大五年级下册语文按要求写句子考点知识练习
- Q∕GDW 12031-2020 水电设备状态检修试验导则
评论
0/150
提交评论