设计与开发

单片机串口原理 一文让你看懂串口通讯

小编 2024-10-06 设计与开发 23 0

一文让你看懂串口通讯

在讲串口通讯之前,我们先来讲一讲通讯的概念吧,因为我想让大家知道通讯的本质是什么,只有在你知道了通讯的本质之后,你才能在学习通讯的大路上顺风顺水。

所以呢,你们要认真看完我为你们精心编制的小故事,看完之后,你会对现在的通讯有一个更加深刻的理解。

烽火台

在遥远的古代,没有手机、电脑这样的通讯工具,更没有汽车、飞机之类的交通工具,那么如果有敌人来攻城的话,如何快速传递把信息传递给千里之外的兵营呢?

答案想必大家都知道,那就是烽火台!

而且是每隔数里建设一个烽火台,等有敌人来犯就点燃烟草,烽烟会在短时间内传到千里之外的兵营。

我们暂且称它为烽烟通讯,它的通讯原理很简单,有烽烟的情况就代表着有敌人来犯,如果没有烽烟就代表一切正常,它只会出现两种情况。

但是有烽烟并不一定是出现了战争,比如说西周时期的周幽王为了博美人褒姒一笑,在没有发生战争的情况下,点燃了烽火台,各方诸侯诸侯纷纷赶来救驾,来了之后周幽王和褒姒在台上哈哈大笑,面对奇耻大辱,犬戎一怒之下杀死了周幽王。

因为烽烟意味着敌人来犯早已在人们心中达成共识,所以即使是假的,各方诸侯也会默认为真。通讯只能事先代表约定俗成的东西、而不能反映事实上发生的事情。

烽火台这种通讯方式看似简单,但却是我们现在所有高级通讯的基础,夸张一点的讲,无论多么复杂的通讯,像红外遥控、wifi、3G、5G这些都可以说成是烽烟通讯的衍生品,无论现代多么复杂的通讯方式,它的原理都是基于这种烽烟通讯演化而来的,即在某一时刻不是在传递高电平,就是低电平。

只不过这些现代化通讯传输的速率极快,在一秒当中变换高低电平几千万次,甚至上亿次,它可以使我们在及短的时间内接收/传输大量的信息。如果把时间放慢、放慢再放慢,你会发现这些现代化的通讯执行的就是不停的把烽火台点燃熄灭的过程。

串口通讯

串口通讯是电子研发人员常用的一种通讯,也是最简单的一种通讯之一。这种通讯目前最常见的一种形式是:芯片与电脑之间通讯,它的传输速率极慢,通常传输速率1-10KB/S,这个速率相比于我们现在的USB传输速度相差了几千甚至上万倍,但为什么这种通讯至今还没有被淘汰呢?

老式串口接口,现在已经淘汰

要知道电子开发人员所使用的芯片不是做存储用的,它可能传输的就是温度、距离、压力这些,即使是1K/S,我们也能在1S之内接受1024个数据,对于人类而言,这个速度显然是足够快的,1024次/S的速度就把我们开的眼花缭乱了,面对如此‘多’的数据,你会自顾不暇,所以这种低端芯片与电脑通讯往往采用串口通讯。

接下来说一下串口到底是如何在芯片和电脑之间传输的。

串口通讯本来及其简单的一种通讯,可是现在与之有关的教科书里官腔太多,而且还掺杂着很多专业术语,比如各种寄存器、锁存器这些,除此之外还讲述了串口的很多情况,同步或者异步都有,很多情况是用不到的,学生们往往是怀着期望的心去学习,但是最终却失望而归,只要有一个寄存器的原理不懂,就会影响到你学习的心情。

串口接线

很多人虽然会使用串口通讯了,但是具体是怎么发出去的,可能知道的人就不多了,反正是配置好寄存器就可以使用串口通讯了,这种学习方法是最快的,但是对这个串口的基本工作原理理解的还是不到位。

接下来我们来更深一步的去了解串口,在了解串口之前我们首先要直到串口发送的是什么?

串口其实发送的是高低电平,比如我们把要发送信息的高低电平发送给电脑,它就直到我们发送的信息,并且显示出来、那么问题又来了,电脑是如何直到这些高低电平代表的什么呢?

这些呀,早就有人想过了,就像我们之前讲过的烽烟通讯,烽烟代表敌人来犯。这个串口传输的高低电平也早就我们聪明的人类定义好了,不过这次不是中国人了,而是美国人定义的,然后全世界都这么使用了。

ASCII码

ASCII表如下图所示,每一个图形都对应的8位的二进制,比如A对应的是0100 0001,如果我们要给电脑发送A的话,是不是发送0100 0001对应的高低电平就可以了(1对应高电平)?

当然不是了,因为要成功的发送数据,在它发送数据之前,首先要给电脑发送一个开始信号,不然电脑接收就乱了,就像我们去取快递,都是在收到短信之后再过去,不然去了可能快递还没有到呢。

串口发送数据也一样,首先要发送一个开始的信号,这个信号也叫做起始位。在串口不工作的时候默认的都是高电平,如果要给电脑开始的信号,只需要给一个低电平,电脑就会被唤醒接收我们发送的串口数据,然后我们再逐次发送ASCII数据,是一个一个的发送,而不是同一时刻一起发送。串口嘛,就跟串羊肉串一样,都是一个个的往竹签上串。

这也是串口的优势,发送只需要一根线,如果是并口的话,发送8位数据,就得需要8根线,就物理接线而言,显然串口更有优势。

在8位数据发送完成之后,最后还需要发送一位停止位,即最后一位把电平拉高,告诉电脑发送结束,让电脑准备下一次接收。这东西和我们取快递一样,拿完贵重快递,不能直接走吧,最后还需要签字不是。

所以要发送A的话,需要发送:

10100 00010

1(停止位) 0100 0001(中间8个为字符A) 0(起始位)

无论是串口发送还是取快递都是人类想出来的流程,所以存在共性。

波特率

还有最后一个问题没有解决,那就是这每一位的发送间隔是多少呢?

我们还拿烽烟通讯为例,站岗小兵也不是时时刻刻在盯着烽火台,可能是一小时看一次,然后他也许会做一些娱乐项目。

现在,我们发送串口数据也一样,我们要提前约定好,多长时间发送一次,然后电脑上也要按照这个时间去接收,不然肯定会接收到错误的数据。

我们约定的这个时间就是电子专业中常说的波特率,它所指的是在一秒之内发送了多少位数据。

就拿最常用的波特率9600来说,它所代表的是在1秒之内传输9600位数据(0或1)。

知道波特率之后,我们也就知道了传输一位所需要的时间,即1/9600=104us。

104us对我们来说可能会很短暂,对芯片来却是极其漫长的时间。

这时候还是会有人担心,万一接收的时序对不上怎么办。

这个不用担心,因为芯片接收时也不是104us接收一次,它的接收精度是这个时间的16倍,即以6.5us的最小步长开始计数,它会在你每一位(104us)的中间时刻接收数据,这样误差就会变的很小。

模拟串口吧

所以,串口通讯不需要配置寄存器,直接用单片机的I/O口输出高低电平也可以实现,因为它和你在单片机上配置寄存器是一样的,如果最开始你是使用的寄存器来学习串口,可能是只会串口的收发,而不直到串口的最基本发送原理。

如果你有兴趣的话,直接在单片机上用I/O模拟串口发送试一试,虽然最终我们都会使用配置寄存器的方式发送串口数据,但这样做你会对串口发送有一个新的认识。

Final

上述所讲的串口通讯是最为常用的一种情况,即只有一个起始伟和停止位、无奇偶校验位、波特率为9600。

其它的情况不太常用,暂时就不做阐述。

然后再对上述情况做一个小总结:

发送的数据共10位。

第一位是起始位:把电平拉低。

第二位~第九位:数据位,由所传输的字符决定。在这10位当中,也就这8位是有意义的,因为起始位和停止位不代表任何东西,我们可以说串口传输的效率为80%。

第十位是停止位:把电平拉高。

为了检测大家有没有学会,给你们准备了一个小测试。

猜猜上图这10位代表哪个字符呢? (参考上面的ASCII码表)。

终于有人把“串口通信”的原理分析到位了,网友:幸好没找老电工

串口通信对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。下面我们就一起学习一下串口通信的原理吧!

一、串口通信原理--简介

串口通信的概念非常简单,串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。

它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。

二、串口通信原理--通信前的准备工作

在具体操作串口之前需要对单片机的一些与串口有关的特殊功能寄存器进行初始化设置,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:

1、确定T1的工作方式(编程TMOD寄存器)

2、计算T1的初值,载入TH1、TL1

3、启动T1(编程TCON中的TR1位)

4、确定串行口工作方式(编程SCON寄存器)

5、串行口工作在中断方式时,要进行中断设置(编程IE,IP)

三、串口通信原理

通信使用3根线完成:(1)地线,(2)发送,(3)接收。

由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配:

1、波特率:

这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。

2、数据位:

这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

3、停止位:

用于表示单个包的最后一位。典型的值为1,1.5和2位。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

4、奇偶校验位:

在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。对于偶和奇校验的情况,串口会设置校验位,用一个值确保传输的数据有偶个或者奇个逻辑高位。

好了,以上内容就是帝特电子关于串口通信的原理的详细介绍,希望能对大家有所帮助!感谢您的阅读与支持!

帝特电子长期致力于为客户提供品质的HDMI、DP、DVI(4K/8K)光纤线、音视频高清线、网络延长器、光端机、工业光纤收发器、音视频分配器、音视频切换器、工业232/485/422转换器、串口服务器、电脑周边线材等音视频产品工业线材,打造数字化音视频领先品牌,传递精彩画面,分享快乐时光!欢迎前来了解、交流。

相关问答

单片机 中的 串口 是什么?

单片机中的串口是口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口(SerialInterface)是指数据一位一位地顺序传送,其特点是通信...

为什么 单片机 之间可以直接连线实现 串口 通信?

单片机之间可以直接连线实现串口通信的主要原因是它们使用了标准的串行通信协议(如RS-232、RS-485等)。这些协议定义了通信中的物理电气特性、数据格式和通信...

51 单片机串口 怎么找?

在51单片机中,串口通常是通过两个引脚来实现的,即TXD(发送引脚)和RXD(接收引脚)。下面是找到51单片机串口的一般步骤:1.确定串口的引脚:查阅51单片机的...

单片机串口 通信的时候会不会以无线电波方式传播?

单片机串口通信一般不会以无线电波方式传播。通常情况下,单片机串口通信是通过物理接线的方式进行的,即使用串口线将发送端和接收端连接在一起,通过线缆进行数...

多个 单片机串口 通信如何进行?

两个单片机之间串口通信,如果是用proteus仿真,最简单了,两个单片机的RXD,TXD交叉连接就行了。要是实物最好用RS232连接通信,距离可以达到几十米。再远点距离...

单片机 中USB转 串口 什么意思,USB不是 串口 吗,我记得是啊,为什么还要转?

USB是通用串行总线接口,是四线的;串口,是九针的,也叫COM口,现在的主板上基本不作这个接口了,所以很多都是用USB口转成串口。USB是通用串行总线接口,是四线的;...

单片机 如何处理 串口 接收到数据?

正常发送就行了,比如用电脑的串口精灵,单片机接收后会自动将8位数据送入SBUF寄存器中,并将串口接收标志位RI置1,直接从中读取就行了。发送也是一样,将8位数...

单片机串口 检测不到怎么办?

单片机串口检测不到可能有以下几种原因:1.串口线接触不良或者损坏。您可以检查一下串口线是否连接牢固,或者更换一条新的串口线来测试。2.串口驱动程序没...

485转usb 串口原理 ?

USB转串口芯片的串口信号一般为TTL/CMOS电平,在实现半双工RS485串口时需要外接485电平转换芯片,设计中需要有信号来控制485转接芯片的发送和接收使能端,...

怎么实现两个 单片机 之间的 串口 通信?

两个单片机之间串口通信,如果是用proteus仿真,最简单了,两个单片机的RXD,TXD交叉连接就行了。要是实物最好用RS232连接通信,距离可以达到几十米。再远点距离...

猜你喜欢