




已阅读5页,还剩79页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MCS-51单片机内部结构 内部结构框图如下:,MCS-51单片机外部引脚 封装形式, 见右图:,MCS-51单片机内存配置,MCS-51单片机的内存结构,对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O口进行的。51单片机总共有P0、P1、P2、P3四个8位双向输入输出端口,每个端口都有锁存器、输出驱动器和输入缓冲器。4个I/O端口都能作输入输出口用,其中P0和P2通常用于对外部存储器的访问。,第五章 输入输出接口P0P3,5.1 MCS-51单片机的并行端口结构与操作,51系列单片机有4个I/O端口,每个端口都是8位准双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0P3)、一个输出驱动器和输入缓冲器。通常把4个端口笼统地表示为P0P3。,下图为P0口的某位P0.n(n=07)结构图,它由一个 输出锁存器、两个三态输入缓冲器和输出驱动电路 及控制电路组成。从图中可以看出,P0口既可以作 为I/O用,也可以作为地址/数据线用。,一、P0口的结构,1、P0口作为普通I/O口,输出时, 输入时-分读引脚或读锁存器 读引脚:由传送指令(MOV)实现; 下面一个缓冲器用于读端口引脚数据,当执行一条由端口输入的指令时,读脉冲把该三态缓冲器打开,这样端口引脚上的数据经过缓冲器读入到内部总线。, 输入时-分读引脚或读锁存器 读锁存器:有些指令 如:ANL P0,A称为“读-改-写” 指令,需要读锁存器。上面一个缓冲器用于读端口锁存器数据。,*原因:如果此时该端口的负载恰是一个晶体管基极,且原端口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0”电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能发生的错误。*,P0口必须接上拉电阻; 在读信号之前数据之前,先要向相应的锁存器做写1操作的I/O口称为准双向口; 三态输入缓冲器的作用: (ANL P0,A),准双向口: 从图中可以看出,在读入端口数据时,由于输出驱动FET并接在引脚上,如果T2导通,就会将输入的高电平拉成低电平,产生误读。所以在端口进行输入操作前,应先向端口锁存器写“1”,使T2截止,引脚处于悬浮状态,变为高阻抗输入。这就是所谓的准双向口。,CPU发出控制电平“1”,打开“与”门,又使多路开关MUX把CPU的地址/数据总线与T2栅极反相接通,输出地址或数据。由图上可以看出,上下两个FET处于反相,构成了推拉式的输出电路,其负载能力大大增强。,2、P0作为地址/数据总线,P0引脚输出地址/输入数据 输入信号是从引脚通过输入缓冲器进入内部总线。 此时,CPU自动使MUX向下,并向P0口写“1”,“读引脚”控制信号有效,下面的缓冲器打开,外部数据读入内部总线。,2、P0作为地址/数据总线,-真正的双向口,二、P2的内部结构,1.P2口作为普通I/O口,CPU发出控制电平“0” ,使多路开关MUX倒向锁存器 输出Q端,构成一个准双向口。其功能与P1相同。,2.P2口作为地址总线 在系统扩展片外程序存储器扩展数据存储器且容量超过256B (用MOVX DPTR指令)时,CPU发出控制电平“1”,使多路开关MUX倒内部地址线。此时,P2输出高8位地址。, 5.2 P1口、P3口的内部结构,P1口的一位的结构 它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路组成-准双向口。,P3的内部结构,D Q CLK Q,P3.n,读锁存器,内部总线,写锁存器,读引脚,VCC,R,T,P3口引脚,第二输入功能,第二输出功能,一、作为通用I/O口与P1口类似-准双向口(W=1),W,P3的内部结构,D Q CLK Q,P3.n,读锁存器,内部总线,写锁存器,读引脚,VCC,R,T,P3口引脚,第二输入功能,第二输出功能,二、P3第二功能(Q=1) 此时引脚部分输入(Q=1、W=1) ,部分输出(Q=1、W输出) 。,W,综上所述:当P0作为I/O口使用时,特别是作为输出时,输出级属于开漏电路,必须外接上拉电阻才会有高电平输出;如果作为输入,必须先向相应的锁存器写“1”,才不会影响输入电平。 当CPU内部控制信号为“1”时,P0口作为地址/数据总线使用,这时,P0口就无法再作为I/O口使用了。,P1、P2 和P3 口为准双向口, 在内部差别不大, 但使用功能有所不同。 P1口是用户专用 8 位准双向I/O口, 具有通用输入/输出功能, 每一位都能独立地设定为输入或输出。当有输出方式变为输入方式时, 该位的锁存器必须写入“1”, 然后才能进入输入操作。 P2口是 8 位准双向I/O口。外接I/O设备时, 可作为扩展系统的地址总线, 输出高8位地址, 与P0 口一起组成 16 位地址总线。 对于 8031 而言, P2 口一般只作为地址总线使用, 而不作为I/O线直接与外部设备相连。,小结: 1、P0口:地址低8位与数据线分时使用端口, 2、P1口:按位可编址的输入输出端口, 3、P2口:地址高8位输出口 4、P3口:双功能口。若不用第二功能,也可作通用I / O 口。 5、按三总线划分:,地址线:P0低八位地址,P2高八地址; 数据线:P0输入输出8位数据; 控制线:P3口的8位加上/PSEN、ALE共同完成 控制总线。,归纳四个并行口使用的注意事项如下: 1、如果单片机内部有程序存贮器,不 需要扩展外部存贮器和I/O接口,单 片机的四个口均可作I/O口使用。 2、四个口在作输入口使用时,均应先 对其写“1”,以避免误读。 3、P0口作I/O口使用时应外接10K的上拉电阻,其它口则可不必。 4、P2可某几根线作地址使用时,剩下的线不能作I/O口线使用。 5、P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用。,5.2 编程举例,例5-1.设计一电路,监视某开关K,用发光二极管LED显示开关状态,如果开关合上,LED 亮、 开关打开,LED熄灭。 分析:设计电路如图5. 2如示。 开关接在P1.1口线,LED接P1.0口线,当开关断开时,P1.1为+5V,对应数字量为“1”,开 关合上时P1.1电平为0V,对应数字量为“0”,这样就可以用JB指令对开关状态进行检测 。,LED正偏时才能发亮,按电路接法,当P1.0输出“1”,LED正偏而发亮,当P1.0 输出“0” ,LED 的两端电压为 0 而熄灭。,编程如下: CLR P1.0 ;使发光二极管灭 AGA:SETB P1.1 ;先对P1口写入“1” JB P1.1,LIG ;开关开,转LIG SETB P1.0 ;开关合上,二极管亮 SJMP AGA LIG: CLR P1.0 ;开关开,二极管灭 SJMP AGA,在上述电路图中二极管亮度不够,按下面两种电路接法,增加了驱动能力,二极管更亮些。 接成灌电流形式:,加驱动电路:,用汇编语言编程 ORG 0000H MOV P1,#0FFH ;高四位的LED全灭, 低四位输入线送“1”, ABC: MOV A,P1 ;读P1口引脚开关状态,并送入A SWAP A ;低四位开关状态换到高四位 ANL A,#0F0H ;保留高四位 MOV P1,A ;从P1口输出 ORL P1,#0FH ;高四位不变,低四位送“1”, 准备下一轮读开关 SJMP ABC ;循环执行,方便反复调整开关 状态观察执行结果,例3.用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms ,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。 分析:500Hz信号周期为2ms,信号电平为每1ms变反1次。1KHz的信号周期为1ms,信号电平 每500S变反1次,编一个延时500S子程序,延时1ms只需调用2次。用R2控制音响时间长短,A作音响频率的交换控制的标志。A=FF时产生1KHz信号,A=0时产生500Hz信号。,ORG 0000H CLR A ;A作1KHz,500Hz 转换控制 BEG: JB P1.7, ;检测P1.7的开关状态 MOV R2, #200 ;开关闭合报警,R2控制音响时间 DV:CPL P1.0 CJNE A, #0FFH, N1 ;AFFH,延时500S ACALL D500 ;A=FFH ; 延时1ms P1.0变反 N1:ACALL D500 DJNZ R2,DV CPL A SJMP BEG D500:MOV R7, #250 ;延时500 S子程序 DJNZ R7, RET END,5.3 用并行口设计LED数码显示器 和键盘电路,键盘和显示器是单片机应用系统中常用的输入输出装置。LED数码显示器是常用的显示器之一,下面介绍用单片机并行口设计LED数码显示电路和键盘电路的方法。,5.3.1用并行口设计LED显示电路 1. LED显示器及其原理 LED有着显示亮度高,响应速度快的特点,最常用的是七段式LED显示器,又称数码管。 七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。常见LED的管脚排列见图5.4(a)。其中COM为公共点,根据内部发光二极管的接线 形式,可分成共阴极型图(5.4(b)和共阳极型图(5.4(c)。,0 0 1 1 1 1 1 1 3fh,x g f e d c b a,LED数码管的ga七个发光二极管因加正电压而发亮,因加零电压而不能发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码(段码),如显示”0”,字形码为3fh.,x g f e d c b a,0 0 0 0 0 1 1 0 06h,显示”1”,字形码为06h.,显示”2”,字形码为5bh.,(b),dp,com,a,b,c,d,e,f,g,dp,c,d,e,1,2,3,4,5,6,7,8,9,10,com,com,a,b,c,e,f,g,x g f e d c b a,0 1 0 1 1 0 1 1 5bh,显然共阳极和共阴极的字形码是不同的 ,其字形码见表5.2。LED数码管每段需1020ma的驱动电流,可用TTL或CMOS器件驱动。 字形码的控制输出可采用硬件译码方式,如采用BCD 7段译码/驱动器74LS48、74LS49、CD4511(共阴极)或74LS46、74LS47、CD4513 (其阳极)也可用软件查表方式输出。,为使LED显示不同的符号或数字,要为LED提供段码 (或称字型码)。,提供给LED显示器的段码(字型码)正好是一个字 节(8段)。各段与字节中各位对应关系如下:,按上述格式,8段LED的段码如表10-1所示。,表10-1 LED段码(8段),表10-1只列出了部分段码,可根据实际情况选用。,另外,段码是相对的,它由各字段在字节中所处的 位决定。例如表10-1中8段LED段码是按格式:,而形成的, “0”的段码为3FH(共阴)。反之,如 将格式改为下列格式:,则 “0”的段码为7EH(共阴)。,字型及段码由设计者自行设定,习惯上还是以“a” 段对应段码的最低位。,N个LED显示块有N位位选线和8N根段码线。,LED显示器工作原理,图10-2是4位 LED显示器的结构原理图。,段码线控制显示的字型,,位选线控制该显示位的亮或暗。,静态显示和动态显示两种显示方式。,1. 静态显示方式,各位的公共端连接在一起(接地或+5V)。,每位的段码线(adp)分别与一个8位的锁存器 输出相连。,显示字符一确定,相应锁存器的段码输出将维持 不变,直到送入另一个段码为止。显示的亮度高。,图10-3: 4位静态LED显示器电路。该电路各位可独立显示。,2. 动态显示方式,所有位的段码线相应段并在一起,由一个8位I/O 口控制,形成段码线的多路复用,各位的公共端分别由 相应的I/O线控制,形成各位的分时选通。,图10-4:4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。,图10-5为8位LED动态显示2003.10.10的过程。,图(a)是显示过程,某一时刻,只有一位LED被选通 显示,其余位则是熄灭的;,图(b)是实际显示结果,人眼看到的是8位稳定的 同时显示的字符。,例如图5.5是接有五个共阴极数码管的动态显示接口电路,用74LS373接成直通的方式作驱动 电路,阴极用非门74LS04反相门驱动,字形选择由P1口提供,位选择由P3口控制。 当P3.0P3.4轮流输出1时,五个数码管轮流显示。P1.7接开关,当开关打向位置“1”时, 显示“12345”字样,当开关打向“2”时,显示“HELLO”字样,程序清单如下:,1,2,用汇编语言编程 ORG 0000H MOV P3,#0 ;清显示 TEST:SETB P1.7 JB P1.7,DIR1 ;检测开关 MOV DPTR,#TAB 1 ; 开关置于1,12345字形表头地址 SJMP DIR DIR1: MOV DPTR,#TAB2 ; 开关置于2,“HELLO”字形表头 DIR: MOV R0,#0 ;R0存字形表偏移量 MOV R1,#01 ;R1置数码表位选代码 NEXT:MOV A,R0 MOVC A,A+DPTR ; 查字形码表1 MOV P1,A ;送P1口输出,MOV A,R1 MOV P3,A ;输出位选码 ACALL DAY ;延时 INC R0 ;指向下一位字形 RL A ;指向下一位 MOV R1,A CJNE R1,#20H,NEXT ;五个 数码管显示完? SJMP TEST DAY:MOV R6,#20 ; 延时20ms子程序 DL2: MOV R7,#7DH DL1: NOP NOP,DJNZ R7,DL1 DJNZ R6,DL2 RET TAB1:db 06H,5BH,4FH,66H,6DH ; “15”的字形码 TAB2:db 78H,79H,38H,38H,3FH ; “HELLO”的字形码 END,键盘接口原理,1. 键盘输入的特点,键盘:一组按键开关的集合。,行线电压信号通过键盘开关机械触点的断开、闭合, 输出波形如图10-6。,2. 按键的确认,检测行线电平,便可确认按键按下与否。 高电平:断开;低电平:闭合,,常用软件来消除按键抖动。,基本思想:检测到有键按下,键对应的行线为低,软 件延时10ms后,行线如仍为低,则确认该行有键按下。,3.如何消除按键的抖动,当键松开时,行线变高,软件延时10ms后,行线仍为 高,说明按键已松开。,采取以上措施,躲开了两个抖动期t1和t3的影响。,键盘接口的工作原理,独立式按键接口和行列式键盘接口。,1.独立式键盘接口,各键相互独立,每个按键各接一根输入线,通过检 测输入线的电平状态可很容易判断那个键被按下。,此种接口适于键数较少或操作速度较高的场合。,图10-7(a)为中断方式的独立式键盘工作电路,图10-7(b)为查询方式的独立式键盘工作电路。,图10-8为8255A扩展I/O口的独立式按键接口电路。,图10-9用三态缓冲器扩展的I/O口的按键接口电路。,对图10-9独立式键盘编程,软件消抖,查询方式检测键的状态。仅有一键按下时才有效才处理。,KEYIN:MOV DPTR,#0BFFFH;键盘端口地址BFFFH MOVX A,DPTR ;读键盘状态 ANL A,#1FH ;屏蔽高三位,MOV R3,A ;保存键盘状态值 LCALL DELAY10 ;延时10ms去键盘抖动 MOVX A,DPTR ;再读键盘状态,ANL A,#1FH ;屏蔽高三位,CJNE A,R3,RETURN ;两次不同,抖动引起转RETURN,CJNE A,#1EH,KEY2 ;相等,有键按下,不等转KEY2,LJMP KEY1 ;是K1键按下,转K1键处理 ;子程序PKEY1 KEY2: CJNE A,#1DH,KEY3 ;S2键未按下,转KEY3 LJMP KEY2 ;S2键按下,转PKEY2处理 KEY3: CJNE A,#1BH,KEY4 ;S3未按下,转KEY4 LJMP KEY3 ;S3按下,转PKEY3处理 KEY4: CJNE A,#17H,KEY5 ;S4键未按下,转KEY5 LJMP KEY4 ;S4按下,转PKEY4处理 KEY5: CJNE A,#0FH,PASS ;S5未按下,转RETURN LJMP KEY5 ;S5按下,转PKEY5处理 RETURN:RET ;重键或无键按下,从子程序返回,识别和编程简单,用在按键数较少的场合。,2. 行列式(矩阵式)键盘接口,用于按键数目较多的场合,由行线和列线组成, 按键位于行、列的交叉点上。如图10-10所示。,按键数目较多的场合,行列式键盘与独立式键盘 相比,要节省很多的I/O口线。,(1)行列式键盘工作原理,无键按下,该行线为高电平,当有键按下时,行线电平有列线的电平来决定。,由于行、列线为多键共用,各按键彼此将相互发 生影响,必须将行、列线信号配合起来并作适当的处 理,才能确定闭合键的位置。,(2)按键的识别方法,a. 扫描法,图10-10(b)中3号键被按下为例,来说明此键 时如何被识别出来的。,识别键盘有无键被按下的方法,分两步进行:,第1步:识别键盘有无键按下;,第2步:如有键被按下,识别出具体的按键。,把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。,上述方法称为扫描法,即先把某一列置低电平, 其余各列为高电平,检查各行线电平的变化,如果某 行线电平为低,可确定此行列交叉点处的按键被按 下。,b. 线反转法,只需两步便能获得此按键所在的行列值,线反转 法的原理如图10-11。,第1步:列线输出为全低电平,则行线中电平由高变低 的所在行为按键所在行。,第2步:行线输出为全低电平,则列线中电平由高变低 所在列为按键所在列。,结合上述两步,可确定按键所在行和列。,(3)键盘的编码,根据实际需要灵活编码。,10.2.3 键盘的工作方式,单片机在忙于各项工作任务时,如何兼顾键盘的输 入,取决于键盘的工作方式。,下图中,用8XX51的并行口P1接44矩阵键盘, 以P1.0P1.3作输出线,以P1.4P1.7作输入线,键盘扫描程序的流程如图5.7所示。,5,a,Y,返回键编码,读P1.3P1.4值,置行扫描初值,扫描位从P1口输出,P1口的高四位和低四位 相或得键编码,扫到最后一行?,N,N(有键按下),N,开始,P1.0P1.3输出0,延时去抖动,P1.4P1.7全为1?,P1.4P1.7全为1?,Y,Y(无键按下),对键盘的程序流程图5.7说明如下: 当P1.0P1.3输出0时,如无键按下,P1.4P1.7的输入值均为“1”,如果其中有一个不是 “1”,说明有键按下,再使P1.0P1.3逐个输出零(行扫描),检查P1.4P1.7的输入值有 无零,从而查出是哪行哪列的键按下。在判按键时,按键有抖动,可采用延时后再重读以跳 过抖动时段(也可用R-S触发器闩锁电路硬件消抖,但这样电路复杂,在矩阵键盘中不采用)。,程序清单如下: ORG 0000H TEST: MOV P1,#0F0H ; P1.0P1.3输出0, P1.4P1.7 输出1,作输入位 MOV A,P1 ;读键盘,检测有无键按下 ANL A,#0F0H ; 屏蔽P1.0P1.3, 检测P1.4P1.是否全为1 CJNE A, #0F0H,HAVE ; P1.4P1.7不全为1, 有键按下 SJMP TEST ;P1.4P1.7全为1, 无键按下,重检测键盘 HAVE: MOV A,#0FE ;有键按下,逐行扫描键盘, 置扫描初值,NEXT: MOV B,A ;扫描码暂存于B MOV P1,A ;输出扫描码 READ: MOV A,P1 ;读键盘 ANL A,#0F0H ; 屏蔽P1.0P1.3, 检测P1.4P1.是否全为1 CJNE A,0F0H,YES ;P1.4P1.7不全为1, 该行有键按下 MOV A,B ;被扫行无键按下,准备查下一行 RL A ;置下一行扫描码 CJNE A,#0EFH,NEXT ;未扫到到最后一行循环 YES: ACALL DAY ;延时去抖动,AREAD: MOV A,P1 ;再读键盘 ANL A,#0F0H ; 屏蔽P1.0P1.3,保留P1.4 P1.7(列码) MOV R2,A ;暂存列码 MOV A, B ANL A,#0FH ;取行扫描码 ORL A,R2 ;行码、列码合并为键编码 YES1: MOV B,A ;键编码存于B LJMP SAM38 ;转键分析处理程序(见例3-8) ,例如图5-6中的“a”键,的编码为同样可得“5” 键编码为BBH,由此可将每个按键的编码排出来,通过查表程序转不同的按键处
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新能源汽车技术与应用考试试卷及答案
- 2025年汽车驾驶员(高级)证考试题库及答案
- 阿坝藏族羌族自治州2025-2026学年七年级上学期语文月考模拟试卷
- 安徽省淮北市杜集区2023-2024学年高一下学期期末考试历史题库及答案
- 安徽省安庆市宿松县2024-2025学年高一下学期期末考试化学题库及答案
- 2025 年小升初哈尔滨市初一新生分班考试语文试卷(带答案解析)-(人教版)
- 2025年教师节感恩老师演讲稿13篇
- 社区消防知识培训课件要点
- 上海市上海师范大学附属金山前京中学2024-2025学年七年级下学期期中考试英语试题(含答案无听力音频及原文)
- 福建省龙岩市非一级达标校2024-2025学年高一上学期11月期中考试历史试卷(含答案)
- 住院病人防止走失课件
- 2024年重庆永川区招聘社区工作者后备人选笔试真题
- 医学技术专业讲解
- 2025年临床助理医师考试试题及答案
- 唯奋斗最青春+课件-2026届跨入高三第一课主题班会
- 2025民办中学教师劳务合同模板
- 2025年南康面试题目及答案
- 2025年事业单位考试贵州省毕节地区纳雍县《公共基础知识》考前冲刺试题含解析
- 高中喀斯特地貌说课课件
- 黄冈初一上数学试卷
- 2025年中国花盆人参行业市场发展前景及发展趋势与投资战略研究报告
评论
0/150
提交评论