收藏 分销(赏)

MCS51的并行接口.pptx

上传人:快乐****生活 文档编号:6539736 上传时间:2024-12-12 格式:PPTX 页数:182 大小:2.08MB 下载积分:20 金币
下载 相关 举报
MCS51的并行接口.pptx_第1页
第1页 / 共182页
MCS51的并行接口.pptx_第2页
第2页 / 共182页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,7.1 MCS-51,内部,I/O,口及其应用,MCS-51,单片机有,4,个并行,I/O,口,称为,P0,、,P1,、,P2,、,P3,,每个并行口都有,8,根引脚,共有,32,根,I/O,引脚,它们都是双向通道。每一条,I/O,引脚都能独立的用作输入或输出。做输出时数据可以锁存,做输入时数据可以缓冲。,例,7.1,用单片机点亮一只发光二极管,LED,程序清单:,CLR P1.0,;令,P1.0,管脚输出低电平,SETB P1.0,;令,P1.0,管脚输出高电平,END,7.2 MCS-51,并行,I/O,口的扩展,为了使单片机能按要求工作,就必须将必要的命令和数据输入到单片机中;单片机运算或处理的结果也要通过一定的方式输出,这就需要配置一定的输入设备和输出设备。在单片机内部虽然设置了若干并行,I/O,接口电路,用来与外围设备连接,但当外围设备较多时,仅有的几个内部,I/O,接口就不够用,在大多数应用系统中,,MCS-51,单片机都需要扩展输入输出接口芯片以满足实际需要。,器件型号,器件名称,8255A,可编程外围并行接口,8155/8156,可编程,RAM/IO,扩展接口,8243,I/O,扩展接口,8279,可编程键盘,/,显示接口,8251,可编程通讯接口,8253,可编程定时,/,计数器,一、,8255A,可编程并行,I/O,扩展接口,1,、,8255A,芯片介绍,8255A,是,Intel,公司生产的可编程输入输出接口芯片,它具有,3,个,8,位的并行,I/O,口,具有三种工作方式,可通过程序改变其功能,因而使用灵活方便,通用性强,可作为单片机与多种外围设备连接时的中间接口电路。,2,、引脚说明,D7-D0,:三态双向数据线,与单片机数据总线连接,用来传送数据信息,CS,:片选信号线,低电平有效,表示芯片被选中,RD,:读出信号线,低电平有效,控制数据的读出,WR,:写入信号线,低电平有效,控制数据的写入,Vcc,:,+5V,电源,PA7-PA0,:,A,口输入,/,输出线,PB7-PB0,:,B,口输入,/,输出线,PC7-PC0,:,C,口输入,/,输出线,RESET,:复位信号线,A1-A0,:地址线,用来选择,8255,内部端口,GND,:地线,3,、内部结构,8255,内部结构包括三个并行输入,/,输出端口,二个工作方式控制电路,一个读,/,写控制逻辑电路和,8,位总线缓冲器。,4,、工作方式,(,1,),8255,的接口工作状态,A1 A0,RD WR CS,工作状态,0 0,0 1,1 0,0 1 0,0 1 0,0 1 0,A,口数据数据总线,B,口数据数据总线,C,口数据数据总线,0 0,0 1,1 0,1 1,1 0 0,1 0 0,1 0 0,1 0 0,总线数据,A,口,总线数据,B,口,总线数据,C,口,总线数据控制字寄存器,1 1,1,0 1 0,1 1 0,数据总线三态,非法状态,数据总线三态,(,2,)工作方式,8255,有三种基本的工作方式:方式,0,(基本输入输出)、方式,1,(选通输入输出)和方式,2,(双向传送),其中,A,口可工作于方式,0,、,1,和,2,,而,B,口只能工作于方式,0,和,1,。,各,I/O,口的工作方式由方式选择控制字来决定。,工作方式控制字:,A1 A0=1 1,A,、方式,0,工作方式,0,是一种基本的输入输出工作方式。在这种方式下,三个端口都可以由程序设置为输入或者输出,没有固定的用于应答的联络信号。其基本功能可概括为:,(,a,)可具有两个,8,位端口(,A,、,B,)和两个,4,位端口(,C,口的上半部分和下半部分),(,b,)任何一个端口都可以设置为输入或输出。各端口的输入、输出可构成,16,种组合,(,c,)数据输出时可以锁存,输入时不锁存,B,、工作方式,1,工作方式,1,是一种选通式输入输出工作方式。在这种工作方式下,选通信号与输入,/,输出数据一起传送,由选通信号对数据进行选通。其基本功能可概括为:,(,a,)三个端口分为两组,即,A,组和,B,组,(,b,)每一组包括一个,8,位数据端口和一个,4,位的控制,/,状态端口,(,c,)每一个,8,位数据端口均可设置为输入或者输出,输入、输出均可锁存,(,d,),4,位端口作为,8,位数据端口的控制,/,状态信号端口,C,、工作方式,2,A,口除了工作方式,0,和工作方式,1,之外,还有工作方式,2,。按照工作方式,2,工作时,,A,口成为双向数据总线端口,既可以发送数据,又可以接收数据。其主要功能概括为:,(,a,)有一个,8,位双向数据输入,/,输出端口(,A,)和一个,5,位控制信号端口(,C,),(,b,)输入、输出均锁存,(,c,),5,位控制信号端口(,C,)作为,8,位双向数据输入,/,输出端口,A,的控制,/,状态信号端口,(,d,)工作方式,2,只适合于,A,口,5,、,C,口联络信号定义,(,1,)用于输入操作的联络信号,A,、,STB,:选通脉冲,输入,低电平有效,当外设送来,STB,信号时,输入数据装入,8255,的锁存器,C,口位线,方式,1,方式,2,输入,输出,输入,输出,PC7,OBF,A,OBF,A,PC6,ACK,A,ACK,A,PC5,IBF,A,IBF,A,PC4,STB,A,STB,A,PC3,INTR,A,INTR,A,INTR,A,INTR,A,PC2,STB,B,ACK,B,PC1,IBF,B,OBF,B,PC0,INTR,B,INTR,B,B,、,IBF,:输入缓冲器满信号,输出,高电平有效,IBF,信号有效,表明数据已经装入锁存器,因此它是一个状态信号,C,、,INTR,:中断请求信号,输出,高电平有效,当,IBF,为高,,STB,信号由低变高(后沿)时,中断请求信号有效,向单片机发出中断请求,数据输入过程:,当外设准备好数据输入后,发出,STB=0,信号,输入的数据送入,8255,的缓冲器。然后,IBF,信号有效。如使用查询方式,则,IBF,即作为状态信号供查询使用;如使用中断方式,则当信号,STB,由低变高时,产生,INTR,信号,向单片机发出中断申请。单片机在响应中断后执行中断服务程序时接收,8255,的数据,并使,INTR,信号变低,同时也使,IBF,信号变低,以通知外设准备下一次数据输入。,(,2,)用于数据输出操作的联络信号,A,、,ACK,:外设响应信号,输入,低电平有效,当外设取走输出数据,并处理完毕后向单片机发回的响应信号,B,、,OBF,:输出缓冲器满信号,输出,低电平有效,当单片机把输出数据写入,8255,锁存器后,该信号有效,并送去启动外设以接收数据,C,、,INTR,:中断请求信号,输出,高电平有效,数据输出过程:,外设接收并处理完一组数据后,发回,ACK,信号。该信号使,OBF,变高,表明输出缓冲器已空。如使用查询方式,则,OBF,可作为状态信号供查询使用;如使用中断方式,则当,ACK,信号结束时,,INTR,有效,向单片机发出中断请求。在中断服务过程中,把下一个输出数据写入,8255,的输出缓冲器。写入后,OBF,有效,表明输出数据已到,并以此信号启动外设工作,取走并处理,8255,中的输出数据。,6,、,PC,口按位置位,/,复位控制字,在一些应用情况下,,PC,口用来定义控制信号和状态信号,因此,PC,口的每一位都可以进行置位或复位。对,PC,口各位的置位或复位是由按位置位,/,复位控制字进行的。,端口,C,的位状态设置命令:,A1 A0=11,7,、,MCS-51,单片机和,8255,的接口,8255PA,口方式,0,输出单片机片内,RAM,数据,,PB,口方式,1,输入,PIOS,:,MOVDPTR,,,#7F03H,;控制口地址,MOVA,,,#86,;写控制字,MOVX DPTR,,,A,;设工作方式,MOVDPTR,,,#7F00H,;,PA,数据口地址,MOVA,,,R0,;取,RAM,的数据,MOVX DPTR,,,A,;由,PA,口输出,例,7.2,二、,8155,可编程并行,I/O,扩展接口,Intel 8155,芯片内包含有,256,个字节的静态,RAM,,,2,个,8,位、,1,个,6,位的可编程并行,I/O,口和,1,个,14,位定时器,/,计数器。,8155,可直接与,80C51,单片机连接,不需要增加任何硬件逻辑。由于,8155,既有,RAM,又具有,I/O,口,因而是,80C51,单片机系统中最常用的外围接口芯片之一。,1,、引脚说明,(,1,),AD7-AD0,:地址数据总线,单片机和,8155,之间的地址、数据、命令、状态信息都是通过它传送,(,2,),CE,:片选信号线,低电平有效,(,3,),RD,:存储器读信号线,低电平有效,(,4,),WR,:存储器写信号线,低电平有效,(,5,),ALE,:地址及片选信号锁存信号线,高电平有效,其后沿将地址及片选信号锁存到器件中,(,6,),IO/M,:,I/O,接口与存储器选择信号线,高电平表示选择,I/O,接口,低电平选择存储器,(,7,),PA7-PA0,:,A,口输入,/,输出线,(,8,),PB7-PB0,:,B,口输入,/,输出线,(,9,),PC5-PC0,:,C,口输入,/,输出或控制信号线,(,10,),TIMERIN,:定时器,/,计数器输入端,(,11,),TIMEROUT,:定时器,/,计数器输出端,(,12,),RESET,:复位信号线,(,13,),Vcc,:,+5V,电源,Vss,:地,AD7-AD0,寄存器,A7 A6 A5 A4 A3 A2 A1 A0,0 0 0,命令,/,状态寄存器,0 0 1,A,口,0 1 0,B,口,0 1 1,C,口,1 0 0,定时器低,8,位,1 0 1,定时器高,6,位,2,、,8155,的,I/O,端口地址分配,8155,内部的命令寄存器和状态寄存器使用同一个端口地址。命令寄存器只能写入不能读出,状态寄存器只能读出不能写入。,3,、,8155,的工作方式,8155I/O,口的工作方式由单片机写入命令寄存器的控制字确定,控制字的格式为:,D7,D6,D5,D4,D3,D2,D1,D0,TM2,TM1,IEB,IEA,PC2,PC1,PB,PA,8155,内部设有一个状态寄存器,用来锁存输入,/,输出口和定时器,/,计数器的当前状态,以供,CPU,查询。状态标志寄存器的格式为:,D7,D6,D5,D4,D3,D2,D1,D0,TIMER,INTEB,BBF,INTRB,INTEA,ABF,INTRA,4,、定时器,/,计数器,在,8155,中还设置有一个,14,位的定时器,/,计数器,可用来定时或对外部事件计数,,CPU,可通过程序选择计数长度和计数方式。计数长度和计数方式由输入给计数寄存器的计数控制字来确定,T7,T6,T5,T4,T3,T2,T1,T0,M2,M1,T13,T12,T11,T10,T9,T8,M2 M1,方 式,0 0,单方波,0 1,连续方波,1 0,单脉冲,1 1,连续脉冲,5,、,MCS-51,单片机与,8155,的接口,一、,LED,显示器接口技术,发光二极管,LED,是单片机应用系统中简单而常用的输出设备,通常用来指示机器的状态或其他信息。它的优点是价格低、寿命长,对电压电流的要求低及容易实现多路等,因而获得了广泛的应用。,7.3,并行口应用,-,单片机显示,/,键盘系统,LED,是近似于恒压的元件,导电时(发光)的正向压降一般约为,1.6V,或,2.4V,,反向击穿电压一般大于,5V,,工作电流通常在,1020mA,,故电路中需串联适当的限流电阻。发光强度基本上与正向电流成正比。,发光二极管显示器驱动(点亮)的方法有如下两种:,(,1,)静态驱动法,静态驱动法即给欲点亮的,LED,通以恒定的电流。这种驱动方法需要有寄存器、译码器、驱动电路等逻辑部件。当需要显示的位数增加时,所需的逻辑部件及连线也相应增加,成本也增加。,(,2,)动态驱动方法,这种方法是给欲点亮的,LED,通以脉冲电流,此时,LED,的亮度是通断的平均亮度。为保证亮度,通过,LED,的脉冲电流应数倍于其额定电流。利用动态驱动法可以减少需要的逻辑部件和连线。单片机应用系统中常采用动态驱动方法。,1,、,8,段,LED,数码显示器,八段,LED,显示器由,8,个发光二极管组成。基中,7,个长条形的发光管排列成“日”字形,另一个圆点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部分英文字母。,LED,显示器有两种不同的形式:一种是,8,个发光二极管的阳极都连在一起的,称之为共阳极,LED,显示器;另一种是,8,个发光二极管的阴极都连在一起的,称之为共阴极,LED,显示器。,为了在,7,段,LED,上显示不同的数字或字符,首先要把数字或字符转换成相应的段码(又称字形码),由于电路接法不同,形成的段码也不相同。另外,字形码是相对的,它由各字段在字节中所处的位置决定。,例如:数字,0,P1.7,P1.6,P1.5,P1.4,P1.3,P1.2,P1.1,P1.0,h,g,f,e,d,c,b,a,共阳极,1,1,0,0,0,0,0,0,共阴极,0,0,1,1,1,1,1,1,P1.7,P1.6,P1.5,P1.4,P1.3,P1.2,P1.1,P1.0,a,b,c,d,e,f,g,h,共阳极,0,0,0,0,0,0,1,1,共阴极,1,1,1,1,1,1,0,0,2,、,LED,显示器及显示方式,由,N,片,LED,显示块可拼接成,N,位,LED,显示器。,N,位,LED,显示器有,N,根位选线和,8N,根段选线。根据显示方式的不同,位选线和段选线的连接方法也各不相同。段选线控制显示字符的字型,而位选线则控制显示位的亮、暗。,(,1,),LED,静态显示方式,LED,显示器工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地(或接,+5v,),每位的段选线(,a-dp,)分别与一,8,位的锁存器输出相连。之所以称为静态显示,是由于显示器中的各位相互独立,而且各位的显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一个字符为止。也正因为如此,静态显示器的亮度都较高。,静态显示方式编程简单,管理容易,但占用口线资源较多,如果显示器位数增多,静态显示方式更无法适应。,程序清单,:,ORG,0100H,MAIN:MOV,R0,#00H,;,从,“,0,”,开始显示,MOV,DPTR,#TABLE;,表格地址送数,据指针,DISP:MOV,A,R0,;,送显示,MOVC,A,A+DPTR,;,指向表格地址,MOV,P1,A,;,数据送,LED ACALL,DELAY,;,延时,INC,R0,;,指向下一个字符,CJNE,R0,#0AH,DISP;,未显示完,,AJMP,MAIN,;,下一个循环,DELAY:MOV,R1,#0FFH,;,延时子程序,延,时时间赋值,LOOP0:MOV,R2,#0FFHLOOP1:DJNZ,R2,LOOP1,DJNZ,R1,LOOP0,RET,;,子程序返回,TABLE:DB,0C0H,;,字型码表,DB,0F9H,DB,0A4H,DB,0B0H,DB,99H,DB,92H,DB,82H,DB,0F8H,DB,80H,DB,90H,END,单片机并行,I/O,口数量总是有限的,有时并行口需作其他更重要的用途,一般也不会用数量众多的并行,I/O,口专门用来驱动显示电路。,(,2,),LED,动态扫描方式,动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的,8,个笔划段,a-h,同名端连在一起,而每一个显示器的公共极,COM,是各自独立地受,I/O,线控制。,CPU,向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是哪个显示器亮,则取决于,COM,端,而这一端是由,I/O,控制的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的,COM,端,使各个显示器轮流点亮。,在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约,1ms,),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。,动态扫描的频率有一定的要求,频率太低,,LED,将出现闪烁现象。如频率太高,由于每个,LED,点亮的时间太短,,LED,的亮度太低,肉眼无法看清,所以一般均取几个,ms,左右为宜,这就要求在编写程序时,选通某一位,LED,使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。,程序清单:,ORG 0100H,MAIN:MOV R3,#00H,LOOP:MOV DPTR,#TABLE,MOV A,R3,MOVC A,A+DPTR,MOV P1,A,MOV R4,#0E8H,DELAY:ACALL DISPLAY,DJNZ R4,DELAY,INC R3,CJNE R3,#0AH,LOOP,AJMP MAIN,DISPLAY:MOV R1,#08H,MOV R5,#00H,DISP:MOV A,R5,MOV P3,A,ACALL DELAY1,INC R5,DJNZ R1,DISP,RET,DELAY1:MOV R6,#10H,LOOP1:MOV R7,#38H,LOOP2:DJNZ R7,LOOP2,DJNZ R6,LOOP1,RET,TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,DB 92H,82H,0F8H,80H,90H,END,ORG 1000H,Main:,mov sp,#60h,mov dptr,#0e100h ;8155,初始化,mov a,#03h,movx dptr,a,mov r0,#39H,lcall DIR,Here:ajmp Here,DIR:,mov r0,#LEDBuf,mov r1,#6 ;,共,6,个八段管,mov r2,#00000001b ;,从左边开始显示,Loop:,mov dptr,#0e101h,mov a,#00h,movx dptr,a ;,关所有八段管,mov a,r0,mov dptr,#LEDmap,movc a,a+dptr,mov B,#8 ;,送,164,DLP:,rlc a,mov r3,a,mov acc.0,c,anl a,#0fdh,mov dptr,#0e102h,movx dptr,a,mov dptr,#0e102h,orl a,#02h,movx dptr,a,anl a,#0fdh,movx dptr,a,mov a,r3,djnz B,DLP,mov dptr,#0e101h,mov a,r2,movx dptr,a ;,显示一位八段管,call Delay,mov a,r2 ;,显示下一位,rL a,mov r2,a,inc r0,djnz r1,Loop,mov dptr,#0e101h,mov a,#0,movx dptr,a ;,关所有八段管,ret,LEDMAP:;,八段管显示码,db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,db 7fh,6fh,77h,7ch,39h,5eh,79h,71h,DB 00H,Delay:;,延时子程序,mov r7,#0,mov r6,#0,DelayLoop:,djnz r6,DelayLoop,djnz r7,DelayLoop,ret,END,二、键盘接口技术,键盘是由一组按压式或触摸式开关构成的阵列。单片机应用系统键盘的设置应由该系统具体的功能来决定,因此,往往采用专用的功能键盘。,键盘可分为编码式键盘和非编码式键盘。编码式键盘能够由硬件自动提供与被按键对应的,ASCII,码或其它编码。但是它要求采用较多的硬件,价格昂贵。而非编码式键盘则仅提供行和列的矩阵,其硬件逻辑与按键编码不存在严格的对应关系,而要由所用的程序来确定。非编码键盘的硬件接口简单,但是要占用较多的,CPU,时间,为克服这一缺点,目前已经出现了一些可与,8,位微处理器配用的可编程键盘管理芯片,如,Intel8279,等。,1,、键盘输入应解决的问题,任何键盘接口均要解决下述三个主要问题:,(,1,)按键识别,按键的闭合与否,反应在电压上就是呈现出高电平或低电平,如果高电平表示断开的话,那么低电平则表示闭合,所以通过电平的高低状态的检测,便可确认按键是否按下。对于键盘矩阵,决定是否有按键被按下,则应识别被按键对应的编码。,(,2,)消除按键抖动,通常,按键所用开关为机械弹性开关,利用了机械触点的合、断作用。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开,因而在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性决定,一般为,510ms,,这是一个很重要的时间参数,在很多场合都要用到。按键的稳定闭合期长短则是由操作人员的按键动作决定的,一般为十分之几秒到几秒的时间,这个时间参数可作为一般的参考。,抖动时间,10ms,开关动作时间,100ms,“1”,“0”,10ms,按键的抖动,通常有硬件、软件两种消除方法:,(,1,)硬件方法,(,2,)软件方法,I/O,接,口,+5v,+5v,消除抖动电路,开关,单片机,延时等待,10ms,仍有按键信号?,Y,有按键信号?,N,Y,N,键盘处理,按键释放?,N,Y,(,3,)串键保护,由于操作不慎,可能会造成同时有几个键被按下,这种情况称为串键。有三种处理串键的技术:两键同时按下、,n,键同时按下和,n,键锁定。,“两键同时按下”技术是在两个键同时按下时产生保护作用。最简单的办法是当只有一个键按下时才读取键盘的输出,最后仍被按下的键是有效的正确按键,当用软件扫描键盘时常采用这种方法。另一种方法是当第一个按键未松开时,按第二个键不产生选通信号,这种方法常借助硬件来实现。,“n,键同时按下”技术或者不理会所有被按下的键,直至只剩下一键按下时为止;或者将按键的信息存入内部缓冲器中,这种方法成本较高。,“,n,键锁定”技术只处理一个键,任何其它按下又松开的键不产生任何代码,通常第一个被按下或最后一个松开的键产生编码。这种方法最简单也最常用。,2,、独立式按键接口设计,独立式按键就是各按键相互独立,每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其它输入线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。,独立式按键电路配置灵活,软件结构简单。但每个按键需要一根输入线,在按键数量较多时,输入口浪费大,电路结构显的很繁杂,故此种键盘适用于按键较少或操作速度较高的场合。,ORG 0000H,AJMP MAIN,ORG 0100H,MAIN:MOV SP,#60H,MOV DPTR,#7FFFH,MOV A,#90H,MOVX DPTR,A,LOOP:MOV DPTR,#7FFCH,MOVX A,DPTR,CPL A,JZ LOOP,MOV R2,A,ACALL DL10ms,MOVX A,DPTR,CPL A,CJNE A,R2,LOOP,CJNE A,#01H,TO_2,ACALL KEY_1,TO_2:CJNE A,#02H,TO_3,ACALL KEY_2,TO_3:CJNE A,#04H,TO_4,ACALL KEY_3,TO_4:CJNE A,#08H,TO_5,ACALL KEY_4,TO_5:CJNE A,#10H,TO_6,ACALL KEY_5,TO_6:CJNE A,#20H,TO_7,ACALL KEY_6,TO_7:CJNE A,#40H,TO_8,ACALL KEY_7,TO_8:ACALL KEY_8,DL10ms:MOV R7,#05H,LOOP1:MOV R6,#0F9H,LOOP2:NOP,NOP,DJNZ R6,LOOP2,DJNZ R7,LOOP1,RET,KEY_1:,RET,KEY_2:,RET,END,3,、矩阵式键盘接口设计,矩阵式键盘适用于按键数量较多的场合,它由行线和列线组成,按键位于行、列的交叉点上。在按键数量较多的场合,矩阵式键盘比独立式键盘要节省很多的,I/O,口。,对于矩阵式键盘,可分为两大类:无编码器键盘和带编码器键盘。带编码器键盘是采用硬件方法,由键盘编码器确定哪一个键已按下,并直接给出该键的键编码,而且还能消抖和解决重键问题。键盘编码器有静态编码器、扫描式编码器和反相编码器等各种类型。无编码器键盘常常采用软件方法,逐行逐列的检查键盘状态,当发现按下的键后,用计算或者查表等方法来得到该键的编码。,(,1,)矩阵式键盘的工作原理,按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到,+5V,电源上。平时无按键动作时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线电平如果为低,则行线电平为低;列线电平如果为高,则行线电平也为高。这一点是识别,矩阵键盘按键是否被按下的关键所在。由于矩阵式键盘中行、列线为多键共用,各按键均影响该键所在行和列的电平,因此各按键彼此将相互发生影响,所以必须将行、列线信号配合起来并做适当的处理,才能确定闭合键的位置。,(,2,)按键的识别方法,扫描法:,扫描法是采用步进扫描方式,,CPU,通过输出口把一个“步进的,0”,逐行加至键盘的行(列)线上,然后通过输入口检查列(行)线的状态。由行线、列线电平状态的组合来确定是否有键按下,并确定被按键所处的行、列位置。,线反转法:,A,、将行线编程为输入线,列线编程为输出线,并使输出线输出为全零电平,则行线中电平由高到低所在行为按键所在行,B,、将行线编程为输出线,列线编程为输入线,并使输出线输出为全零电平,则列线中电平由高到低所在列为按键所在列,(,3,)键盘的编码,对于矩阵式键盘,按键的位置由行号和列号唯一确定,所以分别对行号和列号进行二进制编码,然后将两值合成一个字节,高,4,位是行号,低,4,位是列号,这样编码非常直观。但是这种编码对于不同行的按键,离散性大,因此不利于使用散转指令,所以常常采用依次排列键号的方式对按键进行编码。,(,4,)键盘工作方式,单片机应用系统中,键盘扫描只是,CPU,的工作内容之一。,CPU,在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。键盘工作方式的选取应根据实际应用系统中,CPU,工作的忙、闲情况而定。其原则是既要保证能及时响应按键操作,又要不过多占用,CPU,的工作时间。通常,键盘工作方式有三种,即:编程扫描、定时扫描和中断扫描。,编程扫描方式,CPU,对键盘的扫描采取程序控制方式,一旦进入键盘扫描状态,则反复的扫描键盘,等待用户从键盘上输入命令或数据,而在执行键入命令或处理键入数据的过程中,,CPU,将不再响应键入要求,直到,CPU,返回重新扫描键盘为止。,键盘扫描主程序:,BEGIN,:,ACALL KEY_ON,;判断有无键按下,JNZ DELAY,;有键按下(,A,不等于,0,),转消抖,AJMP BEGIN,;无键按下,继续扫描,DELAY,:,ACALL DL10ms,;延时,10ms,进行消抖,ACALL KEY_ON,;再判断有无键按下,JNZ KEY_NUM,;,A,不等于,0,,确实有键,按下,转确定按键位置,AJMP BEGIN,;是按键抖动,继续扫描,KEY_NUM,:,ACALL KEY_P,;调用确定按键位,置子程序,ANL A,,,#0FFH,JZ BEGIN,;,A,等于,0,,出错,继续扫,描,ACALL KEY_CODE,;对按键编码,PUSH A,;保护,A,KEY_OFF,:,ACALL KEY_ON,;等待,直到按键,被释放,JZ KEY_OFF,POP A,;恢复,A,判断有无按键被按下:,KEY_ON,:,MOV A,,,#00H,;全扫描字,MOV DPTR,,,#7FFCH,MOVX DPTR,,,A,MOV DPTR,,,#7FFEH,MOVX A,,,DPTR,CPL A,;,A,取反,,A,不等于,0,表示有按,键被按下,RET,延时,10ms,子程序:(时钟为,6MHz,),DL10ms,:,MOV R7,,,#05H,LOOP1,:,MOV R6,,,#0F9H,LOOP2,:,NOP,NOP,DJNZ R6,,,LOOP2,DJNZ R7,,,LOOP1,RET,判断按键位置子程序:,KEY_P,:,MOV R7,,,#0FEH,;键盘第一列置,0,MOV A,,,R7,L_LOOP,:,MOV DPTR,,,#7FFCH,MOVX DPTR,,,A,MOV DPTR#,,,7FFEH,MOVX A,,,DPTR,MOV R6,,,A,;送,R6,保存,CPL A,;,A,取反,JZ NEXT,;此列无按键,扫描下一列,AJMP KEY_C,;按键在此列,转,KEY_C,NEXT,:,MOV A,,,R7,;上一扫描字送,A,JNB ACC.7,,,ERROR,;第,8,列扫描完,,没有发现按键,,转出错,RL A,;左循环得到下一个扫描字,MOV R7,,,A,;扫描字保存于,R7,AJMP L_LOOP,;开始扫描下一列,KEY_C,:,MOV R2,,,#00H,MOV R3,,,#00H,MOV R5,,,#04H,;共,4,行,MOV A,,,R6,;行状态送,A,AGAIN1,:,JNB ACC.0,,,OUT1,INC R2,RR A,;右环移,DJNZ R5,,,AGAIN1,OUT1,:,INC R2,;行数加,1,MOV R5,,,#08H,;共,8,列,MOV A,,,R7,;列状态送入,A,AGAIN2,:,JNB ACC.0,,,OUT2,INC R3,RR A,DJNZ R5,,,AGAIN2,OUT2,:,INC R3,MOV A,,,R2,;行号送入,A,SWAP A,;行号置于高,4,位,ADD A,,,R3,;列号置于低,4,位,ERROR,:,MOV A,,,#00H,RET,按键编码子程序:,KEY_CODE,:,PUSH A,;保存,A,ANL A,,,#0FH,;屏蔽行号,MOV R7,,,A,;取出列号,DEC R7,;列号减,1,POP A,;恢复,A,SWAP A,ANL A,,,#0F0H,;屏蔽列号,DEC A,;行号减,1,MOV B,,,#08H,MUL AB,;行号乘以,8,ADD A,,,R7,;加上列号得到按键编码,RET,定时扫描工作方式,利用单片机内部定时器产生定时中断,,CPU,响应中断后对键盘扫描,并在有键按下时识别出该键并执行相应键的功能程序。定时扫描工作方式的键盘硬件电路与编程扫描工作方式相同。,中断工作方式,80C51,与门,+5V,INT0,P1.3P1.0,P1.7P1.4,若,CPU,开放中断,则响应中断请求。中断服务子程序中,首先应关闭中断,因为在扫描识别过程中,还会引起,INT0,信号的变化,因此不关闭中断会引起混乱。中断关闭后,进行消抖处理、按键识别及按键功能程序的执行。,7.4,MCS-51,内部定时,/,计数器及其应用,51,单片机内部设置有两个,16,位可编程的定时器,/,计数器,T0,和,T1,,其中,T0,由特殊功能寄存器,TL0,和,TH0,组成,,T1,由特殊功能寄存器,TL1,和,TH1,组成,它们具有计数器方式和定时器方式两种工作方式及,4,种工作模式。其控制字均在相应的特殊功能寄存器中,其中定时器,/,计数器的工作方式由特殊功能寄存器,TMOD,编程决定,定时器,/,计数器的运行由特殊功能寄存器,TCON,编程控制。这些寄存器的内容靠软件设置,系统复位时,寄存器的所有位都被清零。,一、方式控制寄存器,TMOD,TMOD,(方式控制寄存器)用于控制定时器,/,计数器的工作方式及四种工作模式。其中低,4,位为定时器,T0,的方式控制字段,高,4,位为定时器,T1,的方式控制字段,D7 D6 D5 D4,D3 D2 D1 D0,GATE C/T M1 M0,GATE C/T M1 M0,T1,方式字段,T0,方式字段,1,、工作方式选择位,M1,、,M0,定时器的工作方式由,M1,、,M0,二位的状态确定,M1,M0,功能说明,0,0,方式,0,,为,13,位的定时器,/,计数器,0,1,方式,1,,为,16,位的定时器,/,计数器,1,0,方式,2,,为常数自动重新装入的,8,位定时器,/,计数器,1,1,方式,3,,仅适用于,T0,,分为两个,8,位计数器,对,T1,停止计数,2,、定时器和外部计数方式选择位,C/,T,(,1,),C/T=0,为定时器方式,采用晶体振荡器脉冲的,12,分频信号作为计数器的计数信号,即对机器周期进行计数。若选择,12MHz,的晶振则定时器的计数频率为,1MHz,,从定时器的计数值便可求得计数的时间,(,2,),C/T=1,为计数器方式,采用外部引脚(,T0,为,P3.4,,,T1,为,P3.5,)的输入脉冲作为计数脉冲。当,T0,(或,T1,)的输入发生高到低的负跳变时,计数器加,1,,最高计数频率为晶振频率的二十四分之一。,3,、门控位,GATE,门控位,GATE,对定时器,/,计数器的启动起辅助控制作用。,GATE=1,时,定时器,/,计数器的计数受外部引脚输入电平的控制(,INT0,控制,T0,运行,,INT1,控制,T1,运行);,GATE=0,时,定时器,/,计数器的运行不受外部输入引脚的控制。,二、运行控制寄存器,TCON,D7,D6,D5,D4,D3,D2,D1,D0,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,1,、,TR0,TR0,是定时器,T0,的运行控制位,由软件置位和复位。当,GATE,(,TMOD.3,)为,0,时,,TR0,为,1,时允许,T0,计数,,TR0,为,0,时停止计数。当,GATE,(,TMOD.3,)为,1,时,仅当,TR0,为,1,且,INT0,(,P3.2,)输入为高电平时才允许,T0,计数,,TR0,为,0,或,INT0,输入低电平时都禁止,T0,计数。,2,、,TF0,TF0,为定时器,T0,的溢出标志位,当,T0,被允许计数以后,,T0,从初值开始加,1,计数,最高位产生溢出时置“,1”TF0,,并向,CPU,申请中断。当,CPU,响应中断时,由硬件清“,0”TF0,。,TF0,也可由软件查询清“,0”,。,3,、,TR1,TR1,是定时器,T1,的运行控制位,由软件置位和复位。当,GATE,(,TMOD.7,)为,0,时,,TR1,为,1,时允许,T1,计数,,TR1,为,0,时停止计数。当,GATE,(,TMOD.7,)为,1,时,仅当,TR1,为,1,且,INT1,(,P3.3,)输入为高电平时才允许,T1,计数,,TR1,为,0,或,INT1,输入低电平时都禁止,T1,计数。,4,、,TF1,TF1,为定时器,T1,的溢出标志位,当,T1,被允许计数以后,,T1,从初值开始加,1,计数,最高位产生溢出时置“,1”TF1,,并向,CPU,申请中断。当,CPU,响应中断时,由硬件清“,0”TF1,。,TF1,也可由软件查询清“,0”,。,5,、运行控制寄存器,TCON,的低四位与外部中断有关,三、定时器,/,计数器的四种工作模式,1,、模式,0,模式,0,(,M1=0,,,M0=0,)为,13,位定时器,/,计数器,由,TL0,(或,TL1,)的低,5,位和,TH0,(或,TH1,)的,8,位构成。,2,、模式,1,模式,1,(,M1=0,,,M0=1,)为,16,位定时器,/,计数器,由,TL0,(或,TL1,)和,TH0,(或,TH1,)构成,功能与模式,0,完全类似。,3,、
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服