资料编号:147   下面是相关功能视频演示:

147-基于stm32单片机输入捕获简易频率测量数字频率计Proteus仿真(源码+仿真+论文)

使用 Proteus 仿真32单片机,实现了可以测量正弦波、方波、正弦波和锯齿波等波形频率的 频率计,测量误差在1%以内

前端处理电路由LM324运算放大器组成迟滞比较器和电压跟随器,迟滞特性一定程度上解决了噪声扰动的问题,且可将任意固定频率的信号转化为脉冲,便于单片机的后续处理,而电压跟随器可增强其带载能力。

下面是该资料的程序部分展示:

void delay_ms(uint64_t nms)
{
  uint32_t temp = 0;
  
  delay_Init();
  
  if(nms == 0)
  {
    return;
  }
  
  while(nms > 500)
  {
    SysTick->LOAD = SystemCoreClock / 8000 * 500; /* Time load (SysTick-> LOAD is 24bit) */
    SysTick->VAL = 0x000000;                      /* Empty counter */
    SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;     /* Start the countdown */
 
    do
    {
      temp = SysTick->CTRL;
    }
    while(temp&0x01 && !(temp&(1<<16)));        /* Wait time is reached */
 
    SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;  /* Close Counter */
    SysTick->VAL = 0x000000;                    /* Empty counter */
    
    nms -= 500;
  }
  
  SysTick->LOAD = SystemCoreClock / 8000 * nms; /* Time load (SysTick-> LOAD is 24bit) */
  SysTick->VAL = 0x000000;                      /* Empty counter */
  SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;     /* Start the countdown */
 
  do
  {
    temp = SysTick->CTRL;
  }
  while(temp&0x01 && !(temp&(1<<16)));        /* Wait time is reached */
 
  SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;  /* Close Counter */
  SysTick->VAL = 0x000000;                    /* Empty counter */

 下面是该设计的设计报告:

下面是该设计的分享下载链接:

https://pan.baidu.com/s/1gLcswGUfmLDeEQC66WaHpA?pwd=k5fz 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐