单片机原理及应用-第6章MCS-51单片机系统扩展与接口技术_第1页
单片机原理及应用-第6章MCS-51单片机系统扩展与接口技术_第2页
单片机原理及应用-第6章MCS-51单片机系统扩展与接口技术_第3页
单片机原理及应用-第6章MCS-51单片机系统扩展与接口技术_第4页
单片机原理及应用-第6章MCS-51单片机系统扩展与接口技术_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章MCS-51单片机的系统扩展与接口技术,本章学习目标:了解单片机系统外部系统总线的构成。掌握I/O接口电路的概念及主要功能。掌握存储器芯片的功能及外部存储器的扩展方法。掌握简单I/O扩展的方法及典型I/O接口芯片8255A、8155的结构和使用方法。掌握显示器接口电路和键盘接口电路。了解功率驱动接口电路。,6.1概述,6.1.1外部系统总线的构成,1数据总线DB(DataBus)数据总线用于单片机与存储器之间或单片机与接口电路之间双向传送数据信息。8051单片机的数据总线由P0口提供,宽度为8位。2地址总线AB(AddressBus)地址总线用于单向传送由单片机发出的地址信息,以对存储单元和I/O口进行选择。地址总线的位数决定了外部扩展的存储单元或I/O口的数量。8051单片机的地址总线宽度为16位,所以其外部扩展的存储单元或I/O口的数量为64K个。8051单片机的地址总线由P0口提供低8位地址总线,由P2口提供高8位地址总线。P0口既作为8位数据总线,又作为低8位地址总线,所以它是分时工作的。在工作时,P0口先将低8位地址信息发送出去,由锁存器锁存,然后再传送数据信息。注意,P0口、P2口在系统扩展用作地址总线后,就不能作为基本I/O口使用了。,3控制总线CB(ControlBus)ALE:地址锁存允许信号输出。用于实现对P0口上送出的低8位地址信息的锁存控制。:外部程序存储器选择信号输入。当为低电平时,只访问外部程序存储器。:外部程序存储器的读选通信号输出。当为低电平时,单片机读取外部程序存储器中的指令信息。(P3.7):外部数据存储器的读选通信号输出。当为低电平时,单片机读取外部数据存储器中的数据信息。注意,外部数据存储器和外部程序存储器的读选通信号是不同的。(P3.6):外部数据存储器的写选通信号输出。当为低电平时,单片机将数据写入相应的外部数据存储单元中。,6.1.2地址空间的分配,1程序存储器的地址空间分配程序存储器的地址空间为64KB,它包括片内ROM和扩展的片外ROM。,2数据存储器地址空间的分配8051单片机的内部数据存储器的容量为128B,其地址范围为00H7FH。因为其容量较小,在用户需求超过此容量时可在单片机外部进行扩展,扩展的最大容量是64KB,其地址范围是0000HFFFFH。,3I/O端口地址空间的分配8051单片机有4个I/O端口(P0口P3口),在单片机需要扩展时,只剩下了P1口能供用户作为I/O口使用。因此,在实际应用系统中,往往需要再扩展I/O端口。在连接外设的接口电路中,往往有若干个用于保存数据、状态、命令等信息的寄存器,我们也把它们归到扩展的I/O端口之列。单片机的CPU要经常与I/O端口之间进行数据的传送操作(称I/O操作),所以每个I/O端口也需要分配一个地址,以便于CPU的访问。8051单片机把每一个扩展的I/O端口看作一个片外数据存储单元,并给它分配一个地址,即扩展的I/O端口与外部数据存储器是统一编址的。这样做的优点是单片机无需专用的I/O指令,使用MOVX指令访问即可;其缺点是当扩展较多I/O端口时,将会占用过多的片外RAM地址。理论上,如果不对外部RAM进行扩展,则扩展I/O端口的数量可达64K个,但实际上并不需要这么多。,6.1.3I/O接口电路,1I/O接口电路的主要功能(1)实现地址译码。接口电路必须能够实现外设端口的地址译码功能(2)实现信息的转换。如串并行转换、电平转换、A/D转换、D/A转换等。(3)实现数据的缓冲与锁存。如果有多个输入设备同时利用数据总线传输数据时,就会造成信号叠加产生数据错误,导致系统不能正常工作。当数据经数据总线向输出设备输出时,由于CPU工作速度远远高于外设的工作速度,致使CPU等待输出设备取走数据,降低了CPU的工作效率,故在接口电路中设置数据锁存器,保存数据直至输出设备有足够的时间来接收。,(3)实现数据的缓冲与锁存。如果有多个输入设备同时利用数据总线传输数据时,就会造成信号叠加产生数据错误,导致系统不能正常工作。当数据经数据总线向输出设备输出时,由于CPU工作速度远远高于外设的工作速度,致使CPU等待输出设备取走数据,降低了CPU的工作效率,故在接口电路中设置数据锁存器,保存数据直至输出设备有足够的时间来接收。(4)实现通信联络。为了协调单片机与外设之间的信息传送,一般需要设置一些联络信号线来传送双方的状态信息以保证数据信息的可靠传送,2I/O接口电路的组成单片机通过这些端口与外设之间进行信息的传送,这些信息按各自的作用分成以下三种:(1)数据信息。它是一种最基本的信息,可以分为数字量、模拟量和开关量。(2)状态信息。作为单片机与外设之间交换信息的联络信号。如输入设备的“准备好”或输出设备的“忙”信号,单片机可以根据外设的状态来决定是否传送数据。(3)控制信息。单片机发给外设的命令,用于控制外设的工作。如:外设的启动或停止等。,6.2外部存储器的扩展,6.2.1外部程序存储器的扩展,1程序存储器芯片的类型(1)掩膜ROM(MaskROM)(2)可编程ROM(EPROM-ErasableRO(3)可擦除PROM(EPROM-ErasablePROM)(4)电擦除EPROM(EEPROMElectricallyEPROM也可写作E2POM)(5)快闪式ROM(FlashROM),2典型EPROM芯片介绍,(1)2764芯片的引脚功能,电源:VCC端接+5V工作电压。GND端接地。VPP端接编程电压。芯片型号不同,有+25V或+12.5V两种。数据线:D0D7共8位,表明每个存储单元存储二进制数的位数为8位,与单片机数据总线宽度相同。,地址线:A12A0共13位,可编址的存储单元数目为2138K个。存储芯片的容量不同,地址线引脚的数量亦不同。控制线:片选信号控制端,输入,低电平有效。当该端为高电平时,不能对芯片进行任何操作;在扩展时,对该端的连接与使用要特别注意。:输出允许信号控制端,输出,低电平有效。当该端有效时,允许数据从芯片向外输出。:编程脉冲输入端。,(2)2764芯片的工作方式,6.3并行I/O口扩展,6.3.1简单I/O口扩展电路1简单输入I/O口的扩展简单输入I/O口扩展实际上就是扩展数据缓冲器。它的作用是当输入设备被选通时,使数据源通过数据总线直接进行数据的输入操作;而当输入设备处于非选通状态时,缓冲器输出为高阻状态,即把数据源与数据总线隔离。常用的扩展输入I/O口的TTL芯片有74LS244、74LS373等。,2简单输出接口扩展,6.3.2利用可编程并行接口芯片8255A扩展I/O口,(1)端口部分。8255A有三个8位并行I/O口,都可以设定为输入或输出工作方式。C口又分成两个4值端口,可分别设定为输入或输出工作方式。通常A口和B口作为数据端口,而C口作为A口或B口控制、状态信息端口。A口和C口高位部分(PC7PC4)合在一起称为A组;把B口和C口的低位部分(PC3PC0)合在一起称为B组。,三个端口的特点有所不同:A口具有一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B口具有一个8位数据输入/输出的锁存/缓冲器,一个8位数据输入缓冲器(不锁存)。C口具有一个8位数据输出锁存/缓冲器,一个8位数据输入缓冲器(不锁存)。(2)A组和B组控制逻辑。这两组控制逻辑根据CPU发送给控制寄存器的命令字来设定A、B两组的工作方式,也可以根据命令字对C口的每一位实现按位“复位”或“置位”操作。(3)数据总线缓冲器。数据总线缓冲器是一个可直接与MCS-51单片机的数据总线连接的三态双向8位缓冲器,实现单片机与8255A芯片之间的数据、命令控制字及外设的状态信息的传送。,(4)读/写控制逻辑。读/写控制逻辑电路依据CPU发来的地址与控制信息,对8255A进行硬件管理,如芯片选择、端口选择、数据传送方向控制及复位操作。与读写操作有关的地址信号和控制信号有:A0、A1:端口地址线。8255A的A、B、C口和控制寄存器共4个端口,需要2根地址线编址。:片选信号,输入低电平有效。:读信号,输入低电平有效。控制将8255A端口中的数据或状态信息送到数据总线上。:写信号,输入低电平有效。控制将CPU输出的数据或命令传送到8255A相应端口中。RESET:复位信号,输入高电平有效。8255A复位后,各端口均被置为输入方式,控制寄存器清零。,方式1(选通输入/输出方式),方式1输出的状态控制信号,方式2(双向数据传送方式)A口工作在方式2实质上是方式1的输入与输出的组合,输入输出过程与方式1相同。输出是由CPU执行输出指令开始,输入是由选通信号开始。,6.3.3利用可编程接口芯片8155扩展I/O口,18155的内部结构与引脚功能8155芯片包含三个并列I/O端口,即A口、B口和C口其中A口和B口为8位端口,C口是6位端口。此外,它还集成了256B的静态RAM、一个14位减法计数器。,8155的主要引脚功能如下:AD7AD0:地址数据复用线,8位。:片选信号,输入低电平有效。:写选通信号,输入低电平有效。信号有效时,将CPU输出到数据总线上的数据写入到8155相应的端口或内部RAM单元中。:读选通信号,输入低电平有效。它控制把8155中数据送至地址、数据线上。:I/O端口与内部RAM选择信号,输入;当0时,对8155的内部RAM进行读写操作;当l时,对8155的I/O口进行读写操作。,ALE:地址锁存信号,输入。该信号的下降沿将AD7AD0端的地址信息和,信号锁存到8155的内部锁存器。RESET:复位信号,输入。8155复位后,A口、B口、C口均置为输入方式,并清除命令状态寄存器。TIMERIN:定时器材数器的计数脉冲输入端。计数脉冲的上升沿使计数器减1计数。TIMEROUT:定时器/计数器输出端。当14位计数器不断减1计数到0时,输出脉冲或方波。输出信号的形式取决于定时器计数器的工作方式。,PA7PA0:A口输入/输出线。PB7PB0:B口输入/输出线。PC7PC0:C口输入/输出线,也可用作A口、B口选通输入输出时的联络控制信号线。,38155作为扩展片外RAM使用,48155作为扩展I/O端口使用(1)命令字与状态字8155的命令字用于定义I/O端口和定时器/计数器的工作方式,只能写入到命令状态字寄存器。命令字的格式如图6-28所示。8155状态字用于存放A口、B口和定时器、计数器的工作状态,只能从状态字寄存器读出状态字只使用了7位,最高位未定义,其格式如图6-29所示。,图6-288155命令字的格式,图6-298155状态字格式,(2)I/O口的工作方式由8155的命令字可知,8155的三个I/O端口都可以作为基本输入/输出端口;A口和B口还可以作为选通输入/输出端口,此时,C口作为它们的控制或状态信号。当以无条件方式进行数据的I/O传送时,由于不需要任何联络信号,因此,A口、B口和C口都可以进行数据的输入输出。当A口或B口以选通I/O方式进行数据传送时,由C口提供联络信号。各联络信号的定义见表6-9。,58155作为扩展定时器/计数器使用,图6-30定时器/计算器的计数结构,从8155的TIMERIN端输入外部计数脉冲时,进行减1计数。当计数器中计数值为0时,由TIMEROUT端输出信号,该信号有脉冲和方波两种形式,具体由M2、M1两位设置,有四种输出信号波形,如图6-31所示。,图6-318155定时器/计数器的输出信号波形,例6-10要求对计数脉冲进行千分频,即计数1000后、定时器的输出电平状态发生变化,产生连续方波。此外设定A口和C口为基本输入方式,B口为基本输出方式,禁止中断。解:由于定时器输出连续方波,因此计数器的高两位设置为;M2M101计数器的计数初值为1000(3E8H),于是装入计数器的高8位为43H,低8位为E8H。,即8155的命令字为0C2H,假定命令状态字寄存器地址为4000H,则初始化程序为:MOVDPTR,#4004H;计数器低8位地址MOVA,#0E8H;低8位计数值MOVXDPTR,A;写入低8位计数值INCDPTR;计数器高6位及2位定时器输出地址MOVA,#43H;高6位计数值及2位定时器输出MOVXDPTR,A;写入高6位计数值及2位定时器输出MOVDPTR,#4000H;命令状态寄存器地址MOVA,#0C2H;命令字MOVXDPTR,A;装入命令字,启动计数,6.4键盘接口,6.4.1键盘的工作原理1按键的分类(1)触点式开关按键;(2)无触点式开关按键。,2键输入原理键盘通过接口电路与CPU相连,CPU可以通过查询或中断方式了解有无按键动作,并检查是哪一个按键按下,并将该键号送入累加器ACC中,然后通过跳转指令转入执行该键的功能程序,执行完毕后再返回主程序。,3键抖动和消抖方法机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随较短时间的触点机械抖动,抖动的时间长短与开关的机械特性有关,一般为510ms,把这种现象称为键抖动。在理想状态和实际状态下按键产生的电压波形如图6-32所示。,消除抖动有硬件和软件两种方法。硬件消抖是利用单稳态电路或RS触发器,从根本上避免电压抖动的产生;软件消抖是在按键的按下和释放时采用软件延时的方法来消除抖动的影响。单片机应用系统一般采用软件方法,大约延时1020ms。,4键码识别键码识别就是判别是哪一个按键按下闭合。常用的方法有两种:用专用硬件电路来识别,把这种键盘称为编码键盘;用软件方法来识别,把这种键盘称为非编码键盘。单片机系统常采用非编码键盘。键码的识别可以采用随机扫描、定时扫描或中断扫描方式来完成。,5编制键盘程序一个完整的键盘控制程序应具备以下功能:(1)检测有无按键按下,并消除按键抖动的影响。(2)有可靠的逻辑处理办法。每次只处理一个按键,其间任意其他按键的操作对系统不产生影响,且无论一次按下时间有多长,系统仅执行一次按键功能程序。(3)准确输出按键值,以满足跳转指令的要求。,6.4.2独立式键盘特点:独立式键盘电路设计简单,但如果按键数量较多,它所占用的I/O口线也增加。受单片机I/O口线数量的限制,该类键盘适用于按键数目较少的单片机应用系统中。,图6-33就是通过803l单片机门口构成的具有8个按键的独立式键盘。从图6-33中可以看出,每一个按键连接一根I/O口线,各个按键之间彼此相互独立。当某一按键按下时,它所对应的I/O口线的电平变成低电平,读入单片机的值就是逻辑0,表示按键闭合;若无按键按下,则所有的I/O口线都是高电平。,例6-11利用8031的P1口的P1.0P1.3四根口线,设计一个4个按键的独立式键盘。要求编程实现S1闭合将内部RAM20H单元内容加1,S2闭合将20H单元内容减1,S3闭合将21H单元清0,S4闭合将21H单元置FFH,若同时有两个以上按键闭合,将不做任何操作。解:(1)键盘电路。如图6-33所示独立式键盘类似,当有键按下时,对应口线为低电平。,(2)程序设计。一般采用程序扫描方式进行闭合键的识别。先查询P1.0P1.3口线的输入状态,如果某口线为低电平,则确认它所对应按键已经按下,并做消抖处理,然后再次进行键扫描,确认是该键闭合后再转向该按键对应的功能处理程序。,ORG0100HKB:MOVA,#0FFH;置P1口为输入口MOVP1,A;读键盘状态CPLAANLA,#0FH;屏蔽高4位JZKB;若无键闭合,继续扫描ACALLDELAY;延时去抖动MOVA,P1;再读键状态CPLAANLA,#0FHJZKB;无键闭合则返回CJNEA,#01H,KB01INC02H;S1闭合,20H单元加1SJMPKBKB01:CJNEA,#02H,KB02DEC0H;S2闭合,20H单元减1SJMP20HKB02:CJNEA,#04H,KB03MOV21H,#00H;S3闭合,21H单元清零SJMPKBKB03:CJNEA,#08H,KBMOV21H,#0FFH;S4闭合,21H单元置FFHSJMPKB;若有两键以上闭合则返回继续扫描DELAY:END,6.4.3矩阵式键盘1矩阵式键盘的结构矩阵式键盘由行线和列线组成,按键位于行、列的交叉点上。对于m行n列结构的键盘,可产生mn个键位。,图6-34所示为44矩阵式键盘接口电路。图中由P1.4P1.7构成的列线通过上拉电阻接到十5V电源上;由P1.0P1.3构成行线,产生的16个交叉点放置16个按键,就构成了44矩阵式键盘。,2矩阵式键盘扫描方式(1)程序扫描方式。CPU执行键盘扫描程序,反复地扫描键盘,以确定有无按键按下,然后根据按键功能转去执行相应的程序。(2)定时扫描方式。在初始化程序中对定时器计数器进行编程,使之产生10ms的定时中断。在CPU响应定时中断时,执行中断服务程序对键盘扫描一遍,以确定有无按键按下。(3)中断扫描方式。当键盘上任一按键按下时,发出中断请求。CPU响应中断,执行中断服务程序来判断所按下的键,并做出相应的处理。,例6.12用8031单片机与可编程并行I/O口8155构建84的矩阵式键盘。请采用程序扫描法编制键盘扫描程序。,KEY:ACALLKS;调用KS子程序JNZK1;A非0则转移ACALLTIM;延时6msAJMPKEY;为0转移到KEYK1:ACALLTIM;有键闭合,二次延时ACALLTIM;共12ms,消除抖动ACALLKS;再次检查是否有按键闭合JNZK2;有按键闭合转移到K2ACALLTIM;延时6msAJMPKEY;无键闭合,转移到KEYK2:MOVR2,#0FEH;初次扫描输出值送R2MOVR4,#00H;扫描行号送R4K3:MOVDPTR,#0100H;设置A口地址MOVA,R2MOVXDPTR,A;扫描初值送A口INCDPTRINCDPTR;指向C口MOVXDPTR,A;读C口的值JBACC.0,L1;测试位0,第1列无键闭合转移到L1MOVA,#0;装第1列列值AJMPLK,L1:JBACC.1,L2;测试位1,第2列无键闭合转移到L2MOVA,#08H;装第2列列值AJMPLKL2:JBACC.2,L3;测试位2,第3列无键闭合转移到L3MOVA,#10H;装第3列列值AJMPLKL3:JBACC.3,NEXT;测试位3,第4列无键闭合转移到NEXTMOVA,#18H;装第4列列值LK:ADDA,R4;形成键码送APUSHA;保护键值K4:ACALLTIM;延时6msACALLKS;检查按键是否继续闭合JNZK4;若按键释放,键值送APOPACCRETNEXT:INCR4;扫描行号加1MOVA,R2JNBACC.7,KEY;位7为0,返回到KEYRLA;循环左移1位MOVR2,AAJMPK3;扫描下一行KS:MOVDPTR,#0100H;设置A口地址MOVA,#00HMOVXDPTR,A;输出扫描信号00HINCDPTRINCDPTR;指向C口MOVXA,DPTR;读取C口数据CPLA;A取反,无按键按下则全为0ANLA,#0FH;屏蔽A高半字节RET;返回,6.5显示器接口,6.5.1LED显示器与接口1LED显示器(1)数码管的结构如图6-37(a)所示,数码管的引脚和笔段排列。数码管中的8个发光二极管,每个发光二极管对应一个笔段,其中ag段用于显示数字、字符的笔画,dp显示小数点,控制发光二极管的亮灭,就可以使数码管显示不同的内容。,(2)数码管的驱动电路发光二极管的工作电流一般在520mA之间,而单片机输出端所能提供的驱动电流不能满足发光二极管的工作电流时,这就需要在单片机与数码管之间增加驱动电路。驱动电路可以来用分立元件或驱动芯片,如图6-38所示。,(3)数码管的字形编码对于共阳极数码管,如果要显示字符2,则笔段a、b、g、e、d发光,对应引脚为低电平;其余各笔段不发光,对应引脚为高电平。所以字符2的字形编码为如dpgfedcba10100100BA4H。对于共阴极数码管的字形编码与共阳极数码管的字形编码是逻辑“非”的关系。,2静态LED显示接口所谓静态显示就是当数码管显示某一个字符时,相应的发光二极管一直处于发光或熄灭状态。图6-39是4位静态LED显示电路,由于每一个数码管都与一个8位并行口相连,故在同一时间内每个数码管显示的字符可以各不相同。,优点:静态显示具有显示程序简单,亮度高,CPU工作效率高等优点。由于静态显示在不改变显示内容时不用CPU去干预,所以节约了CPU的时间。缺点:显示位数较多时占用I/O口线较多,硬件较复杂,成本高。静态显示一般应用于显示位数较少的系统中。,例6-13利用8031单片机和8255A芯片,设计一个3值LED静态显示电路。解:(1)静态显示接口电路设计。3位LED显示器需要三个并行I/O口。用8031单片机和8255A芯片扩展三个8位I/O口连接三个数码管即可满足要求。LED数码管采用共阳极结构,每一段都接有限流电阻。设计电路如图6-40所示。,(2)程序设计,3动态LED显示接口动态显示采用扫描方式轮流点亮LED数码管的各个位。通常,将多个数码管的段选线并联在一起,用一个8位I/O口控制;各个数码管的位选线(数码管的公共端)由另外的I/O口控制。这样可以通过控制公共端是否有效,逐个循环点亮各位显示器。由于人眼具有视觉暂留效应,虽然在任一时刻只有一位数码管被点亮,但因为每个数码管点亮的时间间隔(15ms)很短,看起来数码管都在“同时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论