51单片机如何修改波特率9600改成2400

本人有一个项目,默认波特率是9600,但是实际需要2400得波特率。我不知道如何改好。尝试了几次。源程序都能编译通过,但是调试就是不成功。单片机放入系统后用串口调试助手发送得数据根本就无法接收,希望指点。
我把程序帖到了我的空间,下边还有电路图 ,希望能得到具体改正方法。原理我也明白,但是就是改不出来,郁闷。

http://hi.baidu.com/dew2901/blog/item/e7b177383221672696ddd849.html

用下面公式重新计算用于产生波特率的定时器重载值:
设9600波特率时定时器重载值是X;
设2400波特率时定时器重载值是Y;
当定时器重载值是8bit时(传统的51单片机型号,如AT89C51的T1):
Y=256-((256-X)*4)
当定时器重载值是16bit时(较新的51单片机型号,如C8051F系列的Timer3):
Y=65536-((65536-X)*4)
//-----------------------------------------------
粗略看了一下你的程序,你可以调整一下MAX_DELAY这个参数。我没具体计算过,只是怀疑是不是波特率降低之后,发送数据的时间变长了,如果发送数据的时间超过MAX_DELAY就会发送错误。
仅供参考。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-07-13
如果用的是11.0592Mhz的晶振的话,把
//TL1 = 0x0FD;
//TH1 = 0x0FD;
改成:
//TL1 = 0x0F4;
//TH1 = 0x0F4;本回答被提问者采纳
第2个回答  2008-07-12
把定时器的初值改变一下,这个初值是要根据你使用的晶振来确定的。网上有51单片机波特率计算软件,只要你输入定时器工作方式和晶振频率就可以自动计算出初值,并显示误差。一般误差要小于1最好!你到百度里搜下!

51单片机如何修改波特率9600改成2400
粗略看了一下你的程序,你可以调整一下MAX_DELAY这个参数。我没具体计算过,只是怀疑是不是波特率降低之后,发送数据的时间变长了,如果发送数据的时间超过MAX_DELAY就会发送错误。仅供参考。

51单片机可以再运行过程中修改波特率吗
可以,只要你软件有相关更改的界面

51单片机波特率如何设置啊
T1 溢出率 = fosc \/{12×[256 -(TH1)]} --将该公式代人方式1或3 最后推出公式:TH1=256-(fosc*2^SMOD)\/(baudrate*12*32);呵呵 如果你用方式2(波特率 =((2^SMOD)\/64)• fosc )的话 12M的晶振就不能得到9600波特率了(除非你改变你的晶振,但是那样的晶振好像没有卖) ...

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

MCS-51单片机串口四种工作方式的波特率如何确定
波特率可修改范围为1200-2000000,点击“▼”,选择对应的波特率,点击“设置”。例如选择波特率为19200,点击“设置”,指令助手发送对应的指令。5、如果需要重新锁定,点击“锁定系统配置”。6、重新联机,此时的波特率为19200。7、工程编译无误之后,直接点击“LOAD”,此时串口屏通过USB线下载工程。

51单片机工作在24M晶振时的串口如何设置?波特率9600
24M有误差的。可以选22.1184M,9600bps,T1初值设为184,SCON=80H,SMOD=0

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

51单片机的最高波特率只能是19200吗?
51单片机串口的波特率没有限制的,但最高波特率受到单片机主频的约束,用T1作波特率产生器:最高波特率=主频\/(12 * 16 ) ;如果是52的话用 T2作波特率产生器会更高更精确些。

51单片机 8M晶振 9600波特率设置
8M晶振用于串口通信的话,波特率误差太大了,换成11.0592M之类的会更好。ORG 0000H LJMP START ORG 0023H LJMP UARTInterrupt START:MOV SP,#60H LCALL InitUART LOOP:;add your code here!LJMP LOOP InitUART:MOV TMOD,#20H MOV SCON,#50H MOV TH1,#0FDH\/\/11.0592MHz MOV TL1,TH1 MOV P...

51单片机,晶振选用12M,串口通信波特率应该用多少合适,TH1,TL1初值为多 ...
在你这个情况下,我可以负责的告诉你,12M的晶振波特率只能是2400,9600的情况下会有7.8%的误差,所以会产生乱码,而2400波特率的情况下误差是0.16%,这样就不会产生乱码了,TH1和TL1都设为F3,你再试试。希望能帮到你 根据你的补充,我也补充一下:我前些天也在做单片机和LCD之间的通信,我的LCD...

相似回答