当前位置:   article > 正文

蓝桥杯单片机速成8-NE555频率测量

蓝桥杯单片机速成8-NE555频率测量

一、原理图

NOTE:使用NE555测量频率之前,需要将J3-15(SIGNAL)与J3-16(P34短接)

在使用矩阵键盘的时候也记得把跳冒拔下,因为有公共引脚P34

又是因为他的输出引脚是P34,所以只能用定时器0来作为计数器进行频率测量了

二、代码实现

把定时器0作为计数器来测量频率,一秒的计数值就是频率值

用定时器1作为系统进程控制器

  1. #include <STC15F2K60S2.H>
  2. #include <intrins.h>
  3. void NE555_Init()//把定时器0当作计数器
  4. {
  5. AUXR &= 0x7F; //定时器时钟12T模式,但是计数器不分12T还是1T,所以这里可以没有
  6. TMOD |= 0x05; //设置16位可重装值的计数器模式
  7. TL0 = 0; //设置定时初值
  8. TH0 = 0; //设置定时初值都为0
  9. TF0 = 0; //清除TF0标志
  10. TR0 = 1; //定时器0开始计时
  11. ET0 = 0; //不需要中断
  12. }
  13. //把定时器1当作系统进程管理定时器
  14. void Timer1Init(void) //1毫秒@11.0592MHz
  15. {
  16. AUXR &= 0xBF; //定时器时钟12T模式
  17. TMOD &= 0x0F; //设置定时器模式
  18. TL1 = 0x66; //设置定时初值
  19. TH1 = 0xFC; //设置定时初值
  20. TF1 = 0; //清除TF1标志
  21. TR1 = 1; //定时器1开始计时
  22. ET1 = 1;
  23. EA = 1;
  24. }

这里12T还是1T我觉得是分频系数

12T和1T模式设置的是定时器 计数脉冲 的分频系数,即计数脉冲 周期是系统时钟的12倍(慢12T模式);计数脉冲为系统时钟脉冲,计数脉冲 周期等于系统时钟周期,即无分频(快,1T模式)。

举个例子:

12T模式:12秒计次一次,在定时器上就是TH0每加12,才会计次一次,则总计数时间就是定时器时钟周期的12倍

1T模式:1秒计次一次,在定时器上就是TH0每加1,就会计次一次,则总计数时间就是定时器时钟周期

但是计数器就只是用到了TH0和TL0,分频系数和他没关系

  1. #include <STC15F2K60S2.H>
  2. #include <intrins.h>
  3. #include <ALL_INIT.h>
  4. #define wan(x) x/10000
  5. #define qian(x) x/1000%10
  6. #define bai(x) x/100%10
  7. #define shi(x) x/10%10
  8. #define ge(x) x%10
  9. void main()
  10. {
  11. All_Init();
  12. NE555_Init();
  13. Timer1Init(); //1毫秒@11.0592MHz
  14. while(1)
  15. {
  16. if(freq_f)
  17. {
  18. freq_f = 0;
  19. TR0 = 0;
  20. freq = (TH0*256+TL0);
  21. TR0 = 1;
  22. TH0 = TL0 = 0;
  23. if(freq<10)
  24. seg_set(16,16,16,16,16,16,16,ge(freq));
  25. else if(freq<100)
  26. seg_set(16,16,16,16,16,16,shi(freq),ge(freq));
  27. else if(freq<1000)
  28. seg_set(16,16,16,16,16,bai(freq),shi(freq),ge(freq));
  29. else if(freq<10000)
  30. seg_set(16,16,16,16,qian(freq),bai(freq),shi(freq),ge(freq));
  31. else
  32. seg_set(16,16,16,wan(freq),qian(freq),bai(freq),shi(freq),ge(freq));
  33. }
  34. void Timer1() interrupt 3
  35. {
  36. TL1 = 0x18;
  37. TH1 = 0xFC;
  38. count++;
  39. if(count % 1000 ==0){freq_f = 1;}
  40. seg_loop();
  41. count %= 1000;
  42. }

计数器T0位16位,可计数65536个,参考其他博客实测蓝桥杯555定时器的方波频率范围位:57Hz~24kHz。

我测出来的是最大30KHZ,最低27HZ

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/387004
推荐阅读
相关标签
  

闽ICP备14008679号