第8章单片机资源扩展.ppt

上传人:本田雅阁 文档编号:3435487 上传时间:2019-08-25 格式:PPT 页数:46 大小:3.38MB
返回 下载 相关 举报
第8章单片机资源扩展.ppt_第1页
第1页 / 共46页
第8章单片机资源扩展.ppt_第2页
第2页 / 共46页
第8章单片机资源扩展.ppt_第3页
第3页 / 共46页
第8章单片机资源扩展.ppt_第4页
第4页 / 共46页
第8章单片机资源扩展.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《第8章单片机资源扩展.ppt》由会员分享,可在线阅读,更多相关《第8章单片机资源扩展.ppt(46页珍藏版)》请在三一文库上搜索。

1、单片机原理及应用 (第八章 单片机资源扩展),教学内容,单片机扩展的总线结构 存储器扩展 简单输入/输出口扩展 可编程并行接口8255A 可编程接口8155,DATE: 2019/8/25,PAGE: 2,一、单片机扩展的总线结构,单片机资源扩展的典型结构是总线结构。 各扩展部件通过总线与单片机连接起来,相当于系统中各部件挂在总线上,分时利用总线与CPU通讯。 当选中某部件时,可对该部件进行读写及控制,而其它部件与总线间处于“高阻态”,相当于与总线断开。,DATE: 2019/8/25,PAGE: 3,一、单片机扩展的总线结构,单片机系统的三总线构造方法如下: 以P0口线作数据总线/低位地址总

2、线:先由P0口线作地址总线把低8位地址送锁存器,由锁存器提供给系统,然后再将P0口线作数据总线读写数据,从而实现地址总线的低8位地址信号和数据总线共用P0口线而不产生冲突。 以P2口线作高位地址总线:P2口线最多可提供8位高位地址,加上P0口线提供的低8位地址,最多可提供16位地址,可使单片机系统的寻址范围最大达到64KB。 采用功能引脚形成控制总线:由 RD(P3.6引脚)和 WR(P3.7引脚)作为读写选通信号线;由ALE作为地址锁存信号线,以配合P0口实现分时复用;PSEN以 作为片外程序存储器读选通信号线;以EA 作为片内和片外程序存储器的选择信号。,DATE: 2019/8/25,P

3、AGE: 4,二、存储器扩展,存储器片选方法 线选法:单片机系统的地址线与存储芯片的地址线从低到高依次相接后,由用剩余的高位地址线直接与芯片片选引脚相连作为片选信号。线选法连线简单,但地址空间不连续,适用于扩展容量较小且芯片数目较少的情况。 译码法:单片机系统的地址线与存储芯片的地址线相接后,剩余的高位地址线与译码器相连,以译码器的输出作为芯片的片选信号。译码法能有效利用存储空间,且地址连续,适用于多芯片下的扩展。常用译码器芯片有74LS138等。,DATE: 2019/8/25,PAGE: 5,二、存储器扩展,程序存储器扩展 地址线:地址是由P0和P2口提供的。ROM的地址线(A0A15)中

4、,低8位A0A7通过锁存器74LS373与P0口连接,高8位A8A11直接与P2口的P2.0P2.7连接。 数据线:片外ROM的8位数据线直接与单片机的P0口相连。,DATE: 2019/8/25,PAGE: 6,二、存储器扩展,控制线:CPU执行ROM中存放的程序指令时,取指阶段就是对ROM进行读操作。读操作控制线有以下几条: 地址锁存信号ALE:单片机的ALE管脚与锁存器的锁存使能端,G相连,用于单片机从片外ROM在读指令时给出低8位地址的锁存信号。 片选信号CS:低电平有效。如果系统中只扩展了一片程序存储器芯片,可将该片选端直接接地,使该芯片一直有效。若同时扩展多片,需通过线选法或译码法

5、来完成片选工作。 读选通信号OE:低电平有效。该引脚接8051的片外ROM读选通信号端PSEN。在访问片外程序存储器时,只要端出现负脉冲,即可从ROM中读出指令或数据。 片外程序存储器的选用控制信号EA:当EA引脚接高电平时,CPU只访问单片机内部的程序存储器并执行内部程序存储器中的指令,但当程序存储量超过内部程序存储器的最大容量时,将自动转去执行单片机外部程序存储器内的程序。当输入信号 引脚接低电平(接地)时,CPU只访问外部程序存储器并执行外部程序存储器中的指令。,DATE: 2019/8/25,PAGE: 7,二、存储器扩展,在执行片外ROM读指令时,单片机自动进行的操作时序: (1)首

6、先由PO口和P2口给出16位地址,然后ALE出现下降沿通知锁存器74LS373将P0口的低8位地址锁存; (2)PSEN出现低电平,使片外ROM有效; (3)根据锁存器74LS373和P2口提供的地址取出指令并送P0口,由P0口读入单片机执行。 在上述过程中,数据存储器RAM读写信号端WR和RD一直处于高电平状态,使RAM与总线隔离。,DATE: 2019/8/25,PAGE: 8,二、存储器扩展,例8-1 根据下图电路编写程序用数码管显示0-9共10个数字循环显示。,DATE: 2019/8/25,PAGE: 9,二、存储器扩展,#include unsigned char led=0xC0

7、,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/字型码 int main(void) unsigned char i; while(1) for(i=0;i10;i+)/循环显示10个数字 P1=ledi; delay();/延时一段时间 ,DATE: 2019/8/25,PAGE: 10,void delay()/延时函数 int i,j; for(i=0;i3000;i+) for(j=0;j5;j+); ,二、存储器扩展,数据存储器扩展 数据存储器RAM的扩展主要用到以下3个控制信号: ALE:低8位地址锁存控制信号,通常接地址锁存器的LE引

8、脚; WR:外部RAM写信号,低电平有效,接数据存储器的WR引脚; RD:外部RAM读信号,低电平有效,接数据存储器的RD引脚。,DATE: 2019/8/25,PAGE: 11,二、存储器扩展,在执行片外RAM读写指令时,单片机自动进行的操作时序与读ROM相似: (1)首先由PO口和P2口给出16位地址,然后ALE出现下降沿将P0口的低8位地址锁存,改由锁存器74LS373提供; (2)在读数据时RD出现低电平,WR出现高电平,使读片外RAM有效,并根据锁存器74LS373和P2口提供的地址取出指令并送P0口输出,由P0口读入单片机。 (3)在写数据时时首先将数据加载到P0口线上,然后RD引

9、脚出现高电平,WR引脚出现低电平,使写片外RAM有效,并根据锁存器74LS373和P2口提供的地址将P0口线上的数据写入片外RAM。,DATE: 2019/8/25,PAGE: 12,二、存储器扩展,例8-2 根据图8-4编写程序将数码管显示0-9共10个数字的字型码存储到6264中,然后从6264中循环读出字型码并送数码管显示。,DATE: 2019/8/25,PAGE: 13,二、存储器扩展,#include #include unsigned char led=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/字型码 int main(

10、void) unsigned char i; for(i=0;i10;i+)/存储10个数字字型码 XBYTE0x8000+i=ledi; while(1) for(i=0;i10;i+)/循环显示10个数字 P1=XBYTE0x8000+i; delay();/延时一段时间 ,DATE: 2019/8/25,PAGE: 14,void delay()/延时函数 int i,j; for(i=0;i30000;i+) for(j=0;j5;j+); ,三、简单输入/输出口扩展,简单输入/输出口扩展 简单输入扩展主要采用三态数据缓冲器实现,目的是使被选通的输入设备能独占数据总线向单片机输入数据,

11、而未被选通的设备与数据总线隔离。常用的三态数据缓冲器芯片有74LS244、74LS245等。 简单输出扩展主要采用三态数据锁存器实现,目的是使单片机能通过数据总线向被选通的设备输出数据,而未被选通的设备与数据总线隔离。常用的三态数据锁存器芯片有74LS373、74LS273、74LS573等。,DATE: 2019/8/25,PAGE: 15,三、简单输入/输出口扩展,例8-3 如图8-6示,8051单片机使用74LS373和74LS245展I/O口,分别连接发光二极管和拨码开关,要求编写控制程序,通过开关的拨动控制发光二极管的亮灭。,DATE: 2019/8/25,PAGE: 16,三、简单

12、输入/输出口扩展,#include #include #define PORT XBYTE0xFFFF /地址写什么都可以 int main(void) unsigned char temp; while(1) temp=PORT; /读存储单元操作,即通过74LS245获取开关数据 PORT=temp; /写存储单元操作,即通过74LS373用开关数据控制发光二极管 ,DATE: 2019/8/25,PAGE: 17,四、可编程并行接口8255A,在简单I/O扩展中,一个缓冲器或锁存器只能扩展8位,而且芯片功能单一,不利于单片机灵活地改变扩展方法解决实际需要。 8255A可通过软件编程的方式

13、确定或改变其工作方式,广泛用于单片机系统的I/O端口扩展。,DATE: 2019/8/25,PAGE: 18,四、可编程并行接口8255A,(1)和外设相连的引脚 PA7PA0 :A端口数据信号引脚 PB7PB0 :B端口数据信号引脚 PC7PC0 :C端口数据信号引脚,DATE: 2019/8/25,PAGE: 19,四、可编程并行接口8255A,DATE: 2019/8/25,PAGE: 20,(2)和CPU相连的引脚 RESET:复位信号,高电平有效。当该引脚为高电平时,所有内部寄存器都被清除,同时A、B、C三个数据端口被自动设为输入端口。 D7D0:8255A的数据线,和系统数据总线相

14、连。 RD:读引脚,低电平时,CPU可以从8255A选中的端口读出数据,经系统数据总线送入CPU。 WR:写引脚,低电平时,CPU可以向8255A选中的端口写入数据。 CS:片选引脚,低电平时,可以选中对该芯片操作。,四、可编程并行接口8255A,DATE: 2019/8/25,PAGE: 21,(2)和CPU相连的引脚 A1、A0:端口选择信号,接系统地址总线。8255A内部有3个数据端口和1个控制端口,共4个端口。A1、A0不同组合时,对应选中不同端口,如下表所示:,四、可编程并行接口8255A,8255A的控制 8255A共有两个控制字,一个是方式选择控制字,另一个是C端口的置位/复位控

15、制字,这两个控制字通过第7位来区分。如果第7位为1,则该控制字是方式选择控制字,否则是C端口的置位/复位控制字。 (1)方式选择控制字 方式选择控制字用于设定8255A各端口的工作方式,具体格式如下:,DATE: 2019/8/25,PAGE: 22,四、可编程并行接口8255A,C端口按位置1/清0控制字 C端口按位置1/置0控制字可以对C端口中的任何一位进行置位/复位,具体格式如下图所示:,DATE: 2019/8/25,PAGE: 23,四、可编程并行接口8255A,8255A的应用 8255A与单片机在采用线选法的情况下最多可连接6片8255,可满足一般情况下的需要。三总线构成如下:

16、地址总线:地址线A0和A1连接P2.6和P2.5; 数据总线:8255A的数据线D0D7同8051单片机的P0端口相连;,DATE: 2019/8/25,PAGE: 24,四、可编程并行接口8255A,控制总线: (1)片选信号线CS连接单片机P2.7 。 (2) 在工作方式0下,因为A口、B口和C口都作为I/O口,将8255A的RESET、RD和WR引脚与单片机信号线连接。 (3)在方式1和方式2下,C口作为联络信号,要根据外设的情况将C口的某些位与单片机或外设相连。,DATE: 2019/8/25,PAGE: 25,四、可编程并行接口8255A,例8-4 如图8-11所示, 8255A的A

17、端口和B端口分别连接两个7段数码管,编程实现两数码管分别静态显示“0”和“1”。,DATE: 2019/8/25,PAGE: 26,四、可编程并行接口8255A,#include #include #define PORT_A XBYTE0x1FFF /A15=0,A14A13=00 #define PORT_B XBYTE0x3FFF /A15=0,A14A13=01 #define PORT_CTL XBYTE0x7FFF /A15=0,A14A13=11 int main(void) PORT_CTL=0x80;/设定A、B两组工作在方式0,A和B都是输出口; PORT_A=0xC0;

18、/写“0”字型到8255A的A端口,送数码管显示 PORT_B=0xF9; /写“1”到8255A的B端口,送数码管显示 while(1) ; ,DATE: 2019/8/25,PAGE: 27,四、可编程并行接口8255A,例8-5 应用8255构成键盘/数码管接口电路,如图8-12所示。8255的PC0PC3与四位数码管的位选端相连,PA0PA7与数码管的段选端相连,PB0PB3与键盘列线相连,PC0PC3与键盘行线相连。编写控制程序,实现按下某按键后,计算相应键值的3次方,并送四位数码管显示。,DATE: 2019/8/25,PAGE: 28,四、可编程并行接口8255A,#includ

19、e #include #define uchar unsigned char #define uint unsigned int #define PORT_A XBYTE0x1FFF /A15=0,A14A13=00 #define PORT_B XBYTE0x3FFF /A15=0,A14A13=01 #define PORT_C XBYTE0x5FFF /A15=0,A14A13=10 #define PORT_CTL XBYTE0x7CFF /A15=0,A14A13=11 unsigned char Led=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8

20、,0x80,0x90,0xff;/0-9的字型码 unsigned char code Seg =0x01,0x02,0x04,0x08; /定义无符号字符型数组 /延时函数 void delay(uint i) uint j; for(j=i;j0;j-); ,DATE: 2019/8/25,PAGE: 29,四、可编程并行接口8255A,bit CheckKey()/检测有无按键按下的子函数 uchar i; PORT_A =0x00;/列线加低电平 i=(PORT_C ,DATE: 2019/8/25,PAGE: 30,四、可编程并行接口8255A,if(CheckKey()=0) re

21、turn(0xff); /无按键,返回0xff else delay(200); /延时 if(CheckKey()=0) return(0xff); /无按键,返回0xff else ScanCode=0xfe; /设置列扫描码,初始值最低位为0 for(i=0;i4;i+) /逐列扫描8次 k=0x10; /行扫描码赋初值 PORT_A=ScanCode; /送列扫描码 CodeValue=i; /键码和i值一致 for(j=0;j4;j+) if(PORT_C /返回无效键码 ,DATE: 2019/8/25,PAGE: 31,四、可编程并行接口8255A,int main(void)

22、uchar i=0; bit flag; uchar key=0x00; uint val5; PORT_CTL=0x88; /*A、B两组工作在方式0,A口输出,B口输出,C口低4位输出,C口高4位输入*/ while(1) key=KeyScan(); if(key!=0xff) val4=key*key*key;/计算键值的3次方 val0= val4/1000;/计算千位 val1= (val4%1000)/100;/计算百位 val2= (val4%100)/10;/计算十位 val3= val4%10;/计算个位,DATE: 2019/8/25,PAGE: 32,四、可编程并行接口

23、8255A,while(!CheckKey()/如果没有按键按下,则动态显示数字 for(i=0;i4;i+) if(vali=0)/标记复位 ,DATE: 2019/8/25,PAGE: 33,五、可编程接口8155,8155也是在单片机系统扩展中常用的可编程I/O接口芯片,其内部资源主要包括两个8位端口PA和PB,一个6位端口PC,一个可编程的14位减法定时/计数器,此外还有256个字节的静态RAM和8位地址锁存器。,DATE: 2019/8/25,PAGE: 34,五、可编程接口8155-引脚,DATE: 2019/8/25,PAGE: 35,8155采用40个引脚的DIP封装,各引脚功

24、能如下: (1)和CPU相连的引脚 ADOAD7:地址/数据总线。 IO/M:IO口/RAM选择输入信号线,当该口输入高电平时,选择某个I/O端口;当输入低电平时选择内部RAM,地址可由AD0AD7引脚上输入。 CS:片选信号线,低电平有效。 ALE:地址锁存允许信号线,ALE为高电平时8155将8051单片机送出的地址锁存到内部地址锁存器中。 RD:读信号线,低电平有效。 WR:写信号线,低电平有效。,五、可编程接口8155-引脚,DATE: 2019/8/25,PAGE: 36,(2)和外设相连的引脚 TMRIN(TI):定时/计数器的外部计数脉冲输入线。 TMROUT(TO):定时/计数

25、器的输出信号线,根据定时器的工作方式,可输出方波或脉冲波。 PA0PA7:A端口的8位并行I/O端口线。 PB0PB7:B端口的8位并行I/O端口线。 PC0PC5:C端口的6位并行I/O端口线。 (3)其他引脚 RESET:复位信号线,高电平有效。 VCC:电源线。 GND:地线。,五、可编程接口8155-编程控制,可使用控制字对其A、B、C端口及计数器进行控制; 可使用状态字判别各端口的工作状态; 控制字寄存器只能写不能读,而状态字寄存器只能读不能写,因此控制字和状态字寄存器可共用同一个端口地址而不会产生冲突。,DATE: 2019/8/25,PAGE: 37,五、可编程接口8155-编程

26、控制,8155的控制字 控制字的具体格式如图所示。,DATE: 2019/8/25,PAGE: 38,五、可编程接口8155-编程控制,8155的状态字 状态字格式如图8-14所示。,DATE: 2019/8/25,PAGE: 39,五、可编程接口8155-工作方式,8155有3种工作方式,分为是存储器工作方式、基本I/O和选通I/O工作方式、定时/计数器工作方式。 (1)存储器工作方式 当IO/M =0,且CE=0时,8155工作在存储器工作方式下,可通过低8位地址对片内256个字节的RAM进行读写。 (2)基本I/O和选通I/O工作方式 基本I/O口工作方式 相应的I/O端口作为普通端口,

27、无固定的联络线、无中断功能。 选通I/O工作方式 有中断功能,联络线由硬件固定确定,不能通过软件更改。,DATE: 2019/8/25,PAGE: 40,五、可编程接口8155-工作方式,(3)定时/计数器工作方式 8155内部提供一个14位的减法定时/计数器,实现对TMRIN引脚输入的时钟脉冲进行计数,每计数一次,定时/计数器的计数值减1,当减法结果溢出后, TMROUT引脚输出有效脉冲,且定时/计数器中断请求标志位TIMER置1。它有两个8位初值寄存器,其中高8位初值寄存器的最高两位确定定时/计数器的工作方式,其它6位存入计数初值的高6位;低8位初值寄存器用于存放计数初值的低8位。定时/计

28、数器的寄存器格式如下图所示。,DATE: 2019/8/25,PAGE: 41,五、可编程接口8155-工作方式,对于定时/计数器的使用要求如下: 使用8155定时/计数器之前,应首先设置其工作方式以及初值N。 设置工作方式及初值后,必须访问控制寄存器启动定时/计数器。 定时/计数器工作时可以重设新的计数初值或工作方式,但必须写入一条启动命令之后新的设置才会生效。 可使用控制命令停止定时/计数器工作。,DATE: 2019/8/25,PAGE: 42,五、可编程接口8155-编程应用,DATE: 2019/8/25,PAGE: 43,由于8155内部有地址锁存器,所以不用再外接锁存器,由单片机

29、P0端口与8155的AD0AD7相连形成数据总线和地址总线,如图所示;控制总线主要由以下几项构成: (1)IO/M :IO口/RAM选择输入信号线,当IO/ =1时,单片机访问端口。当IO/ =0时,单片机访问内部RAM。 (2)CS:片选信号线,低电平有效。 (3)ALE:地址锁存允许信号线,ALE为高电平时8155将8051单片机送出的地址信号锁存到内部地址锁存器中。 (4)RD:读信号线,低电平有效。 (5)WR:写信号线,低电平有效。,五、可编程接口8155-编程应用,表8-5是6个内部寄存器地址:,DATE: 2019/8/25,PAGE: 44,五、可编程接口8155-编程应用,例8-5 如下图,8155H的A端口和B端口分别连接两个7段数码管,编程实现两数码管分别显示“0”和“1”。,DATE: 2019/8/25,PAGE: 45,五、可编程接口8155-编程应用,#include #include int main(void) XBYTE0x7FF8=0x03; /设置控制命令字 XBYTE0x7FF9=0xC0; /访问A端口,显示“0” XBYTE0x7FFA=0xa4; /访问B端口,显示“1” while(1); ,DATE: 2019/8/25,PAGE: 46,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1