单片机原理及应用(C语言版)8 第8章 节 单片机系统扩展.ppt

单片机原理及应用(C语言版)8 第8章 节 单片机系统扩展.ppt

  1. 1、本文档共95页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理及应用(C语言版)8 第8章 节 单片机系统扩展.ppt

单片机原理及应用 (C语言版) 第8章 单片机系统扩展;第8章 单片机系统扩展 ; ;8.1 扩展并行三总线 ;8.1.1 片外三总线结构 ; 74HC573简介 74HC573是有输出三态门的电平允许8位锁存器。引脚信号如下: OE:输出允许端,为0时芯片有效。 LE:锁存控制端,高电平时,锁存器的数据输出端Q的状态,与数据输入端D相同,即锁存器是透明的;当LE端从高电平返回到低电平时(下降沿后),输入端的数据就被锁存在锁存器中,数据输入端D的变化不再影响Q端。; 一、地址总线 地址总线(Address Bus,AB)用于传送单片机送出的地址信号,以便进行存储器单元和I/O端口的选择。 地址总线是单向的,只能由单片机向外发送信息。 地址总线的数目决定了可直接访问的存储单元的数目。 ; 二、数据总线 数据总线(Data Bus,DB)用于单片机与存储器或I/O端口之间的数据传送。 一般数据总线的位数与CPU的字长一致,MCS-51单片机的数据总线是8位的。 数据总线是双向的,可以进行两个方向的数据传送。 三、控制总线 控制总线(Control Bus,CB)是单片机发出的以控制片外ROM、RAM和I/O口读/写操作的一组控制线。 ;8.1.2 MCS-51系统扩展的实现; 二、以P2口作为高8位的地址总线 P0口的低8位地址加上P2的高8位地址就可以形成16位的地址总线,达到64KB的寻址能力。 实际应用中,往往不需要扩展那么多地址,扩展多少用多少口线,剩余的口线仍可作一般I/O口来使用。; 三、控制信号线 ALE:地址锁存信号,用以实现对低8位地址的锁存。 PSEN:片外程序存储器读选通信号。 EA:程序存储器选择信号。为低电平时,访问外部程序存储器;为高电平时,访问内部程序存储器。 WR:片外数据存储器写选通信号。 RD:片外数据存储器读选通信号。;8.1.3 总线驱动; 总线驱动器的作用:对于单片机的I/O口只相当于增加了一个TTL负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用。 在对TTL负载驱动时,只需考虑驱动电流的大小。 在对MOS负载驱动时,MOS负载的输入电流很小??更多地要考虑对分布电容的电流驱动。 ; 总线驱动器的选择: 系统总线中地址总线是单向的,因此驱动器可以选用单向的,如74LS244,还带有三态控制,能实现总线缓冲和隔离。 数据总线是双向的,其驱动器也要选用双向的,如74LS245。74LS245也是三态的,有一个方向控制端DIR。DIR=1时输出(An→Bn),DIR=0时输入(An←Bn)。 ;8.2 扩展简单并行输入/输出口; 例1 在图8-4中,当P2.0=0,WR=1,RD=0时,通过74HC244(扩展输入)读入按键状态,当P2.0=0,WR=0,RD=1时,通过74HC573(扩展输出)根据按键状态驱动发光二极管发光。 74HC244、74HC573的操作地址设为0xfeff。;P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 89C52 WR P2.0 RD; C语言程序清单: #include reg52.h void main() { unsigned char data tmp1, tmp2=0; unsigned char xdata *pt1; pt1=0xfeff; //给指针赋地址值0xfeff while(1) //循环 { tmp1=*pt1; //从74HC244输入数据 if (tmp1!=tmp2) //判断输入改变时, { *pt1 =tmp1; //从74HC573输出数据 tmp2=tmp1; } } }; 汇编语言程序清单: MOV 30H,#00H ;设一初值 MOV DPTR,#0FEFFH ;设端口地址 LOOP: MOVX A,@DPTR ;从244读键盘新值 CJNE A, 30H, NEXT ;与上次值比较 SJMP LOOP ;相等再读键盘值 NEXT: MOV 30H,A ;保存新键盘值 MOVX @DPTR,A ;从573输出键盘值 SJMP LOOP ;继续读取键盘值 ;8.

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档