单片微机原理P3:80C51外部拓展系统

  外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。
 
0. IO接口电路概念与存储器拓展

1. 为什么需要IO电路?:1. 协调计算机与外设的速度的差异 2. 输入/输出过程中的状态信号 3. 解决计算机信号与外设信号之间不一致
2. IO传送方式三种:1. 无条件传送(灯,DAC),2. 查询,3. 中断(ADC)。
 
3. DMA存储方式(直接传输数据不通过CPU,这种方式实际上已经很古老了,都快要被淘汰了(当然还存在STM32,51这些低级产品中)。)
  工作流程:
  ①CPU通过指令,把要传送的数据块的长度、传送数据块在内存中的首地址等信息写入DMA控制器。
  ②外设通过DMA控制器向CPU发出DMA请求。
  ③CPU接受DMA请求后,暂停正在执行的程序,并且放弃对总线的控制权,由DMA控制器来接管,外设的数据线和存储器的数据线经过DMA控制器的通道直接连通。
  ④DMA控制器通过地址总线向存储器发出传送数据的地址。
  ⑤如果是外设向存储器传送数据,DMA控制器向外设发出读信号,读出数据,DMA控制器向存储器发出写信号,则写入数据,由于两者的数据线是直接连接的,数据读、写的操作就可以连续进行,很快地完成一次数据传送。
  ⑥数据块长度计数器减1,然后重复以上进程,直到数据块传送完毕。
  ⑦DMA操作结束,CPU再次恢复对总线的控制,继续执行原来的程序。
以上的传送过程,一次数据传输一般只要几个时钟周期就可以完成。
 
4. 在无条件传送方式下,CPU和外设端口之间也要有接口电路。
  1. 在输入端口上会有一个输入缓冲器:
    在不做输入操作时,缓冲器处于高阻状态,CPU实际上和输入外设没有连接;
    需要做输入操作时,地址译码器的输出使缓冲器正常工作,输入设备的信息就可以通过缓冲器读入到CPU。
 
  2. 在输出的端口上一般会有一个输出锁存器:CPU将要输出的信息存入输出锁存器中,外设从锁存器读取信息。
 
  接口电路也至少需要两个端口:状态端口和数据端口,用以分别传送状态信息和数据信息。(这就是ADC芯片所设计的那样的。)
 
5. 单片机从逻辑上有3个存储器寻址空间
片内RAM空间:00H~FFH
片外RAM空间:0000H~FFFFH
片内外统一编址的ROM空间:0000H~FFFFH (注意是片外,如果是片内+片外为0000~0FFFH,然后片外再从1000H开始到FFFFH)
 
6. 扩展ROM时,用控制线PSEN,指令用MOVC
  扩展RAM时,用控制线RD和WR,指令用MOVX
  单片机是通过地址(AB)、数据(DB)和控制总线(CB)与外部交换信息的。
 
1. 存储器的拓展(ROM & RAM)

  1. 拓展程序存储器(以拓展2732为例)(一定要会)
  现在我们来解释一下这些引脚的意思:
  ALE引脚:和我们之前的说的是一样的,就是实现对P0口的分时复用,要注意这个ALE很坑的地方是他是在下降沿P0口的地址输出信号才有效,所以锁存芯片一定要选对(比如这里选的就是373,如果选那些上升沿触发的377之类的,请加个反相器再加上去)。
  PSEN引脚:引脚功能如其名:外部程序存储器选通信号PSEN,所以接2732的使能片很符合常理。(低电平有效)
  2732的CE引脚:片选信号端,用P2.5~2.7进行选通。
  关于时钟,ALE,PSEN,P2,P0的时序图:
  注意ALE和PSEN是同步开始的,P2和P0的信号相对于PSEN和ALE都是有延迟的
  
 
译码器法:(其实就是加了个译码器而已,简单)
  
 
2. 拓展外部RAM(以拓展6116为例)(一定要会)
  SRAM(51的内部内存都是SRAM)通常用于小于64KB的小系统,DRAM(我们的电脑内存是DRAM)用于大于64KB的大系统。
  拓展RAM和ROM的做法其实是差不多的,但是唯一的不一样是ROM是拓展的PSEN,所以PSEN要接ROM的OE,但是对于RAM来说,它读写双向的,所以我们只要拓展把80C51的RD端接6116的OE端,WR端接6116的WE端就可以了,同时注意,6116也是有片选端(CE)的,我们也可以像ROM那样对RAM进行片选。
 
3. 拓展FLASH(RAM + ROM)
  就是把ROM和RAM的拓展方式结合起来,既要接PSEN又要接WR和RD
 
  注意这里的PSEN,WR,RD,WE,CS和OE都是低电平有效的,一旦哪个引脚低电平了就可以把FLASH对应成相应存储器,比如当PSEN为低电平时,这个Flash就是个程序存储器,WR为低表示以外部RAM写,ED为低则表示以外部RAM读(可能这个电路有点复杂,其实只用仔细看一下就知道只要有一个是低电平CS就会是低,然后你就可以把它看成是什么都行了)。
  注意这里的拓展还用P1拓展了地址,输出的时候注意:
;(写)
MOV P1,#05H
MOV DPTR, #0AAAAH
MOV A, #3FH
MOVX @DPTR, A
 
;(读)
MOV P1,#02H
MOV DPTR, #0AAAAH
MOVX A, @DPTR
;地址由P0,P1.0~2,P2共同决定
 当然了我们也可以不占用P1来拓展这个芯片,由于我们只用保证必须要有信号就可以了,所以我们可以用锁存器来继续拓展这个芯片,这样就可以只用P0~P2了(程序设计要麻烦一点而已)。
 
4. 奇葩拓展芯片2718(有BUSY和READY位告知CPU已经完成转换)
 
  仔细看下RD和PSEN,他们是通过一个与门来连接同样是低电平有效的OE,这个芯片的特别之处在于他有BUSY位(低电平有效)和RDY(Ready)位,看英文就知道是怎么回事。
 
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值