【www.shanpow.com--英文简历】
波特率9600一:波特率9600是什么意思
波特率是一个电子信号上的术语,用于描述信道的数据传输速度。所谓信道,可以是无线的,也可以是有线的,说白了就是两个东西之间传输数据。
波特率通常单位是bit/s,也就是 二进制位/秒。因为一个字节是8个bit,而一个字节通常可以表达一个ASCII码,比如一个英文字母,所以:9600的波特率的信道,理论上每秒可以传输9200/8个英文字母的数据量,也就是1200个字节,大约1.2KB。而19200则是每秒可传输2400字节。
比如一个文件,假设容量是100KB,那么它通过9600的信道传输,需要的时间至少是100/1.2秒,也就是超过一分钟了。
和19200波特率的信道,都是早期接口的传输率标准。比如早期的COM口(也叫串口),经常采用这样的标准,今天看来,速度非常非常慢。早期使用这样的接口用于鼠标、键盘等简单装置的连接,以及计算机和其它设备的通信。而现在,还有少数主板支持这样的接口。
在今天的计算机上,这个接口标准早已淘汰,但是生产中,还是有很多设备支持这样的接口。
比如,在数控机床上,当计算机与机床通信的时候,很多机床都要求使用COM口,以9600,11200或19200之类的波特率进行通信。
技术资料出处:互联网
该文章仅供学习参考使用,版权归作者所有。
因本网站内容较多,未能及时联系上的作者,请按本网站显示的方式与我们联系。
STC单片机波特率自适应方法
摘要:为了缩小电路体积、降低硬件成本,同时又保证串口稳定可靠通信,采用的一种波特率自适应方法,该方法充分利用STC单片机运行速度快、拥有片内振荡器、片内资源丰富的特... SCI自动波特率检测
大多数SCI模块硬件不支持自动波特率检测。一般情况下嵌入式控制器的SCI时钟由PLL提供,设计的系统工作会改变PLL复位时的工作状态,这样很难支持自动波特率检测功能。而在TM...
波特率9600二:为什么波特率要设成9600,19200...?
大家在用到单片机串口通信时,总要设置波特率,而波特率一般要设成9600,19200...?这是传统么?从什么来的?而相应的晶振一般也是11.0592MHZ。是先设晶振再设波特率还是先设波特率再设晶振,为什么要这样设置呢?
有两种比较可靠地说法:
1:根据电、传输介质等的物理特性结合串口设备使用的要求
为了保证有效通讯,根据电、传输介质等的物理特性结合串口设备使用的要求,确定RS232最大传输速率只能是115200,然后逐级二分得到57600,28800,19200……为适应这些速率,设计相应的晶振频率。
2:这是由电信线路特性决定的
电话线路的带通是300--3KHz,当时HAYES先搞的modem,所以用的2400HZ信号,对应波特率是2400。由于基本频率确定了,以后采用的提高通讯速率的方法都是在2400基础上倍频的,所以形成了9600,19200。。。。
不管哪种说法,都是先有波特率再有晶振频率。
波特率和晶振频率的关系:
MSC51系列单片机有一个全双工的异步通信口,他利用其RXD和TXD与外界进行通信,其内部
有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。异步串行通信发送和接收数据的速率与移位脉冲同步。一般用51系列的T1定时器作为波特率发生器,T1的溢出率经二分频(或不分频)后又经十六分频作为串行发送或接收的移位脉冲,移位脉冲的速率即波特率。单片机的异步通信波特率与串行口的工作方式、主振频率Fosc及定时器T1的工作方式有关。一般通信中使T1工作于方式2(可重装时间常数方式),若Fosc取6
MHz,则波特率的计算公式如下:
其中:SMOD是可编程的(即PCON的第8位),由此公式计算出的波特率是不标准的波特率。
波特率9600三:51单片机晶振选用12M,串口通信波特率用9600,我想问下怎么才能 串口打印 0x55呢
51单片机晶振选用12M,串口通信波特率用9600,我想问下怎么才能 串口打印 0x55呢
baydubaydu |Lv4|被浏览3次|来自问答电脑版
检举|2013-09-07 7:01
我是新手 大家帮下忙阿 555满意回答
检举|2013-09-07 17:47
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; } } //应该可以了,你稍微调试一下。刚写的