【51单片机】波特率

3 篇文章 0 订阅
订阅专栏

波特率概念

  (BaudRate)  模拟线路信号的速率,也称调制速率,以波形每秒的振荡数来衡量。如果数据不压缩,波特率等于每秒钟传输的数据位数,如果数据进行了压缩,那么每秒钟传输的数据位数通常大于调制速率,使得交换使用波特和比特/秒偶尔会产生错误。  

  波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示,其单位是波特(Baud)。

   波特率与比特率的关系是比特率=波特率X单个调制状态对应的二进制位数。  在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。波特率是传输通道频宽的指标。  

  每秒钟通过信道传输的信息量称为位传输速率,简称比特率。比特率表示有效数据的传输速率。

小结:

波特率也称调制速率

每秒通过信道传输的码元数(码元传输速率),通过不同的调制方法可以在一个码元上负载多个比特信息 数据信号对载波的调制速率

“波特率”表示每秒种传输离散信号事件的个数,或每秒信号电平的变化次数,单位为band(波特)。即波特率所表示的是调制速度,是单位时间内传输线路上调制状态的变化数。

调制后同一时间里所包含的数据数量,波特率不同的话数据采集会出错,在单片机中若晶振采集速度不够的话也会出现数据错误

51单片机波特率计算的公式和方法:

51单片机芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON 寄存器。它的各个位的具体定义如下:
                SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0、SM1 为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。

这里写图片描述

  波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。这里所指的波特率,如标准9600不是每秒种可以传送9600个字节,而是指每秒可以传送9600 个二进位,而一个字节要8 个二进位,如用串口模式1来传输那么加上起始位和停止位,每个数据字节就要占用10 个二进位,9600 波特率用模式1 传输时,每秒传输的字节数是9600÷10=960字节。

  51芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M的晶振来计算,那么它的波特率可以达到1M。模式2的波特率是固定在fosc/64 或fosc/32,具体用那一种就取决于PCON寄存器中的SMOD位,如SMOD 为0,波特率为focs/64,SMOD 为1,波特率为focs/32。

  模式1和模式3的波特率是可变的,取决于定时器1或2(52芯片)的溢出速率,就是说定时器1每溢出一次,串口发送一次数据。那么我们怎么去计算这两个模式的波特率设置时相关的寄存器的值呢?可以用以下的公式去计算。

这里写图片描述

  上式中如设置了PCON寄存器中的SMOD位为1时就可以把波特率提升2倍。通常会使用定时器1工作在定时器工作模式2下,这时定时值中的TL1做为计数,TH1做为自动重装值,这个定时模式下,定时器溢出后,TH1的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2下定时器1溢出速率的计算公式如下:

溢出速率=(计数速率)/(256-TH1初值)
溢出速率=fosc/[12*(256-TH1初值)]

  上式中的“计数速率”与所使用的晶体振荡器频率有关,在51 芯片中定时器启动后会在每一个机器周期使定时寄存器TH 的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51芯片的计数速率为晶体振荡器频率的1/12,一个12M 的晶振用在51芯片上,那么51的计数速率就为1M。通常用11.0592M 晶体是为了得到标准的无误差的波特率,那么为何呢?计算一下就知道了。如我们要得到9600 的波特率,晶振为11.0592M 和12M,定时器1 为模式2,SMOD 设为1,分别看看那所要求的TH1 为何值。代入公式:

               11.0592M
               9600=(2÷32)×((11.0592M/12)/(256-TH1))
               TH1=250

               12M
               9600=(2÷32)×((12M/12)/(256-TH1))
               TH1≈249.49

  上面的计算可以看出使用12M晶体的时候计算出来的TH1不为整数,而TH1的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600 波特率。当然一定的误差是可以在使用中被接受的,就算使用11.0592M 的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

51单片机-STC89C54波特率以及双时钟探讨
qingtian506的专栏
06-03 2596
最近公司老大让我尝试STC89C54单片机的最高波特率,经过一下午的尝试,基本可以搞清楚了。 在11.0592M的晶振下,若单片机工作在12T模式下(即一个机器周期为12个时钟周期),波特率最高可为57600.而若工作在6T模式下(即一个机器周期为6个时钟周期),则波特率最高可为115200. /*************************************************
三种方法将51单片机设置为115200波特率
08-06
十分好用的三种方法将51单片机设置为115200波特率
51单片机波特率计算工具
01-02
计算51单片机波特率需要的定时器初始值,减小计算麻烦,方便准确,能够显示误差范围.
C51配置115200串口波特率
最新发布
m0_52883102的博客
04-22 2482
经过验证,用软件配置115200波特率,在C51里面是行不通的,因为寄存器有限此时应该翻阅手册看看,是否有其他的解决办法。
51单片机中串口波特率的计算方法详解
m0_52316356的博客
04-29 6007
51单片机,串口,波特率计算
单片机比特率计算公式
dirhack的博客
03-30 1260
单片机比特率计算公式
51单片机串行口波特率计算
热门推荐
SudekiMing的博客
06-19 2万+
1.工作方式介绍: 方式 0 :这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式。在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。该方式是以 8 位数据为一帧,没有起始位和停止位,先发送或接收最低位。 常用于串行口外接移位寄存器,以扩展并行I/O口,这种方式不适用与两个MCS-5...
51单片机常用波特率设置
weixin_39520719的博客
06-11 4723
网上找的还是不如课本上的呀,这些全试过,很好用
51单片机——UART串口通讯-波特率4种模式可选1.0
qq_44829055(金丝草)的博客
07-24 3051
#ifndef __UART_H__ #define __UART_H__ #include <reg52.h> sfr IPH_ =0xB7;//中断优先级高位寄存器 sfr SADEN_ =0xB9;//从机地址掩码寄存器 sfr SADDR_ =0xA9;//从机地址控制寄存器 // bps4800 0输入 // bps9600 1输入 // bps19200 2输入 // bps57600 3输入 // bps115200 4输入 //串口初始化装载,使用定时器1产.
51单片机串口波特率计算器v1.0_51单片机波特率计算器_
09-30
利用此计算器,很容易计算出51单片机波特率的定时器的初值,方便编程使用
51单片机波特率计算
07-14
本文介绍了51单片机波特率计算的公式和方法。
51单片机波特率的说明
02-26
51单片机波特率的说明,波特率计算工具,文档介绍,对于使用51单片机计算波特率还是不错的
51单片机波特率初值设定
03-03
51单片机波特率初值的设定,通过选择不同的条件,自动给出波特率初值
51单片机波特率计算器
04-14
51单片机波特率计算器 51单片机波特率计算器 51单片机波特率计算器 51单片机波特率计算器
51单片机波特率计算器V2.0
04-15
51单片机波特率计算器V2.0,可以选晶体频率和波特率,再计算即可。
51单片机波特率初值计算和定时器初值计算
04-17
STC89C52单片机波特率初值计算器和定时器初值计算器。
51单片机之串口波特率配置
qq_43605009的博客
04-04 7031
51单片机之串口波特率计算方式0的波特率配置方式2的波特率配置方式1和3的波特率配置 232串口模式,共有4钟方式,其中方式0、方式2的波特率是固定的。方式1、方式3的是可变波特率,这两个是用T1定时器作为波特率发生器。 方式0的波特率配置 方式0的波特率计算公式如下: B=fosc/12B = {\rm{fosc/12}}B=fosc/12 其中B是波特率,fosc是晶振的频率。 方式2的波特率...
51单片机波特率
imxiangzi的专栏
03-28 2393
最近使用51单片机的时候,设置串口的波特率,需要多种,固先记下来,晶振更改的时候可以通过excel中的改动来调整(excel在126中email的网盘中《51单片机波特率.et》) 下面列表是基于定时器2的方式2,自动重装的方式   晶振             11.0592             110592
计算机网络波特率公式,传输速率——比特率和波特率
weixin_31623707的博客
06-23 5995
比特率是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,传送数据速度越快。声音中的比特率是指将模拟声音信号转换成数字声音信号后,单位时间内的二进制数据量,是间接衡量音频质量的一个指标。视频中的比特率(码率)原理与声音中的相同,都是指由模拟信号转换为数字信号后,单位时间内的二进制数据量。信道编码中,K符号大小的信源数据块通过编码映射为N符号大小的码字,则K/...
51单片机波特率配置9600
07-29
对于使用51单片机配置波特率为9600,可以通过以下步骤进行设置: 1. 首先,确保你的单片机的晶振频率已经正确设置。如果你使用的是12MHz的晶振,可以使用如下代码设置晶振频率: ```c #define FOSC 12000000UL // 设置晶振频率为12MHz #define BAUD 9600 // 设置波特率为9600 #define MYUBRR FOSC/16/BAUD-1 void UART_Init() { // 设置波特率寄存器 UBRRH = (unsigned char)(MYUBRR>>8); UBRRL = (unsigned char)MYUBRR; // 启用接收和发送 UCSRB = (1<<RXEN)|(1<<TXEN); // 设置帧格式:8个数据位,1个停止位 UCSRC = (1<<URSEL)|(3<<UCSZ0); } ``` 2. 接下来,在你的代码中调用 `UART_Init()` 函数来初始化串口。这将设置波特率为9600,并启用接收和发送功能。 3. 在需要发送数据的地方,你可以使用如下代码发送一个字节的数据: ```c void UART_SendByte(unsigned char data) { // 等待发送缓冲区为空 while (!(UCSRA & (1<<UDRE))); // 将数据发送到发送缓冲区 UDR = data; } ``` 4. 在需要接收数据的地方,你可以使用如下代码接收一个字节的数据: ```c unsigned char UART_ReceiveByte() { // 等待接收完成 while (!(UCSRA & (1<<RXC))); // 返回接收到的数据 return UDR; } ``` 这样就完成了51单片机波特率配置为9600的设置。你可以根据需要进行发送和接收数据。记得根据你的硬件连接,将单片机的TX和RX引脚正确连接到外部设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【C语言】C语言中赋值语句规则 48853
  • 【C语言】计算输入整数中每个数字出现的次数 33825
  • 使用/dev/random和/dev/urandom产生随机数 26791
  • 【C语言】输入指定字符结束循环 22689
  • 【C语言】对字母加密与解密(简易) 21614

分类专栏

  • smartctl 1篇
  • 启动方式 1篇
  • linux命令汇总 3篇
  • u-boot 4篇
  • shell 1篇
  • 虚拟化
  • 随笔记录 1篇
  • stm32学习 3篇
  • 协议汇总 3篇
  • 思路 1篇
  • Linux 线程 5篇
  • c语言 194篇
  • EXCEL技巧
  • 51单片机 3篇
  • EDA技术 1篇
  • 电脑问题解决
  • PS
  • word技巧 1篇
  • 嵌入式问题 29篇
  • 其他问题 5篇
  • MATLAB 5篇
  • Linux 110篇
  • 驱动 14篇
  • 函数 2篇
  • 内核 18篇
  • 脚本 2篇
  • 代码库 2篇
  • 音视频 5篇
  • 网络 6篇

最新评论

  • 设备树中#address-cells和#size-cells作用

    犄角之势: 不是,reg属性是<addr size>对,一个<>为reg数组的一个,你描述的后者,就变成reg属性有两个寄存器空间了

  • 【C语言】*++p,*p++,++*p,++*++p,++*p++

    mettylove: 非常感谢,清晰明了的解释!

  • patch命令

    小码_1110: 很详细 很强

  • 【C语言】计算输入整数中每个数字出现的次数

    weixin_58732035: array[num%10]=arrya[num%10]+1;num%10数字取最后一位,数字0到9对应下标array[0]-array[9]中,array[num%10]一开始为0,对应数字每出现一次,就+1

  • 【C语言】数组形参

    红橙黄绿蓝靛紫叫彩虹: 大佬大佬表情包

最新文章

  • smartctl工具输出解释
  • TFTP协议
  • 野火EBF6ULL Pro 烧写官方镜像
2022年1篇
2021年4篇
2020年11篇
2019年5篇
2018年54篇
2017年203篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网武昌宏基客运站EDG为什么能上三个韩国人连城诀电视剧起个搞笑的名字润字起名大全新还珠格格演员表智能公话奶茶店起什么名比较好highschooldxd写诗软件公司起名大全文库七一讲话精神心得体会日本的名字怎么起的免费铺位起名效果图制作软件8画属水的起名吉利字水偏旁的字起名大全家庭投资理财郭起名戴姓宝宝起名起名大全新生儿起名机械工程有限公司正月出生起名字梦见吃饺子巴卡尔马军团歼灭作战商标起名尽量不要用哪些字陈文茜叶辰萧初然完结大结局笔记本功率八阵图杜甫淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化