① 为什么单片机晶振实际是11.0592MHz,而不是12MHz
因为11.0592MHz能够准确地划分成时钟频率,与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%误差率,但在允许范围,所以没多大影响。
(1)51单片机110592mhz扩展阅读:
单片机晶振的选择:
晶振好比单片机的心脏,晶振选择太高不太合适,具体晶振上限是多少,恐怕测不出来,只能按照单片机的要求,一般STC系列单片机上限是35M或40M,stc单凭上写的有,如STC11F16XE 35I-LQFP44G其中35I就是晶振最高35M的工业级芯片。
如果用于串口通信,建议选用11.0592M的或22.184M,选择晶振最主要还是参照说明书。
② 51单片机脉冲为什么是11.0592而不是12
这个问题与单片机的串口波特率有关。
51单片机的串口工作方式有4种,方式0、方式2的波特率是固定的,只与单片机的系统晶振频率有关。方式1、方式3波特率是可变的,不止与系统晶振频率有关,还与定时器T1有关。
因为51单片机的波特率发生器只能由定时器T1或定时器T2产生,由于我们使用的是STC98C52单片机,是标准51架构的单片机没有T2模块。)
对于串口通信来讲最常用的是方式1,以下以串口的模式1来分析。由串口发送原理知,串口发送一次,实际上要发,1位起始位,8位数据位,1位结束位。
由于使用模式1没有第9位数据位,所以,串口发送一次,一共要发10位数据,有一点要注意,在串口发送数据时,两次发送之间是没有累计误差的。
(2)51单片机110592mhz扩展阅读
串口工作在方式1下的波特率计算公式为:
Baud = ((2^SMOD)/32)*(T1定时器溢出率)
其中SMOD为寄存器PCON的最高位,当SMOD = 0时,串口通信方式1、2、3波特率正常;当SMOD = 1时,串口通信方式1、2、3波特率加倍。即SMOD = 0为例。
之所以单片机能成为控制核心,设计出包罗万象的应用系统来,是因为开发者利用了单片机提供的种种功能及各种外设。
所以,要掌握单片机的各种功能,再加上诸如传感器、模数转换、扫描显示、串行、中断的应用思维,结合更多的元器件、电子电路知识,逐个学习、体会实际的单片机系统的秘密。
③ 51单片机串口通信汇编语言实现
本来汇编语言写程序就很麻烦的,那画仿真图,又写A,B两个单片机的程序,才5个财富值,太少了,没有意思做。
④ 51单片机晶振频率分别为11.0592MHz机器周期分别为多少
12/11.0592微秒,51单片机的一个机器周期等于12个振荡周期(晶振频率的倒数)。
1.大部分51单片机1个机器周期=12个时钟周期(或振荡周期),有些增强型的1个机器周期=1个时钟周期(或振荡周期),如stc12系列,stc15系列
2.51单片机的机器周期=1/晶振频率;当晶振频率=11.0592MHz,1个机器周期=12个时钟周期(或振荡周期)时,机器周期=12/11.0592微秒。
(4)51单片机110592mhz扩展阅读:
1、使用用户板的晶振:仿真器晶振旁有两组跳线用来切换内部晶振和用户板晶振,当两个短路块位于仿真器晶振一侧时,默认使用仿真板上的晶振(11.0592MHz), 当两个短路块位于电容一侧时,使用用户板的晶振。
2、为便于调试带看门狗的用户板,仿真器的复位端未与用户板复位端相连;故仿真器的复位按钮只复位仿真器,不复位用户板;若要复位用户板,请使用用户板复位按钮。
⑤ 为什么51系列单片机常用11.0592MHz的晶
这是出于对串口通信的考虑,因为串口最常用的波特率有9600、115200、460800等,而11059200是大多数常用波特率的整数倍,用于串口通信时不会有系统误差。
也可以用22.1184M,只要单片机支持的频率达得到。
⑥ 51单片机用多大频率的晶振好呢,11.0592m和12m有什么区别立创商城的晶振怎么样
晶振的振荡频率,要根据单片机的具体应用场合来决定,并不是越高越好。
11.0592MHz和12MHz的振荡频率相差不大,但如果你的单片机需要用异步串行通信功能的话,建议你选用11.0592MHz的振荡频率。因为你在进行波特率发生器的编程中,采用这个振荡频率的话,波特率计数器的计数初值可以是整数;而采用12MHz振荡频率,则计数初值只能是一个大约值(接近于某个小数的整数),长时间通信会产生误差积累而导致通信失败。
⑦ 51单片机为什么要用11.0592MHZ的晶振
11.0592MHZ的晶振可产生标准的波特率。如果没有串口通信的要求,用其他晶振频率(单片机最高频率内)也没有问题。
⑧ 这段代码是51单片机的串口通信代码,希望能在其中添加一个功能
#include
#include
unsigned
char
ch;
bit
read_flag=
0
;
void
init_serialcom(
void
)
//串口通信初始设定
{
scon
=
0x50
;
//uart为模式1,8位数据,允许接收
tmod
|=
0x20
;
//定时器1为模式2,8位自动重装
pcon
|=
0x80
;
//smod=1;
th1
=
0xfd
;
//baud:19200
fosc="11".0592mhz
ie
|=
0x90
;
//enable
serial
interrupt
tr1
=
1
;
//
timer
1
run
ti=1;
}
//向串口发送一个字符
void
send_char_com(
unsigned
char
ch)
{
sbuf=ch;
while
(ti==
0);
ti=
0
;
}
//串口接收中断函数
void
serial
()
interrupt
4
using
3
{
if
(ri)
{
ri
=
0
;
ch=sbuf;
read_flag=
1
;
//就置位取数标志
}
}
main()
{
init_serialcom();
//初始化串口
while
(
1
)
{
if
(read_flag)
//如果取数标志已置位,就将读到的数从串口发出
{
read_flag=
0
;
//取数标志清0
send_char_com(ch);
}
}
}
⑨ 51单片机为什么晶振都用11.0592M
因为11.0592MHz能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。
特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。
用11.0592晶振的原因是51单片机的定时器导致的,用51单片机的定时器做波特率发生器时,如果用11.0592Mhz的晶振,根据公式算下来需要定时器设置的值都是整数;如果用12Mhz晶振,则波特率都是有偏差的。
单片机组成:
运算器由运算部件算术逻辑单元、累加器和寄存器等几部分组成。ALU的作用是把传来的数据进行算术或逻辑运算,输入来源为两个8位数据,分别来自累加器和数据寄存器。ALU能完成对这两个数据进行加、减、与、或、比较大小等操作,最后将结果存入累加器。
控制器由程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器等组成,是发布命令的“决策机构”,即协调和指挥整个微机系统的操作。
⑩ 单片机上的晶振为什么有时是12MHZ,有时是11.0592MHZ
标准的51单片机晶振是1.2M-12M,一般由于一个机器周期是12个时钟周期,所以先12M时,一个机器周期是1US,好计算,而且速度相对是最高的(当然现在也有更高频率的单片机)。11.0592M是因为在进行通信时,12M频率进行串行通信不容易实现标准的波特率,比如9600,4800,而11.0592M计算时正好可以得到,因此在有通信接口的单片机中,一般选11.0592M