51单片机能不能用27M的晶振

2024-05-18 15:53

1. 51单片机能不能用27M的晶振

应该是不能用的

标准的51单片机晶振是1.2M-12M,一般由于一个机器周期是12个时钟周期,所以先12M时,一个机器周期是1US,好计算,而且速度相对是最高的(当然现在也有更高频率的单片机)。
11.0592M是因为在进行通信时,12M频率进行串行通信不容易实现标准的波特率,比如9600,4800,而11.0592M计算时正好可以得到,因此在有通信接口的单片机中,一般选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单片机能不能用27M的晶振

2. 51单片机为什么晶振都用11.0592M

因为11.0592MHz能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。
特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。
用11.0592晶振的原因是51单片机的定时器导致的,用51单片机的定时器做波特率发生器时,如果用11.0592Mhz的晶振,根据公式算下来需要定时器设置的值都是整数;如果用12Mhz晶振,则波特率都是有偏差的。

单片机组成:
运算器由运算部件算术逻辑单元、累加器和寄存器等几部分组成。ALU的作用是把传来的数据进行算术或逻辑运算,输入来源为两个8位数据,分别来自累加器和数据寄存器。ALU能完成对这两个数据进行加、减、与、或、比较大小等操作,最后将结果存入累加器。
控制器由程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器等组成,是发布命令的“决策机构”,即协调和指挥整个微机系统的操作。

3. 51单片机为什么晶振都用11.0592M

 其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。
 
  其二:用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单片机为什么晶振都用11.0592M

4. 51单片机问题晶振问题

【计算公式】T(初值)=2^N - 定时时间/机器周期时间 
方式0下 N=13。方式1下 N=16。方式2、3 下N=8。 定时时间单位为us
机器周期时间=12/晶振频率

T(初值):FEB5 H = 65205
定时时间=(2^16-65205)*12/3.579
             =331*12/3.579
             =3972/3.579
             =1109.8072087175188600167644593462us

5. 为啥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单片机的晶振一般使用11.0592

6. 请问谁知道什么是单片机的晶振........

简单地说,没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。

    单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。—个机器周期包括12个时钟周期。如果一个单片机选择了12MHz晶振,它的时钟周期是1/12us,它的一个机器周期是12×(1/12)us,也就是 
  1us。

    MCS—51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较馒,得要2个机器周期,还有两条指令要4个机器周期才行。为了衡量指令执行时间的长短,又引入一个新的概念:指令周期。所谓指令周期就是指执行一条指令的时间。例如,当需要计算DJNZ指令完成所需要的时间时,首先必须要知道晶振的频率,设所用晶振为12MHz,则一个机器周期就是1us。而DJNZ指令是双周期指令,所以执行一次要2us。如果该指令需要执行500次,正好1000us,也就是1ms。

    机器周期不仅对于指令执打有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。例如一个单片机选择了12MHz晶振,那么当定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。

7. 如何将单片机的晶振22M改为12M的,急!

电路上,将原来的22M的取下,换成12M的即可。
编程上,由于换成12M的了,所以单片机的速度会变慢。因此,程序中可能有几个方面需要修改(当然,若电路上换了晶振之后仍运行正常,程序就不用修改了):
1、延时程序,应该让控制循环次数的数减半。
2、时序驱动程序,如12864液晶屏的驱动,单总线的DS18B20芯片的驱动,IIc的DS1302的驱动,都应该相应的修改下里面的延时。不过,若修改前能实现,就不用改了。
3、调试的时候,应修改如图所示位置的晶振频率(不修改也行,不影响编译的)。

如何将单片机的晶振22M改为12M的,急!

8. 为什么51单片机的晶振要实行12分频

首先需要明确:51单片机不是一定要用12m的晶振,11.05925m也行,18m也行,即一般来说35m以内的无源晶振(两脚的)都可以的。
为什么常见的51单片机要用12m的晶振,是因为我们常说的51单片机是12分频的,如果选用12m晶振,如果是单指令周期的语句,刚好是1us,其他语句好似1us的整数倍,这样计算指令时间很方便。
对于利用51单片机进行串口通讯的,一般会选用11.0592m晶振,因为对于9600,4800的波特率,11.0592m晶振计算时正好可以得到整数。