蓝桥杯单片机——NE555频率测量(13)

一、原理分析

频率(frequency)是单位时间内完成周期性变化的次数,是描述周期运动频繁程度的量,常用符号fν表示,单位为秒分之一,符号为s-1,符号为Hz。

NE555模块是一个纯硬件的设计,不需要底层驱动。其编程非常简单,主要是计算一秒钟之内有多少个频率响应,所说的频率响应即计数器计数时溢出的个数。在蓝桥杯的板子上,NE555是一个信号发生电路,通过滑动变阻器Rb3可以改变输出信号的频率

二、程序编写

实现功能:

1.上电开机运行时,关闭蜂鸣器、继电器和8个LED指示灯。

2.用跳线帽将J3中的SIGNAL与P34短接,使NE555发生的信号输入到单片机的P34引脚。

3.单片机测量信号频率,并显示在数码管中,频率数据显示用5位数码管,单位是Hz,当显示长度不足5位时,未使用到的数码管熄灭,在最左边的1位数码管用“F”作为提示符。

#include <reg52.h>
unsigned int count_f=0;// 存放临时得出的频率值
unsigned int dat_f=0;  // 存放1s的频率最终值
unsigned char count_t=0;  // 定时1s的计数变量
unsigned char  smg_nodot[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char  smg_dot[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
void Init_timer()//定时、计数器初始化
{
	//定时器0用作计数,8位重装方式
	TH0=0XFF;
	TL0=0XFF;
	//定时器1用作定时,定时时间是50ms
	TH1=(65535-50000+1)/256;
	TL1=(65535-50000+1)%256;
	
	TMOD=0X16;

	ET0=1;
	ET1=1;
	EA=1;

	TR0=1;
	TR1=1;
}
void service_T0() interrupt 1
{
	count_f++;
}
void service_T1() interrupt 3
{
	TH1=(65535-50000+1)/256;
	TL1=(65535-50000+1)%256;

	count_t++;
	if(count_t==20)	//1s
	{
	  dat_f=count_f;//取出这1s的频率
	  count_f=0;
	  count_t=0;
	}
}
//数码管显示模块
void Delay_SMG(unsigned int t)
{
	while(t--);
}
void DisplaySMG_Bit(unsigned char pos,unsigned char dat)
{
  P2=0XE0;P0=0xff;//先全部关掉数码管,避免显示不正常
  P2=0xC0;P0=0x01<<pos;
  P2=0xE0;P0=dat;	
}
void DisplaySMG()
{
 	DisplaySMG_Bit(0,0x8e);
	Delay_SMG(100);

	DisplaySMG_Bit(1,0xff);
	Delay_SMG(100);

	DisplaySMG_Bit(2,0xff);
	Delay_SMG(100);

	if(dat_f>9999)
	{
		DisplaySMG_Bit(3,smg_nodot[dat_f/10000]);//万位
		Delay_SMG(100);
	}
	if(dat_f>999)
	{
		DisplaySMG_Bit(4,smg_nodot[(dat_f/1000)%10]);//千位
		Delay_SMG(100);
	}
	if(dat_f>99)
	{
		DisplaySMG_Bit(5,smg_nodot[(dat_f/100)%10]);//百位
		Delay_SMG(100);
	}	
	if(dat_f>9)
	{
		DisplaySMG_Bit(6,smg_nodot[(dat_f/10)%10]);//十位
		Delay_SMG(100);
	}

	DisplaySMG_Bit(7,smg_nodot[dat_f%10]);//个位
	Delay_SMG(100);
	
	P2=0xC0;P0=0xff;//消隐
   P2=0xE0;P0=0xff;	
}
void main()
{
  P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//关闭蜂鸣器,LED等	  
  Init_timer();
  while(1)
  {
  		DisplaySMG();
  }
}

猜你喜欢

转载自blog.csdn.net/m0_57263863/article/details/123361994
今日推荐