蓝桥杯单片机(七)NE555

上一章讲了蓝桥杯单片机如何输出PWM波
蓝桥杯单片机(六)PWM
这一章讲解蓝桥杯单片机开发板上的NE555方波发射器的频率测量,这也是近几年的考点。
首先看原理图:
在这里插入图片描述
由数电的知识:

NE555的周期T=0.7(Ra+Rb)C
频率f=1/T

图中R8为定值电阻,所以NE555的斜率主要由Rb3这个滑动变阻器决定。图中NE555的PWM波输出引脚为NET SIG,所以测量只需要将单片机随便一个GPIO与NET SIG相连,然后向按键扫描那样读取高低电平就行了。
由于比赛通常用超声波跳线帽来连接P34和NET SIG引脚,所以本次例程同样如此。
首先来看测量程序:

unsigned int high=0,low=0,highdata=0,lowdata=0;

void time0() interrupt 1
{
	if(P34==1)
	{
		high++;
		if(low !=0)
		{
			lowdata=low;
			low=0;
		}
	}
	else if(P34==0)
	{
		low++;
		if(high !=0)
		{
			highdata=high;
			high=0;
		}
	}	
}

void Timer0Init(void)		//20微秒@11.0592MHz
{
	AUXR |= 0x80;		//定时器时钟1T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0x23;		//设置定时初值
	TH0 = 0xFF;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
}

让定时器每20us进行测量P34口的电平,然后将对应的高低电平的时间保存起来,然后就可以计算周期和频率了。
计算公式:

**

高电平加低电平次数乘以20us就是周期

**

time=(1000000/((highdata+lowdata)*20));

当然定时器的时间越短越精确。
实验内容:使用P34引脚测量PWM频率,使用数码管显示出来。
代码如下:

#include<stc15f2k60s2.h>
#include"intrins.h"

#define uchar unsigned char
#define uint unsigned int
	

void SMG_output(void);
void init(void);
void Delay1ms(void);
void Timer0Init(void);

uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uchar SMG[8]={10,10,10,10,10,10,10,10};//初始显示10,全息数码管
uint high=0,low=0,highdata=0,lowdata=0;
uint time;

void main(void)
{
	init();
	Timer0Init();
	EA=1;ET0=1;
	while(1)
	{
		time=(1000000/((highdata+lowdata)*20));
		SMG[3]=time/10000;
		SMG[4]=time%10000/1000;
		SMG[5]=time%1000/100;
		SMG[6]=time%100/10;
		SMG[7]=time%10;
		SMG_output();
	}
}

void time0() interrupt 1
{
	if(P34==1)
	{
		high++;
		if(low !=0)
		{
			lowdata=low;
			low=0;
		}
	}
	else if(P34==0)
	{
		low++;
		if(high !=0)
		{
			highdata=high;
			high=0;
		}
	}	
}

void SMG_output(void)
{
	uchar i;
	for(i=0;i<8;i++)
	{
	P2=(P2&0X1F)|0Xc0;
	P0=(1<<i);
	P2=(P2&0X1F)|0Xe0;
	P0=tab[SMG[i]];
	Delay1ms();
	}
	P2=(P2&0X1F)|0Xc0;
	P0=0Xff;
	P2=(P2&0X1F)|0Xe0;
	P0=0Xff;	
}

void Timer0Init(void)		//20微秒@11.0592MHz
{
	AUXR |= 0x80;		//定时器时钟1T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0x23;		//设置定时初值
	TH0 = 0xFF;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
}



void init(void)
{
	P2=(P2&0X1F)|0XA0;
	P0=0X00;
	P2=(P2&0X1F)|0X80;
	P0=0Xff;
	P2=(P2&0X1F)|0Xc0;
	P0=0Xff;
	P2=(P2&0X1F)|0Xe0;
	P0=0Xff;	
}

void Delay1ms(void)		//@11.0592MHz
{
	unsigned char i, j;

	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
}

最后效果如下:
在这里插入图片描述
调节滑动变阻器,频率发生改变。

  • 20
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
蓝桥杯是中国最大的IT技能竞赛之一,其中单片机部分常用的教程是关于NE555定时器的。NE555是一种常用的集成电路,广泛应用于电子电路中的定时和脉冲生成等功能。以下是关于NE555的教程内容: 1. NE555的基本原理:NE555是一种8引脚的集成电路,包含比较器、RS触发器和输出驱动器等功能。它可以通过外部元件连接来实现不同的定时和脉冲生成功能。 2. NE555的引脚功能: - 引脚1(GND):接地引脚,连接到电路的地线。 - 引脚2(TRIG):触发引脚,用于接收外部触发信号。 - 引脚3(OUT):输出引脚,输出NE555产生的脉冲信号。 - 引脚4(RESET):复位引脚,用于复位NE555。 - 引脚5(CTRL):控制引脚,用于控制NE555的工作模式。 - 引脚6(THR):比较器阈值引脚,用于设置比较器的阈值电平。 - 引脚7(DISCH):放电引脚,用于控制输出引脚的放电过程。 - 引脚8(VCC):电源引脚,连接到正电源。 3. NE555的工作模式: - 单稳态模式:NE555在接收到触发信号后,输出一个固定时间的脉冲信号。 - 双稳态模式:NE555在接收到触发信号后,输出一个持续时间取决于外部元件的脉冲信号。 - 震荡模式:NE555通过外部元件的连接,产生一定频率和占空比的方波信号。 4. NE555的应用: - 时钟电路:NE555可以用作时钟电路的计时元件,实现定时功能。 - 脉冲生成器:NE555可以用作脉冲信号的生成器,用于控制其他电路的工作。 - 呼吸灯效果:NE555可以通过改变占空比来实现呼吸灯效果。 - 频率测量:NE555可以通过测量输出信号的频率来实现频率测量功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月明Mo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值