第7章-并行口_第1页
第7章-并行口_第2页
第7章-并行口_第3页
第7章-并行口_第4页
第7章-并行口_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

1、第5章 输入、输出接口P0P3 POPOP3P3端口的功能和内部结构端口的功能和内部结构 POPOP3P3端口的端口的 主要内容主要内容第5章 输入、输出接口P0P3 计算机对外设进行数据操作时,外设的数据是不能计算机对外设进行数据操作时,外设的数据是不能直接接到直接接到CPU的数据线上的,必须经过接口。的数据线上的,必须经过接口。 CPU输入接口输入接口输入设备输入设备输出接口输出接口输出设备输出设备图图5 51 1输入接口和输出接口输入接口和输出接口第5章 输入、输出接口P0P3 这是由于这是由于CPU的数据线是外设或存贮器和的数据线是外设或存贮器和CPU进行数据传输的唯一公共通道,进行数

2、据传输的唯一公共通道,为了使数据线的使用为了使数据线的使用对象不产生使用总线的冲突,以及快速的对象不产生使用总线的冲突,以及快速的CPU和慢速和慢速的外设时间上协调,的外设时间上协调,CPU和外设之间必须有接口电路和外设之间必须有接口电路(简称接口或(简称接口或I/O口)。口)。 接口起着缓冲、锁存数据、地址译码、信息格式转接口起着缓冲、锁存数据、地址译码、信息格式转换、传递状态(外设状态),发布命令等功能。换、传递状态(外设状态),发布命令等功能。第5章 输入、输出接口P0P3I/O接口种类:接口种类: I/O接口有并行接口、串行接口、定时接口有并行接口、串行接口、定时/计数器、计数器、A/

3、D、D/A等,根据外设的不同情况和要求选择不同等,根据外设的不同情况和要求选择不同的接口。的接口。 单片机已将这些接口作在内部,无需外加接口,单片机已将这些接口作在内部,无需外加接口,外设可直接接于单片机(有时需加驱动)。外设可直接接于单片机(有时需加驱动)。 本章介绍单片机的并行接口,用于和外设的并行本章介绍单片机的并行接口,用于和外设的并行数据通信。数据通信。第5章 输入、输出接口P0P3 51单片机有单片机有P0、P1、P2、P3四个四个8位双向位双向I/O口,口,每个端口可以按字节输入或输出,也可以按位进行输每个端口可以按字节输入或输出,也可以按位进行输入或输出,四个口共入或输出,四个

4、口共32根口线,用作位控制十分方便。根口线,用作位控制十分方便。 P0口为三态双向口,能带口为三态双向口,能带8个个TTL电路;电路; P1、P2、P3口为准双向口,负载能力为口为准双向口,负载能力为4个个TTL电路。电路。 第5章 输入、输出接口P0P35.1 P0P3端口的功能和内部结构端口的功能和内部结构 P0P3端口的功能如下:端口的功能如下: POPO口口1.1.作为输入作为输入/ /输出口。输出口。 2.2.作为地址作为地址/ /数据总线数据总线 , ,接外围芯片时接外围芯片时POPO口分口分 时输出低时输出低8 8位地址与数据信号。位地址与数据信号。 P P1 1口口1.1.作为

5、作为输入输入/ /输出口。输出口。 2. 2.在增强型在增强型(52(52系列系列) )和和ISPISP型型( (在系统编程型在系统编程型) ) 中中P P1 1口还有如下功能:口还有如下功能: 第5章 输入、输出接口P0P3 P1.0 T2 P1.0 T2引脚引脚, ,定时定时/ /计数器计数器2 2外部计数脉冲输入外部计数脉冲输入 P1.1 T2EXP1.1 T2EX引脚引脚, ,定时定时/ /计数器计数器2 2触发和方向控制触发和方向控制 P1.5 P1.5 MOSIMOSI引脚引脚, ,在系统编程数据输入在系统编程数据输入 P1.6 P1.6 MISOMISO引脚引脚, ,在系统编程数

6、据输出在系统编程数据输出 P1.7 P1.7 SCKSCK引脚引脚, ,在系统编程时钟输入在系统编程时钟输入第5章 输入、输出接口P0P3lP2P2口口1.1.作为输入作为输入/ /输出口。输出口。 2.2.作为高作为高8 8位地址总线。位地址总线。 lP3P3口口P3P3口为双功能口为双功能 1.1.作第一功能使用时,其功能为输入作第一功能使用时,其功能为输入/ /输出口。输出口。 2.2.作第二功能使用时,每一位功能定义如下表作第二功能使用时,每一位功能定义如下表所示所示: : 第5章 输入、输出接口P0P3第5章 输入、输出接口P0P3 5.1.2 5.1.2 端口的内部结构端口的内部结

7、构 四个端口的一位结构见图四个端口的一位结构见图5.15.1,同一个端口的各,同一个端口的各位具有相同的结构。由图可见,四个端口的结构有相位具有相同的结构。由图可见,四个端口的结构有相同之处:同之处: 依据每个端口的不同功能,内部结构亦有不同之依据每个端口的不同功能,内部结构亦有不同之处,以下重点介绍不同之处。处,以下重点介绍不同之处。 都有两个输入缓冲器,分别受内部读锁存器和读都有两个输入缓冲器,分别受内部读锁存器和读引脚控制信号的控制。引脚控制信号的控制。 都有锁存器都有锁存器( (即专用寄存器即专用寄存器POPOP3)P3) 都是场效应管输出驱动。都是场效应管输出驱动。第5章 输入、输出

8、接口P0P31.1.POPO口口 POPO口的输出驱动电路由上拉场效应管口的输出驱动电路由上拉场效应管T1T1和驱动场和驱动场效应效应T2T2组成,控制电路包括一个与门,一个非门和一组成,控制电路包括一个与门,一个非门和一个模拟开关个模拟开关MUXMUX。(a)P0口 位 结 构11读 锁 存 器内 部 总 线写 锁 存 器读 引 脚地 址 /数 据控 制&T1T2VccP0.x引 脚MUX2DQCLP0.x锁 存 器Q第5章 输入、输出接口P0P3(1)PO(1)PO作作I/OI/O口使用口使用 CPU CPU发控制电平发控制电平“0 0”封锁与门,使封锁与门,使T1T1管截止,管截

9、止,同时使同时使MUXMUX开关同下面的触点接通,使锁存器的开关同下面的触点接通,使锁存器的Q Q与与T2T2栅极接通。栅极接通。 第5章 输入、输出接口P0P3 当当CPUCPU向端口输出数据时,写脉冲加在锁存器的向端口输出数据时,写脉冲加在锁存器的 CLCL上、内部总线的数据经反相,再经上、内部总线的数据经反相,再经T2T2管反相,管反相,POPO口口的这一位引脚上出现正好和内部总线同相的数据的这一位引脚上出现正好和内部总线同相的数据。 由于输出驱动级是漏极开路电路由于输出驱动级是漏极开路电路( (因因T1T1截止截止) ),在作在作I/OI/O口使用时应外接口使用时应外接1010K K的

10、上拉电阻。的上拉电阻。 第5章 输入、输出接口P0P3 当输入操作时,端口中两个三态缓冲器用于读操作。当输入操作时,端口中两个三态缓冲器用于读操作。缓冲器缓冲器2 2用于读端口引脚的数据。用于读端口引脚的数据。 当执行端口读指令时,读引脚脉冲打开三态缓冲器当执行端口读指令时,读引脚脉冲打开三态缓冲器2 2,于是端口引脚数据经三态缓冲器于是端口引脚数据经三态缓冲器2 2送到内部总线。送到内部总线。 缓冲器缓冲器1 1用于读取锁存器用于读取锁存器Q Q端的数据。当执行端的数据。当执行“读读- -修修改改- -写写”指令指令( (即读端口信息,在片内加以运算修改后,即读端口信息,在片内加以运算修改后

11、,再输出到该端口的某些指令如:再输出到该端口的某些指令如:ANL POANL PO,A A指令指令) ),即,即是读的锁存器是读的锁存器Q Q的数据。的数据。 第5章 输入、输出接口P0P3 这是为了避免错读引脚的电平信号,例如用一根口这是为了避免错读引脚的电平信号,例如用一根口线去驱动一个晶体管基极,当向口线写线去驱动一个晶体管基极,当向口线写“1 1”,晶体管导,晶体管导通,导通的通,导通的PNPN结会把引脚的电平拉低,如读引脚数据,则结会把引脚的电平拉低,如读引脚数据,则会读为会读为0 0 ,而实际上原口线的数据为,而实际上原口线的数据为1 1。 因而采用读锁存器因而采用读锁存器Q Q的

12、值而避免了错读。究竟是读引的值而避免了错读。究竟是读引脚还是读锁存器,脚还是读锁存器,CPUCPU内部会自行判断是发读引脚脉冲还内部会自行判断是发读引脚脉冲还是读锁存器脉冲,读者不必在意。是读锁存器脉冲,读者不必在意。 第5章 输入、输出接口P0P3应注意应注意 : 当作输入端口使用时,应先对该口写入当作输入端口使用时,应先对该口写入“1 1”使场效应管使场效应管T2T2截止,再进行读入操作,以防场效截止,再进行读入操作,以防场效应管处于导通状态,使引脚箝位到零,而引起误应管处于导通状态,使引脚箝位到零,而引起误读。读。 第5章 输入、输出接口P0P3 当当POPO口作地址口作地址/ /数据线

13、使用时,数据线使用时,CPUCPU及内部控制信及内部控制信号为号为“1 1”,转换开关,转换开关MUXMUX打向上面的触点,使反相器打向上面的触点,使反相器的输出端和的输出端和T2T2管栅极接通,输出的地址或数据信号通管栅极接通,输出的地址或数据信号通过与门驱动过与门驱动T1T1管,同时通过反相器驱动管,同时通过反相器驱动T2T2管完成信息管完成信息传送,数据输入时,通过缓冲器进入内部总线。传送,数据输入时,通过缓冲器进入内部总线。第5章 输入、输出接口P0P32.P12.P1口口 P1P1口的结构见下图口的结构见下图 P1 P1口作通用口作通用I/OI/O口使用,因电路结构上输出驱动部分接口

14、使用,因电路结构上输出驱动部分接有上拉电阻。当作输入时,同有上拉电阻。当作输入时,同POPO一样,要先对该口写一样,要先对该口写“1 1”。 第5章 输入、输出接口P0P3P2P2口口 P2 P2口的位结构比口的位结构比P1P1多了一个转换控制部分,当多了一个转换控制部分,当P2P2口口作通用作通用I/OI/O口时,多路开关口时,多路开关MUXMUX倒向左;倒向左;第5章 输入、输出接口P0P3当扩展片外存贮器时,当扩展片外存贮器时,MUXMUX开关打向右,开关打向右,P2 P2 口作高八位地址线输出高八位地址信号。口作高八位地址线输出高八位地址信号。其其MUXMUX的的倒向是受的的倒向是受C

15、PUCPU内部控制的。内部控制的。应当注意:应当注意: 当当P2P2口的几位作地址线使用时,剩下的口的几位作地址线使用时,剩下的P2P2口线不能作口线不能作I /OI /O口线使用。口线使用。第5章 输入、输出接口P0P3第5章 输入、输出接口P0P34.P34.P3口口 P3 P3口为双功能口为双功能I/OI/O口,内部结构中增加了第二输入口,内部结构中增加了第二输入/ /输输出功能。出功能。读读 锁锁 存存 器器内 部 总 线写 锁 存 器读 引 脚第 二 输 出 功 能第 二 输 入 功 能内 部 上 拉 电 阻P3.x引 脚TVcc1234DCLQP3.x锁 存 器( (d d) )P

16、 P3 3口口 位位 结结 构构第5章 输入、输出接口P0P3 当作为普通当作为普通I/OI/O口使用时,第二输出功能端保口使用时,第二输出功能端保持持“1 1”,打开与非门,打开与非门3 3,用法同,用法同P1P1口。口。 当作第二功能输出时,锁存器输出为当作第二功能输出时,锁存器输出为“1 1”打开打开与非门与非门3 3,第二功能内容通过与非门,第二功能内容通过与非门3 3和和T T送至引脚。送至引脚。 第5章 输入、输出接口P0P3 输入时,引脚的第二功能信号通过三态缓冲器输入时,引脚的第二功能信号通过三态缓冲器4 4进入第二输入功能端。两种功能的引脚输入都应使进入第二输入功能端。两种功

17、能的引脚输入都应使T T截止,此时第二输出功能端和锁存器输出端截止,此时第二输出功能端和锁存器输出端Q Q均为高均为高电平。电平。 P3 P3的各位如不设定为第二功能则自动处于第一功的各位如不设定为第二功能则自动处于第一功能,在更多情况下,根据需要,能,在更多情况下,根据需要, 把几条口线设为第二把几条口线设为第二功能,剩下的口线可作第一功能功能,剩下的口线可作第一功能( (I/O)I/O)使用,此时,宜使用,此时,宜采用位操作形式。采用位操作形式。 第5章 输入、输出接口P0P3归纳四个并行口使用的注意事项如下:归纳四个并行口使用的注意事项如下:1 1. .如果单片机内部有程序存贮器,不需要

18、扩展外部存贮如果单片机内部有程序存贮器,不需要扩展外部存贮器和器和I/OI/O接口,单片机的四个口均可作接口,单片机的四个口均可作I/OI/O口使用。口使用。2 2. .四个口在作输入口使用时,均应先对其写四个口在作输入口使用时,均应先对其写“1 1”,以避,以避免误读。免误读。第5章 输入、输出接口P0P33 3. .P0P0口作口作I/OI/O口使用时应外接口使用时应外接1010K K的上拉电阻,其它口则的上拉电阻,其它口则 可不必。可不必。4 4. .P2P2可某几根线作地址使用时,剩下的线不能作可某几根线作地址使用时,剩下的线不能作I/OI/O口线口线使用。使用。5 5. .P3P3口

19、的某些口线作第二功能时,剩下的口线可以单独口的某些口线作第二功能时,剩下的口线可以单独作作I/OI/O口线使用。口线使用。第5章 输入、输出接口P0P35.2 5.2 编程举例编程举例 下面举例说明端口的输入、输出功能,其他功能的应用实例在下面举例说明端口的输入、输出功能,其他功能的应用实例在后面章节说明。后面章节说明。 例例5-1.设计一电路,监视某开关设计一电路,监视某开关K,用发光二极管用发光二极管LED显示开显示开关状态,如果开关合上,关状态,如果开关合上,LED 亮、亮、 开关打开,开关打开,LED熄灭。熄灭。 分析:设计电路如图分析:设计电路如图5. 2如示。如示。 开关接在开关接

20、在P1.1口线,口线,LED接接P1.0口线,当开关断开时,口线,当开关断开时,P1.1为为+5V,对应数字量为对应数字量为“1”,开,开 关合上时关合上时P1.1电平为电平为0V,对应数字对应数字量为量为“0”,这样就可以用,这样就可以用JB指令对开关状态进行检测指令对开关状态进行检测 。第5章 输入、输出接口P0P3 LED正偏时才能发亮,按电路接法,当正偏时才能发亮,按电路接法,当P1.0输出输出“1”,LED正偏而发亮,当正偏而发亮,当P1.0 输出输出“0” ,LED 的两端电压为的两端电压为 0 而而熄灭。熄灭。 第5章 输入、输出接口P0P3编程如下:编程如下: CLR P1.0

21、 ;使发光二极管灭使发光二极管灭AGA:SETB P1.1 ;先对先对P1口写入口写入“1” JB P1.1,LIG ;开关开,转开关开,转LIG SETB P1.0 ;开关合上,二极管亮开关合上,二极管亮 SJMP AGALIG: CLR P1.0 ;开关开,二极管灭开关开,二极管灭 SJMP AGA第5章 输入、输出接口P0P3用用C 语言编程如下:语言编程如下:#include sbit p1_0=P10; sbit p1_1=P11; /*定义位变量定义位变量*/ void main() p1_0=0; /*使发光二极管灭使发光二极管灭*/ while(1) p1_1=1; /*对输入

22、位对输入位P1.1写写“1” */ if (p1_1=0) p1_0=1; /*开关合上,二极管亮开关合上,二极管亮*/ else p1_0=0; /*开关开,二极管灭开关开,二极管灭*/ 第5章 输入、输出接口P0P3 在上述电路图中二极管亮度不够,按下面两在上述电路图中二极管亮度不够,按下面两种电路接法,增加了驱动能力,二极管更亮些。种电路接法,增加了驱动能力,二极管更亮些。接成灌电流形式:接成灌电流形式:加驱动电路:加驱动电路:+5+5V VP1.0P1.0LEDLEDP1.0P1.0+5+5V VLEDLED1第5章 输入、输出接口P0P3 例例5-2.5-2.在图在图5.35.3中中

23、P1.4P1.4P1.7P1.7接四个发光二极管接四个发光二极管LED,LED,P1.0P1.0P1.3P1.3接四个开关,编程将开关的状态反映到发光接四个开关,编程将开关的状态反映到发光二极管上。二极管上。 第5章 输入、输出接口P0P3用汇编语言编程用汇编语言编程 ORG 0000H MOV P1,#0FFH ;高四位的高四位的LED全灭,低四位输入线送全灭,低四位输入线送“1”, ABC: MOV A,P1 ;读读P1口引脚开关状态,并送入口引脚开关状态,并送入A SWAP A ;低四位开关状态换到高四位低四位开关状态换到高四位 ANL A,#0F0H ;保留高四位保留高四位 MOV P

24、1,A ;从从P1口输出口输出 ORL P1,#0FH ;高四位不变,低四位送高四位不变,低四位送“1”,准备下一,准备下一 轮读开关轮读开关 SJMP ABC ;循环执行,方便反复调整开关状态观察执循环执行,方便反复调整开关状态观察执 行结果行结果第5章 输入、输出接口P0P3 上述程序中每次读开关之前,输入位都先置“1”,保证了开关状态的正确读入。用C语言编程如下:sfr P1=0 x90;main() P1=0 xff; /*P1低四位置“1”,高四位灯全灭*/while(1) P1=P14; /*读入P1引脚状态,左移四位后再从P1口输出*/ P1=P1|0 x0f; /*P1高四位不

25、变,低四位置“1”,准备下一轮读开 关*/ 第5章 输入、输出接口P0P3例例3.3.用用P1.0P1.0输出输出1 1KHzKHz和和500500HzHz的音频信号驱动扬声器,作报警的音频信号驱动扬声器,作报警信号,要求信号,要求1 1KHzKHz信号响信号响100100msms,500Hz500Hz信号响信号响200200msms,交替进行,交替进行,P1.7P1.7接一开关进行控制,当开关合上响报警信号,当开关断开接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。告警信号停止,编出程序。 第5章 输入、输出接口P0P3分析:分析: 500Hz信号周期为信号周期为2

26、ms,信号电平为每信号电平为每1ms变反变反1次。次。1KHz的信号周期为的信号周期为1ms,信号电平信号电平 每每500S变反变反1次,次,编一个延时编一个延时500S子程序,延时子程序,延时1ms只需调用只需调用2次。用次。用R2控制音响时间长短,控制音响时间长短,A作音响频率的交换控制的标作音响频率的交换控制的标志。志。A=FF时产生时产生1KHz信号,信号,A=0时产生时产生500Hz信号。信号。 P1.0 波波 形形 图图 1ms 1ms100个个T (变反变反200次即次即200ms)。500S500S100个个T (变反变反200次即次即100ms)。TT第5章 输入、输出接口P

27、0P3 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 BEGD500:MOV R7, #250 ;延时延时500 S子程序子程序 DJNZ R7, RET END第5章 输入、输出接口

28、P0P3用用C C语言编程如下语言编程如下 #includesbit P10=P10;sbit P17=P17;main()unsigned char i,j;while(1)第5章 输入、输出接口P0P3P171;while(P17=0) for(i=1; i=200; i+) /*控制音响时间控制音响时间*/ P10=P10;for(j=0; j=50; j+); /*延时完成信号周期时间延时完成信号周期时间*/ for(i=1; i=200; i+) /*控制音响时间控制音响时间*/ P10=P10;for(j=0; j=100; j+); /*延时,完成信号周期时间延时,完成信号周期时

29、间*/ 第5章 输入、输出接口P0P3 上述程序只产生报警音响效果,周期和响的时间上述程序只产生报警音响效果,周期和响的时间长短是准确的,长短是准确的, 欲合乎要求,最好用定时器定时欲合乎要求,最好用定时器定时(第第7章章介绍介绍)。第5章 输入、输出接口P0P35.3 5.3 用并行口设计用并行口设计LEDLED数码显示器数码显示器 和键盘电路和键盘电路 键盘和显示器是单片机应用系统中常用的输入输键盘和显示器是单片机应用系统中常用的输入输出装置。出装置。LEDLED数码显示器是常用的显示器之一,下面介数码显示器是常用的显示器之一,下面介绍用单片机并行口设计绍用单片机并行口设计LEDLED数码

30、显示电路和键盘电路的数码显示电路和键盘电路的方法。方法。 第5章 输入、输出接口P0P35.3.15.3.1用并行口设计用并行口设计LEDLED显示电路显示电路1. 1. LEDLED显示器及其原理显示器及其原理 LEDLED有着显示亮度高,响应速度快的特点,最常用的有着显示亮度高,响应速度快的特点,最常用的是七段式是七段式LEDLED显示器,又称数码管。七段显示器,又称数码管。七段LEDLED显示器内部显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。根据各管的亮暗组合成字符。 常见常见LEDLED的管脚排列见

31、图的管脚排列见图5.4(5.4(a)a)。其中其中COMCOM为公共点,为公共点,根据内部发光二极管的接线根据内部发光二极管的接线 形式,可分成共阴极型图形式,可分成共阴极型图(5.4(5.4(b)b)和共阳极型图和共阳极型图(5.4(5.4(c)c)。 a ab bc cd de ef fg gdpdp(a)(b)(c)cdedp12345678910a bfgcomcomabcefabcdefgdpcomcom图图5.45.4gd0 0 1 1 1 1 1 1 3fh dp g f e d c b a a ab bc cd de ef fg gdpdpcdedp12345678910a b

32、fgcomcomabcefcomg LED数码管的数码管的ga七个发光二极管因加正电压而发亮,因加七个发光二极管因加正电压而发亮,因加零电压而不能发亮,不同亮暗的组合就能形成不同的字形,这种组零电压而不能发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码合称之为字形码(段码段码),如显示,如显示”0”,字形码为字形码为3fh。da ab bc cd de ef fg gdpdp12345678910a bfgcomcomabcefgdp g f e d c b a 0 0 0 0 0 1 1 0 06h 显示显示”1”,字形码为字形码为06h。d第5章 输入、输出接口P0P3显示显示

33、”2”,字形码为字形码为5bh。dpcoma ab bc cd de ef fg gdpdpcde12345678910comcomabcefgdp g f e d c b a 0 1 0 1 1 0 1 1 5bh d第5章 输入、输出接口P0P3 显然共阳极和共阴极的字形码是不同的,其字形显然共阳极和共阴极的字形码是不同的,其字形码见表码见表5.25.2。LEDLED数码管每段需数码管每段需10102020mama的驱动电流,的驱动电流,可用可用TTLTTL或或CMOSCMOS器件驱动。器件驱动。 字形码的控制输出可采用硬件译码方式,如采用字形码的控制输出可采用硬件译码方式,如采用BCD7

34、BCD7段译码段译码/ /驱动器驱动器7474LS48LS48、74LS4974LS49、CD4511(CD4511(共阴极共阴极) )或或7474LS46LS46、74LS4774LS47、CD4513(CD4513(其阳极其阳极) )也可用软件查表也可用软件查表方式输出。方式输出。 第5章 输入、输出接口P0P3显示字符段段 符符 号号十六进制代码dpgfedcba共阴共阳0123456789ABCDEFHP00000000000000000100111110111101111110001110111110111110100010101111111110110110110111100011

35、01111111110100101111100111100100111011011111101011013FH06H5BH4FH66H6DH7DH07H7FH6FH77H7CH39H5EH79H71H76HF3HC0F9A4B0999282F880908883C6A18684FFBF第5章 输入、输出接口P0P32.2.LEDLED数码管的接口数码管的接口 数码管的接口有静态接口和动态接口。数码管的接口有静态接口和动态接口。 静态接口静态接口为固定显示方式,无闪烁,其电路可采为固定显示方式,无闪烁,其电路可采用一个并行口接一个数据管,数码管的公共端按共阴用一个并行口接一个数据管,数码管的公共端

36、按共阴或共阳分别接地或或共阳分别接地或VccVcc。这种接法占用接口多,如果这种接法占用接口多,如果POPO口和口和P2P2口要用作数据线和地址线,仅用单片机的并口要用作数据线和地址线,仅用单片机的并行口就只能接二个数码管。行口就只能接二个数码管。 第5章 输入、输出接口P0P3动态接口动态接口采用各数码管循环轮流显示的方法,当循环采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性显示频率较高时,利用人眼的暂留特性 ,看不出闪烁,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出显示现象,这种显示需要一个接口完成字形码的输出(字形选择字形选择),另一接口完,另一接口

37、完 成各数码管的轮流点亮成各数码管的轮流点亮(数位数位选择选择)。 第5章 输入、输出接口P0P3第5章 输入、输出接口P0P3(1) #include main() P1=0 x73; P3=0 x10; 第5章 输入、输出接口P0P3(2) #include sbit P32=P32; unsigned char code tab5=0 x3f,0 x06,0 x5b,0 x4f,; main() unsigned char I; unsigned char j; while(1)P32=1; for(i=0;i=3;i+) P1=tabi; for(j=0;j=2500;j+); 第5章

38、 输入、输出接口P0P3 例如图例如图5.5是接有五个共阴极数码管的动态显示接是接有五个共阴极数码管的动态显示接口电路,用口电路,用74LS373接成直通的方式作驱动电路,阴接成直通的方式作驱动电路,阴极用非门极用非门74LS04反相门驱动,字形选择由反相门驱动,字形选择由P1口提供,口提供,位选择由位选择由P3口控制。口控制。 当当P3.0P3.4轮流输出轮流输出1时,五个数码管轮流显示。时,五个数码管轮流显示。P1.7接开关,当开关打向位置接开关,当开关打向位置“1”时,时, 显示显示“12345”字字样,当开关打向样,当开关打向“2”时,显示时,显示“HELLO”字样,程序清字样,程序清

39、单如下:单如下: 第5章 输入、输出接口P0P3 用汇编语言编程用汇编语言编程 ORG 0000H MOV P3,#0 ;清显示清显示TEST:SETB P1.7 JB P1.7,DIR1 ;检测开关检测开关 MOV DPTR,#TAB 1 ; 开关置于开关置于1,12345字形表头地址字形表头地址 SJMP DIRDIR1: MOV DPTR,#TAB2 ; 开关置于开关置于2,“HELLO”字形表头字形表头DIR: MOV R0,#0 ;R0存字形表偏移量存字形表偏移量 MOV R1,#01 ;R1置数码表位选代码置数码表位选代码NEXT:MOV A,R0 MOVC A,A+DPTR ;

40、查字形码表查字形码表1 MOV P1,A ;送送P1口输出口输出 第5章 输入、输出接口P0P3 MOV A,R1 MOV P3,A ;输出位选码输出位选码 ACALL DAY ;延时延时 INC R0 ;指向下一位字形指向下一位字形 RL A ;指向下一位指向下一位 MOV R1,A CJNE R1,#20H,NEXT ;五个五个 数码管显示完数码管显示完? SJMP TESTDAY:MOV R6,#20 ; 延时延时20ms子程序子程序DL2: MOV R7,#7DHDL1: NOP NOP第5章 输入、输出接口P0P3 DJNZ R7,DL1 DJNZ R6,DL2 RETTAB1:db

41、 06H,5BH,4FH,66H,6DH ; “15”的字形码的字形码TAB2:db 78H,79H,38H,38H,3FH ; “HELLO”的字形码的字形码 END第5章 输入、输出接口P0P3用用C C语言完成上述功能编程语言完成上述功能编程#include#define uint unsigned int#define uchar unsigned charsbit P17=P17;main( ) uchar code tab15=0 x86,0 xdb,0 xcf,0 xe6,0 xed; /*“15”的字的字 形码,形码, 因因P1.7接的开关,最高位送接的开关,最高位送“1”*/

42、 uchar code tab25=0 xf8,0 xf9,0 xb8,0 xb8,0 xbf; /*“HELLO”的段码,的段码, 最高位送最高位送 “1”*/ 第5章 输入、输出接口P0P3uchar i;uint j;while(1) P3=0 x01;for(i=0;i5;i+) if(P17=1)P1=tab1i;else P1=tab2i;P3=1;for(j=0;j=25000;j+); 第5章 输入、输出接口P0P3 5.3.25.3.2用并行口设计键盘电路用并行口设计键盘电路 键盘是计算机系统中不可缺少的输入设备,当按键少时可键盘是计算机系统中不可缺少的输入设备,当按键少时可

43、接成线性键盘接成线性键盘( (如图如图5.35.3中的按键中的按键) ),当按键较多时,这样的接法,当按键较多时,这样的接法占用口线较多。将按键接成矩阵的形式,可以节省口线,例如占用口线较多。将按键接成矩阵的形式,可以节省口线,例如两个接口可按两个接口可按8 8* *8 8的形式接的形式接6464个按键。个按键。第5章 输入、输出接口P0P3 每个按键有它的行值和列值,行值和列值的组合就是识别每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPUCPU通信。每个按键的状态同样需变成数字量通

44、信。每个按键的状态同样需变成数字量“0 0”和和“1 1”,开关,开关的一端通过电阻接的一端通过电阻接Vcc(Vcc(列列) )、而接地是通过程序输出数字、而接地是通过程序输出数字“0 0”实现的。实现的。 第5章 输入、输出接口P0P3键盘处理程序的任务是:键盘处理程序的任务是:确定有无键按下;确定有无键按下;判哪一个键按下,判哪一个键按下, 键的功能是什么;键的功能是什么;还要消除按键在闭合或断开时的抖动。还要消除按键在闭合或断开时的抖动。 第5章 输入、输出接口P0P3 两个并行口中,一个输出扫描码,两个并行口中,一个输出扫描码, 使按键逐行动态接地使按键逐行动态接地( (称行扫描称行扫

45、描) ),另一个并行口输入按键状态,另一个并行口输入按键状态( (称回馈信号,键盘的称回馈信号,键盘的列值列值) ), 由行扫描值和回馈信号共同形成键编码而识别按键、由行扫描值和回馈信号共同形成键编码而识别按键、通过软件查表,查出该键的功能。也可由硬件编码器完成键的通过软件查表,查出该键的功能。也可由硬件编码器完成键的编码。编码。第5章 输入、输出接口P0P3 下图中,用下图中,用8 8XX51XX51的并行口的并行口P1P1接接4 44 4矩阵键盘,以矩阵键盘,以P1.0P1.0P1.3P1.3作输出线,以作输出线,以P1.4P1.4P1.7P1.7作输入线,键盘扫描程序的流程如作输入线,键

46、盘扫描程序的流程如图图5.75.7所示。所示。5a第5章 输入、输出接口P0P3 EE DE BE 7E ED DD BD 7D EB DB BB 7B E7 D7 B7 77 第5章 输入、输出接口P0P3Y返回键编码返回键编码读读P1.3P1.4值值置行扫描初值置行扫描初值扫描位从扫描位从P1口输出口输出P1口的高四位和低四位口的高四位和低四位相或得键编码相或得键编码扫到最后一行扫到最后一行?NN(有键按下)有键按下)N开始开始P1.0P1.3输出输出0延时去抖动延时去抖动P1.4P1.7全为全为1?P1.4P1.7全为全为1?YY(无键按下无键按下)第5章 输入、输出接口P0P3第5章

47、输入、输出接口P0P3 对键盘的程序流程图对键盘的程序流程图5.7说明如下:说明如下: 当当P1.0P1.3输出输出0时,如无键按下,时,如无键按下,P1.4P1.7的输的输入值均为入值均为“1”,如果其中有一个不是,如果其中有一个不是 “1”,说明有键按下,说明有键按下,再使再使P1.0P1.3逐个输出零逐个输出零(行扫描行扫描),检查,检查P1.4P1.7的的输入值有无零,从而查出是哪行哪列的键按下。在判按输入值有无零,从而查出是哪行哪列的键按下。在判按键时,按键有抖动,可采用延时后再重读以跳过抖动时键时,按键有抖动,可采用延时后再重读以跳过抖动时段段(也可用也可用R-S触发器闩锁电路硬件

48、消抖,但这样电路复杂,触发器闩锁电路硬件消抖,但这样电路复杂,在矩阵键盘中不采用在矩阵键盘中不采用)。第5章 输入、输出接口P0P3ORG 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,无键按下,重检测键盘,无键按下

49、,重检测键盘HAVE: ACALL DAY ;延时去抖动;延时去抖动MOV A,#0FE ;有键按下,逐行扫描键盘,置扫描初值;有键按下,逐行扫描键盘,置扫描初值第5章 输入、输出接口P0P3 NEXT: MOV B,A ;扫描码暂存于;扫描码暂存于BMOV P1,A ;输出扫描码;输出扫描码READ: MOV A,P1 ;读键盘;读键盘ANL A,#0F0H ; 屏蔽屏蔽P1.0P1.3, 检测检测P1.4P1.是否全为是否全为1CJNE A,0F0H, AREAD ;P1.4P1.7不全为不全为1, 该行有键按下该行有键按下MOV A,B ;被扫行无键按下,准备查下一行;被扫行无键按下,准

50、备查下一行RL A ;置下一行扫描码;置下一行扫描码CJNE A,#0EFH,NEXT ;未扫到到最后一行循环;未扫到到最后一行循环第5章 输入、输出接口P0P3AREAD: MOV A,P1 ;再读键盘;再读键盘ANL A,#0F0H ; 屏蔽屏蔽P1.0P1.3,保留,保留P1.4P1.7(列码列码)MOV R2,A ;暂存列码;暂存列码MOV A, B ANL A,#0FH ;取行扫描码;取行扫描码ORL A,R2 ;行码、列码合并为键编码;行码、列码合并为键编码YES1: MOV B,A ;键编码存于;键编码存于BLJMP SAM38 ;转键分析处理程序(见例;转键分析处理程序(见例3

51、-8)第5章 输入、输出接口P0P3第5章 输入、输出接口P0P3void dlms (void) /* 延时延时 */uchar i;for (i=200;i0;i-) 第5章 输入、输出接口P0P3uchar kbscan (void) /* 键盘扫描函数键盘扫描函数 */uchar sccode, recode;P1=0 xf0; /* P1.0P1.3发全发全0, P1.4P1.7输入输入 */ if(P1 & 0 xf0)!=0 xf0) /* 如如P1口高四位不全为口高四位不全为1有键有键 按下按下 */ dlms ( ); /* 延时去抖动延时去抖动 */ if (P1 & 0 xf0)!=0 xf0) /*再读输入值再读输入值*/ sccode=0 xfe /*

温馨提示

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

评论

0/150

提交评论