当前位置: 首页 > 新闻中心 > 乐球吧nba在线直播
返回
列表

51单片机串口通信篇

发表时间: 2024-01-31 作者: 乐球吧nba在线直播

  单片机通信是指单片机和单片机 或者 单片机和计算机的相互通信,一般比较多都是单片机(下位机)和计算机(上位机)作为通信。

  串行通信其实用的还是挺多的,就比如我们在调试程序时,能够最终靠串行口来调试程序。像什么蓝牙模块、语音模块等等也挺多是用串行通信。

  单双工: 一个只能发送,一个只能接收。(相当于两个人,一个只能说话,一个只能听)

  半双工:都可以发送和接收,但是同一时刻不能发送和接收一起进行。相当于一般的对讲机 你说话的时候 你是接收不了对方说的话的。

  全双工:就应该同时发送或者接收。相当于现在我们的手机打电话一样。可以两个人互骂哈哈

  常用串口波特率一般为2400、4800、9600、115200…也有更低点的。

  其实就是我们传输的速度,相当于两个人说话的语言语速,在通信时,我们得需要约定好大家的波特率。大家得统一。

  如果想每秒传输 960 个字符 且是1个起始位、8个数据位、1个停止位(共10位) (960 X 10 = 9600)那9600bps 就是 1秒传输9600位数据。

  一般波特率越高 传输距离短(不适宜长距离传输) 波特率低 传输距离可以远点,这样稳定点。

  当比特率超过1000 bps 时,最大传输距离迅速下降,如9600 bps 时最大距离下降到只有76m(约250英尺)。

  接收字符时,对于‘1’的个数进行校验,假如发现不一致,说明这个数据有错误。

  和校验是发送方将所有数据块加起来(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾,接收端接收数据同时对数据块(除校验字节外)加一起,(或者各字节异或),将所得的结果与发送方的校验和作比较,如果相同则正确,相反则接收错误。

  CRC校验通过某种数字运算实现有效信息与校验位之间的循环校验,这种校验方法纠错能力强,较为广泛应用。

  51主要是由两个独立的寄存器缓冲区SBUF(一个发,一个接)和发送控制器、接收控制器、输入移位寄存器及其控制门电路。

  我们主要就记住是通过SBUF发送和接收数据的,他们虽然名字一样,但是物理地址是不一样的,相当于一个房间一个前面(只能进)一个后门(只能出)不会冲突。

  并行通信就是8根线一起传输(如下图)—,每一根线位)数据了。这样传输速度就相对串行通信快,但是但是硬件成本比较高,然后不适宜长距离传输,像如果是300米那岂不是拉好多根线来作为传输。而且还容易受到干扰。

  串行通信跟并行通信区别就是 串行通信是一位一位的传输。传输速度没有并行通信那么快,但是硬件成本低,适宜长距离传输。我们一般都是用串行通信来的。

  像 IIC总线 和 SPI总线 则属于同步通信,都有一根SCL时钟线来控制的。

  异步通信是指通信的发送和接收设施使用各自的时钟控制数据发送和接收。为使双方发送和接收协调,要求发送和接收设施的时钟尽可能一致。异步通信是以字符(构成的帧)为单位做传输。

  起始位其实是一个标志准备开始,因为如果不发送和接收是处于空闲状态。都是高电平,那你想发送数据或者接收数据是不是得拉低 表示起始呢,不然我都不知道啥时间开始发送和接收了。停止位也是这个道理。

  主要用于方式2和方式3。当接收机的SM2=1时可通过收到的RB8来控制是否激活RI

  RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。

  当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。经过控制SM2,能轻松实现多机通信。

  由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。

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

  RB8: 在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。

  当串行发送第8位数据结束时,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。

  当串行接收第8位数据结束时,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。

  在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。

  串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。

  关于TMOD、IE、IP等寄存器配置这里没有写,是学定时器中断的相关联的内容,点击 这里 查看相关内容。

  TMOD = 0x20; //设定定时器工作方式2 8位初值自动重装定时/计数器

  关于初值的计算不会算能够最终靠一个软件 mcuelf 来快速计算,反正我不会算哈哈。或者 stc-isp串口助手 也可以。

  TMOD = 0x20; //设定定时器工作方式2 8位初值自动重装定时/计数器

  串口发送指令(‘1’)给单片机 单片机发送hello world 回应。

  TMOD = 0x20; //设定定时器工作方式2 8位初值自动重装定时/计数器

  TI = 0;//这里有TI 置 0了 不需要在串口中断再次写 否则会冲突

  因为公司有一部分设备生产年代久远,用的PLC非常古老的,有一款东芝EX20 40的用的单片机是P8051AH,其CPU板的图片如下。因此想尽可能的 ...

  本文设计了一种基于无线单片机的无线射频收发系统。该系统由发送模块和接收模块组成。发送模块主要将要发送的数 ...

  1 引言在如今的快速嵌入式系统模块设计中,目前比较流行的方案是在FPGA内集成应用软件或是软IP平台,以简化工序、加速产品面市日程。为此,很 ...

  W78E516D为6T 12T 8051单片机系列,其特点为管脚兼容于传统12T 8051。W78E516D提供工业温度规格、宽电压工作范围 2 4V至5 5V,支持在线 ...

  目前市场上USB设备的种类非常之多,但是这些设备会有一些共同的特性,依据这一些特性可以把USB设备划分为不同的类,如显示设备、通信设施、音 ...

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程