51单片机常用波特率初值表(12M晶振)
51单片机串口通信波特率设置

51单片机串口通信波特率设置51单片机串口通信波特率设置MCS-51单片机具有一个全双工的串行通信接口,能同时进行发送和接收。
它可以作为UART(通用异步接收和发送器)使用,也可以作为同步的移位寄存器使用。
1. 数据缓冲寄存器SBUFSBUF是可以直接寻址的专用寄存器。
物理上,它对应着两个寄存器,即一个发送寄存器一个接收寄存器,CPU写SBUF就是修改发送寄存器;读SBUF就是读接收寄存器。
接收器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时的响应接收器的中断,没有把上一帧的数据读走而产生两帧数据重叠的问题。
对于发送器,为了保持最大的传输速率,一般不需要双缓冲,因为发送时CPU是主动的,不会产生重叠问题。
2. 状态控制寄存器SCONSCON是一个逐位定义的8位寄存器,用于控制串行通信的方式选择、接收和发送,指示串口的状态,SCON即可以字节寻址也可以位寻址,字节地址98H,地址位为98H~9FH。
它的各个位定义如下:MSB LSBSM0和SM1是串口的工作方式选择位,2个选择位对应4种工作方式,如下表,其中Fosc是振荡器的频率。
SM2在工作方式2和3中是多机通信的使能位。
在工作方式0中,SM2必须为0。
在工作方式1中,若SM2=1且没有接收到有效的停止位,则接收中断标志位RI不会被激活。
在工作方式2和3中若SM2=1且接收到的第9位数据(RB8)为0,则接收中断标志RB8不会被激活,若接收到的第9位数据(RB8)为1,则RI置位。
此功能可用于多处理机通信。
REN为允许串行接收位,由软件置位或清除。
置位时允许串行接收,清除时禁止串行接收。
TB8是工作方式2和3要发送的第9位数据。
在许多通信协议中该位是奇偶位,可以按需要由软件置位或清除。
在多处理机通信中,该位用于表示是地址帧还是数据帧。
RB8是工作方式2和3中接收到的第9位数据(例如是奇偶位或者地址/数据标识位),在工作方式1中若SM2=0,则RB8是已接收的停止位。
51单片机定时器初值的计算

51单片机定时器初值的计算一。
10MS定时器初值的计算:1.晶振12M12MHz除12为1MHz,也就是说一秒=1000000次机器周期。
10ms=10000次机器周期。
65536-10000=55536(d8f0)TH0=0xd8,TL0=0xf02.晶振11.0592M11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期。
65536-9216=56320(dc00)TH0=0xdc,TL0=0x00二。
50MS定时器初值的计算:1.晶振12M12MHz除12为1MHz,也就是说一秒=1000000次机器周期。
50ms=50000次机器周期。
65536-50000=15536(3cb0)TH0=0x3c,TL0=0xb02.晶振11.0592M11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。
65536-46080=19456(4c00)TH0=0x4c,TL0=0x00三。
使用说明以12M晶振为例:每秒钟可以执行1000000次机器周期个机器周期。
而T 每次溢出最多65536 个机器周期。
我们尽量应该让溢出中断的次数最少(如50ms),这样对主程序的干扰也就最小。
开发的时候可能会根据需要更换不同频率的晶振(比如c51单片机,用11.0592M的晶振,很适合产生串口时钟,而12M晶振很方便计算定时器的时间),使用插接式比较方便。
51单片机12M和11.0592M晶振定时器初值计算2011-01-04 22:25at89s52,晶振频率12m其程序如下:引用代码:#include<stdio.h>#include<reg51.h>void timer0_init(){TMOD=0x01;//方式1TL0=0xb0;TH0=0x3c;TR0=1;ET0=1;}void timer0_ISR(void) interrupt 1{TL0=0xb0;TH0=0x3c;//50ms中断一次single++;if(single==20){kk++;single=0;}}void main(){int kk=0;//计数器int single=0;timer0_init();}TL0=0xb0;TH0=0x3c;这两个是怎么算出来得如果晶振不是12Mhz是11.0592 MHz怎么算12M的晶振每秒可产生1M个机器周期,50ms就需要50000个机器周期,定时器在方式1工作,是16位计数器,最大值为65536,所以需设置初值15536,即3CB0H(10进制15536转换成16进制数3CB0),所以TH0=0x3c,TL0=0xb0。
8051的串口波特率的计算(笔记版)

8051的串口波特率的计算1、方式0的波特率,固定为晶振频率的十二分之一。
2、方式2的波特率,取决于PCON寄存器的SMOD位。
PCON是一个特殊的寄存器,吹了最高位SMOD位,其他位都是虚设的。
计算方法如下:SMOD=0,波特率为晶振的1/64;SMOD=1,波特率为晶振的1/32.3、方式1与方式3的波特率都是由定时器的溢出率决定的。
公式为:BR=(2SOMD/32)*(定时器TI的溢出率)通常情况下,我们使用定时器的方式2,即比率发生器,自动重载计数常数。
溢出的周期为:T=(256-X)*12/fosc溢出率为溢出周期的倒数,即T1=1/T所以:式中:SMOD是所选的方式,fosc是晶振频率。
X是初始值。
51单片机模拟串口波特率计算方法1.计算波特率位间隔时间(即定时时间,其实就是波特率的倒数)位间隔时间(us)=10(6)(us)/波特率(bps)2.计算机单片机指令周期:指令周期(us)=12/晶振频率(Mhz)补充问题:做串口通信时,为什么要把晶振频率设为11.0592,为什么要把波特率设为9600?先说波特率。
波特率从300到115200都可以,甚至更高或更低。
一般规范的波特率都是3的倍数,比如9600、19200、38400;但是并不是一定的,波特率也可以是10000或者10001、10002,只要你的设备能产生符合这个要求的频率,尤其是自己用时,波特率都是很随意的,没有限制。
只是多数时候为了和电脑配合,波特率才规范为固定的几个值,且为了传输稳定,用9600。
用11.0592晶振的原因是51单片机的定时器导致的。
通常用11.0592M晶振是为了得到标准的无误差的波特率。
举例说来,如我们要得到的9600的波特率,晶振为11.0592M和12M,定制器1为2SMOD设为1,分别看看那所求的TH1为何值。
代入公式:11.0592M9600=(2/32)*((11.0592M/12)(256-TH1))TH 1=25012M9600=(2/32)*((12M/12)(256-TH1))TH1=249.49。
51单片机串口通信

一、串口通信原理串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。
由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。
串口通信的工作原理请同学们参看教科书。
以下对串口通信中一些需要同学们注意的地方作一点说明:1、波特率选择波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。
MSC-51串行端口在四种工作模式下有不同的波特率计算方法。
其中,模式0和模式2波特率计算很简单,请同学们参看教科书;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。
在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。
在此模式下波特率计算公式为:波特率=(1+SMOD)*晶振频率/(384*(256-TH1))其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;TH1——定时器的重载值。
在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。
这要根据系统的运作特点,确定通信的频率范围。
然后考虑通信时钟误差。
使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。
为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。
下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。
则TH1=256-62500/波特率根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。
列计数器重载值,通信误差如下表:因此,在通信中,最好选用波特率为1200,2400,4800中的一个。
2、通信协议的使用通信协议是通信设备在通信前的约定。
单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。
假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xA1:单片机读取P0端口数据,并将读取数据返回PC机;0xA2:单片机从PC机接收一段控制数据;0xA3:单片机操作成功信息。
C51单片机无源蜂鸣器音阶频率对照表

C51单片机无源蜂鸣器音阶频率对照表1、本对照表适用于C51系列单片机,实现音码频率和C51定时器设置对应;2、本对照表频率设置适用于无源蜂鸣器;3、本对照表实现99个音码频率对照,跨8个八度;4、若需要word版和带公式的excel版,请联系我们索取。
此外使用过程中有任何疑问,可发送邮件共同探讨!邮箱:****************2018年6月22日星期五By:zhihua音阶频率表(单位赫兹hz)1 2 3 4 5 6 7 8 9A 27.5 55 110 220 440 880 1760 3520 7040#A 29.135 58.27 116.541 233.082 466.164 932.328 1864.655 3729.31 7458.62B 30.868 61.735 123.471 246.942 493.883 987.767 1975.533 3951.066 7902.132C 32.703 65.406 130.813 261.626 523.251 1046.502 2093.004 4186.009#C 34.648 69.296 138.591 277.183 554.365 1108.731 2217.461 4434.922D 36.708 73.416 146.832 293.665 587.33 1174.659 2349.318 4698.636#D 38.891 77.782 155.563 311.127 622.254 1244.598 2489.016 4978.032E 41.203 82.407 164.814 329.629 659.255 1318.52 2637.02 5274.04F 43.654 87.307 174.614 349.228 698.456 1396.913 2793.826 5587.652#F 46.249 92.499 184.997 369.994 739.989 1479.978 2959.955 5919.91G 48.999 97.999 195.998 391.995 783.991 1567.982 3135.437 6270.874#G 51.913 103.826 207.652 415.305 830.609 1661.219 3322.437 6644.874注:绿色部分为钢琴88键常用音阶。
·单片机晶振为12mhs延时1ms计算依据

一、单片机晶振的作用与原理单片机晶振是单片机系统中的一个重要部件,它通过振荡产生稳定的时钟信号,为单片机的运行提供基准。
在单片机系统中,晶振的频率对系统的稳定性、精度和速度有着重要的影响。
二、晶振频率为12MHz的延时计算在单片机系统中,为了实现延时操作,一般需要通过编程来控制计时器或者循环延时的方式来实现。
对于晶振频率为12MHz的单片机系统,延时1ms的计算依据如下:1. 首先需要计算出12MHz晶振的周期,即一个晶振振荡周期的时间。
12MHz晶振的周期为1/12MHz=0.0833us。
2. 接下来将1ms转换成晶振周期数。
1ms=1000us,将1000us除以0.0833us得到12000。
即延时1ms需要进行12000个晶振周期的振荡。
3. 最后根据单片机的指令周期和频率来确定代码延时的实现方法。
以常见的晶振频率为12MHz的单片机为例,根据单片机的指令周期(一般为1/12MHz=0.0833us)和延时周期数(12000),可以编写相应的延时函数或者循环来实现1ms的延时操作。
三、12MHz晶振延时1ms的应用场景在实际的单片机应用中,常常需要进行一定时间的延时操作,例如驱动液晶屏显示、控制外围设备响应等。
12MHz晶振延时1ms的应用场景包括但不限于:LED闪烁控制、按键消抖、舵机控制、多任务调度等。
四、晶振频率选择与延时精度的关系晶振频率的选择对延时精度有着直接的影响。
一般来说,晶振频率越高,对延时精度要求越高的应用场景,而对于一般的延时控制,12MHz的晶振已经能够满足大多数的要求。
延时的精度还受到单片机的指令执行速度的影响,需要在实际应用中进行综合考量与测试。
五、总结在单片机系统中,晶振的频率选择与延时操作密切相关,12MHz晶振延时1ms的计算依据可以帮助工程师们更好地进行单片机程序的设计与开发。
需要根据实际应用场景和需求来选择合适的晶振频率,并对延时精度进行充分的考量和测试,以确保单片机系统的稳定可靠性。
《单片机应用技术》填空题题库x

《单片机应用技术》填空题题库x《单片机应用技术》习题库答案一、填空题第一、二章1.计算机中最常用的字符信息编码是(ASCII码)。
2.MCS-51系列单片机为( 8 )位单片机。
3.计算机三总线分别为:(数据)总线;(地址)总线;(控制)总线。
4.单片机与普通计算机的不同之处在于其将CPU 、存储器和I/O 三部分集成于一块芯片上。
5.能在紫外线照射下擦除和重写的存储器是(EPROM )型存储器,能够直接在线路中快速写入和读出的存储器是(EEPROM)型存储器。
6.8031、8051的主要区别是8051有 4 k内部ROM。
7.MCS-51单片机片内共有128 字节单元的RAM。
8.8031内部有RAM( 128 )字节、8751内部有ROM( 4K )。
9.MCS-51系列单片机8031、8051、89S52在内部存储器的设置上主要区别是:8031内部(无)程序存储器,8051内部( 4K )程序存储器,89C52内部( 8K )程序存储器。
10.8031构成的单片机应用系统必须扩展程序存储器。
11.M CS-51单片机片内RAM区中有128 个可寻址位。
12.8051单片机片内RAM区80H-0FFH属于特殊功能寄存器(SFR)区。
13.M CS-51单片机存储器结构的主要特点是程序存储器与数据存储器的寻址空间是分开的。
14.M CS-51单片机的存储器配置在物理结构上有4 个存储空间。
15.M CS-51单片机的存储器在逻辑上分为 3 个存储器地址空间16.当MCS-51单片机的EA引脚保持低电平时,CPU只访问片外的程序存贮器17.当EA接地时,MCS-51单片机将从外部程序存储器的地址0000H开始执行程序。
18.在只使用外部程序存储器时,51系列单片机的EA 管脚必须接地。
第1页共9页19.在只使用内部程序存储器时,51系列单片机的EA 管脚必须接高电平。
20.当使用8031单片机时,需要扩展外部程序存储器,此时/EA 应接低电平。
为什么51系列单片机常用11.0592MHz的晶振设计

为什么51系列单片机常用11.0592MHz的晶振设计?现在有许多极好的编译程序能显示代码,在速度和尺寸两方面都是非凡有效的。
现代的编绎器非常适应寄存器和变量的使用方面,比手动编译有较好的优越性,甚至在其它常规方面,所以C应是看代码方面最合适的。
答1:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。
特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。
答2:当定时器1被用作波特率发生器时,波特率工作于方式1和方式3是由定时器1的溢出率和SMOD 的值(PCON.7------双倍速波特率)决定:方式1、3波特率= (定时器1的溢出率)特殊时,定时器被设在自动重袋模式(模式2,TMOD的高四位为0100B),其为:方式1、 3波特率=11.0592MHZ晶振的一些典型波特率如下:更换一种计算方式,它将以修改公式达到我们需求的波特率来计算出晶振。
最小晶振频率=波特率x 384 x 2 SMOD这就是我们所需波特率的最小晶振频率,此频率能成倍增加达到我们需求的时钟频率。
例如:波特率为19.2KH2的最小晶振频率:3.6864=19200x384x2(波特率为19.2K的SMOD为1 )11.0592=3.6864x3其中TH1是由倍乘数(3)确定TH1=256-3=253=0FDH用来确定定时器的重装值,公式也可改为倍乘数的因子:晶振频率=波特率x(256-TH1)x384x2 SMOD这是波特率为19.24K的晶振频率。
以上的例子可知,被乘数(3)是用来确定TH1:TH1=256-3=253=0FDH19.2K波特率的晶振为11.0592=19200x(256-0FDH)x384x2(19.2 k的SMOD为1)其它值也会得出好的结果,但是11.0592MHZ是较高的晶振频率,也允许高波特率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51 单片机常用波特率初值表(12M 晶振)
为什幺51 单片机的晶振一般使用11.0592?
用11.0592 晶振的原因是51 单片机的定时器导致的。
用51 单片机的定时器做波特率发生器时,如果用11.0592Mhz 的晶振,根据公式算下来需要定时器设置的值都是整数;如果用12Mhz 晶振,则波特率都是有偏差的,比如9600,用定时器取0XFD,实际波特率10000,一般波特率偏差在4%左右都是可以的,所以也还能用STC90C516 晶振12M 波特率9600 ,倍数时误差率6.99%,不倍数时误差率8.51%,数据肯定会出错。
这也就是串口通信时大家喜欢用11.0592MHz 晶振的原因,在波特率倍速时,最高可达到57600,误差率0.00%。
用12MHz,最高也就4800,而且有0.16%误差率,但在允许范围,所以没多大影响。
扩展阅读:关于51 单片机IO 引脚的驱动能力与上拉电阻。