什么是波特率?在51单片机中如何使用?

作者&投稿:播琳 (若有异议请与网页底部的电邮联系)
51单片机波特率如何设置?~

51单片机波特率设置主要有以下两种方式:1) 工作方式0 ,2)工作方式1 。
1) 工作方式0
SM0=0且SM1=0时,串口选择工作方式0,实质这是一种同步移位寄存器模式。 其数据传输的波特率固定为Fosc/12,数据由RXD引脚输入或输出,同步时钟由TXD引脚输出。
2)工作方式1
当SM0=0且SM1=1时,串口选择工作方式1,其数据传输的波特率由定时/计数器T1、T2的溢出速率决定,可通过程序设定。当T2CON寄存器中的RCLK和TCLK置位时,用T2作为发送和接收波特率发生器,而RCLK=TCLK=0时,用T1作为波特率发生器,两者还可以交叉使用,即发送和接收采用不同的波特率。数据由TXD引脚发送,由RXD引脚接收。

晶振 11.0592MHZ
#include

void InitUART(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}

void main(void)
{
InitUART();
}

void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
//add your code here!
}
else
TI = 0;
}

void SendOneByte(unsigned char c)
{
SBUF = c;
while(!TI);
TI = 0;
}


晶振22.1184MHZ

#include

void InitUART(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFA;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}

void main(void)
{
InitUART();
}

void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
//add your code here!
}
else
TI = 0;
}

void SendOneByte(unsigned char c)
{
SBUF = c;
while(!TI);
TI = 0;
}

波特率就是一秒种传输0或1的个数,若波特率是9600那么它传输一位0或1的时间就是1/9600秒如果串口工作在方式一下波特率是9600晶振是11059200
定时器选用timer1的自动重装模式
即1/9600=定时时间
就是1/9600=(12*32/11059200)*(256-定时初值)。那么
定时初值=256-(11059200/(12*32*9600));
这里的32是51单片机的硬件典型结构,串口通信使用的频率是晶振频率的1/32或者1/16,但是这种模式下,限制了波特率的提高,因此,现在一些改进的51单片机是1/2分频。

波特率就是传输速率,51芯片的计数速率为晶体振荡器频率的1/12,一个12M 的晶振用在51芯片上,那么51的计数速率就为1M

波特率就是信号每秒发送字符的个数,想更多了解 http://baike.baidu.com/view/119333.htm
波特率在51中主要是串口通信,等你慢慢学了你就会明白



回答的 很详细啦 加油

单片机的串口输出的信号传输速率指的是波特率还是比特率还是带宽?
答:你可以看下波特率和比特率的区别 比特率指的是单位时间传输的bit的数量 而波特率是指单位时间内传输的字符的数量 在单片机串口中,一般传输一个字符需要一个起始位、一个校验位、一个停止位 然后才是8个bit的数据位 所以实际上传输速率为11bit/S是比特率只有1波特率 ...

单片机中计算波特率有什么用,不规定波特率会怎么样
答:波特率是定时器赋初值实现的,你要是不规定波特率,那通讯基本上是不正常的。定时器没有规定初值的话,默认都是从0开始计数。对MSC51来说,从0开始算,到255溢出。晶振不管取多少,得到的波特率都很低了。一般来说对应的波特率是不能通讯的。再有波特率必须和对方的波特率一致才行,所以要规定波特率的...

单片机串口通信的波特率有什么用
答:串口通信的波特率如何确定? 一般,根据你的传输距离、数据流量大小和串口设备的性能来决定 传输距离长速度就要下降,流量大自然就要提升。有些串口设备在某些波特率下可能误差会比较大,要尽量避免使用那些波特率 一般对于普通的嵌入式系统,9600波特率已经足够了 51单片机串口通信波特率只能由T1产生吗 不...

用51单片机串口实验时波特率怎么调才合适??我觉得是不是就给它调高点...
答:比如115200bps,另外最好使用11.0592M之类的晶振,这样标准波特率可以做到没有误差。通过我的使用经验,一般RS232传输距离在1米以内的话,115200bps的波特率是没有什么问题的。10米以内的话9600bps肯定可以稳定传输(关键是要保证电压,也就是解决压降的问题。)。超过10米的话最好用485了。

51单片机波特率如何设置啊
答:12M的晶振就不能得到9600波特率了(除非你改变你的晶振,但是那样的晶振好像没有卖) 所以你只能选择方式1或3 而且12M的晶振在串口传输时会有误差,就如你上面算的那样结果会有小数点 TH1又只能是整数的 所以传输时会有误差.参考:include<reg51.h> define baudrate 9600UL define fosc 11059200UL...

如何计算单片机的波特率
答:51的波特率计算根据它的串行口的工作方式 不同,而有不同的算法。1.方式 0 振荡频率/12 的固定波特率 2.方式 1 (2^SMOD /32) X 定时器1的溢出率 3.方式 2 (2^SMOD /64) X 振荡器频率 式中SMOD为特殊功能寄存器 PCON的最高位的值(0或1)你可下载一个叫作单片机小精灵 MCUtool 的...

51单片机波特率如何设置?
答:51单片机波特率设置主要有以下两种方式:1) 工作方式0 ,2)工作方式1 。1) 工作方式0 SM0=0且SM1=0时,串口选择工作方式0,实质这是一种同步移位寄存器模式。 其数据传输的波特率固定为Fosc/12,数据由RXD引脚输入或输出,同步时钟由TXD引脚输出。2)工作方式1 当SM0=0且SM1=1时,串...

C51单片机波特率是怎么设计的?
答:SMOD:波特率倍频,SMOD=0,串口方式1/2/3时,波特率正常; SMOD=1,串口方式1/2/3时,波特率加倍;(SMOD0)、(LVDF)、(P0F)为 STC 单片机特有,请参考对应说明./ /***波特率计算:方式0: Baud=Fosc/12;方式1: Baud=2^(SMOD)/32×T1溢出率;方式2: Baud=2^(SMOD)/64 ×Fosc;方式3: Baud...

51单片机脉冲为什么是11.0592而不是12
答:因为51单片机的波特率发生器只能由定时器T1或定时器T2产生,由于我们使用的是STC98C52单片机,是标准51架构的单片机没有T2模块。)对于串口通信来讲最常用的是方式1,以下以串口的模式1来分析。由串口发送原理知,串口发送一次,实际上要发,1位起始位,8位数据位,1位结束位。由于使用模式1没有第9位...

51 单片机的晶振12 MHZ,用于通讯的通常是11.0592 HZ?
答:在C51单片机中,选择11.0592MHz晶振的主要原因是这个频率可以被12整除,可以直接用于串口通信,而串口通信通常使用的波特率为9600bps,相应的计算公式为:fosc/12/32 = 9600bps 其中,fosc表示单片机晶振频率,32是指每个数据包包含了1个起始位、8个数据位和1个停止位,一共10位。因此,通过求解上述公式...