在单片机应用系统设计中,采用TTL电路或CMOS电路的锁存器、三态门,使用总线式或非总线式扩展可以实现与单片机连接。总线式扩展是利用单片机访问片外RAM功能,将要扩展的I/O接口芯片挂在总线上,使其按统一规则进行读/写,这种扩展方式可以连接的芯片多,便于日后的升级,但电路连接比较固定、灵活性不强。非总线方式扩展是用单片机的I/O口直接与接口芯片连接,其特点是灵活性强,但可连接的芯片少。
下面以TTL和CMOS电路为例,介绍I/O端口的扩展方法(这类芯片没有专门的片选信号)。
1.用TTL电路扩展并行I/O口
采用总线式扩展TTL电路可以构成简单输入/输出口,能够降低成本、减小体积。图12-7所示是采用74LS573和74LS244扩展的I/O接口电路,其中74LS573是8D锁存器,扩展输出口,输出端连接8个LED发光二极管。74LS244是三态输入缓冲器,无锁存功能,可以用作8位总线驱动器,在这个实例中用来扩展输入口,输入端连接了8个按键。
LE是74LS573的时钟脉冲信号,当LE为上升沿脉冲时,锁存器的输出等于输入,即Q=D;当LE=0时,锁存器Q端保持原来的数据。OE是使能端,OE=1时输出为高阻态,OE=0保持有效。1G、2G是74LS244的三态允许输出端,低电平有效。74LS573和74LS244的选通操作逻辑见表12-2。
图12-7中用74LS573和74LS244扩展的I/O端口地址为0000H或7FFFH。
图12-7 TTL电路扩展实例
【例12-2】 按照图12-7,LED灯一一对应按键状态,若K1按下对应L1亮,若没有键按下,则LED灯全灭,要求编程用点亮LED灯表示某按键是否按下,其参考程序段如下:
此外,用74LS374、74LS377、74LS273和74LS574同样可以扩展I/O口,其扩展方法与扩展74LS573的方法相似。其读、写操作要由地址与RD或WR产生的组合逻辑控制。
表12-27 4LS573和74LS244选通操作的逻辑功能表
2.用串行接口扩展并行输入口(www.xing528.com)
CD4014和74LS165都是具有并行输入和串行移位输出的接口电路,使用这种芯片可以将单片机的串行接口扩展成并行输入口,接口电路如图12-8所示。
图12-8 用CD4014扩展并行输入口
图12-8中CD4014的PI0~PI7为8位并行输入端,Q8为移位寄存器高位,SI为串行数据输入端,CP为时钟脉冲输入端,P/S为并/串数据输入选择端。当P/S=1时,并行输入端数据被置入寄存器;当P/S=0时允许串行输入端数据移位输出,这时在CP脉冲的作用下将寄存器的数据从高位开始依次移位输出到单片机。按照这种连接方法可以级联扩展多个8位输入口,相邻两个芯片之间前一芯片的Q8与后一芯片的SI相连。
【例12-3】 按照图12-8,从扩展的16位输入口中读入6组数据(每组数2B),读入的数据存储在片内30H开始的单元。
3.用串行接口扩展并行输出口
CD4094和74LS164都是具有串行移位输入和并行输出的接口芯片,使用这种芯片可以将单片机的串行接口扩展成并行输出口,接口电路如图12-9所示。
图12-9 用74LS164扩展并行输出口
图12-9中74LS164的QA~QH为8位并行输出端口,QH为移位寄存器高位,A、B为串行数据输入端,CP为时钟脉冲输入端,CLR为复位输入端,低电平有效。通过串行传输数据时,单片机的串口从低位开始依次移位输出。在串口输出1字节数据后,该数据的低位被移位到QH,高位移送到QA。由于74LS164没有并行输出控制端,因此其并行输出端的状态会不断变化。
【例12-4】 按照图12-9,将片内30H、31H单元的内容通过串行接口传送到扩展的16位输出口。程序段如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。