NE555是一款极受欢迎的定时/振荡器集成电路,其设计日期可追溯到1970年,尽管技术正在日新月异的发展,其重要性和应用性仍然没有被削弱。NE555包含了许多系统需要的功能诸如比较器、触发器、反相器和输出驱动等等,其主要功能有定时、脉冲生成和振荡器。
其特点有:
1、高度灵活:NE555集成电路因其设计而具有很高的灵活性,可以在多种模式下工作,包括单稳态(用作定时器或延时器)、双稳态(用作翻转触发器)和稳定模式(用作振荡器)。
2、宽电源电压范围:NE555可以工作在4.5至16V的电源电压范围内,且其性能在这个范围内保持稳定。
3、高输出电流能力:NE555的输出电流最大可达到200mA,可以直接驱动许多外围设备和负载。
4、具有重置功能:NE555具有一位复位引脚,它可以用来重置计时器的定时操作。
5、精度高:NE555在其有效电源电压范围内,其计时精度可以达到极高的程度。
6、设计简单:NE555只需要少量的外围元器件,如少数几个电阻和电容,就可以实现多种功能,使得设计电路变得非常简单。
7.成本低:由于其极简的设计和广泛的应用,NE555可以大规模生产,使其成本非常低,能被广泛应用在各种电子设备中
NE555是一个八脚封装的DIP(双列直插)封装的电子器件,从电路图上可以看到其各个引脚的功能如下:
引脚1:接地端(GND),用于连接向电源的负端。
引脚2:触发端(TRIG),通过这里输入脉冲控制振荡开始。当触发脚电压低于1/3VCC时,比较器1 输出高电平,触发翻转触发器并使输出引脚3的电平由高电平跳变到低电平。
引脚3:输出端(OUT),NE555的主要输出端。
引脚4:复位端(RESET),输入复位信号使NE555回到初始状态。当输入低电平时,会复位InterPatin和SR,使OutPatin电路输出低电平,非反馈耦合的RS 翻转触发器被重置即使控制电压CONT(从引脚5输入)为低电平也不能改变。
引脚5:控制端(CONT),用于控制输出的工作状态。例如通过一个电容连接到地,作为电压控制端,任何连到这个引脚的电压会改变阀值的大小(主要影响触发器闭锁的电压大小),若未使用可悬空。
引脚6:阈值端(THR),如果这个引脚的输入电压高于2/3VCC,那么输出端(OUT)会变为低电平。它与引脚7共享一个电阻和一个电容构成的RC振荡器电路。
引脚7:放电端(DIS),振荡器产生的三角波会被送到这里,与引脚6并联。
8引脚8:正电源(VCC),用来通常接入5V - 15V的DC电源。
NE555的工作原理基于其内部结构。首先,我们了解一下NE555内部的主要组件。它包括两个与电压比较器,一个反向重置触发器,一个输出驱动器,一个基准电压生成器和一个放电引脚的开放集电器(开放引线)。
现在,我们详细解释NE555三种主要工作模式下的工作原理:
1、稳定态模式(振荡器模式)
这个模式下,NE555可以作为振荡器使用。两个阻值以及一个电容值用于确定振荡周期,进而决定了脉冲或方波信号的频率。当电容电压低于1/3 VCC(供电电压)时,比较器1输出高电平,翻转触发器设定,输出变为高电平。当电容电压升高超过2/3 VCC时,比较器2输出低电平,翻转触发器复位,输出变为低电平(我们蓝桥杯单片机上采用的就是此工作原理,并且我们不需要对NE555进行编程因为他是一个纯硬件电路,由原理图可以看出在蓝桥杯单片机中NE555定时器单纯用来做一个测频率的信号发生器)。
2、单稳态模式(延时模式)
在这种模式下,NE555可以作为一个延时触发器,当输入端突然由高电平变为低电平时,电路立即开始计时,输出变为高电平,并保持一定时间,然后输出变为低电平,这段时间就是延时时间。
3、双稳态模式
在这种模式下,NE555的两个稳定状态均可使用,即输出可以是持续的高电平或低电平。它是通过两个外部触发源来控制的,一个用于设定,一个用于复位。具体的输出电平取决于最后一个触发的是设定输入还是复位输入。
1、首先,配置NE555为频率源,选择合适的电阻和电容数值,使NE555工作在稳定的振荡模式,输出一定的频率脉冲(本单片机省略这一步)。
2、然后,设置单片机中的定时器0和定时器1。定时器1用于产生一个固定的时间间隔,例如1秒;而定时器0用于计数NE555产生的脉冲数量。
3、将NE555的输出脉冲接入单片机的定时器1的外部计数输入。
4、启动定时器1,在定时器1产生中断(即每隔1秒)时,读取定时器0的计数值。然后清零定时器0的计数值,继续计数。
5、定时器0的计数值就是NE555在1秒内产生脉冲的数量,也就是频率。
6、最后,将这个频率显示在SMG上。
在CT107D单片机综合实训平台上,利用NE555产生方波信号并测量其频率,具体功能要求如下:
1、上电开机运行时,关闭蜂鸣器、继电器和8个LED指示灯。
2、用短路环将J13中的NAL与P34短接,NE555发生的信号输入到单片机的P34引脚。
3、单片机测量信号频率,并显示在数码管中,频率数据显示用6位数码管,单位是Hz,当显示长度不足6位时,未使用到的数码管熄灭,在最左边的1位数码管用“F”作为提示符
#include
unsigned int Count_F;//累计1s内脉冲产生的次数
unsigned int data_F;//1s内脉冲产生次数
/*0 1 2 3 4 5 6 7 8 9 */
unsigned char code NixieTube_nodot[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
/* A B C D E F H L N P */
0x88,0x83,0xC6,0xA1,0x86,0x8E,0x89,0xC7,0xC8,0x8C,
/* U - ' ' */
0xC1,0xBF,0xFF};//无小数点段码
void HC138_Select(unsigned char choice){//HC138译码器应用选择
switch(choice){
case 0: P2 = (P2 & 0x1f) | 0x00; break;
case 4: P2 = (P2 & 0x1f) | 0x80; break;
case 5: P2 = (P2 & 0x1f) | 0xa0; break;
case 6: P2 = (P2 & 0x1f) | 0xc0; break;
case 7: P2 = (P2 & 0x1f) | 0xe0; break;
}
}
void Delay(unsigned char xms){//延时函数
unsigned char i,j;
while(xms--){
i = 12;
j = 169;
do{
while(--j);
}while(--i);
}
}
void SMG_TranslateBit(unsigned char pos,unsigned char value){//数码管发送函数
HC138_Select(7);
P0 = 0xFF;
HC138_Select(6);
P0 = 0x01<9999)
{
SMG_TranslateBit(3,NixieTube_nodot[data_F/10000]);
}
if(data_F>999)
{
SMG_TranslateBit(4,NixieTube_nodot[(data_F/1000) % 10]);
}
if(data_F>99)
{
SMG_TranslateBit(5,NixieTube_nodot[(data_F/100) % 10]);
}
if(data_F>9)
{
SMG_TranslateBit(6,NixieTube_nodot[(data_F/10) % 10]);
}
SMG_TranslateBit(7,NixieTube_nodot[data_F % 10]);
}
void Timer0_Init(){//定时器0初始化配置为八位计数器模式
TMOD = 0x06;
TL0 = 0xFF;
TH0 = 0xFF;
TR0 = 1;
EA = 1;
ET0 = 1;
PT0 = 0;
}
void Timer1_Init(){//定时器1初始化配置为16位定时器模式
TMOD = 0x06;
TL1 = (65535-1000)%256;
TH1 = (65535-1000)/256;
TR1 = 1;
EA = 1;
ET1 = 1;
PT1 = 0;
}
void Timer0_handel(void) interrupt 1{
Count_F++;//记录脉冲次数叠加
}
void Timer1_handel(void) interrupt 3{
static unsigned int T1Count = 0;
T1Count++;
if(T1Count >= 1000){
T1Count = 0;
data_F = Count_F;//获取频率
Count_F = 0;
}
}
void Init_System(void){//系统初始化
HC138_Select(4);
P0 = 0xFF;
HC138_Select(5);
P0 = 0x00;
}
void main(){
Init_System();
Timer0_Init();
Timer1_Init();
while(1){
Display_SMG();
}
}