- 1、本文档共95页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)