串口波特率是什么意思(485协议和modbus协议)

串口波特率是什么意思?

串口波特率是指在串行通讯中,单位时间内传送的符号位数,通常用波特(Baud)表示。
这个数值越高,表示可传输的数据速率也就越快,但是也需要保证发送端和接收端的波特率一致才可以成功通讯。
串口通讯在实际应用中非常广泛,例如传输智能设备数据、连接小型传感器等。
如果串口波特率设置不当,会导致数据传输错误、断开等问题。

485通讯和modbus协议的关系?

485是串行通讯的硬件协议,也就是物理层协议,而modbus是用户层协议。

用户层协议和物理层协议可以比喻成货物与运输车型的关系。用户层协议是指通讯数据的含义或功能,相当于被运输的货物;而物理层是指通讯数据在什么载体上被传输,这就相当于是车辆。

在485总线上传输什么样的协议数据,这完全取决于程序设计者,与485总线本身没有任何关系。

学林电子的单片机开发板上面有12M的晶振和22.1184M晶振,在设定串口通讯波特率的时候怎么用后者。

  • 求解答!谢谢
  • 关注这个问题

pic16f877a单片机异步串口通信波特率具体算法公式?

  • 救急,没赏金,谅解。问题补充: 晶振4Mhz,我想设置波特率为38400bps,SPBRG=?
  • 关注这个问题

求C语言大神帮忙看一下这个虚拟串口程序有没有错,波特率9600晶振11.0592M

  • 要求实现功能发送一个字符回传一个字符#includereg52.h#define uchar unsigned charuchar jieshou();void fasong(uchar temp2);void delay50us(uchar i);void waittf0();sbit txd=P3^1;sbit rxd=P3^0;void delay50us(uchar i){uchar j;while(i–){for(j=0;j5;j++) {}}}void main(){uchar shuju;TMOD=0x02;计时器0 工作模式2TF0=0;溢出标志位清零TH0=152;TL0=152;设定定时器计数处置 9600波特率while(1){if(rxd==0){ delay50us(1);经过50us到达起始位中间shuju=jieshou();fasong(shuju); }}}void waittf0() 等待定时器溢出{while(!TF0);TF0=0;}uchar jieshou() 接收数据函数{uchar temp=0;char i=8;TR0=1;waittf0();while(i–){if(rxd){temp=temp|0x80;}temp=1;waittf0();}TR0=0;return temp;}void fasong(uchar temp) 发送数据函数{char i=8;TR0=1;txd=(bit)0;waittf0();while(i–){txd=(bit)temp|0x01;waittf0();temp=1;}txd=1;TR0=0;}
  • 有错,再改改吧用串口接收、发送数据不是通过rxd和txd引脚,而是通过SBUF寄存器。接收数据从SBUF,发送数据是把数据放在SBUF上。最好用中断来做,用延时函数有点浪费CPU。

52单片机,T1和T2都启动了,串口波特率默认是T1产生还是T2产生?

  • 52单片机,T1和T2都启动了,串口波特率默认是T1产生还是T2产生?可以设置吗?
  • 你仔细查看stc下载软件的面板就知道了,下载软件的面板有得选择的

怎样用12M的晶振产生38400kbps的波特率,单片机串口用?

  • 我用单片机串口与GPS相连,获取数据,GPS的波特率是38400,单片机晶振是12M。我设定时器方式为工作2,那样只能得到31250的波特率,误差太大,读到的只是乱码。怎样用12M的晶振产生38400kbps的波特率?定时器换种工作方式还是怎样处理呢?
  • 是可以得到的 ,应该是你程序初始化配置不好,51忘的差不错的,但是定时器计时溢出的量配置好,是可以得到的:1200000038400=312.5 ,所以你得配置312或者313个时钟的定时值。可能得不到很准的38400bps 但是误差范围内 异步通信也不会出问题你说你得到得31250 是不是你自己把除数和被除数搞反了哦

PC的串口波特率最大是多少

  • 一般最大115200,建议不要尝试更高波特率,我曾经设置一个CDMA modem波特率为115200以上,好像是23XXXX,结果再也无法连上,不得不返厂恢复,分析,可能是PC的串口硬件不支持那么高波特率,虽然设备支持。怎么说呢,传统的9针是没有办法的,虽然可设定数值有很多,两台计算机实现的是115.2K与工业通讯,通常最大达到19.2K,工业非数据型,默认9600通用型,比较稳定,而且也是一些谐振设备比较推荐的波特率但如果是虚拟串口,则不不受此限制,可以设得更大,比如USB转串口出来的,以及其他接口方式转换在串行输出,但看具体情况而定,USB转出的,最大能达到T1标准,即1.5M

串口通信,比如波特率为115200bps,那么最大可支持多大的采样频率可实现将数据传至PC端,如何计算出来的?

  • 另外收发时钟频率和采样频率是不是不一样,有什么关系,如何理解?
  • 顶顶顶顶顶顶顶顶顶顶的顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶的

51单片机串口程序串口调试助手接收区接收到的是乱码?波特率9600

  • #include reg52.hsbit smg1 = P2^0; 第一个数码管unsigned char a;unsigned char flag;void main(){ smg1 = 0; TMOD = 0X20; 设置定时器为方式2 TH1 = 0xfd; 装入初值 TL1 = 0xfd; TR1 = 1; 启动定时器1 SM0 = 0; SM1 = 1; 设置串口为方式1 REN = 1; 接收使能 EA = 1; 打开总中断开关 ES = 1; 打开串口中断开关 while(1) { if(flag==1) 判断是否受到数据 { ES = 0; 关掉串口中断 flag = 0; 标志位清零 SBUF = a; while(!TI); 等待数据发送结束 TI = 0; ES = 1; } }}void serial() interrupt 4{ a = SBUF; P0 = a; RI = 0; 软件清零RI flag =1; 作为标志位 }
  • 程序写得不错,看不出问题。用你的程序测试了一下,找到了出现乱码的一种可能。图一是出现乱码的情况:图二是不出现乱码的情况图二与图一是一样的程序,唯一的差异是图一单片机晶振是12MHz,图二单片机晶振是11.0592MHz。您看看您单片机板子上的晶振,是哪种?

为什么51单片机的定时器T0不能用作串口的波特率发生器?

  • 我试了一下, 只能T1才行, 换成T0就不行, 这是为什么, T0不就比 T1多了一个模式3吗, 其他的都类似啊, 为什么不能做UART的发生器? 求解.
  • 生产单片机的厂家是这样做的,这个电路已经定了,没法变,有些单片机有独立波特率发生器的

紧急求助:W77E58单片机PCON |= 0X80时串口1的波特率不倍增,怎么回事?

  • 本人用两个定时器1,2分别做串口1、0的波特率发生器 ,开始设置的时候波特率都是9600,能正常通信,现在想把串口1的波特率该为19200,想采用波特率倍增的方法,设置了PCON |= 0X80之后没有倍增,还是原来的9600,晶振是11.59200MHZ。串口1和定时器1的设置如下: TMOD = 0x22; 定时器1为模式2(8位自动重装),T0为模式2(8位自动重装) TH1 = 0xFD; 波特率9600 TL1 = 0xFD; SCON1 = 0X50; 设定串行口1工作方式 ,方式1,允许接收PCON |= 0X80; 波特率倍增 ES1 = 1;EA = 1;问题补充: 同过测试了一下,就是把串口0和1一起用定时器做波特率发生器时,在使用波特率倍增时,串口0可以倍增,但是串口1还是倍增不了,是不是串口1波特率只能通过定时器的初值来确定,而不能倍增呢?麻烦大侠们解救一下啊!
  • 你的设置都是用定时器1作为波特率发生器。没有用到定时器2,也没有设置。定时器0是无法做波特率发生器的。
版权声明