晶振定时(12M晶振的特性)
本文目录
为什么接晶振电路
接晶振电路是为确保电路系统的时序精度和可靠性。1.晶振电路可以提供稳定的时钟频率,保证电路系统的时序精度和稳定性,使系统能够准确地完成各种操作。2.如果电路中的时钟频率不稳定,可能会导致电路输出的信号不可靠,从而影响整个系统的正常运行。所以,晶振电路是为了确保电路系统的可靠性而被广泛应用的。3.此外,现代电子系统越来越复杂,特别是在高频、高速、高精度的领域,对时序精度和可靠性的要求也越来越高。因此,连接晶振电路已成为各种电子系统必不可少的组成部分。
12M晶振的特性
12MHZ晶振是一款能够定期产生重复信号的石英晶振,频率值为12.000mhz,它产生的信号通常为正弦波,
石英晶体振荡器的最重要的特性是它的频率:单位时间内完成振动的次数。晶振频率的单位为:HZ赫兹。一赫兹是表示每秒振荡一次。一个兆赫(MHz)是表示每秒振动一万次,它的数就是时钟周期。
12MHz晶体振荡器是一款输出频率是由石英晶体控制,每秒钟产生重复12万次振动的电子单元,晶振12MHZ用途很广,常见是用在在单片机上,它可以产生12个机器周期,起到一个定时的作用,不过现在的单片机要求运行速度要快很多,可以用其内部定时器编写程序。
定时器使用方法
第一步:设置特殊功能寄存器TMOD,配置好工作模式。
第二步:设置计数寄存器TH0和TL0的初值。
第三步:设置TCON,通过TR0置1来让定时器开始计数。
第四步:判断TCON寄存器的TF0位,监测定时器溢出情况。
写程序之前,我们要先来学会计算如何用定时器定时时间。我们的晶振是11.0592M,时钟周期就是1/11059200,机器周期是12/11059200,假如要定时20ms,就是0.02秒,要经过x个机器周期得到0.02秒,我们来算一下x*12/11059200=0.02,得到x=18432。16位定时器的溢出值是65536(因65535再加1才是溢出),于是我们就可以这样操作,先给TH0和TL0一个初始值,让它们经过18432个机器周期后刚好达到65536,也就是溢出,溢出后可以通过检测TF0的值得知,就刚好是0.02秒。那么初值y=65536-18432=47104,转成16进制就是0xB800,也就是TH0=0xB8,TL0=0x00。
这样0.02秒的定时我们就做出来了,细心的同学会发现,如果初值直接给一个0x0000,一直到65536溢出,定时器定时值最大也就是71ms左右,那么我们想定时更长时间怎么办呢?用你小学学过的逻辑,倍数关系就可以解决此问题。
好了,我们下面就用程序来实现这个功能。
#include
sbitLED=P0^0;
sbitADDR0=P1^0;
sbitADDR1=P1^1;
sbitADDR2=P1^2;
sbitADDR3=P1^3;
sbitENLED=P1^4;
voidmain(){
unsignedcharcnt=0;//定义一个计数变量,记录T0溢出次数
ENLED=0;//使能U3,选择独立LED
ADDR3=1;
ADDR2=1;
ADDR1=1;
ADDR0=0;
TMOD=0x01;//设置T0为模式1
TH0=0xB8;//为T0赋初值0xB800
TL0=0x00;
TR0=1;//启动T0
while(1){
if(TF0==1){//判断T0是否溢出
TF0=0;//T0溢出后,清零中断标志
TH0=0xB8;//并重新赋初值
TL0=0x00;
cnt++;//计数值自加1
if(cnt》=50){//判断T0溢出是否达到50次
cnt=0;//达到50次后计数值清零
LED=~LED;//LED取反:0--》1、1--》0
}
}
}
}
程序中都写了注释,结合前几章学的内容,自己分析一下,不难理解。本程序实现的结果是开发板上最右边的小灯点亮一秒,熄灭一秒,也就是以0.5Hz的频率进行闪烁
三脚晶振分不分方向
不分方向。这是因为三脚晶振的设计中,晶体振荡器是固定方向的,而三个引脚则是等价的,可以任意连接任何方向,对振荡信号没有影响。在实际使用中,三脚晶振的引脚连接也是可以通过试验来确认的,不用担心方向问题。三脚晶振是一种常用的电子元器件,用于时钟、定时等应用。三脚晶振的引脚数量较少,连接比较简单,但需要注意其额定频率和精度等参数,以满足实际应用需要。同时,三脚晶振也有其它型号和封装方式,需要根据具体情况进行选择。