×
单片机 > 单片机程序设计 > 详情

avr单片机智能频率计的设计

发布时间:2020-08-27 发布时间:
|

智能频率计仿真原理图如下

单片机源程序如下:


#ifndef main_c   //test ok

#define main_c

#endif 


#include "main.h"

//************************全局变量


volatile uint t0_cont;


volatile uint t1_cont;

volatile uchar flg1; //

//-------------------------------------------------------------------------

//     测试函数 用来初始化

//-------------------------------------------------------------------------

void test()

{

  send_str( "pinlvji" ); //完成后把所有串口去掉

  showstr( "cymometer", 1, 1, 9 ); //液晶显示

//  showstr( "1KHz", 12, 1, 4 );

  showstr( "Hz", 14, 2, 2 );

}


//-------------------------------------------------------------------------

//mcu初始化 端口 定时器 中断 外中断 变量

//-------------------------------------------------------------------------

void mcu_init()

{

//******************端口

  data_direc = out; //输出

  DDRB = out; //输出

  DDRC = out; //输出

  PORTC = 0X00; //输出0


  DDRB=0XE0;   //输入口       

  PORTB=0XE9;

//********************定时器

  TIMSK |= 0x12; //定时中断允许位 只允许两个匹配

}


//-------------------------------------------------------------------------

//       主函数 

//-------------------------------------------------------------------------

int main()

{

  uchar f_t; //用测频还是测周

//******************

  mcu_init();                 //初始化

  usart_init( 57600 );        //初始化

  send_str( "com ok" ); //完成后把所有串口去掉

  yj_set( 0x38, 0x0f, 0x06 ); //初始化

  clearall(); //初始化

  mzd_on();   //开中断


  #if debug

    test();

  #endif 


  while ( 1 )

  {

    if ( !( PINB& ( 1 << 3 )))

    {

      refish();       //刷新所有的东西

      f_t = hz_try(); //估计范围 1k

      if ( f_t )

      {

        cl_f(); //频率法

      }

      else

      {

        cl_t(); //周期法

      }

    }

  }

  return 1;

}


关键字:avr  单片机  智能频率计 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机中断源的扩展方法