Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

[经验] 【Arduino】108种传感器系列实验(23)---矩形波脉冲发生器...

[复制链接]
 楼主| 发表于 2021-4-4 06:31 | 显示全部楼层
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   NE555频率可调脉冲发生器模块(方波占空比50%简版)系列实验
  4.   程序一:实时测量脉冲频率与波形
  5. */

  6. int divider[6] = {0, 1, 8, 64, 256, 1024};
  7. int prescaler = 5;
  8. double count = 0;
  9. double middle = 0;
  10. char x = 0;
  11. ISR(TIMER1_OVF_vect)
  12. {
  13.   if (prescaler < 4)
  14.   {
  15.     prescaler++;
  16.   }
  17. }
  18. void interrupt()
  19. {
  20.   if (!x)
  21.   {
  22.     count = TCNT1;
  23.     TCNT1 = 0x000;
  24.     TCCR1B = prescaler;
  25.     attachInterrupt(0, interrupt, FALLING);
  26.   }
  27.   else
  28.   {
  29.     middle = TCNT1;
  30.     attachInterrupt(0, interrupt, RISING);
  31.   }
  32.   x = ~x;
  33. }
  34. void setup()
  35. {
  36.   Serial.begin(57600);
  37.   TIMSK1 = 0x01;
  38.   TCCR1A = 0x00;
  39.   attachInterrupt(0, interrupt, RISING);
  40.   Serial.println("——准备就绪——");
  41. }
  42. void loop()
  43. {
  44.   Serial.print("实时脉冲频率: ");
  45.   Serial.print(16000000.0 / divider[prescaler] / count);
  46.   Serial.println(" Hz ");
  47.   if (prescaler > 1)
  48.   {
  49.     prescaler--;
  50.     delay(200);
  51.   }
  52.   delay(200);
  53. }
复制代码

 楼主| 发表于 2021-4-4 06:39 | 显示全部楼层
简易实时频率测量实验场景图

00--.jpg

 楼主| 发表于 2021-4-4 06:43 | 显示全部楼层
实验串口返回情况

00-1.jpg


 楼主| 发表于 2021-4-4 06:44 | 显示全部楼层
000.jpg
 楼主| 发表于 2021-4-4 06:45 | 显示全部楼层
00-2.jpg
 楼主| 发表于 2021-4-4 06:45 | 显示全部楼层
00.jpg
 楼主| 发表于 2021-4-4 06:46 | 显示全部楼层
00-.jpg
 楼主| 发表于 2021-4-4 07:48 | 显示全部楼层
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   NE555频率可调脉冲发生器模块(方波占空比50%简版)系列实验
  4.   程序二:实时测量脉冲的频率、占空比、周期、高电平时间与低电平时间
  5. */

  6. int divider[6] = {0, 1, 8, 64, 256, 1024};
  7. int prescaler = 5;
  8. double count = 0;
  9. double middle = 0;
  10. char x = 0;
  11. ISR(TIMER1_OVF_vect)
  12. {
  13.   if (prescaler < 4)
  14.   {
  15.     prescaler++;
  16.   }
  17. }
  18. void interrupt()
  19. {
  20.   if (!x)
  21.   {
  22.     count = TCNT1;
  23.     TCNT1 = 0x000;
  24.     TCCR1B = prescaler;
  25.     attachInterrupt(0, interrupt, FALLING);
  26.   }
  27.   else
  28.   {
  29.     middle = TCNT1;
  30.     attachInterrupt(0, interrupt, RISING);
  31.   }
  32.   x = ~x;
  33. }
  34. void setup()
  35. {
  36.   Serial.begin(57600);
  37.   TIMSK1 = 0x01;
  38.   TCCR1A = 0x00;
  39.   attachInterrupt(0, interrupt, RISING);
  40. }
  41. void loop()
  42. {
  43.   Serial.print("频 率: ");
  44.   Serial.print(16000000.0 / divider[prescaler] / count);
  45.   Serial.print(" Hz\t\占空比: ");
  46.   Serial.print(middle / count * 100);
  47.   Serial.print(" %\t\周 期: ");
  48.   Serial.print(0.0000625 * divider[prescaler]*count);
  49.   Serial.print(" ms\t\高电平时间: ");
  50.   Serial.print(0.0000625 * divider[prescaler]*middle);
  51.   Serial.print(" ms\t\低电平时间: ");
  52.   Serial.print(0.0000625 * divider[prescaler] * (count - middle));
  53.   Serial.println(" ms");
  54.   if (prescaler > 1)
  55.   {
  56.     prescaler--;
  57.     delay(200);
  58.   }
  59.   delay(1000);
  60. }
复制代码


 楼主| 发表于 2021-4-4 07:49 | 显示全部楼层
0--.jpg
 楼主| 发表于 2022-2-24 11:38 | 显示全部楼层
矩形(方波)波信号发生器套件,具有简易的5伏降压电路和ne555芯片为核心的脉冲发生电路,都是电子基础入门电路。矩形波信号发生器电路原理讲解,既能在焊接制作中体验DIY的乐趣,又能学习电子电路知识,学会自己维修家用电子产品。


https://www.bilibili.com/video/BV1p64y1X7em?from=search&seid=1467134576972935744&spm_id_from=333.337.0.0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino爱好者

GMT+8, 2023-2-6 02:05 , Processed in 0.072074 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表