NO13 蓝桥杯单片机之NE555的使用及实践

由于LM555的内容较少,因此就把使用方法和代码实践放在一起了。

1 NE555使用方法

NE555是一个“信号发生电路”,可以理解为一个“方波产生器”,值得注意的是,其是一个硬件电路,一旦确定了功能也就确定了,所以在蓝桥杯比赛中,可能不太需要了解其是怎么产生方波的,知道其怎么使用就可以了。

需要知道的是:

(1)通过调节Rb3可以调节输出信号的频率

(2)在使用中,NET SIG通常接的就是P3^4引脚

2 实践

2.1 任务

2.2 思路

(1)关闭相关外设:这里不再赘述,基本每次代码都有提及。

(2)测量信号频率: 首先理解频率是什么? 频率是单位时间内的周期数。

那么我们可以使用两个计时器(计时器0和计时器1),定时器0用于计数(记录1s内通过的方波个数即是周期数),定时器1用于计时(记1s时间)。

(3)数码管显示频率:需要一个变量实时记录每秒钟的频率,然后进行数码管的动态显示。

2.3 完整代码(MM模式)

这里特别讲解一下:

1. 定时器部分:

(1)运用了两个定时器但是其中断初始函数可以写在一起。 

(2)定时器0用于计数,模式选的是8位重装,TH0和TL0都等于255:之前说到一个脉冲(一个脉冲其实就是一个方波,其实就是一个周期 )为1us,0~65535us就65536个脉冲,而这里不再是之前的16位而是8位,故变为(0~255(2^8)), 当初值设定为255最大值时,那么当再来一个脉冲定时器就溢出,重新计时,所以设计初值为255是为了计一个脉冲。

2 数码管部分:

这里5位不一定全部被使用到,这里比较巧妙地部分就是小蜜蜂老师的这种方法,dat_f由于是计数累加而来,而不是十六进制,故若>9999,表示dat_f为五位数,>999为四位数,以此类推。

对数据的处理部分也是非常巧妙的。可以自己验算一下。

注意注意:代码部分都是老知识,我觉得主要是别忘了将板子上的J13的NAL和P3^4短接!!!


完整代码如下:

#include "stc15f2k60s2.h"
#include "absacc.h"

//=====================================================
void Init_Timer_f()
{
  //Timer0 to count numbers
  //Timer 1  to count time  
  TH0 = 255;
  TL0 = 255;
  
  TH1 = (65536 - 50000) / 256;
  TL1 = (65536 - 50000) % 256;  
  
  TMOD = 0x06;
  
  ET0 = 1;
  ET1 = 1;
  
  EA = 1;
  
  TR0 = 1;
  TR1 = 1;
}

unsigned int count_f = 0;
unsigned int dat_f = 0;
unsigned char t = 0;
void Service_Timer0() interrupt 1
{
  count_f++;
}

void Service_Timer1() interrupt 3
{
  if(t == 20)
  {
    dat_f = count_f;
    count_f = 0;
    t = 0;
  }
}


//======================================================


code unsigned char SMG_Table[] = 
{
0xc0, //0
0xf9, //1
0xa4, //2
0xb0, //3
0x99, //4
0x92, //5
0x82, //6
0xf8, //7
0x80, //8
0x90, //9
0x88, //A
0x83, //b
0xc6, //C
0xa1, //d
0x86, //E
0x8e,  //F
0xbf  //-
};

void Delay(unsigned char t)
{
  while(t--);
}

void SMG(unsigned int position, unsigned char content)
{
  XBYTE[0xc000] = 0x01 << position;
  XBYTE[0xe000] = content;
}

void SMG_Display()
{
  SMG(0,SMG_Table[15]);
  Delay(100);
  SMG(1,0xff);
  Delay(100);
  SMG(2,0xff);
  Delay(100);
  if(dat_f > 9999)
  {
    SMG(3,SMG_Table[dat_f / 10000]);
    Delay(100);
  }
  if(dat_f > 999)
  {
    SMG(4,SMG_Table[(dat_f / 1000) % 10]);
    Delay(100);
  }
  
  if(dat_f > 99)
  {
    SMG(5,SMG_Table[(dat_f / 100) % 10]);
    Delay(100);
  }
  
  if(dat_f > 9999)
  {
    SMG(6,SMG_Table[(dat_f / 10) % 10]);
    Delay(100);
  }
  
  SMG(7,SMG_Table[(dat_f / 1) % 10]);
  Delay(100);
  
}


void close()
{
  XBYTE[0xa000] = 0x00;
  XBYTE[0x8000] = 0xff;
}

void main()
{
  close();
  Init_Timer_f();
  while(1)
  {
    SMG_Display();
  }
}

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NE555频率计算器是一种基于NE555定时器芯片设计的电子仪器,用于测量和计算电路的频率。NE555是一种经典的定时器/脉冲宽度调制器集成电路,常被用于各种电子设备和电路NE555频率计算器的工作原理是通过测量一个周期内的脉冲数来计算频率。NE555芯片的输出引脚是一个方波信号,频率与电路的元件参数相关。 在NE555频率计算器,通过选择合适的电阻和电容值,可以设置一个特定的时间常数。NE555芯片根据这个时间常数控制输出方波的频率。通常,NE555频率计算器使用一个旋钮或按键来调节电阻和电容值,从而实现对频率的调节。 使用NE555频率计算器时,首先将需要测量频率的电路连接到输入引脚。然后,通过设置电阻电容值,调节频率计算器使其与电路的频率相适应。当连接启动引脚时,NE555芯片开始工作,输出方波信号。利用内置的计数器或外部计数器,可以方便地读取并记录周期内的脉冲数。 接下来,将记录的脉冲数除以时间常数,即可得到频率的计算结果。根据输入电路的特性以及所使用的电阻和电容值,NE555频率计算器可提供准确的频率测量结果。 总之,NE555频率计算器是一种基于NE555定时器芯片的工具,用于测量和计算电路的频率。通过调节电阻和电容值,可以准确地测量和计算频率,并在实际电子电路设计和调试具有广泛的应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值