为什么51系列单片机常用11.0592MHz的晶振设计

合集下载

答辩常见问题解答#(精选.)

答辩常见问题解答#(精选.)

答辩常见问题解答P0 口需不需要加上拉电阻问题P0口做数据总线用是不需要加上拉电阻,这个书上面有写的,就是8个IO口同时控制输出,比如P0口接1602液晶、12864液晶、数码管的8段段选等等都不需要加上拉电阻,如果做单个的IO口用就要加上拉电阻,仿真里P0口必需要加上拉电阻,这个是仿真和实际的差别。

本课题的选课背景、意义等等?这个论文中有的,也都是一些套话。

我就不答了,我整理的都是技术性的。

数码管采用的是什么扫描方式?一位数码管的设计就是采用静态扫描的方式,因为一位数码管是8个段选1个位选,如果采用动态,那就是得用9个IO口,而且程序也比较麻烦,如果选用静态那么位选接电源或地(共阳接电源,共阴接地),段选接IO口,就可以控制显示了,这样只用8个IO 口就ok,而且程序比较简单。

多位一体的数码管只能用动态扫描的方式,因为硬件本身就将每个位的段都接到一起了,所以只能动态控制了。

蜂鸣器或继电器的驱动三极管为什么选用pnp型的(9012、8550),而不是npn型的(9013、8050)?因为单片机刚一上电的时候所有的IO口会有一个短暂的高电平。

如果选用npn型的,即使程序上将IO口拉低,蜂鸣器或继电器也会响一小下或吸合一下,为了避免这种情况发生,就选用pnp型的。

因为我们想控制蜂鸣器或继电器工作单片机的IO口要低电平,这样就避免了,因为我们不可能刚一通电就让蜂鸣器响或继电器吸合。

避免了不必要的麻烦。

液晶三脚接的电阻是而不是可调电阻?经过查阅资料得知(买液晶时给的资料),液晶3脚是灰度调节引脚,灰度正常时是0.5~1V左右,用可调电阻其他就是电阻分压的原理得到的电压,而我们直接用的是电阻也是可以得到正常显示的电压的。

为什么继电器吸合或风扇转动时,液晶屏幕会变暗?从问题5中可以了解大概,就是液晶的灰度是电压控制的,当继电器吸合或风扇转动时,需要的电流较大,而我们采用的电源线或电池盒供电会有一定的压降。

这样液晶的3脚采集的电压就高了。

51晶振为什么是11.0592

51晶振为什么是11.0592

51 晶振为什么是11.0592单片机晶振大多为11.0592 的原因常用波特率通常按规范取为1200,2400,4800,9600,若采用晶振12 兆赫兹或6 兆赫兹,计算得出的T1 定时初值将不是一个整数,这样通信时便会产生积累误差,进而产生波特率误差,影响串行通信的同步性能。

解决的方法只有调整单片机的时钟频率,通常采用11.0592 兆赫兹晶振。

因为用它能够非常准确地计算出T1 定时初值,即使对于较高的波特率(19600,19200),不管多幺古怪的值,只要是标准通信速率,使用11.0592 兆赫兹的晶振可以得到非常准确的数值。

11.0592 兆是因为在进行通信时,12 兆频率进行串行通信不容易实现标准的波特率,比如9600,4800,而11.0592 兆计算时正好可以得到,因此在有通信接口的单片机中,一般选11.0592 兆。

51 晶振为什幺是11.0592用11.0592 晶振的原因是51 单片机的定时器导致的。

用51 单片机的定时器做波特率发生器时,如果用11.0592 兆赫兹的晶振,根据公式算下来需要定时器设置的值都是整数;如果用12 兆赫兹晶振,则波特率都是有偏差的,比如9600,用定时器取0XFD,实际波特率10000,一般波特率偏差在4%左右都是可以的,所以也还能用STC90C516 晶振12 兆波特率9600,倍数时误差率6.99%,不倍数时误差率8.51%,数据肯定会出错。

这也就是串口通信时大家喜欢用11.0592 兆赫兹晶振的原因,在波特率倍速时,最高可达到57600,误差率0.00%。

用12 兆赫兹,最高也就4800,而且有0.16% 误差率,但在允许范围,所以没多大影响。

为什幺不是其他数我们假定0-12_000_000 之间有一个数满足以下条件的时候,这个数比较适合晶振的频率:1.当初值在0-255 的情况下,这个数能够整除较多的数(整除的数越多,便可获得能够整除的波特率的种类越多);2.而且这个数应该较大,晶振频率越快,波特率越大,传输的速度越快;3.在SOMD 加倍和不加倍的情况下,这个数都能够整除较多的数。

用51单片机+11.0592的晶振,如何产生115200的波特率?

用51单片机+11.0592的晶振,如何产生115200的波特率?

用51单片机+11.0592的晶振,如何产生115200的波特
率?
今天解决了一个小问题(查书后才得到确切结论。

)用51单片机
+11.0592的晶振,如何产生115200的波特率?本来感觉这个小意思,直接初始化定时器1,程序如下:
 void init_com( void ){SCON = 0x50 ; //串口工作方式1,8位UART,波特率可变TMOD |= 0x20 ; //定时器1,工作方式2,自动再装入8位定时器PCON |= 0x80 ; //SMOD=1; 波特率加倍TH1 = 0xfa ; //波特率:9600 晶振=11.0592MHzIE |= 0x90 ; //使能串口中断TR1 = 1 ; // 定时器1开始}
 结果发现这样只能得到9600的波特率。

 当SMOD=1时,K=2,波特率加倍,公式为:
 波特率=K乘以11059200/32乘以12乘以(256-TH1)
 所以,TH1=0xfa=256-(2乘以11059200/384乘以波特率)其中波特率为9600
 这时,及时令TH1=0xff,所得波特率最大只能为57600,也就是说,这样无法得到115200的波特率。

 这样就只有采用其他方法了:
 1、换晶振,用22.1184M晶振,在TH1=0xff时,刚好可以产生115200波特率。

 2、采用6个时钟周期的单片机(换单片机啊。


 3、增强型51单片机有定时器2!(幸好偶用的是增强型。


 就用第三种方法啦!这时的公式如下:
 波特率=11059200/32乘以[65535-(RCAP2H,RCAP2L)]。

单片机中的寄存器多数是八位的

单片机中的寄存器多数是八位的

1、89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FlashProgrammable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。

P0能够用于外部程序数据存储器,它可以被定义为数据/89C51引脚图地址的低八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL 门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为低八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

2、MCS-51系列单片机内部通常有128B(位)至256B的片内数据存储器,用于一般的控制及运算是足够的,但若用于数据存储,其容量是不足的,在这种情况下,必须扩展数据存储器。

MCS-51系列单片机对外提供32 条I/O 口线,但其P0口作为地址/数据复用口,P2口用于提供高8 位地址,而其P3口具有第二功能,若扩展了程序存储器或数据存储器,单片机的I/O 口往往也不够用,有时必须进行I/O 口的扩展。

51单片机串口波特率计算

51单片机串口波特率计算

51单片机串口波特率计算
在51单片机中,串口通信可以通过设置波特率来控制数据传输速度。

波特率是指每秒钟传输的数据位数。

要计算51单片机串口的波特率,需要了解以下几个参数:
1.时钟频率:51单片机的时钟频率通常为12MHz或者11.0592MHz。

这是由外部晶振或者内部时钟发生器提供的。

2.波特率发生器(UART)的参数:波特率发生器的输入时钟频率为时
钟频率的12分频。

串口通信的常用波特率有1200、2400、4800、9600等。

接下来我们
以计算1200波特率为例进行说明。

首先,计算波特率发生器的输入时钟频率:
输入时钟频率=时钟频率/12
假设时钟频率为11.0592MHz,则输入时钟频率为:
输入时钟频率=11.0592MHz/12≈921.6kHz
然后,根据波特率公式计算波特率发生器的计数器初值:
计数器初值=输入时钟频率/(16*波特率)
对于1200波特率,计数器初值为:
计数器初值=921.6kHz/(16*1200)≈48
最后,将计数器初值设置到波特率发生器,即可达到1200波特率的
串口通信。

需要注意的是,以上计算是基于8位数据位、无校验位和1位停止位
的情况。

如果需要使用其他参数,则需要根据具体情况进行计算。

综上,通过以上计算可以得到51单片机串口的波特率。

根据不同的
时钟频率和波特率要求,可以使用相应的计数器初值来设置波特率发生器,实现串口通信。

22.1184MHZ晶振和11.0592MHZ晶振

22.1184MHZ晶振和11.0592MHZ晶振
0
0FAH
2400
0
0F4H
1200
0
0E8H
300
0
0A0H
更换一种计算方式,它将以修改公式达384 x 2 SMOD
这就是我们所需波特率的最小晶振频率,此频率能成倍增加达到我们需求的时钟频率。
为什么51系列单片机常用11.0592MHz的晶振设计?
1、因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。
2、当定时器1被用作波特率发生器时,波特率工作于方式1和方式3是由定时器1的溢出率和SMOD的值(PCON.7------双倍速波特率)决定:
例如:波特率为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的晶振频率。
方式1、3波特率= (定时器1的溢出率)
特殊时,定时器被设在自动重装模式(模式2,TMOD的高四位为0100B),其为:
方式1、 3波特率=
11.0592MHZ晶振的一些典型波特率如下:
波特率
SMOD
TH1
19200
1
0FDH
9600
0
0FDH
4800
以上的例子可知,被乘数(3)是用来确定TH1:

51单片机串行口的工作方式解析

51单片机串行口的工作方式解析

51单片机串行口的工作方式解析方式0是外接串行移位寄存器方式。

工作时,数据从RXD串行地输入/输出,TXD输出移位脉冲,使外部的移位寄存器移位。

波特率固定为fosc/12(即,TXD 每机器周期输出一个同位脉冲时,RXD接收或发送一位数据)。

每当发送或接收完一个字节,硬件置TI=1或RI=1,申请中断,但必须用软件清除中断标志。

实际应用在串行I/O口与并行I/O口之间的转换。

2)方式1方式1是点对点的通信方式。

8位异步串行通信口,TXD为发送端,RXD为接收端。

一帧为10位,1位起始位、8位数据位(先低后高)、1位停止位。

波特率由T1或T2的溢出率确定。

在发送或接收到一帧数据后,硬件置TI=1或RI=1,向CPU申请中断;但必须用软件清除中断标志,否则,下一帧数据无法发送或接收。

(1)发送:CPU执行一条写SBUF指令,启动了串行口发送,同时将1写入输出移位寄存器的第9位。

发送起始位后,在每个移位脉冲的作用下,输出移位寄存器右移一位,左边移入0,在数据最高位移到输出位时,原写入的第9位1的左边全是0,检测电路检测到这一条件后,使控制电路作最后一次移位,/SEND和DATA 无效,发送停止位,一帧结束,置TI=1。

(2)接收:REN=1后,允许接收。

接收器以所选波特率的16倍速率采样RXD端电平,当检测到一个负跳变时,启动接收器,同时把1FFH写入输入移位寄存器(9位)。

由于接、发双方时钟频率有少许误差,为此接收控制器把一位传送时间16等分采样RXD,以其中7、8、9三次采样中至少2次相同的值为接收值。

接收位从移位寄存器右边进入,1左移出,当最左边是起始位0时,说明已接收8位数据,再作最后一次移位,接收停止位。

此后:A、若RI=0、SM2=0,则8位数据装入SBUF,停止位入RB8,置RI=1。

B、若RI=0、SM2=1,则只有停止位为1时,才有上述结果。

C、若RI=0、SM2=1,且停止位为0,则所接数据丢失。

51单片机答辩常见问题解答

51单片机答辩常见问题解答

51单片机辩论常见问题解答1: P0 口需不需要加上拉电阻问题P0 口做数据总线用是不需要加上拉电阻,这个书上面有写的,就是8个10 口同时控制输出,比方P0 口接1602液晶、12864液晶、数码管的8段段选等等都不需要加上拉电阻,如果做单个的10 口用就要加上拉电阻,仿真里P0 口必需要加上拉电阻,这个是仿真和实际的差异。

2:什么是51单片机51单片机其实不是单独指STC89C51或许AT89C51o 51单片机包含了常见的STC89C52 > STC89C51 > AT89C52 AT89C51 AT89S52 AT89S51等等8位的单片机都是51单片机。

引脚都是一模一样的,程序也兼容。

只是名字不一样而已。

通用的。

论文中需要指定的单片机只需要把名字换了就。

k 了。

3:本店有些作品中为什么个别设计中没有按键复位复位有2种复位方式,一种是上电复位。

一种是9脚按键上 拉复位。

这是书本上面有的。

现在很多作品都没有要按键复位了(这 样作品更环保美观)O 如果一定要按键复位,加一个按键上拉置高电平, 并个10uf 电容就行了。

(原理图如下)局部产品由于电路板剩余面积较大。

复位按键就加进去了。

加上 复位按键只是完成单片机的复位最小系统完整。

实际上这个按键基本 用不上。

需要复位的时候直接重启电源就可以了。

没有必要使用复位 按键。

不加按键复位也没有错。

就像上面讲的,P0 □做数据总线不是也没有用上拉电阻吗。

有按键的复位电路如下列图:P1.OP1.1P1.2 P1.3P1.4 P1.5 P1.6P1.7 RST (RXE (1XU (JNTC (TNT1 :4:本课题的选课背景、意义等等?这个论文中有的,也都是一些套话。

我就不答了,我整理的都是 技术性的。

5:数码管采用的是什么扫描方式?一位数码管的设计就是采用静态扫描的方式,因为一位数 码管是8个段选1个位选,如果采用动态,那就是得用9个10 口, 而且程W1T12序也比拟麻烦,如果选用静态那么位选接电源或地(共阳接电源,共阴接地),段选接10 口,就可以控制显示了,这样只用8个10 口就ok,而且程序比拟简单。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

为什么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=0FDH
19.2K波特率的晶振为
11.0592=19200x(256-0FDH)x384x2(19.2 k的SMOD为1)
其它值也会得出好的结果,但是11.0592MHZ是较高的晶振频率,也允许高波特率。

相关文档
最新文档