51单片机,晶振选用12M,串口通信波特率应该用多少合适,TH1,TL1初值为多少?

如题所述

在你这个情况下,我可以负责的告诉你,12M的晶振波特率只能是2400,9600的情况下会有7.8%的误差,所以会产生乱码,而2400波特率的情况下误差是0.16%,这样就不会产生乱码了,TH1和TL1都设为F3,你再试试。希望能帮到你
根据你的补充,我也补充一下:我前些天也在做单片机和LCD之间的通信,我的LCD是HMI,它也要设定波特率,我需要把我的单片机程序中TH1和TL1都设为F3,也就是2400的波特率,同时也要把我的LCD的波特率也设定为2400。由于我还没有做过串口打印的实验,所以对这个不是很清楚,但是你要知道通信双方的波特率必须一致,你可以参考一下我的这个例子,祝你成功!
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-01
昨天刚仿真串口通信,可以成功发送数字和字母,不过不能显示汉字,不知道算不算成功,开始什么都不能显示,最后还是调好了。。。波特率是2400,初值是F4,晶振是11.0592MHZ,用串口工作方式1,定时器1的模式2,8位重装的,不倍频,希望对你有帮助
第2个回答  2020-04-07
用11.0592的晶振比较好,这样配置9600也没什么
,用12M的也可以
误差7
8
%也没什么关系,我用MSP430
9600的波特率误差20%
还是无线通信
效果也很好
串口的话
你先近距离看下是否还有乱码。
第3个回答  2019-09-24
你好!
去下载一个,
波特率计算器
就搜

波特率计算器

这几个字
我的回答你还满意吗~~

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

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

51单片机晶振选用12M,串口通信波特率用9600,我想问下怎么才能 串口打印...
12M晶振不能输出9600的波特率;12M晶振只能输出1200的波特率,有少量误差,不过不影响使用。include<reg52.h> include<intrins.h> void Uart0_transmit(unsigned char i) \/\/向串口发送一个字节 { ES=0;TI=0;SBUF=i; \/\/ 发送数据到uart0 while (!TI); \/ 等待发送1个字节数据完成 TI=0 ...

51单片机定时初值是多少?
1、系统晶振频率是12M,则机器周期=12\/12=1us;2、定时1ms=1*1000=1000us;3、工作在方式0下:最大计数值是2^13=8192;4、定时初值=8192-(1*1000)=7192;5、换算成十六进制数为:定时初值=1C18H。定时器中断是由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1。定时\/计...

51单片机波特率计算公式和定时器初值
那么51的计数速率就为1M。通常用11.0592M 晶体是为了得到标准的无误差的波特率,那么为何呢?计算一下就知道了。如我们要得到9600 的波特率,晶振为11.0592M 和12M,定时器1 为模式2,SMOD 设为1,分别看看那所要求的TH1 为何值。代入公式: 11.0592M...

C51,单片机T1,串口编程(请问如何设置TH1,TL1初值)
250000*12)=FAH TH1=FAH TL1=FAH 计算中你会发现除不尽,有小数点,被无情的舍去了,这样的话精度就无法保证,所以要调整你的16M,比如用11.0592M 18.432M等,波特率一般9600等常用波特率 保证计算的时候能除尽,这样精度就高,通讯出错的几率就低 另外我这有波特率计算器,需要的话留邮箱 ...

关于串口通信波特率的几点思考 - 草稿
TH1 = TL1 = 256 - 晶振\/12\/16\/波特率\/2.如果写了PCON=0X80,就不需除2.,PCON为电源管理寄存器,他的最高位可以把波特率提高一倍。      在这里 ,256是8位定时器的溢出值,也就是TL1的溢出值。12是说一个一个机器周期等于12个时钟周期,值得关注的是16,在51单片机...

晶振是12mhz的单片机,定时1ms,如用定时方式1时的初值怎么计算?
12M晶振时钟周期是1\/12 us,机器周期=12倍时钟周期,就是1us。定时1ms需要1000个时钟周期 定时器初值=65535-1000=55535 TH1=55535\/255 TL1=55535%255 希望对你有用

.已知51单片机系统晶振频率为12MHz,请利用定时器1工作方式1,中断方式...
MOVTH1,#(65536-50000)\/256;重新送入初始值。MOVTL1,#(65536-50000)MOD256;定时50000us@12MHz RETI;中断返回 END;完 功能特性 1,可以仿真63K程序空间,接近64K的16位地址空间;2,可以仿真64Kxdata空间,全部64K的16位地址空间;3,可以真实仿真全部32条IO脚;4,完全兼容keilC51UV2调试...

设MCS-51单片机使用的晶振是12MHz,欲使用定时器\/计数器1实现50ms定时中...
MOV TH1, #HIGH(-50000)MOV TL1, #LOW(-50000)POP ACC RETI 二、使用方式二:由于方式二最大计数值只能是256,显然装不下50000,故可以选一个比较小的计数值,做多次循环就可以做到。选用计数个数为200,那么循环250次就可以了。C语言程序:include <Reg52.h> void main (void){ TMOD = ...

相似回答