0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机串行口扩展的方法详细说明

Wildesbeast 来源:单片机教程网 作者:单片机教程网 2020-06-07 12:01 次阅读

单片机系统扩展是指单片机内部各功能部件不能满足应用系统要求时,在片外连接相应的外围芯片以满足应用系统的要求。

对单片机系统扩展的方法有并行扩展和串行扩展两种。

串行口的扩展方法

常用的标准51单片机内部仅含有一个可编程的全双工串行通信接口,具有UART的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。当以此类型单片机构成分布式多级应用系统时,器件本身的串口资源就不够用了。笔者在实际开发中,查阅了有关资料,总结出如下两种常用而有效的串行通道扩展方法。

2.1 基于SP2538的扩展方法

SP2538是专用低功耗串行口扩展芯片,该芯片主要是为解决当前基于UART串口通信的外围智能模块及器件较多,而单片机或DSP原有的UART串口又过少的问题而推出的。利用该器件可将现有单片机或DSP的单串口扩展至5个全双工串口。使用方法简单、高效。

在应用SP2538扩展串行通道时,母串口波特率K1=2880*Fosc_in,单位是MHz,且Fosc_in小于20.0MHz, 在SP2538输入时钟Fosc_in =20.0MHz时母串口可自适应上位机的56000bps和57600bps两种标准波特率输入。子串口波特率K2=480*Fosc_in。

母串口和所有子串口都是TTL电平接口,可直接匹配其他单片机或TTL数字电路,如需连接PC机则必须增加电平转换芯片如MAX202 、MAX232 等。SP2538具有内置的上电复位电路和可关闭的看门狗监控电路。上位机写命令字0x10可实现喂狗,写命令字0x15关闭看门狗,初次上电后看门狗处于激活状态或写命令字0x20激活看门狗监控功能。上位机可通过芯片复位指令0x35在任何时候让芯片进行指令复位,也可通过芯片睡眠指令0x55在任何时候让芯片进入微功耗睡眠模式以降低系统功耗。初次上电后芯片不会自行进入睡眠模式,但只能由上位机通过母串口任意发送一个字节数据将其唤醒,其他子串口不具备这一功能。

图(1)是AT89C52单片机与SP2538的电路连接,图中,AT89C52的全双工串口与SP2538的母串口5相连,该串口同时也作为命令/数据口。SP2538的ADRI0、ADRI1、ADRI2分别与AT89C52的P2.3、P2.4、P2.5口相连,可用于选择发送数据是选择相应的串口0~4;ADRO0、ADRO1、ADRO2与P2.0、P2.1、P2.2相连,用于判断接收的数据来自哪一个串口。 SP2538的时钟频率选为20.0MHZ,此时母串口5的波特率为57600bps,串口0~4的波特率为9600bps。

下面是与上述硬件电路相关的接口程序,该程序用A51汇编语言编制,程序仅说明了中断方式下对子串口0(TX0、RX0)的操作,其它子串口类似。

TBLOCK DATA 20H

RBLOCK DATA 30H

LENGTH DATA 14H

TXR_REV_SEND: CLR ES

JBC RI,RECEIVE

CLR TI

MOV A,@R0

CLR P2.0 ; 写数据到“SBUF”前必须先置欲发送子串口的地址

CLR P2.1

CLR P2.2

MOV SBUF,A

DJNZ R2,NEXT

SJMP $

NEXT: INC R0

RETI

RECEIVE: MOV A,P2

AND A,#31H ;判断是否为子串口0

JNZ ELSE

MOV A,SBUF

MOV @R1,A

INC R1

RETI

图(1) AT89C52与SP2538的电路连接

2.2 基于Intel8251的串行口扩展方法

上面基于SP2538的串口扩展方法可以说是一种串行的扩展方法,这里基于Intel8251的扩展方法则是一种并行的方法。Intel8251是一种通用的同步/异步发送器(USART),它的工作方式可以通过编程设置。能够以同步或异步串行通信方式工作,能自动完成帧格式。

Intel8251具有独立的接收/发送器。在异步方式下,用于产生8251内部时序的时钟CLK输入至少应为发送或接收时钟的4.5倍。接收/发送(RXC/TXC)时钟应为波特率的1倍、16倍或64倍(由8251的工作方式字设定)。

图(2)是用Intel8251扩展一个串行通道的电路原理,图中,11.0592MHZ晶振经ALE6分频后于 、组合,产生1.8432MHZ的时钟频率,分别作为8251与8253的时钟输入,若设定8251通信波特率为9600bps,波特率因子为16,则需要 153.6KHZ的接收/发送时钟频率,该频率可由8253的OUT0产生。

下面的A51程序段说明了如何设置8253使其产生153.6KHZ的方波,以及如何用8251收/发数据:

;设置8253的程序段:

MOV A,#36H ; 计数器0输出方波控制字

MOV DPTR,#0FFFFH ; 指向控制字寄存器

MOVX @DPTR,A

MOV DPTR,#0FFFCH ; 指向0计数器地址

MOV A,#0DH

MOVX @DPTR,A

MOV A,#0

MOVX DPTR,A

SETB P1.0

;操作8251的程序段:

START: MOV DPTR,#7FFFH ;8251控制、命令口地址

MOV A,#5EH ;一个停止位,奇校验,8位数据,异步*16

MOVX @DPTR,A ;写入方式字

MOV A,#15H

MOVX @DPTR,A ;命令字,启动发送和接收器

LOOP: SJMP LOOP ;等待8251中断

8251_INT: ;现场保护

MOV DPTR,#7FFFH

MOV A,@DPTR

JB ACC.0,TX_INT

JB ACC.1,RX_INT

INT_EXIT: ;恢复现场

RETI

;发送数据

TX_INT: MOV DPTR,#7FFEH ;8251数据口地址

MOV A,20H

MOVX @DPTR,A

AJMP INT_EXIT

;接收数据

RX_INT: MOV DPTR,#7FFEH

MOVX A,@DPTR

MOV 30H,A

AJMP INI_EXIT

图(2)用8251扩展串行通道的硬件电路原理

并行扩展是指利用单片机三组总线(AB,DB,CB)进行的系统扩展。

串行扩展是指利用SPI(Serial Peripheral Interface)三线总线和I2C双总线的串行系统扩展。

1,外部并行扩展

单片机是通过芯片的引脚进行系统扩展的。为了满足系统扩展的要求,MCS-51系列单片机芯片引脚可以构成可以构成下图所示的三总线结构,单片机所有的外部芯片都是通过这三组总线进行扩展。

2,外部串行扩展

串行扩展包括SPI三线总线和I2C双总线两种。在单片机内不具有串行总线时,可利用两根或三根I/O口线用软件来虚拟串行总线的功能。下图所示:

P2

ALE

P0

WR

RD

PSEN

EA

RESET

MCS-51

地址锁存器

A8-A15

A0-A7

地址总线

D0-D7

数据总线

控制总线

MCS-51单片机的三总线结构

4.1单片机三总线的形成(外部并行扩展)

有I2C接口的主机

有I2C接口的RAM或I/O芯片

有I2C接口

的从机

SCL

SDL

Vcc

Rf

Rf

I2C总线

I2C 总线系统示意图

AB,DB,CB 各自的作用

(AB,DB,CB)三组总线称为系统总线。

系统总线的含义是指计算机各芯片之间的公共连线。总线的根数(位数)称为总线宽度。

地址总线:单片机外部有存储器或接口芯片,其中都有存储单元或寄存器单元,这些单元地位平等,需要被分配地址编号才能予以区分,分配地址当然也是以电信号形式给出,由于存储器的容量很大,所以用于分配地址的线也较多,这些线被称为地址线总线.51单片机的地址总线AB(address bus)为16位,可寻址216 (64K)存储空间

数据总线:起着在CPU和存储器或外围接口电路之间传递数据的作用。我们常说的8位机,16位机,32位机,是说CPU的外数据总线(DB )(data bus) )宽度(位数)。

控制总线:通常包括时序信号(时钟,定时,应答),数据传送控制(如存储器的读写,IO设备的读写)信号,中断的请求和响应,总线请求,复位等信号,控制总线CB(control bus)随CPU的不同而各具特色。

单片机的扩展

MCS-51单片机本身是一个基本的微型计算机,内部已经 具有一定数量的存储单元和I/O接口,但在内部的资源不能够满足系统的需要时,就需要进行资源的扩展,单片机的扩展主要包括以下

两方面的内容:

存储器的扩展

I/O接口的扩展

注: MCS-51系列的单片机在进行扩展时,需要把P0口和P2口作为扩展总线使用,不能够再作为一般的I/O口使用。

存储器的扩展

在单片机系统中,存储器的扩展包括:

程序存储器扩展

随着半导体技术的发展,单片机内部的程序存储器数量越来越大,在一般的单片机系统中,对于程序存储器的扩展已经使用的比较少。但对于一些比较早的片内没有程序存储器的单片机(8031,8032),在使用时还需要进行存储器的扩展。

但建议用户尽量避免外扩ROM,51系列单片机1000多种型号,一定可以找到内部ROM容量符合要求的单片机。即便是单片机略微贵点也值得。

数据存储器扩展

在MCS-51系列单片机构成的系统中,内部RAM的数量比较有限(128B或256B),在面对大容量的数据处理时,就需要进行RAM的扩展。

程序存储器扩展

常用的外部程序存储器:

EPROM(紫外线可擦除)

常用的EPROM以27xx系列为主。

EEPROM(电可擦除)

目前的EEPROM分为:串行EEPROM和并行EEPROM,在使用时,常常把串行的EEPROM作为数据存储器使用。以28xx系列为主。

FlashROM(快闪电可擦除)

主要以29Cxx系列为主。

常用的EPROM芯片引脚封装示意图

常用的EPROM芯片引脚封装示意图

不同容量的EPROM只是在地址线的数目和编程信号引脚有一点区别,各重要的引脚含义如下:

A0-Ai:地址输入线,决定存储器的容量;

Q0-Q7:双向三态数据线;

E:片选信号输入线;

G:读选通输入信号线;

P:编程脉冲输入线;

VPP:编程电源输入线;

VCC:工作电源输入线(常为+5V);

GND/VSS:工作时接地线。

2817A

2864A

常用的EEPROM芯片引脚封装示意图

不同容量的EEPROM只是在地址线的数目和编程信号引脚有一点区别,各重要的引脚含义如下:

A0-Ai:地址输入线,决定存储器的容量;

I/O0- I/O7(D0-D7):双向三态数据线;

CE:片选信号输入线;

OE:读选通输入信号线;

WE:读选通信号输入线;

VCC:工作电源输入线(常为+5V);

GND:工作时接地线。

29c256

29c512

常用的FlashROM芯片引脚封装示意图

2.程序存储器扩展实例

MCS-51单片机与27256芯片的接口。

利用EPROM扩展一个存储容量为32KB的程序存储器

MCS-51单片机与2864芯片的接口。

由于2864不仅可以存放程序也可以在线写入数据,可通过一定的方式来扩展一个程序存储器和数据存储器一体的存储空间,其容量为8KB.

MCS-51单片机与27256芯片的接口

27256的基本地址范围:0000H—7FFFH

P0连接:

74LS373的1D-8D

27256的DQ1-DQ8

PSEN接OE

CE接地

P2连接

27256的A8-A14

MCS-51单片机与2864芯片的接口

2864的基本地址范围:0000H—1FFFH

P0连接:

74LS373的1D-8D

27256的DQ1-DQ8

P2连接

27256的A8-A12

PSEN和RD相与接OE,WR接WE,CE接P2.7

读外部程序存储器时序

ALE

PSEN

注意:上述时序是在取指令过程中自动产生

一个机器周期

送地址

取出指令

程序存储器扩展实例思考:

MCS-51单片机与27256芯片的接口中,为什么片选信号可以直接接地 它的地址范围还可以是多少

MCS-51单片机与2864芯片的接口中,EEPROM可以在线写入数据,它能否像写RAM一样写入 它的地址范围还可以是多少

数据存储器扩展

常用的数据存储器:

静态RAM

静态RAM在应用时存取速度快,使用方便并且价格比较的低廉。但它具有在掉电时,内部的数据会丢失。典型的有6116,6264,62256等芯片。为了避免掉电数据丢失,出现了自动保护的静态RAM,如:DS1225,DS1235.

串行EEPROM

串行EEPROM的与并行的EEPROM特性一样,只是在数据的读写使用串行方式。常用的有24Cxx系列(I2C接口)和X25系列(SPI接口)的串行EEPROM.

一,静态RAM

不同容量的静态RAM只是在地址线的数目和编程信号引脚有一点区别,各重要的引脚含义如下:

A0-Ai:地址输入线,决定存储器的容量;

I/O0-I/O7:双向三态数据线;

CE:片选信号输入线;

OE:读选通输入信号线;

WE:写选通输入信号;

VPP:编程电源输入线;

VCC:工作电源输入线(常为+5V);

GND:工作时接地线。

6264

62256

常用的静态RAM芯片引脚封装示意图

二,串行ROM

不同容量的串行ROM存储容量上有区别,各重要的引脚含义如下:

A0,A1,A2:芯片的地址输入线;

SDA:串行数据输入端;

SCL:串行时钟输入端;

RESET:复位信号输入;

WP:写保护输入端,为低电平时不允许写数据;

SCK:串行时钟输入端;

SI:串行数据输入端;

VCC:工作电源输入线(常为+5V);

GND:工作时接地线。

AT24CXX和X25043的芯片引脚封装示

意图封装

AT24Cxx

X25043

三,利用6116扩展一个2KB的

数据存储器

在利用6116对MCS-51系列的单片机进行存储器扩展时,基本的连接为:

OE与RD控制相连;

WE与WR控制相连;

CE与P2.7相连;

A0-A7与锁存器74LS373的Q0-Q7相连;

A8-A10分别与P2.0-P2.2相连;

6116的基本地址范围:0000H—07FFH.

MCS-51单片机与6116芯片的接口

6116的基本地址范围:0000H—07FFH

P0连接:

74LS373的1D-8D

6116的DQ1-DQ8

OE接RD

WR接WD

P2连接片选和

6116的A8-A10

四,利用DS1235扩展一个32KB的数据存储器

在利用DS1235对MCS-51系列的单片机进行扩展时,基本的连接为:

OE与RD控制相连;

WE与WR控制相连;

CE与P2.7相连;

A0-A7与锁存器74LS373的Q0-Q7相连;

A8-A14分别与P2.0-P2.6相连;

DS1235的基本地址范围:0000H—7FFFH.

MCS-51单片机与DS1235芯片的接口

DS1235的基本地址范围:0000H—7FFFH

P0连接:

74LS373的1D-8D

DS1235的DQ1-DQ8

OE接RD

WR接WD

P2连接片选和

DS1235的A8-A14

DS1235数据存储单元的操作方法

例1:从DS1235的地址单元2000H读取数据到累加器ACC中。

例2:从累加器ACC向DS1235的地址为2000H的单元写入数据。

读取数据方法1

READB: MOV DPTR,#2000H

MOVX A,@DPTR

读取数据方法2

READB: MOV P2,#20H

MOV R0,#00H

MOVX A,@R0

写入方法1

WRITE: MOV DPTR,#2000H

MOVX @DPTR,A

写入方法2

WRITE: MOV P2,#20H

MOV R0,#00H

MOVX @R0,A

P2口的地址由单片机自动产生

P2口的地址由P2口以I/O方式产生

P2口的地址由单片机自动产生

P2口的地址由P2口以I/O方式产生

读/写外部数据存储器时序

PSEN

一个机器周期

ALE

一个机器周期

RD/WR

访问ROM,取出MOVX指令

访问RAM读/写数据

送地址

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口电路
    +关注

    关注

    8

    文章

    461

    浏览量

    57047
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632755
  • uart
    +关注

    关注

    22

    文章

    1227

    浏览量

    101164
收藏 人收藏

    评论

    相关推荐

    如何实现51单片机与PC串行通信

    详细步骤和方法。 硬件连接 首先,我们需要将51单片机与PC串行接口连接起来。通常,我们使用RS-232接口进行连接。RS-232接口
    的头像 发表于 10-21 11:35 361次阅读

    单片机基本io功能调试过程

    所使用的单片机型号以及需要调试的IO。不同型号的单片机在IO的配置和特性上可能有所不同。 查阅单片机手册 : 查阅
    的头像 发表于 09-14 14:38 430次阅读

    单片机io一般包含哪几种状态

    单片机的IO(Input/Output,即输入输出端口)通常包含以下几种状态,这些状态使得单片机能够灵活地与外部设备进行数据交互和控制。以下是对这些状态的说明: 输入状态(Input
    的头像 发表于 09-14 14:35 525次阅读

    单片机io怎么配置成输出口

    单片机IO配置成输出口的过程通常涉及对单片机内部寄存器的操作。不同型号的单片机在寄存器配置和编程方式上可能有所不同,但基本原理是相似的。以下是一个通用的步骤,用于将
    的头像 发表于 09-14 14:33 620次阅读

    单片机io输出电流多大

    单片机IO的输出电流大小会受到多种因素的影响,包括单片机的型号、IO的配置模式以及外部电路的设计等。以下是对单片机IO
    的头像 发表于 09-14 14:29 1182次阅读

    单片机io的四种工作状态

    单片机的I/O工作状态是单片机编程和硬件操作中非常重要的一部分,它决定了单片机如何与外部设备进行通信。 1. 单片机I/O
    的头像 发表于 09-14 14:24 1109次阅读

    串行口的四种工作方式各有什么特点

    串行通信是计算机硬件和外设之间常用的通信方式之一。串行口(Serial Port)是实现串行通信的硬件接口。在计算机系统中,串行口通常用于连接鼠标、调制解调器、打印机等设备。
    的头像 发表于 08-22 17:37 879次阅读

    串口转换电路推荐

    因为计算机串行口单片机串行口的电平规范不同,无法直接相连,所以需要寻找一款两者之间的电平转换电路,推荐电路尽量不是选用串口转换芯片
    发表于 05-09 10:05

    请问如何扩展单片机的IO

    在很多项目上都会因单片机的IO不够、或降低硬件成本要扩展IO,特别在一些机械设备上,如本人从事的这个行业,有时候由一个单片机
    发表于 04-24 06:30

    51单片机串口通信详细介绍-小白必看

    51单片机串口通信是单片机与外部设备通信的重要方式,它基于串行通信的原理,以字节为单位进行数据传输。在51单片机中,串口通信主要依赖于两个关键寄存器:SBUF寄存器和SCON寄存器。S
    的头像 发表于 04-17 09:33 1846次阅读
    51<b class='flag-5'>单片机</b>串口通信<b class='flag-5'>详细</b>介绍-小白必看

    51单片机的四种串行口工作模式介绍

    串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。      波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位的波特率一样时才可以进行正常通讯。波特率
    发表于 04-08 06:49

    单片机解析g代码的方法

    的运动。 解析G代码是将其转化为单片机能够理解和执行的指令集。单片机解析G代码的方法主要包括以下几个方面:G代码的格式解析、指令的解析和执行、G代码与机械设备的协调等。 首先,G代码的格式解析是
    的头像 发表于 12-22 14:15 1655次阅读

    AT89S52单片机片内串行口的工作原理

    电子发烧友网站提供《AT89S52单片机片内串行口的工作原理.ppt》资料免费下载
    发表于 12-15 09:07 0次下载

    STM32单片机常用的引脚及功能

    单片机中,引脚是连接外部设备和单片机内部模块的接口,通过引脚可以将输入信号传递给单片机,或将单片机处理后的信号输出到外部设备。在本文中,我们将介绍STM32
    的头像 发表于 12-07 16:22 2.1w次阅读

    基于51单片机的正弦信号发生器的设计

    正弦信号是电子电路设计中非常重要的信号之一。在很多电子设备和系统中,需要正弦信号作为输入源。基于51单片机的正弦信号发生器设计是一种较为简单且常见的方法。本文将详细介绍如何设计一个基于51单片
    的头像 发表于 12-07 16:20 1656次阅读