MCS-51单片机的外部基本扩展与应用.ppt

上传人:牧羊曲112 文档编号:6512344 上传时间:2023-11-08 格式:PPT 页数:190 大小:2.33MB
返回 下载 相关 举报
MCS-51单片机的外部基本扩展与应用.ppt_第1页
第1页 / 共190页
MCS-51单片机的外部基本扩展与应用.ppt_第2页
第2页 / 共190页
MCS-51单片机的外部基本扩展与应用.ppt_第3页
第3页 / 共190页
MCS-51单片机的外部基本扩展与应用.ppt_第4页
第4页 / 共190页
MCS-51单片机的外部基本扩展与应用.ppt_第5页
第5页 / 共190页
点击查看更多>>
资源描述

《MCS-51单片机的外部基本扩展与应用.ppt》由会员分享,可在线阅读,更多相关《MCS-51单片机的外部基本扩展与应用.ppt(190页珍藏版)》请在三一办公上搜索。

1、第六章 MCS51系列单片机的基本扩展技术,MCS51系统单片机(8031、8032除外)尽管是一功能完全的单片机,但因其内部资源(RAM、ROM、I/O、A/D、D/A等)不足,在实际应用中不加以扩展直接用其基本系统的情况较少,一般情况下需扩展。,下面介绍单片机中所使的半导体存储器在功能上的分类。1.只读存储器2.随机存储器3.可现场改写的非易失存储器,1.只读存储器(Read Only Memory),使用时只能读出而不能写入,断电后ROM中的信息不会丢失。因此一般用来存放一些固定程序,如监控程序、子程序、字库等。按存储信息的方法又可分为四种。腌膜ROM(固定ROM)厂家编好程序写入ROM

2、供用使用,用户不能更改。价格最便宜。可编程的只读存储器PROM由用户根据自己所编程序一次性写入、一旦写入、只能读出,而不能再进行更改。,可改写的只读存储器EPROM 它的内容可以通过紫外线照射而彻底擦除,擦除后又可重新写入新的程序。使用得当,一般情况下一个EPROM芯片可改写几十次。擦除时间一般为几分钟到二十几分钟(不同厂家略有不同)。,注意:不同型号的芯片编程电压不同。,可电改写只读存储器E2PROM(Electrically Erasable Programmable Read Only Memory)E2PROM可通过加电写入或清除其内容,编程电压和清除电压均为+5V,使用也极为方便。数

3、据不会因掉电而丢失。E2PROM 保存的数据至少可达10年以上,每块芯片可擦写1000次以上。,2.随机存储器,RAM常用于存放经常要改变的程序或中间计算结果。断电后RAM中的信息全部丢失。RAM按照存储信息的方式,又可分为静态和动态两种。静态SRAM(Static RAM)特点为只要有电源加于存储器,数据就能长期保留。动态DRAM(Dynamic RAM)写入的信息只能保持若干毫秒,因此每隔一定时间必须重写一次,以保持原有信息不变。,3、可现场改写的非易失存储器,这些存储器的共同点:从原理上看他们属于ROM型存储器,但是从功能上看,它们又可以随时改写信息,因而作用相当于RAM.所以,ROM、

4、RAM的定义和划分已逐渐失去意义。快擦写存储器FLASH 在EPROM和E2PROM的制造基础上产生一种非易失存储器。其集成度高,制造成本低于DRAM,既具有SRAM读写的灵活性和较快的访问速度,又具有ROM在断电后不丢失信息的特点。,6.0 MCS-51单片机的最小系统,所谓最小系统,是指一个真正可用的单片机最小配置系统。对于单片机内部资源已能满足系统需要的,可直接采用最小系统。MCS-51单片机根据片内有无程序存储器最小系统分两种情况。,6.0.1 8051/8751的最小系统,8051/8751片内有4K的ROM/EPROM,因此,只需要外接晶体振荡器和复位电路就可构成最小系统。如图所示

5、。,该最小系统的特点如下:(1)由于片外没有扩展存储器和外设,P0、P1、P2、P3都可以作为用户I/O口使用。(2)片内数据存储器有128字节,地址空间00H7FH,没有片外数据存储器。(3)内部有4KB程序存储器,地址空间0000H0FFFH,没有片外程序存储器,EA应接高电平。(4)可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源。,6.0.2 8031最小应用系统,8031片内无程序存储器片,因此,在构成最小应用系统不仅要外接晶体振荡器和复位电路,还应外扩展程序存储器。,该最小系统特点如下:(1)由于P0、P2在扩展程序存储器时作为地址线和数据线,不能作为I/O

6、线,因此,只有P1、P3作为用户I/O口使用。(2)片内数据存储器同样有128字节,地址空间00H7FH,没有片外数据存储器。(3)内部有无程序存储器,但片外扩展了程序存储器,其地址空间随芯片容量不同而不一样。图6.2中使用的是2764芯片,容量为8K字节,地址空间为0000H1FFFH。由于片内没有程序存储器,只能使用片外程序存储器,EA只能接低电平。(4)同样可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源。,6.1 存储器扩展,6.1.1 存储器扩展概述,一、MCS-51单片机的存储器扩展能力,MCS-51单片机地址总线宽度为16位,片外可扩展的存储器最大容量为6

7、4KB,地址为0000HFFFFH。因为程序存储器和数据存储器是通过不同的控制信号和指令进行访问,允许两者的地址空间重叠,所以片外可扩展的程序存储器与数据存储器分别都为64KB。,二、存储器扩展的一般方法,不论何种存储器芯片,其引脚都呈三总线结构,与单片机连接都是三总线对接。另外,电源线接电源线,地线接地线。,1.控制线:对于程序存储器,一般来说,具有输出允许控制线 OE,它与单片机的PSEN信号线相连。对于数据存储器,一般都有输出允许控制线OE和写控制线 WE,它们分别与单片机的读信号线RD和写信号线WR相连。,2、数据线:存储器芯片的数据线的数目由芯片的字长决定。连接时,存储器芯片的数据线

8、与单片机的数据总线(P0.0P0.7)按由低位到高位的顺序顺次相接。,3、地址线:存储器芯片的地址线的数目由芯片的容量决定。容量(Q)与地址线数目(N)满足关系式:Q=2N。存储器芯片的地址线与单片机的地址总线(A0A15)按由低位到高位的顺序顺次相接。一般来说,存储器芯片的地址线数目总是少于单片机地址总线的数目,因此连接后,单片机的高位地址线总有剩余。剩余地址线一般作为译码线,译码输出与存储器芯片的片选信号线CS相接。片选信号线与单片机系统的译码输出相接后,就决定了存储器芯片的地址范围。,三扩展存储器所需芯片数目的确定,若所选存储器芯片字长与单片机字长一致,则只需扩展容量。所需芯片数目按下式

9、确定:,若所选存储器芯片字长与单片机字长不一致,则不仅需扩展容量,还需字扩展。所需芯片数目按下式确定:,6.1.2 MCS51并行扩展总线,一、MCS51并行扩展总线方法,MCS51可以扩展至64KB的程序存贮器和64KB的数据存贮器或输入/输出口。,P0、P2口可以直接作为输入输出使用,其更重要的用途是用来扩展总线口使用。P0口作为地址(地址低8位)/数据(D0D7)总线口。P2口作为地址总线口(地址高8位)。,MCS51访问外部存贮器时序波形可以看出,输出的地址当ALE上升以后有效,当ALE下降以后消失,因此可以用ALE的负跳变将地址打入地址锁存器,即当ALE由高变低时,将出现在P0口的地

10、址信号低8位锁存到外部地址锁存器中(如图61所示),直到下一次ALE变高时,地址才发生变化。,二、地址译码方法,(二)部分地址译码法,部分地址译码法是指单片机片选线中只有一部分参加了译码,其余部分是悬空的,在实际应用中这种使用方式不太多。当使用部分地址译码法时,无论CPU使悬空片选地址线上电平如何变化,都不会影响它对存贮单元的选址,故存贮器每个存贮单元的地址不是唯一的,必然会有一个以上的CPU地址和它对应(既地址有重叠)。采用部分地址译码法时必须把程序和数据放在基本地址范围内(即悬空片选地址线全为低电平时存贮芯片的地址范围),以避免因地址重叠引起程序运行的错误。,(三)片选法,6.1 MCS5

11、1存贮器的扩展,对于用内部无ROM的芯片8031,8032来建立系统,则必须外部扩展程序存贮器。对于仅靠内部ROM,其ROM容量不能满足要求的情况,则可外部扩展程序存贮器。程序存贮器的作用:用于存贮程序代码或程序常数。,一、程序存贮器的扩展,EPROM和E2PROM都可作单片机的外部程序存贮器,由于EPROM价格低廉,性能可靠,故应用最广泛,目前因E2PROM的价格在不断下降,读、写速度在不断增快,加上可用电擦除及掉电后信息不会丢失,编程也方便等特点,故应用也越来越多。,(一)常用的EPROM芯片介绍,EPROM是紫外线可擦除电可编程的半导体只读存贮器,掉电后信息不会丢失。EPROM中的程序一

12、般由专门的编程器写入,由专门的擦除器擦除(擦除后EPROM阵列全为1状态),擦除时紫外线强度为12000mw/cm2,波长为l=2537,时间为1020min。常用的EPROM有:2716,2732,2764,.。,1、EPROM电路,2、E2PROM电路,E2PROM是电可擦除电可编程的半导体存贮器,掉电后信息不会丢失。编程时简单,不需要专门的编程器和擦除器。故E2PROM实际上是一种特殊的可读写存贮器。E2PROM兼有程序存贮器和数据存贮器的特点,故在单片机应用系统中既可作为程序存贮器,又可作为数据存贮器。常用的并行E2PROM有:2817,2864。,E2PROM有读、写、维持三种操作方

13、式。2817的写操作:当2817收到CPU发来的地址、数据和写控制信号后,便启动内部电路对该地址单元进行写操作,此时RDY/BUSY输出低电平,大约16ms以后,写操作完成,完成后RDY/BUSY呈高电平(外接上拉电阻)或高阻。2817,的RDY/BUSY状态线可供CPU采用中断或查询方式来控制对2817的字节写操作。2864的写操作:Inter公司的2864采用页面写操作方式。Inter公司的2864A内设有16B的页缓冲器,其整个存贮空间分为512页(每页16B),页面操作分“页加载”和“页存贮”两步进行。,“页加载”指在软件控制下,将一页(116B)的数据写入2864内的“页缓冲器”。“

14、页存贮”是2864A在其内部电路控制下把页缓冲器的内容存入E2PROM单元。,1、程序存贮器扩展的基本原理,(二)MCS51程序存贮器的扩展方法,“某一值”由内部程序存贮器的容量决定。,MCS51访问外部程序存贮器时序波形如下:,MCS51访问外部程序存贮器时序波形,2、程序存贮器扩展的一般方法,常用的地址锁存器有:74LS373(三态缓冲输出的八D锁存器);8282(三态缓冲输出的八D锁存器);74LS273(带清除端的八D锁存器)。最常用的是74LS373,当然地址锁存器芯片不同,则与单片机的连接方式不同。,E低电平有效(一般接地)。G(STB)为锁存信号输入端,高电平时Q0Q7=D0D7

15、,G(STB)电平负跳变(为0)时,Q0Q7状态保持不变。,G(STB)实际连接时接单片机的ALE。,74LS373和8282都是透明的三态门八D锁存器,其工作原理为:,3.程序存储器扩展举例现分3种情况说明程序存储器的扩展方法。(1)不用片外译码的单片程序存储器的扩展。例1:试用EPROM2764构成8031的最小系统。解:由于8031无片内程序存储器,因此必须外接程序存储器以构成最小系统。其连接方法是将2764按3总线的要求连接,其连接的关键在于地址译码。由于一般所采用的芯片其字节数均超过256个单元,也就是说片内地址线超过8条,故地址译码的核心问题是高8位地址线的连接。,图612 276

16、4与8031的连接图,(2)采用线选法的多片程序存储器的扩展。例2:在图613所示的连接图中,使用了两片2764,一共构成了8 K2=16 K的有效地址。现采用线选法编址,以P2.7(A15)直接作为片选信号,当P2.7=0 时,选中左边1片2764,其地址范围为0000H1FFFH;当P2.7=1 时,选中右边1片 2764,其地址范围为8000H9FFFH。这是部分译码,有2根地址线未接,1个单元要占用22=4个地址号。以上只是4组地址中的1组。若需地址连续的话,可取如下1组地址:6000H 7FFFH 和8000H9FFFH。,图613 两片程序存储器扩展连接图,(3)采用地址译码器的多

17、片程序存储器的扩展。例3:要求用2764芯片扩展 8031 的片外程序存储器空间,分配的地址范围为 0000H3FFFH。解:本例采用完全译码的方法,即所有地址线全部连接,每个单元只占用唯一的1个地址。确定片数:,字片数为 字片数=,(末地址-首地址)+1,芯片字数,=,(3FFFH-0000H)+1,2000H,=,4000H,2000H,=2(片),分配地址范围:第1组(1片)所占用的地址范围为:0000000000000000 0000H 第2组(1片)所占用的地址范围为:,位片数为,位片数=,单元位数,芯片位数,=,总片数=字片数位片数=21=2(片),画出地址译码关系图:第1组,P2

18、.7P2.6P2.5P2.4 P2.0 P0.7 P0.0(A15)(A14)(A13)(A12)(A8)(A7)(A0),第2组,上面打部分为片内译码,对于2764来说有13位,其地址变化范围为从全0变到全1,其余部分为片外译码。设计外译码电路:本例只介绍采用译码器芯片的设计方法,现采用3-8译码器74LS138。片外译码只有3根线(P2.7,P2.6,P2.5),分别接至译码器的C、B、A输入端。控制端G1,不参与译码,接成常有效。如图614所示。,图614 74LS138译码器连接图,画出存储器扩展连接图:该连接图如图615所示。图中3-8译码器74LS138只用了两个译码输出端,如果需

19、要的话,还可利用其余6个译码输出端。,图615 采用地址译码器扩展程序存储器的连接图,二、数据存贮器的扩展,MCS51系列单片机内已具有128或256B的RAM,它们可以作为工作寄存器、堆栈、软件标志和数据缓冲器使用,对于一般性的应用场合已基本满足要求,但对于需要大容量数据缓冲器的应用系统(如数据采集系统),就须外部扩展RAM。,(一)、常用的数据存贮器,最常用的数据存贮器为半导体静态随机存取存贮器,如6116,6264,62256。E2PROM也可作外部RAM(但速度慢),但因它掉电后信息不丢失,对某些要求不间断工作、对于一些关键性的实时数据不允许丢失的场合较合适,但其读/写速度稍慢(尤其是

20、写的速度慢)故用其作扩展时,在硬件设计和软件设计都应着重考虑这一因素。,静态随机存取存贮器RAM,具有速度快、使用方便和价格低廉等优点,但也具有掉电丢失数据的缺点。,(二)、数据存贮器扩展方法,1、MCS51 对外部数据存贮器的操作指令,2、MCS51 读外部数据存贮器时序波形,3、MCS51 写外部数据存贮器时序波形,4、MCS51 和外部数据存贮器的接口方法,三、存贮器扩展举例,下图中,扩展一片27256(32K)EPROM一片62256(32K)RAM,例2.数据存储器扩展举例 数据存储器的扩展与程序存储器的扩展相类似,不同之处主要在于控制信号的接法不一样,不用 信号,而用 和 信号,且

21、直接与数据存储器的 端和 端相连即可。图417为外扩1片6264的连接图。采用线选法,将片选信号 与P2.7相连,片选信号CE2与P2.6相连。其地址译码关系为:,A15A14A13A12A11A10 A0,所占用的地址为:第1组 4000H5FFFH(A13=0)第2组 6000H7FFFH(A13=1),例3、全地址范围的存储器最大扩展系统 现以8031为例,说明全地址范围的存储器最大扩展系统的构成方法,如图618所示。8031的片外程序存储器和数据存储器的地址各为64 K。若采用EPROM2764和RAM6264芯片,则各需8片才能构成全部有效地址。芯片的选择采用38译码器74LS138

22、,片外地址线只有3根(A15、A14、A13),分别接至74LS138的C、B、A端,其8路译码输出分别接至8个2764和8个6264的片选端。,图618 单片机外存储器最大扩展电路,6.2 MCS51输入输出并行口的扩展,MCS51具有4个I/O口P0,P1,P2,P3,但P0,P2口往往作为扩展总线使用,P3往往用其第二功能,故实际常用来作I/O口使用的就仅剩下P1口,如外接较多的I/O设备(打印机,键盘,显示器等),显然得扩展I/O接口。I/O接口扩展一般是扩展并行接口,常用来扩展的器件(1)可编程并行接口8255(2)三态门电路,锁存器 eg:74LS377(373,273)扩展输出,

23、74LS244(245)扩展输入(3)可编程RAM/IO扩展器8155(4)利用串行口的移位寄存器工作方式(方式0)也可以扩展I/O口,这时所扩展的I/O口不占用片外的RAM地址。,一、采用8255A扩展并行I/O接口,(一)8255A的结构,8255A是Intel公司的一种通用的可编程的并行接口电路,它具有三个8位并行口PA,PB,PC。,(二)8255A操作方式,8255A有三种工作方式:方式0,方式1,方式2,1、方式0,选通输入/输出方式A口,B口可由编程设定为输入口或输出口,C口的大部分位用来作为输入/输出的控制和同步信号。A口和B口的输入数据或输出数据都被锁存。,2、方式1,825

24、5A方式1的输入、输出逻辑组态及输入时序波形如下:,8255A方式1输入时序波形,8255A方式1的输入逻辑组态(a),8255A方式1的输出逻辑组态(a),8255A方式1输出时序波形,3、方式2,双方选通输入/输出方式A口为双向三态数据总线口,既可发送数据又可接收数据,在这种方式下,C口的P37用来作为输入/输出的控制同步信号。只有 A口允许作为双向三态数据总线口使用,这时B口和PC02则可编程为方式0和方式1工作。,(四)MCS-51和8255A的接口方法,8255 PA接一组开关,PB口接一组指示灯。以下程序是将R2的内容送指示灯显示,开关状态读入A中。,R8255:MOV DPTR,

25、#7FFFH MOV A,#98H;10011000B MOVX DPTR,A MOV DPTR,#7FFDH MOV A,R2 MOVX DPTR,A MOV DPTR,#7FFCH MOVX A,DPTR RET,把内部RAM中30H开始的32个单元的字符输出至打印机。,MAIN:MOV8,#30H MOV0FH,#20H SETBEA SETBEX1 MOVDPTR,#7FFFH MOVA,#05 MOVXDPTR,A;8255A PC2=1 MOVA,#0BCH;10111100 MOVDPTR,A;PB方式1输出 MOVDPTR,#7FFDH MOVA,30H MOVXDPTR,A

26、INC8 DEC0FH,ORG0013H LJMPPINT1PINT1:PUSHACC PUSHPSW MOVPSW,#8 MOVA,R0 MOVDPTR,#7FFDH MOVXDPTR,A INCR0 DJNZR7,BACK CLREX1 SETB0BACK:POPPSW POPACC RETI,二、采用8155A扩展并行I/O接口,如果写入的定时器/计数器时间常数为奇数,则输出方波不对称。如时间常数为9,则低电平为(9-1)/2=4、高电平为(9+1)/2=5个TI脉冲周期。,例:8155的定时器/计数器作为方波发生器,TO输出的方波频率是TI输入时钟的二十四分频,PB口为输出口,PA和P

27、C口为输入口,则程序如下:,三、采用锁存器扩展并行I/O接口,MOV DPTR,#7FFFH;指向74LS377地址MOV A,#data;需输出的数据送累加器MOVX DPTR,A;P0口通过74LS377送出数据RET,以下程序是把累加器的内容从74LS377输出,读74LS245的数据到累加器A中。,MOVDPTR,#0BFFFHMOVX DPTR,AMOVX A,DPTRRET,四、采用串行口扩展并行I/O接口,例67:图635中从两个8位并行口读入32字节的数据,并把数据转存到内部RAM以30H为首地址的单元中。需读入32个字节的数据,则显然需从第一片74LS165读入16个字节的数

28、据,从第二片74LS165读入16个字节的数据,P1.0控制置入一次,则串行口应接收到一组数据。程序如下:,MOVR7,#20H;需读入的总字节数 MOVR0,#30H;转存数据首地址 SETBF0;设读入字节奇偶数标志,;第一个8位数为偶数RCV0:CLRP1.0;74LS165置入数据 SETBP1.0;允许74LS165移位RCV1:MOVSCON,#10H;串行口设为方式0,允许接;收并启动接收过程STP:JNBRI,STP;等待接收完8位数据 CLRRI;准备下一次接收 MOVA,SBUF;从读串行口缓冲器数据 MOVR0,A;数据送内部指定RAM INCR0;指向保存数据的下一地址

29、,CPL F0;设置取奇数标志 JB F0,RCV2;读完第偶数个数,继续读第奇数;个数,读完一组数据则转RCV2,;则继续读下一组数据 DEC R7;准备该组数据中的第二个数据,;总字节数减1 SJMP RCV1;转至读一组数据中的第二个数据RCV2:DJNZ R7,RCV0;16组数据未读完,跳转至置入数;据位置;全部数据读完,进行相应的处理,2、采用串入并出8位移位寄存器74LS164扩展并行输出口,输出时,将发送数据缓冲器中的内容串行地移到外部的移位寄存器中。RxD(P3.0)为串行输出与74LS164数据输入端相连;TxD(P3.1)为移位脉冲输出,与74LS164的时钟脉冲输入端相

30、连;由P1.0口线控制74LS164的清除端。,例67:图636中将内部RAM 30H、31H单元的内容输出到移位寄存器。TO164:MOV R0,#30H;需输出数据的首地址 CLR TI;清发送中断标志 MOV A,R0;取出需输出的第一个数据 MOV SBUF,A;发送第一个数据SWAIT:JNB TI,SWAIT;未发送完等待 CLR TI INC R0;指向需输出的下一数据地址 MOV A,R0;取出需输出的第二个数据 MOV SBUF,A;发送第二个数据 RET,6.3 MCS-51单片机的键盘扩展,主要内容:6.3、6.4节主要从工程应用角度介绍了MCS-51单片机的交互通道配置

31、与接口,主要包括人机界面中的键盘、显示器。介绍了多种实用方案和设计技巧。重点在于系统概念的形成、各种接口设计方案和设计技巧的掌握,熟悉各种交互设备。难点在于使用动态方法进行键盘和显示的硬件及软件设计。,人机界面:是指人与计算机系统进行信息交互的接口,包括信息的输入和输出。6.3 MCS-51单片机与键盘的接口技术 键盘:单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段。,按键开关去抖动问题*,键盘的抖动时间一般为510ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。,6.3.1 概述,硬件去抖动,消除抖动不良后果的方法:,其中RC滤波电路去抖动电

32、路简单实用,效果较好。,软件去抖动 检测到按键按下后,执行延时10ms子程序后再确认该键是否确实按下,消除抖动影响。,(1)编码键盘:采用专用的编码/译码器件,被按下的键由该器件译码输出相应的键码/键值。其特点是增加了硬件开销,编码固定,但编程简单。适用于规模大的键盘。,(2)非编码键盘:采用软件编/译码的方式,通过扫描,对每个被按下的键判别输出相应的键码/键值。其特点是不增加硬件开销,编码灵活,但编程较复杂,占CPU时间。适用于小规模的键盘,特别是单片机系统键盘。,键盘的分类:按编码方式可分为编码键盘与非编码键盘。按键组连接方式可分为独立连接式键盘与矩阵连接式键盘。,1.按编码方式分类,2、

33、按键连接方式分类 独立式按键独立式按键是每个按键占用一根I/O端线。特点:各按键相互独立,电路配置灵活;按键数量较多时,I/O端线耗费较多,电路结构繁杂;软件结构简单。适用于按键数量较少的场合。,矩阵式键盘 I/O端线分为行线和列线,按键跨接在行线和列线上,按键按下时,行线与列线发生短路。特点:占用I/O端线较少;软件结构教复杂。适用于按键较多的场合。,3、键盘扫描控制方式 程序控制扫描方式键处理程序固定在主程序的某个程序段。特点:对CPU工作影响小,但应考虑键盘处理程序的运行间隔周期不能太长,否则会影响对键输入响应的及时性。,定时控制扫描方式 利用定时/计数器每隔一段时间产生定时中断,CPU

34、响应中断后对键盘进行扫描。特点:与程序控制扫描方式的区别是,在扫描间隔时间内,前者用CPU工作程序填充,后者用定时/计数器定时控制。定时控制扫描方式也应考虑定时时间不能太长,否则会影响对键输入响应的及时性。,中断控制方式中断控制方式是利用外部中断源,响应键输入信号。特点:克服了前两种控制方式可能产生的空扫描和不能及时响应键输入的缺点,既能及时处理键输入,又能提高CPU运行效率,但要占用一个宝贵的中断资源。,独立连接式键盘连接图如右图所示。当没有键被按下时,所有的数据输入线都为高电平;当有任意一个键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有键按下。,键盘输入的主要对

35、象:各种按键或开关。一、1独立连接式键盘 每键相互独立,各自与一条I/O线相连,CPU可直接读取该I/O线的高/低电平状态。其优点是硬件、软件结构简单,判键速度快,使用方便;缺点是占I/O口线多。适用场合:多用于设置控制键、功能键。适用于键数少的场合。,2.独立式按键及其接口,芯片内有上拉电阻 芯片内无上拉电阻,原理-当任何一个键被按下时,与其相连的输入线被置成“0”,平时该线为“1”。,(a)查询方式,SMKEY:ORL P1,#0FFH;置P1口为输入方式 MOV A,P1;读P1口信息 JNB ACC.0,P0F;0号键按下,转0号键处理 JNB ACC.1,P1F;1号键按下,转1号键

36、处理 JNB ACC.7,P7F;7号键按下,转7号键处理 LJMP SMKEY P0F:LJMP PROG0 P1F:LJMP PROG1 P7F:LJMP PROG7PROG0:LJMP SMKEYPROG1:LJMP SMKEY PROG7:LJMP SMKEY,在无键按下的情况下,P1.0P1.7线上输入均为高电平。当有键按下时,与被按键相连的I/O线将得到低电平输入,其他位按键的输入线上仍维持高电平输入。,P1口8条I/O线经与非门74LS30实现逻辑与非后,再经过1个非门74LS04进行信号变换,然后接至MCS-51的 引脚上,可通过中断的方式处理键盘。在中断服务程序中,先延时20

37、 ms消除键抖动,再对各键进行查询,找到所按键,并转到相应的处理程序中去。,例题 在MCS-51中,含8个按键的独立式键盘的线路连接如下页图所示,8个按键经上拉电阻拉高后分别接到MCS-51单片机P1口的8条I/O线上(P1.0P1.7)。,(b)中断方式,*键输入程序的设计方法(1)判断键盘上是否有键闭合;(2)消除键的机械抖动;(3)确定闭合键的物理位置;(4)得到闭合键的编号;(5)确保CPU对键的一次闭合只做一次处理,主程序如下:ORG 0000HLJMP MAINORG 0003H;外部中断0中断服务入口地址LJMP INT;转中断服务ORG 0100H MAIN:SETB EA;开

38、总中断允许SETB EX0;开INT0中断SETB IT0;下降沿有效中断服务程序清单如下:INTI CALL D20;延时去抖动MOV P1,#0FFH;P1口送全1值(准双向口原因)MOV A,P1;读P1口各引脚 CJNE A,#0FFH,CLOSE;验证是否确实有键闭合 AJMP INT0;无键按下(按键时间过短)则退;出中断,CLOSE:JNB ACC.7,KEY 7;查询7号键 JNB ACC.6,KEY 6;查询6号键 JNB ACC.5,KEY5;查询5号键 JNB ACC.4,KEY4;查询4号键 JNB ACC.3,KEY 3;查询3号键 JNB ACC.2,KEY 2;查

39、询2号键 JNB ACC.1,KEY 1;查询1号键 JNB ACC.0,KEY 0;查询0号键 INT0:RETI KEY 7:;7号键处理程序 KEY 71:MOV A,P1;再读P1口各引脚 JNB ACC.7,FUNC71;确认键是否释放 RETI KEY 6:;其他键处理程序 D20:;20ms延时子程序 END,二.矩阵连接式键盘1.概述 键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。其特点是键多时占用I/O口线少,硬件资源利用合理,但判键速度慢。适用场合:多用于设置数字键,适用于键数

40、多的场合。,4行4列矩阵式键盘连接图如右图所示。这种键盘适合采取动态扫描的方式进行识别。扫描方式:低电平扫描(回送线必须被上拉为高电平)、高电平扫描(回送线需被下拉为低电平)。右图中给出了低电平扫描的电路。,X3,X2,X1,X0,Y3,Y2,Y1,Y0,输 入 口,输出口,行列式44键盘原理电路,当键盘没键闭合时,所有的行线和列线断开。行线D7D4呈高电平。当某键闭合时,则该键所对应的行线与列线短路。,键盘中有无按键按下是由列线送入全扫描字、行线读入行线状态来判断的。键盘中哪一个键按下可由列线逐列置低电平后,检查行输入状态来判断。逐行逐列地检查键盘状态的过程称为对键盘的一次扫描。,2.非编码

41、式矩阵键盘识别闭合键通常有两种方法:一种称为行扫描法,另一种称为线反转法。1)行扫描法所谓行扫描法,就是通过行线发出低电平信号,如果该行线所连接的键没有按下的话,则列线所连接的输出端口得到的是全“1”信号;如果有键按下的话,则得到的是非全“1”信号。,图623 非编码式键盘行扫描法的工作原理(a)无键按下;(b)有键按下;(c)扫描第0行;(d)扫描第1行;(e)扫描第2行;(f)扫描第3行,图623 非编码式键盘行扫描法的工作原理(a)无键按下;(b)有键按下;(c)扫描第0行;(d)扫描第1行;(e)扫描第2行;(f)扫描第3行,图623 非编码式键盘行扫描法的工作原理(a)无键按下;(b

42、)有键按下;(c)扫描第0行;(d)扫描第1行;(e)扫描第2行;(f)扫描第3行,具体过程如下:首先,为了提高效率,一般先快速检查整个键盘中是否有键按下;然后,再确定按下的是哪一个键。其次,再用逐行扫描的方法来确定闭合键的具体位置。方法是:先扫描第0行,即输出1110(第0行为“0”,其余3行为“1”),然后读入列信号,判断是否为全“1”。,2)线反转法线反转法也是识别闭合键的一种常用方法。该方法比行扫描法速度要快,但在硬件电路上要求行线与列线均需有上拉电阻,故比行扫描法稍复杂些。,3.键的保护键的保护问题指的是当有双键或多键同时按下时会出现什么问题以及如何加以解决。以图623所示为例,若在

43、同一行上有两个键同时按下,从硬件上来说,不会出现什么问题;从软件上来说,由于这时读入的列代码中出现了两个0,由此代码与行值组合成的键特征值就超出了原设定键的范围,因此也就查不出有效的键值来。一旦出现这样情况,一般作为废键处理。,4、键盘扫描程序现以图626所示接口电路为例,说明键盘扫描程序的编制方法。1).采用行扫描法采用行扫描法识别闭合键的程序流程图见图627。,图627 键分析程序流程图,本例介绍的是第1种方法,采用的计算公式为键值行号4列号(61)对于84的键盘来说,其具体键值由式(61)可计算出,见表67。,表67 84键盘键值计算法,计算出闭合键的键值后,再判断键释放否?若键未释放,

44、则等待;若键已释放,则再延时消抖,然后判断是命令键还是数字键。若是命令键,则转入命令键处理程序,完成命令键的功能;若是数字键,则转入数字键处理程序,进行数字的存储和显示等。,KEY:MOV P1,#0F0H;行线置低电平,列线置输入态KEY0:MOV A,P1;读列线数据 CPL A;数据取反,“1”有效 ANL A,#0F0H;屏蔽行线,保留列线数据 MOV R1,A;存列线数据(R1高4位)JZ GRET;全0,无键按下,返回,KEY1:MOV P1,#0FH;行线置输入态,列线置低电平 MOV A,P1;读行线数据 CPL A;数据取反,“1”有效 ANL A,#0FH;屏蔽列线,保留行

45、线数据 MOV R2,A;存行线数据(R2低4位)JZ GRET;全0,无键按下,返回 JBC F0,WAIT;已有消抖标志,转 SETB F0;无消抖标志,置消抖标志 LCALL DY10ms;调用10ms延时子程序消抖 SJMP KEY0;重读行线列线数据GRET:RET;,WAIT:MOV A,P1;等待按键释放 CPL A;ANL A,#0FH;JNZ WAIT;按键未释放,继续等待KEY2:MOV A,R1;取列线数据(高4位)MOV R1,#03H;取列线编号初值 MOV R3,#03H;置循环数 CLR C;KEY3:RLC A;依次左移入C中 JC KEY4;C=1,该列有键按

46、下,(列线编号存R1)DEC R1;C=0,无键按下,修正列编号 DJNZ R3,KEY3;判循环结束否?未结束继续寻找有键按下的列线,DEC R1;C=0,无键按下,修正列编号 DJNZ R3,KEY3;判循环结束否?未结束继续寻找有键按下的列线KEY4:MOV A,R2;取行线数据(低4位)MOV R2,#00H;置行线编号初值 MOV R3,#03H;置循环数 CLR C;KEY5:RRC A;依次右移入C中 JC KEY6;C=1,该行有键按下,(行线编号存R2)INC R2;C=0,无键按下,修正行线编号 DJNZ R3,KEY5;判循环结束否?未结束继续寻找有键按下的行线KEY6:

47、MOV A,R2;取行线编号 CLR C;RLC A;行编号2,RLC A;行编号4 ADD A,R1;行编号4+列编号=按键编号KEY7:CLR C;RLC A;按键编号2 RLC A;按键编号4(LCALL+RET共4字节)MOV DPTR,#TABJ;JMP A+DPTR;散转,执行相应键功能子程序TABJ:LCALL WORK0;调用执行0#键功能子程序 RET;LCALL WORK1;调用执行1#键功能子程序 RET;LCALL WORK15;调用执行15#键功能子程序 RET;,2.线反转法:,让行线编程为输入线,列线编程为输出线,并使输出线输出为全低电平,则行线中电平由高变低的所

48、在行为按键所在行。,让行线编程为输出线,列线编程为输出线,并使输出线输出为全低电平,则列线中电平由高变低的所在行为按键所在列。,线反转法程序如下:KEYZ:LCALL KS2;检查有闭合键否?JNZ MK1;A非0,有键闭合则转 LJMP MK7;无键闭合转返回MK1:LCALL DIR;有键闭合,则延时12ms LCALL DIR;消抖 LCALL KS2;再次检查有键闭合吗?JNZ MK2;若有键闭合则转 LJMP MK7;若无键闭合则转返回MK2:MOV P1,F0H;发行线全扫描信号,列线全“1”,MOV A,P1;读入列状态 ANL A,F0H;保留高4位 CJNE A,F0H,MK

49、3;有键按下则转 LJMP MK7;无闭合键转返回MK3:MOV R2,A;保存列值 ORL A,0FH;列线信号保留,行线全“1”MOV P1,A;从列线输出 MOV A,P1;读入P1口状态 ANL A,0FH;保留行线值 ADD A,R2;将行线值和列线值合并得到键特征值,MOV R2,A;暂存于R2中 MOV R3,00H;R3存键值(先送初始值0)MOV DPTR,TRBE;指向键值表首址 MOV R4,10H;查找次数送R4MK4:CLR A MOV C A,A+DPTR;表中值送入A MOV 70H,A;暂存于70H单元中 MOV A,R2;键特征值送入A CJNE A,70H,

50、MK6;未查到则转MK5:LCALL DIR;扫描1遍显示器 LCALL KS2;还有键闭合否?,JNZ MK5;若键未释放,则等待 LCALL DIR;若键已释放,则延时12ms LCALL DIR;消抖 MOV A,R3;将键值存入A中 RET;返主MK6:INC R3;键值加1 INC DPTR;表地址加1 DJNE R4,MK4;未查到,反复查找MK7:MOV A,FFH;无闭合键标志存入A中 RET;返主,KS2:MOV P1,F0H;闭合键判断子程序MOV A,P1;发全扫描信号,读入列线值ANL A,F0H;保留列线值CPL A;取反,无键按下为全0 RET;返主TRBE:DB

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号