1,单片机12M晶振串口用什么波特率最好

最好是用11.0592M的,这个频率可以选任意的一个波特率(都可以被1600整除),12M的晶振波特率只能是2400,9600的情况下会有7.8%的误差,会产生乱码,而2400波特率的情况下误差是0.16%,不会产生乱码了

单片机12M晶振串口用什么波特率最好

2,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 ; // 清除中断标志 ES=1;}void delay_ms() int i,j; for(i=1000;i>0;i--) for(j=25;j>0;j--) }}void SysInit(void)PCON |=0x80; SCON=0x50; TMOD=0x21; TH1=204; TL1=204; TR1=1; ES=0; TH0=0xB8; TL0=0x00; TR0=1; ET0=1;}void main (void) SysInit(); while (1)}Uart0_transmit(0x55);delay_ms;}}//应该可以了,你稍微调试一下。刚写的

51单片机晶振选用12M串口通信波特率用9600我想问下怎么才能 串口打印

3,已经51单片机的晶振频率是12MHZ 要产生4800BPS的波特率 问波特率的

串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。方式0的波特率 = fosc/12方式2的波特率 =((2^SMOD)/64)? fosc 方式1的波特率 =((2^SMOD)/32)?(T1溢出率)方式3的波特率 =((2^SMOD)/32)?(T1溢出率)注意:SMOD为PCON寄存器的最高位(即PCOM<7>)。T1 溢出率 = fosc /最后推出公式:TH1=256-(fosc*2^SMOD)/(baudrate*12*32);呵呵 如果你用方式2(波特率 =((2^SMOD)/64)? fosc )的话 12M的晶振就不能得到9600波特率了(除非你改变你的晶振,但是那样的晶振好像没有卖) 所以你只能选择方式1或3 而且12M的晶振在串口传输时会有误差,就如你上面算的那样结果会有小数点TH1又只能是整数的 所以传输时会有误差. 参考:#include<reg51.h>#define baudrate 9600UL#define fosc 11059200UL//其中,UL是不能省略的,代表长整型。unsigned char a,flag;void serial_init(void)TMOD=0x20;//T1工作在方式2 SCON=0x50;//SM0=0 SM1=1->串口通信在模式1,//SM2=0->多级通信中使用的位,REN=1; PCON=0; if((PCON&0x80)==0x80) S_MOD=2; TH1=256-(fosc*S_MOD)/(baudrate*12*32);//其中SMOD=0, TL1=256-(fosc*S_MOD)/(baudrate*12*32); TR1=1;ES=1;EA=1; }

已经51单片机的晶振频率是12MHZ 要产生4800BPS的波特率 问波特率的


文章TAG:晶振晶振12m波特率是多少  单片机12M晶振串口用什么波特率最好  
下一篇