单片机教程二十:单片机串行口介绍

发布者:BoldDreamer最新更新时间:2024-01-18 来源: elecfans关键字:单片机  串行口  串行通信 手机看文章 扫描二维码
随时随地手机看文章

介绍:串行口是单片机与外界进行信息交换的工具。
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  工作方式  功能描述  波特率 
0 0  方式0  8位移位寄存器  Fosc/12 
0 1  方式1  10位UART  可变 
1 0  方式2  11位UART  Fosc/64或fosc/32 
1 1  方式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


关键字:单片机  串行口  串行通信 引用地址:单片机教程二十:单片机串行口介绍

上一篇:定时器实验
下一篇:如何使用8051单片机在7段显示器上显示数字?

推荐阅读最新更新时间:2024-10-30 17:45

基于RA8806控制器的温湿度控制系统设计
用RA8806控制器的JXD320240AF液晶显示模块具有显示数据量大,显示位置及大小易于控制,与控制器连接简单等特点,非常适合使用在小型自动化控制领域。本文以冷库温湿度控制系统设计为例,介绍RA8806控制器的功能,与单片机的接口以及该系统软件的设计思想与流程,并且进行现场测试。测试结果表明,使用RA8806控制器构成的显示部分,硬件电路紧凑、显示画面丰富、软件设计灵活,具有较高的应用价值。 目前以单片机为控制器的各类控制系统中,显示部分的设计是其中非常重要的一部分。常用的显示元件有LED数码管、1602、12864等,但这些元件显示的信息量非常有限,1位LED数码管只能显示1位数字,而且不能是汉字,连续多位LED数码管只能适用
[单片机]
基于RA8806控制器的温湿度控制系统设计
基于单片机和FAT16的SD卡读写系统设计
引 言 长期以来,闪存卡(SD卡、MMC卡等)因其体积小、功耗低、容量大和非易失性等特点,在嵌入式存储领域的应用越来越广泛。特别是近年来,随着闪存技术的发展,闪存卡价格不断下降且存储容量不断提高。当数据采集系统需要长时间地采集和记录海量数据时,应用SD卡作为存储介质是很好的选择,例如电能检测、温度湿度检测、病人心肺数据记录等。FAT16文件系统是。Microsoft公司在其MS-DOS 操作系统中采用的文件系统,具有出色的文件管理性能,能被当前大多数操作系统识别。因此,将SD卡与FAT16文件系统相结合是嵌入式数据存储、记录系统的理想方案,可以将采集记录的数据直接在PC上读取和处理。本文研究和设计了基于AT89S52单片机和F
[单片机]
基于<font color='red'>单片机</font>和FAT16的SD卡读写系统设计
单片机编码 无线模块发送与接收 程序
模块型号,可在万能的某宝搜索【超再生无线模块】 接收距离:空旷200米 接收端在没有收到讯号,会生成间歇性尖状脉冲,data接LED负极,5V接LED正极,可看见闪烁 【科普知识】 无线收发,天线计算公式: 电磁波的速度,30W公里每秒,即3X10^8m/s 频率的单位有MHZ,(兆赫兹),KHZ(千赫兹)HZ(赫兹),相互之间关系是1MHZ=1000KHZ=1000000HZ, 波长=速度/频率 前辈们经验告诉我们,1/4波长的天线是较靠谱的 315M的1/4波长天线计算公式,导线传播高频信号的缩短率在0.98 (300000000/315000000)/4*0.98=0.23333(M)=23.3(
[单片机]
<font color='red'>单片机</font>编码 无线模块发送与接收 程序
单片机广告灯左右移动的方法
1.实验任务 做单一广告灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环左右移动。 2.电路原理图 图4.4.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。 4.程序设计内容 我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执
[单片机]
<font color='red'>单片机</font>广告灯左右移动的方法
单片机怎样才能不死机之串口Overrun
闲言少叙,先上Code,大家看一下下面这段代码有没有问题? // Note: USART demo code runs on STM32F030#include “main.h” static __IO uint32_t TimingDelay; RCC_ClocksTypeDef RCC_Clocks; uint8_t uart_buffer[100]; // GPIO Configurationvoid GPIO_Configuration(void){ GPIO_InitTypeDef GPIO_InitStructure; GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1
[单片机]
AVR单片机复位介绍
AVR复位时所有的I/O 寄存器都被设置为初始值,程序从复位向量处开始执行。复位向量处的 指令必须是绝对跳转JMP 指令,以使程序跳转到复位处理例程。 AVR的复位信号源有五个: 上电复位。电源电压低于上电复位门限 VPOT 时, MCU 复位。 外部复位。引脚 RESET 上的低电平持续时间大于最小脉冲宽度时MCU 复位。 看门狗复位。看门狗使能并且看门狗定时器溢出时复位发生。 掉电检测复位。掉电检测复位功能使能,且电源电压低于掉电检测复位门限 VBOT 时 MCU 即复位。 JTAG AVR复位。复位寄存器为1 时MCU 复位。 上电复位 上电复位(POR) 脉冲由片内检测电路产生,POR电路保证器件在上电时复
[单片机]
C51单片机串口通讯的硬件电路图
51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如下图所示。
[单片机]
C51<font color='red'>单片机</font>串口通讯的硬件电路图
如何学习好单片机编程设计
作为一名电子技术从业人员,你学过单片机吗?你会运用单片机吗?我想你一定学过,但不一定会运用。因为学习单片机比学习其他学科需要付出更多的努力和代价,不仅要学习理论知识还要练习实际操作,而且主要是在实际操作中才能真正学到单片机技术。此外,学习单片机还需要投入一定的学习成本,随着你学习知识的扩展成本还会增加。学习单片机的动机不外乎有四种:一是为兴趣爱好而学,二是为专业而学;三是为饭碗而学;四是在工作中被逼而学。不管是哪种动机,因主修专业的不同以及电子基础的深浅不同,对于不同的人可能采用不同的学习方法,根据笔者的亲身学习经验和教授徒弟学习的感受,提出笔者的学习方法和步骤。 第一步:基础理论知识学习 基础理论知识包括模拟电路、数字电路和C语言
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved