❶ 51单片机串口通信是全双工的,但是为什么又说它的发送和接受不可以同时进行呢
51单片机串口通信是全双工的,发送和接受可以同时进行。不可以同时进行的是半双工。
全双工方式分别由两根不同的传输线传送数据时,通信双方都能在同一时刻进行发送和接收操作,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在发送和接受两个方向上传送。
半双工使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据。采用半双工方式时,通信系统每一端的发送器和接收器,通过收/发开关转接到通信线上,进行方向的切换,因此,会产生时间延迟。收/发开关实际上是由软件控制的电子开关。
(1)通信类单片机扩展阅读:
全双工方式在发送设备的发送方和接收设备的接收方之间采取点到点的连接,这意味着在全双工的传送方式下,可以得到更高的数据传输速度。
全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用(例如远程监测和控制系统)十分有利。这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线传送数据信号。
❷ 51单片机通信 的一个简单问题
这需要说明一下单片机串行接收的处理过程:串行通讯内部有一个9位的移位寄存器。单片机中的异步通讯有模式1、模式2、模式3,传输的分别是8位、9位、9位信息,再加上起始位和停止位,其实信息流是10位、11位、11位。RXD线正常情况下是高电平,也就是1,当发生1到0的跳变时说明起始位到来,通讯接收开始启动(以模式1、10位信息为例)。
1、检测到跳变,单片机将会把9位移位寄存器全部置1,也就是1FF;
2、在起始位信息中间的时刻,9位移位寄存器移位左移,将起始位(0)移入最低位;
3、继续采样RXD上的状态,每次采样接收后左移9位移位寄存器同时将得到状态移入最低位;
4、由于初始是整个寄存器各位全部为1,当停止位来临时,9位移位寄存器的最高位为0,此时单片机就认为通讯将结束,触发最后一次移位,这样9位移位寄存器的高8位就是实际的数据,而最低位起始就是停止位信息。
5、移位完成后,单片机开始做最后一件事:将9位移位寄存器的高8位写入SBUF,将最低位写入RB8,然后置RI请求中断。
其中第5步并不是说停止位接收完成后就自然会发生的,需要同时满足两个条件,否则接收到的数据会丢失:
a、RI=0:如果RI=1说明上次中断未处理完,此时不会执行5
b、SM2=0,或者接收到的停止位=1,二者满足其一即可
明白了整个接收过程和触发机制,回过头再看你的问题:
“若SM2=1,则只有接收到有效停止位时,RI才置一”:此时就是上面的条件b的后一种情况,由于是方式1,第10位也就是停止位就是1,所以只要此时RI=0,就会引发RI置1的操作。
“若SM2=0,则RB8是接收到到的停止位”:此时就是上面的条件b的前一种情况,因为此时的9位移位寄存器中的最低位正好是刚移入的停止位,所以将其送到了RB8中。
至于为什么要设定这种条件,需要全面深入的了解4种工作模式后才会有合理的答案,我一下子也不知道该如何去解释,还是你自己先看看书吧。
51单片机的串行通讯接口功能还是很丰富的,比如SM2在多机通讯中的应用就很巧妙,比如模式0的同步移位寄存器功能,等等。只是现在很少有人搞得这么深了。
❸ 单片机与单片机之间的通信
在单片机与单片机之间的通信中,可以采用串行总线的方式,具体来说,可以选择485或者CAN(控制器局域网)协议。485协议能够以大约1200波特率运行,适用于大多数常见应用,而CAN协议则可以达到更高的速度,大约4800波特率,满足了更多高性能需求。
在实际应用中,当数据传输速率需求超过1500波特率时,建议考虑使用中继器来延长通信距离,或是选择无线通信技术,以确保稳定和高效的数据传输。中继器可以有效扩展通信范围,而无线通信技术则提供了更大的灵活性,能够实现远距离传输。
选择合适的通信方式对于保证单片机之间的有效通信至关重要。485协议因其成本效益高、可靠性好而被广泛采用,尤其适合小型网络和低速应用。而CAN协议则因其强大的抗干扰能力和高可靠性,在汽车电子、工业控制等领域得到了广泛应用。
无论是485还是CAN,都需要根据具体的应用场景来选择。例如,在需要高传输速率、高可靠性且通信距离较近的应用中,CAN协议将是更好的选择。而在需要低成本、长距离通信的应用场景中,485协议则更为合适。此外,如果应用场景对传输距离有较高要求,或是需要在复杂的电磁环境中工作,那么无线通信技术将是最佳方案。
总之,单片机之间的通信方式多种多样,选择适合的技术方案将直接影响到系统的性能和可靠性。在进行设计时,需要综合考虑应用需求、成本、可靠性等因素,以确保通信系统的最佳性能。
❹ 单片机多机通信
单片机之间的多机通信方式1是通过双机串行连接,当SM0、SM1配置为01时,串口进入方式1,利用TXD和RXD脚进行数据传输。这种方式支持10位帧,包括1位起始位、8位数据位和1位停止位,数据按最低位先发送或接收。
波特率可通过公式确定,其中SMOD位影响频率。发送时,先写入数据到SBUF,然后串口以方式1发送,数据通过TXD输出,每发送完一帧,中断标志TI置位。接收时,串口接收RXD的数据,起始位的负跳变触发接收,使用RX时钟和采样脉冲检测数据,确保数据的可靠性。
为确保同步,所有通信双方的波特率必须一致。在T1定时器方式2下,通过调整初值X,可以精确控制波特率,考虑到误差,通常选择时钟频率为11.0592MHz。例如,当使用11.0592MHz时钟,选择2400bit/s波特率,初值X为244,即F4H。
多机通信时,通过设置SM2位的不同来实现主机选择特定从机通信。主机先发送地址信息,设置TB8位,从机根据接收到的地址和自身的地址匹配决定是否接收数据,TB8为0表示数据帧,仅SM2为0的从机能接收。
在实际应用中,如图所示的主从结构中,通过串口连接多个单片机进行通信。设计串行通信接口时,需考虑速率、距离、接口标准、通信线选择等因素,以确保通信的稳定性和有效性。