zoukankan      html  css  js  c++  java
  • 8051单片机的串行通信

            计算机的数据交换有两种方式,分别是串行通信和并行通信。

    并行通信:我们以8位(一个字节)的数据为例,在并行通信下,8位数据是同时传输的,同时发送,同时接受。所以通信的双方需要一个公共的时钟信号。并行传输速度快,效率高。但是传输需要的数据线多,传输距离近。

    串行通信:仍然以8位的数据为例,每一位数据都是分时发送的,接收方也是一位一位的接受。串行通信只需要一根数据线就可以,成本低。适用于大规模和远距离的数据传输。

    异步传输模式:每个传输的字符都用起始位和终止位包装起来,在字符间允许有长短不一的间隙。

    同步传输模式:一个数据块包含着许多连续的字符,在字符之间没有空闲。同步传输可以方便的实现某一通信协议要求的格式。

    波特率:在这里定义为串行通信每秒钟传送的“位”的个数。即n波特 = n b/s。在RS-232C标准中,串行通信的波特率规定如下:600,1200,2400,4800,9600等。

    串行口的波特率计算:

    在方式0下,波特率固定为:F/12  (F为晶振频率)

    方式2下,波特率固定为:F/32或者F/64  (取决于PCON寄存器的SMOD位,若SMOD = 1,则是F/32;否则为F/64)。

    方式1和方式3:采用了T1定时器的溢出率作为波特率的发生器,因此计算公式为:

                                    K*F/[32*12*(2^n - X)]。

       其中若SMOD = 1,则K = 2,否则K = 1,F为晶振频率,n为定时器的位数(即定时器处于哪种工作模式下),X是定时器填充的初值。

    在串行通信中要求通信双方拥有一致的波特率,但是有时候我们无法精确的达到那个波特率,此时我们需要考量在SMOD = 1和SMOD = 0这两种情况下哪一个所产生的相对误差较小,我们就去选用哪一个。

    相对误差 = (实际值 - 理论值 ) / 理论值 * 100%


  • 相关阅读:
    JasperReport html 导出
    mysql 序列号生成器 (自定义函数)
    [Java][Spring]Spring事务不起作用 问题汇总
    序列 mysql
    订单编号
    Mybatis
    SNMP 配置
    Gradle 1.12用户指南翻译——第三十八章. Eclipse 插件
    cocos2dx2.0 与cocos2dx3.1 创建线程不同方式总结
    Android实战简易教程-第二十八枪(Uri转String型实例)
  • 原文地址:https://www.cnblogs.com/zy666/p/10504319.html
Copyright © 2011-2022 走看看