找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5420|回復: 0
收起左側

51單片機測量頻率的方法(感覺有問題,求解釋,進去外部中斷幾次)

[復制鏈接]
ID:91448 發(fā)表于 2015-10-16 18:37 | 顯示全部樓層 |閱讀模式
10黑幣
51單片機測量頻率的方
  51單片機的測量頻率方法有很多這里談的是將被測量信號經過整形后轉換成方波信號利用單片機查詢兩個上升沿在此期間

根據(jù)晶體振蕩器產生的周期為 Tc的脈沖送計數(shù)器進行計數(shù)設計數(shù)值為N則得被測量信號的周期值Tx=Tc×N然后取其倒數(shù)即為被

測量信號的頻率。 當然如果利用單片機的捕捉功能實現(xiàn)起來可能程序更加簡練。

下面頻率測量計數(shù)波形示意

圖  程序代碼如下 /*-------------------------------------測量周期法的基本原理:在被測信號內對某一基準時間進行計數(shù),基準時間與計數(shù)值的乘

積便是被測周期. ---------------------------------------*/

#include"at89x51.h"

#define uint unsigned int

uint count, period;

bit rflag = 0;             //設置周期標志

void control(void)

{

       TMOD = 0x09;      //T/C0為方式INT0 為是啟動定時器

       IT0 = 1;     //脈沖方式后沿負跳有效進入中斷

        TH0 = 0;
        TL0 = 0;

      P1_0 = 0;
      P1_0 = 1;      //觸發(fā)器清零

       TR0 = 1; //啟動T/C0

       EX0 = 1; //只開外部中斷

       EA = 1; //開總中斷

}

void INT_0(void) interrupt 0 using 1 //INTO中斷服務

{

       EA = 0;

       TR0 = 0;        
       count = TL0 + TH0 * 256;//取計數(shù)值

       rflag = 1;                  //設標志

      EA = 1;

}

main()

{

       control();

       while(rflag == 0); 、//等待一個周期

        period = count * 2; //fosc = 6MHz,2us計數(shù)增周期值單位us

}

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表