8051单片机串行口及串行通信

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

一、串行通信的基础知识


CPU与其他外部设备要进行信息交换,一台计算机与其他计算机之间有时也要交换信息,这些信息交换就称为通信。通信有并行通信和串行通信两种。


1、并行通信


并行通信是将数据字节的各位用多条数据线同时进行传送。

 

并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接受存在困难。


2、串行通信


串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。


串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制要比并行通信复杂。


串行通信又可以分为异步通信与同步通信。


1)异步通信


异步通信是指通信的发送设备与接受设备使用各自的时钟控制数据的发送和接受过程。为使双方的收发协调,要求发送和接受设备的时钟尽可能一致。

异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,字符之间是异步的,而同一字符内的各位是同步的。


异步通信的数据格式 :

异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。


2)同步通信


同步通信是要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间间不留间隙,及位同步且字符同步。发送方对接收方的同步可以通过两种方法实现。

                  

外同步:是指对同步字符的检测在串行I/O接口芯片外部进行,当外部硬件电路检测到同步信号时,就给串行接口发送一个同步信号SYNC。当串行I/O接口芯片收到同步信号后,立即进行数据传送。


自(内)同步:是指同步字符的检测和同步控制是在串行I/O接口芯片内部进行的。自(内)同步又可分为单同步(只有一个字节的同步字符)和双同步(有两个字节的同步字符)。


二、8051的串行口


1、8051串行口的结构

有两个物理上独立的接受、发送缓冲器SBUF,它们占用同一个地址99H;接收器是双缓冲结构;因为发送时CPU是主动的,因而不会产生重叠错误。


2、8051串行口的控制寄存器


SCON是个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:

SM0和SM1为工作方式选择位,可选择四种工作方式:

 

SM2     多机通信控制位


REN     允许串行接受位    由软件设置REN=1,允许接受;REN=0,禁止接受。


TB8      在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。


RB8      在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则为接受到的停止位。


TI        发送中断标志位


RI        接受中断标志位


寄存器PCON中只有一位SMOD与串行口工作有关:

SMOD     波特率倍增位


三、串行口的工作方式


1、方式0


工作在方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。


1)方式0输出

2)方式0的输入

 

方式0发送和接收电路

 2、方式1


方式1是10位数据的异步通信接口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。

 

3、方式2和方式3


方式2或方式3为11位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚。

方式2和方式3一帧包括1位起始位,9位数据位,1位停止位。方式2的波特率固定为晶振频率的1/64或1/32,方式3波特率由定时器T1的溢出率决定。


四、波特率的计算


在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器T1的溢出率决定。


方式0的波特率=fosc/12


方式2的波特率=(2SMOD/64)·fosc


方式1的波特率=(2SMOD/32)·(T1溢出率)


方式3的波特率=(2SMOD/32)·(T1溢出率)


当T1作为波特率发生器时,常用是使T1工作在自动再装入的8位定时方式(方式2)


T1溢出率=fosc/(12*(256-TH1))


常用波特率表

五、原理图

其中U2为发送设备,U1为接受设备


 


六、程序设计


本程序的功能是实现U2每隔50MS向U1发送数据,U1一直处于接受状态,当U2有数据接受时,则接数据传到P2口,形成流水灯。


发送设备程序:


#include


 


void Delay(int n)                  //延时1ms子程序


{


   int x,y;


   for(x=0;x<110;x++)


      for(y=0;y

}


void main ()


{   


    int i;


    TMOD=0x20;                         //设置定时器1工作在方式2


       TH1=250;                      //设置波特率为9600kps=(2*/32)*12M/(12(256-250))


       TL1=250;


       TR1=1;                        //启动定时器1


       SCON=0x50;                         //串行口工作在方式1


       PCON=0x80;                //SMOD=1


    while(1)


       for(i=0;i<8;i++)


       {


          SBUF=~(1<

          Delay(50);


       }


}


 


接收设备程序:


#include


 


void main ()


{   


    TMOD=0x20;                         //设置定时器1工作在方式2


       TH1=250;                      //设置波特率为9600kps=(2*/32)*12M/(12(256-250))


       TL1=250;


       TR1=1;                        //启动定时器1  


       SCON=0x50;                         //串行口工作在方式1  


       PCON=0x80;                         //SMOD=1


       REN=1;                                 //允许接受


    EA=1;                       //开总中断


       ES=1;                          //开串行接收中断


                    


       while(1);


}


 


void Serial() interrupt 4         //溢出中断服务子程序


{                                                  //软件清零


   RI=0;


   P2=SBUF;


}

关键字:单片机  串行口  串行通信 引用地址:8051单片机串行口及串行通信

上一篇:8051 串口程序
下一篇:浅谈8051的学习方法

推荐阅读最新更新时间:2024-11-01 18:18

ch32单片机怎么样?ch32好用吗?ch32和stm32的区别
Ch32单片机是龙芯微电子推出的一种高性能、低功耗的32位嵌入式处理器。它集成了ARM Cortex-M4内核,配备了丰富的接口和外设,可满足不同领域、不同应用场景的需求。在性能、功耗和功能方面,Ch32单片机比部分同级别的单片机还会优秀。 Ch32和其他单片机相比,其最大的优势在于其先进的处理器核心。在安全性、性能、低功耗等方面有着极高的表现。Ch32单片机采用了ARM Cortex-M4核心,而该核心是具有全面DSP功能的ARM Cortex-M系列中的一种。ARM Cortex-M4核心集成了DSP指令集和浮点计算,可满足高性能、高精度的数字信号处理的需求。同时,该核心还支持多线程,方便开发人员实现复杂应用程的并行执行,提高
[单片机]
单片机里面的CPU使用率是什么鬼?
打开电脑的任务管理器,看着跳动的CPU使用率,发现很舒服。每一个线程占用了多少CPU清清楚楚,也就能针对性的确认为啥你的电脑跑的慢了。 今天这篇笔记不讲每个任务(或线程)CPU的使用情况,而是单片机整体的CPU使用情况,先易后难嘛。 为什么要知道这个呢?知道这个有啥用呢?鱼鹰看的书少,就不写官方话了,只说说自己的理解。 CPU使用率越高,意味着系统越繁忙,对于一些事情的响应也就越慢。比如你的电脑CPU使用率占到90%以上,你会发现打字变慢了,鼠标移动变慢了,这都是因为CPU占用过高,导致系统来不及处理你的键盘和鼠标数据,所以才会有慢悠悠的表现。 电脑是非实时系统,要求不高,即使电脑变慢,电脑死机,后果都不是很严
[单片机]
<font color='red'>单片机</font>里面的CPU使用率是什么鬼?
零基础学习单片机必看的一些知识点
  在工作中和在校的同学的交流中,听到的最多的是“单片机太难了”。其实不是单片机难学,而是不知道怎么入门。请大家记住一句话“单片机不是学出来的,而是玩出来的”。下面结合自己自学单片机的体会,和大家一起来“玩”单片机。准备好了吗?我现在开始教大家如何学习单片机。   第一步:先读通一本教材   唉!?太没创意了吧,还要看书?不错,第一步还是要通读一遍教材,这样我们才能站在巨人的肩膀上。读了一遍什么感觉,一个字晕。这很正常,不然你就看不到这篇文章。很多人在晕了之后就泄气了,或者换教材,接着晕,直至晕倒。不过,现在告诉大家我们要向酒鬼学习,晕了不要紧,嘴上一直说“没醉”,至少还可以多喝半斤。所以信心很重要。   第二:晕着脑袋实
[单片机]
AD0804单片机控制程序
/*采用AD0804芯片,硬件 电路 :cs片选端接P2.3,WR写数据端写P3.6,RD读数据端接P3.7,锁存端接P2.6脚, 数码管 位选端分别接P3.2 ,P3.3,P3.4,段选端接P1口*/  #include reg52.h //头文件  #define uint unsigned int//宏文件  #define uchar unsigned char//宏文件  uchar num;//变量  void delay3(uint z);//延时定义  void dissy();//延时函数定义  sbit ge=P3^2;//个位定义  sbit shi=P3^3;//十位定义  sbit bai=P3^4;
[单片机]
ST推出新款超低功耗STM32微控制器
同级最高的闪存容量,最大容量高达512KB。 中国,2014年3月26日 ——意法半导体STM32 L1系列超低功耗ARM® Cortex®-M3 32位微控制器新增一款512KB闪存产品。目前L1系列共有三个产品线合70余款产品,其超低功耗和存储容量的组合在市场上堪称独一无二,闪存和RAM最大容量分别高达512KB和80KB。 新产品采用意法半导体独有的超低泄漏电流的110纳米CMOS制造工艺和优化的系统架构,工作能耗极低,目标应用瞄准高成本效益的嵌入式设计,适用于健身、医疗、穿戴式设备和工业/电表等电池供电的联网产品。 L1系列的主要特性: · 高性能ARM Cortex-M3 32位内核:在32
[单片机]
ST推出新款超低功耗STM32<font color='red'>微控制器</font>
单片机COP840C在无绳电话中的应用
  引 言   无绳电话CT(Cordless telephone)是连接市内交换网用户端的低功率双工无线电话。一般无绳电话具备普通电话的所有功能,如重拨、暂停、挂断、免提、记忆等。但由于无绳电话手座机之间为无线接续,这又决定了它具有一些普通电话所不具备的特点,如信道转换、身份 识别等。   国外主要发达国家均投入大量人力、物力积极进行无绳电话的开发研制,并迅速投入商用,短短十几年内已由CT-0发展到CT-3;从模拟发展到数字;从室内发展到室外公用;由单区制发展到多区制,且可进行越区交换、漫游通信等。多频道扫描无绳电话(CT-1),国外 发达国家80年代中期就开始商用,并得到迅猛发展。   1 系统框图及原理   
[单片机]
C#读取单片机发送的字符串,乱码问题解决
1.单片机端代码 printf( 开始更新固件...\r\n ); 2.C#上位机 收到的数据存到数组RevData,长度Length string ReadDataStr = Encoding.GetEncoding( GB2312 ).GetString(RevData,0 ,Length); 总结:数组与字符相互转换时,一定要主要编码类型,否则得到的就是乱码。
[单片机]
​IAR全面支持国科环宇AS32X系列RISC-V车规MCU
IAR嵌入式开发解决方案将全面支持国科环宇AS32X系列ASIL-B MCU,共同推动汽车高品质应用的安全开发 中国上海,2024年9月29日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR与北京国科环宇科技股份有限公司(以下简称“国科环宇”)联合宣布, 最新版本IAR Embedded Workbench for RISC-V将全面支持国科环宇AS32X系列RISC-V MCU,双方将共同助力中国汽车行业开发者的创新研发 ,同时将不断深化合作,扩展在行业的技术探索及生态完善。 AS32X系列MCU基于32位RISC-V双核锁步架构设计,满足功能安全ASIL-B等级要求,主频高达180MHz,综合算力达516D
[嵌入式]
​IAR全面支持国科环宇AS32X系列RISC-V车规<font color='red'>MCU</font>
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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