历史上的今天
返回首页

历史上的今天

今天是:2025年01月18日(星期六)

正在发生

2021年01月18日 | 8051单片机教程第二十一课:串行接口

2021-01-18 来源:eefocus

概述


串行接口的一般概念单片机与外界进行信息交换称之为通讯。


8051单片机的通讯方式有两种:


并行通讯:数据的各位同时发送或接收。串行通讯:数据一位一位顺序发送或接收。参看下图:

串行通讯的方式:


异步通讯:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:


在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。用这种格式表示字符,则字符可以一个接一个地传送。


在异步通讯中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII标准。


波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。


同步通讯:在同步通讯中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。


通讯方向:在串行通讯中,把通讯接口只能发送或接收的单向传送方法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。


2.8051单片机的串行接口结构


8051串行接口是一个可编程的全双工串行通讯接口。它可用作异步通讯方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通讯协议进行全双工的8051多机系统也可以通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口。


8051单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界通讯。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。


串行口的控制与状态寄存器


串行口控制寄存器SCON


它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H,其各位定义如下表:


D7


D6


D5


D4


D3


D2


D1


D0


SM0


SM1


SM2


REN


TB8


RB8


TI


RI


SM0、SM1:串行口工作方式选择位,其定义如下:


SM0、SM1


工作方式


功能描述


波特率


00


方式0


8位移位寄存器


Fosc/12


01


方式1


10位UART


可变


10


方式2


11位UART


Fosc/64或fosc/32


11


方式3


11位UART


可变


其中fosc为晶振频率


SM2:多机通讯控制位。在方式0时,SM2一定要等于0。在方式1中,当(SM2)=1则只有接收到有效停止位时,RI才置1。在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,RI才置1。


REN:接收允许控制位。由软件置位以允许接收,又由软件清0来禁止接收。


TB8:是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。


RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。


TI:发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清0。


RI:接收中断标志位。在方式0,当接收完第8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。RI置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。RI也必须用软件清0。


特殊功能寄存器PCON


PCON是为了在CHMOS的80C51单片机上实现电源控制而附加的。其中最高位是SMOD。


串行口的工作方式


8051单片机的全双工串行口可编程为4种工作方式,现分述如下:


方式0为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也可以外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲。


输出串行数据从RXD引脚输出,TXD引脚输出移位脉冲。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。


输入当串行口以方式0接收时,先置位允许接收控制位REN。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。


下面两图分别是方式0扩展输出和输入的接线图。

方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。


输出当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。


输入在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。


方式2


方式月为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第9位数据。


输出:发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI。


输入:在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。且不置位RI。再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。


工作方式3


方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。


波特率选择


如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。


方式0


方式0的波特率固定为主振频率的1/12。


方式2


方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:


波特率=2的SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc


3.方式1和方式3


定时器T1作为波特率发生器,其公式如下:


波特率=定时器T1溢出率


T1溢出率=T1计数率/产生溢出所需的周期数


式中T1计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。


定时器T1工作于方式0:溢出所需周期数=8192-x


定时器T1工作于方式1:溢出所需周期数=65536-x


定时器T1工作于方式2:溢出所需周期数=256-x


因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。


当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶振就是这个道理。


下表列出了定时器T1工作于方式2常用波特率及初值。


常用波特率


Fosc(MHZ)


SMOD


TH1初值


19200


11.0592


1


FDH


9600


11.0592


0


FDH


4800


11.0592


0


FAH


2400


11.0592


0


F4h


1200


11.0592


0


E8h


推荐阅读

史海拾趣

飞虹(FeiHong)公司的发展小趣事

在稳步发展的同时,苏州锋驰也积极拓展对外合作与投资。公司共对外投资了3家企业,并通过这些投资进一步拓宽了业务范围和市场渠道。这些合作不仅为苏州锋驰带来了更多的技术资源和市场机会,也增强了公司的综合竞争力。同时,公司还积极与上下游企业建立紧密的合作关系,形成了良好的产业生态。

台湾君耀(Brightking)公司的发展小趣事

君耀一直注重技术创新和产品研发。公司拥有一支强大的研发团队,致力于开发新型的半导体器件,以满足市场不断变化的需求。同时,君耀还与全球知名的半导体公司合作,共同研究和开发未来的半导体技术。这些努力使得君耀在技术上始终保持领先地位,为公司的长期发展提供了有力保障。

芯茂微电子公司的发展小趣事

近年来,随着国家对集成电路产业的重视和支持力度的不断加大,芯茂微电子也积极响应国家号召,致力于推动国产集成电路产业的发展和自主创新。公司加强了对核心技术的研究和投入,积极引进和培养高端人才,加强与国内外知名企业和研究机构的合作与交流。同时,公司也积极参与国家重大科研项目和产业化项目,为推动我国集成电路产业的发展和自主创新做出了积极贡献。这些努力不仅提升了芯茂微电子的技术实力和市场竞争力,也为我国集成电路产业的发展注入了新的活力和动力。

以上五个故事仅代表芯茂微电子在电子行业发展过程中的一部分经历和成就。随着公司的不断发展和壮大,相信未来还会有更多精彩的故事等待我们去发现和书写。

Electric Imp Inc.公司的发展小趣事

为了进一步提升品牌影响力和市场份额,Electric Imp Inc.公司开始实施国际化战略。公司先后在北美、欧洲、亚洲等地设立了研发中心和分支机构,以便更好地了解当地市场需求和技术趋势。同时,公司还积极参加国际展览、研讨会等活动,与全球同行交流经验、分享技术。这些努力使得公司的国际化水平不断提高。

Curtis Electromusic Specialties Inc公司的发展小趣事

在全球化的大背景下,供应链管理对于企业的运营效率至关重要。CUI公司高度重视供应链的优化和管理,通过建立完善的采购、生产和销售体系,实现了原材料的稳定供应和产品的快速交付。此外,公司还积极引入先进的生产设备和信息化管理系统,提高了生产效率和产品质量,为公司的快速发展提供了有力保障。

Codeco Corporation Of Vermont公司的发展小趣事

在电子行业的浪潮中,Codeco Corporation Of Vermont(以下简称Codeco)由几位热衷于科技创新的工程师创立。他们看到了电子产品日益普及的趋势,决定投身这个充满机遇的领域。初创时期,资金短缺、市场竞争激烈,Codeco面临着巨大的挑战。然而,凭借着对技术的执着追求和对市场的敏锐洞察,他们成功开发出了一款具有创新性的电子产品,迅速在市场上占得一席之地。

问答坊 | AI 解惑

电源泰斗陶显芳说卖IC不如卖杂货?真的假的

看看陶老师怎么说的。 2000年,沃尔玛全年销售1650亿美元,全球IC产业销售2050亿美元,比沃尔玛高出20%以上!2008年,沃尔玛全年销售3745亿美元,全球IC销售2500亿美元,比沃尔玛低近50%!更惨的是,预计09年沃尔玛销售将增长1~3%,而全球IC销售 ...…

查看全部问答>

ARM程序中,如果不用延时,就没法运行,但又不是硬件延时的奇怪问题。[

    问题出在在现有的LCD汉字显示驱动的基础上继续开发时。     有个一个搜索函数,代码如下,功能是在一个给定的地址开始,连续搜索一个汉字编码(2byte),找到编码就返回位置,函数很简单。     现在的问题 ...…

查看全部问答>

EVC打开(创建)工程后程序未响应,请高手们指点

EVC打开(创建)工程后程序未响应,请高手们指点 用EVC创建一个hello world 的应用程序或打开一个workspace后  会停留在loading class information上 不动了 就发现CPU使用率100%,然后在任务管理器中就发现 evc没有响应。 请问大哥大 ...…

查看全部问答>

内核模式下获得系统目录

内核模式下获得系统目录…

查看全部问答>

驱动开发入门发现的几个问题,请高手赐教

1:有啥网站网络资源推荐? 2:我不明白为什么新的设备插到电脑上,电脑能够调用相应的驱动程序的。 3:我想知道从外不设备上电后,直到能正常工作的时候,发生的一系列过程,请帮忙    粗略概要。…

查看全部问答>

防雷击浪涌的开关电源电路设计

中心议题: 雷击浪涌分析防雷击浪涌电路的设计 解决方案: 应用将压敏电阻和陶瓷气体放电管的单相并联使用线绕电阻断开电路 随着城市经济的发展,感应雷和雷电波侵入造成的危害却大大增加。一般建筑物上的避雷针只能预防直击雷,而强大的电磁场 ...…

查看全部问答>

关于待机问题~不解之处~请求帮助

我最近要做stm32的微功耗~在看过一些资料后,人们介绍说:stm32的待机模式,功耗是最低的,这样我就看是了解待机模式,我在手册中发现,待机模式下的单片机是不工作的,也不能保持待机前的状态,所以待机后,所有的管教都处于高阻态(不知道这 ...…

查看全部问答>

6852驱动库里面的程序不能烧写到片子里面???

如题!!我刚刚下载了luminary最新的驱动库但是调试了一下!发现不能烧写!烧写的时候出现下面的情况! 我烧写以前的驱动库的程序:6743库里面的程序就可以!! 请问高人这是怎么回事???是不是我的IAR版本低了!!!…

查看全部问答>

谁有12864的详细资料!?

哪位有LCD 12864的详细资料传我一下,谢谢!!!! 812150818@qq.com…

查看全部问答>

求教高手倒车雷达有源探头的相关知识

求教各位大侠,有源超声波探头和无源的相比,有哪些优点和缺点,不胜感激!!!…

查看全部问答>