在MCS-51单片机应用系统中,采用TTL电路、CMOS电路锁存器或三态门电路也可构成各种类型的简单输入/输出口,在有些场合用以降低成本、缩小体积。通常这种I/O都是通过P0口扩展。由于P0口只能分时使用,故构成输出口时,接口芯片应具有锁存功能;构成输入口时,根据输入数据是常态还是暂态,要求接口芯片应能三态缓冲或锁存选通。数据的输入、输出由单片机的读/写信号控制。
1.用74LS377扩展8位并行输出口
通过P0口扩展输出口时,锁存器被视为一个外部RAM单元,输出控制信号为
74 LS377为带有允许输出端的8D锁存器,有8个D输入端,8个Q输出端,一个时钟输入端CP,一个锁存允许信号。当=0时,CP端的上跳变将把8位D输入端的数据送入8位锁存器,这时在Q输出端将保持D端输入的8位数据。利用74 LS377的这些特性,可以将其作为8031系统中的一个8位输出口.接口电路如图6-31所示。
图6-31中,8031的P0口与74LS377的D端相连,与CP相连,P2.7作为74LS377的片选信号。当P2.7低电平有效时,在的上升沿,P0口输出的数据将被74LS377锁存起来,并在Q端输出。
图6-31中74LS377的口地址为7FFFH,若将一个数据字节由74LS377输出,则执行下面程序:
图6-31 8031单片机和74LS377的接口
图6-32 用74LS373扩展并行输入口
2.用74LS373扩展8位并行输入口
74LS373是一个三态门的8D锁存器,它可以作为8031单片机外部的一个扩展输入口,接口电路如图6-32所示。
接口电路的工作原理:当外设把数据准备好后,发出一个控制信号XT加到373的G端,即锁存控制端,使输入数据在373中锁存。同时,XT信号加到8031单片机的中断请求端,单片机响应中断,在中断服务程序中执行下面程序:
MOV DPTR,#0BFFFH
MOVX A,@DPTR
在执行上面的第二条指令时,P2.6=0,有效,通过或门后加到373的OE端,即373的三态门控制端,使三态门畅通,锁存的数据读入到累加器A中。(www.daowen.com)
3.用三态门扩展8位并行输入口
对于常态数据的输入,只需采用8位三态门控制电路芯片即可。图6-33是用74LS244通过P0口扩展的8位并行输入口。图中,三态门由P2.6和逻辑或控制,其数据输入使用以下几条指令:
图6-33 用74LS244扩展并行输入口
MOV DPTR,#0BFFFH ;指向74LS244口地址MOVX A,@DPTR ;读入数据
4.采用74LSTTL的I/O接口扩展应用举例
如图6-34所示是一个利用74LS273和74LS244,将8位P0接口扩展成简单的输入、输出口的电路。74LS273是8D锁存器扩展输出口,输出端接8个LED发光二极管,以显示8个按钮开关状态,某位低电平时二极管发光。74LS244是缓冲驱动器,扩展输入口,它的8个输入端分别接8个按钮开关。74LS273与74LS244的工作受P2.0、三条控制线控制。
图6-34 74LSTTL I/O扩展举例
电路工作原理:当P2.0=0,时选中74LS273芯片,CPU通过P0接口输出数据锁存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点亮;当P2.0=0,时选中74LS244,此时若无按钮开关按下,输入全为高电平,当某按钮开关按下时则对应位输入为“0”,74LS244的输入端不全为“1”,其输入状态通过P0接口数据线被读入8031片内。
总之,在图6-34中只要保证P2.0端低电平就有可能使扩展输入口/输出口工作,至于哪一个口工作受和控制线控制,二者不会同时为“0”,故在图6-34中,两个扩展芯片可共用一个地址。
扩展口地址确定原则,只要保证P2.0为“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(无效位全为“1”),或用0000H(无效位全为“0”)。
输出程序段:
输入程序段:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。