ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【蓝桥杯】NE555频率测量

2022-02-05 00:01:25  阅读:214  来源: 互联网

标签:P2 定时器 NE555 void TH0 蓝桥 计数 频率


在这里插入图片描述
这玩意好像上的就可以开始工作,然后输出频率可变方波,可以调节Rb3电位器来改变频率,通过J3的SIGNAL引脚导出。
如何测量频率?
跳线帽连接SIGNAL和P34,即NE555的输出脚与定时器0的外部脉冲引脚连接。通过定时器0的计数功能来计数脉冲。然后使用定时器1进行定时计算频率
如何使用定时器的定时计数功能可以看这篇文章定时器定时与计数功能
关于数码管显示的代码可以从这里获取

代码

#include <STC15F2K60S2.H>
#include <smg.h>
unsigned long k;
unsigned char buf[9],duanma[8],i;
void Count0Init() //定时器0计数模式初始化,计数脉冲引脚P3.4
{
  // TMOD &= 0xF0;		//设置定时器模式
   TMOD |= 0x05;		//设置定时器模式//计数器模式工作方式1,TL0作为低八位,TH0作为高八位
   TL0 = 0;
   TH0 = 0;
   TF0 = 0;
   TR0 = 1;
  
}

void Timer1Init(void)		//1毫秒@11.0592MHz
{
	AUXR |= 0x40;		//定时器时钟1T模式
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0xCD;		//设置定时初值
	TH1 = 0xD4;		//设置定时初值
	TF1 = 0;		//清除TF1标志
	TR1 = 1;		//定时器1开始计时
	 ET1 = 1;
     EA = 1;
}
void close()
{
  P2 = (P2&0X1F)|0X80;
  P0 = 0xff;
  P2 = (P2&0X1F)|0XA0;
  P0 = 0x00;
  P2 &= 0X1F;
}
void main()
{
   close();
   Timer1Init();
   Count0Init();
   
   while(1)
   {
      sprintf(buf,"%8ld",k);
	  Conversion(buf,duanma);
   }

}

void Timer1() interrupt 3
{
  static unsigned int n;
  if(++i==8){i=0;}display(&duanma,i);
  //每100ms更新一次频率
  if(++n==1000)
  {
      k=TH0*256+TL0;
	  TH0=0;TL0=0;
	  n=0;
  }
}

这里我有点疑惑,我电位器拧了大半,频率变化很小,到了最后部分才是大变化,希望有大哥指点迷津,是我代码错了??

标签:P2,定时器,NE555,void,TH0,蓝桥,计数,频率
来源: https://blog.csdn.net/C_white_llj/article/details/122784944

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有