硬件小百科:单片机串行口介绍

串行口是单片机与外界进行信息交换的工具。
■ 8051单片机的通信方式有两种:
并行通信:数据的各位同时发送或接收。
串行通信:数据一位一位次序发送或接收。
参看下图:
串行通信的方式包括异步通信和同步通信。
异步通信
它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:
在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(能省略),最后是停止位1。用这种格式表示字符,则字符能一个接一个地传送。
在异步通信中,cpu与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式能由通信的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ascii标准。
波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。
同步通信
在同步通信中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。
通信方向
在串行通信中,把通信接口只能发送或接收的单向传送办法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。
8051单片机的串行接口结构
8051单片机串行接口是一个可编程的全双工串行通信接口。它可用作异步通信方式(uart),与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工的8051多机系统也能通过同步方式,使用ttl或cmos移位寄存器来扩充i/o口。
8051单片机通过管脚rxd(p3.0,串行数据接收端)和管脚txd(p3.1,串行数据发送端)与外界通信。sbuf是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被cpu读出数据,一个只能被cpu写入数据。
▲串行口的控制与状态寄存器
串行口控制寄存器scon
它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98h,其各位定义如下表:
sm0、sm1:串行口工作方式选择位,其定义如下:
(注:其中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 波特率可变的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
▲ 方式1和方式3
定时器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常用波特率及初值。
声明:本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原网站所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱:editors@eccn.com。

AI行业到底有多火_应届生年薪50万还没招不到人
TD-SCDMA完全可以独立组网
联想小新IdeaPad 4G/5G 轻薄本即将发布,主打外出移动办公
区块链面临哪四个基本问题?在“十字路口”该如何选择?
电路板层数怎么看
硬件小百科:单片机串行口介绍
LED数显驱动IC VK1624 SOP24介绍
40台燃料电池发动机助上海世博减排
芯片生产工艺流程及设备
腾讯重走九宫格 向互联网全军出击
福建兆元光电LED产业基地二期项目已正式量产 预计年底可满产
全球半导体厂资本支出排行榜:前三大撑半边天
小米推出第二代悦米机械键盘,内置32位ARM主控芯片
基于FPGA的移动目标实时定位跟踪系统
瞬变二极管的作业原理及应用
麻省理工开发微加工技术可生产最小的3D晶体管
上海华虹集团透露SRAM良率已达25% 在技术研发上获得多项重要突破
西部数据推出多款大容量移动固态硬盘,进一步壮大旗下消费级品牌的产品阵容
全球电信运营商的5G发展情况分析
有哪些外在因素会对罗氏线圈的精度造成影响