一、简介
1、NE555在开发板中用于输出频率可变,占空比不变的方波。
2、NE555是纯硬件的设计,通过电位器RB3可改变其信号输出频率。不需要编程实现其功能。
考点:使用定时器的计数模式测量NE555输出的频率
3、开发板上电路
NET SIG即接P34(P34可以作为定时器/计数器0的外部输口)
二、应用
考点:使用定时器的计数模式测量NE555输出的频率
实现:
1、定时器0的计数模式计脉冲的个数。
使用STC-ISP软件生成函数后,修改TMOD,TR0
void Timer0Init(void) //0秒@12.000MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD |= 0x05; //0x04 0x05都可
TL0 = 0x00; //设置定时初始值
TH0 = 0x00; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 0;
}
2、定时器1定时1s,处理脉冲的个数,得到脉冲频率。
记得允许定时器1中断和允许总中断
void Timer1Init(void) //1毫秒@12.000MHz
{
AUXR |= 0x40; //定时器时钟1T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x20; //设置定时初始值
TH1 = 0xD1; //设置定时初始值
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
ET1 = 1; //开启定时器中断
EA = 1; //开启总中断
}
void TIME1() interrupt 3
{
value++;
if(value==500)
{
TR0 = 0;
value=0;
fre=TH0<<8;
fre+=TL0;
TH0=0;
TL0=0;
TR0=1;
}
}
设置完后记得初始化
NOTES:
1、数据提取(NE555输出频率的范围为500Hz-20000Hz,故需要5个数码管进行显示)
void Display_fre()
{
SMG_Display(0,15);
if(fre>9999)SMG_Display(3,fre/10000);
if(fre>999)SMG_Display(4,fre/1000%10);
if(fre>99)SMG_Display(5,fre/100%10);
if(fre>9)SMG_Display(6,fre/10%10);
if(fre>0)SMG_Display(7,fre%10);
}
2、设置TMOD时,先后的赋值方式
TMOD = 0x04; //设置定时器0计数器模式
TMOD &= 0x0f; //设置定时器1 16位自动重装载模式
由stc15的库文件中可以看到,TMOD的复位值为0000,0000
故TMOD &= 0x04; 是无效的赋值方式 可以TMOD = 0x04; 或TMOD |= 0x04;
(stc15.h ↓ ↓ ↓ ↓)