“Enhancing the Title: NE555 Module for Blue Bridge Cup Microcontroller Competition”

一、简介

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    ↓ ↓ ↓ ↓)

物联沃分享整理
物联沃-IOTWORD物联网 » “Enhancing the Title: NE555 Module for Blue Bridge Cup Microcontroller Competition”

发表评论