新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > 單片機-一個簡單頻率測量

        單片機-一個簡單頻率測量

        作者: 時間:2018-09-05 來源:網絡 收藏

        單位由一個信號源的項目,其中由一個功能,即實現一個方波信號頻率的測量。實際情況中,信號的頻率一般在15-25Hz。占空比在10%-90%之間。可以說頻率非常低。因為單位使用STC89C54的時間比較長,所以單位要求使用該單片機。這個項目非常簡單。因為時間很久了,所以我稍微回憶一下。

        本文引用地址:http://www.104case.com/article/201809/388457.htm

         電路圖邏輯上是這樣的:

        我將信號經過比例縮小跟隨后直接接到INT0管腳。具體想法是這樣的,設定一個10uM的定時器計時。每兩秒中作為一個測量周期。方波最會有下跳沿的,每一下跳沿作為一個周期的開始。兩秒計時結束后查看一共采集到K個下跳沿。那么該方波的周期就是T=2/K秒。頻率f=K/2。

        有一個同事提供了頻率測量的思路。在三秒中時間范圍內統計INT0下跳沿出現的個數,即可統計出方波脈沖的頻率。因為下跳沿會觸發外部中斷,所以只需統計程序進入中斷程序的次數。我們來看看代碼實現的方法。

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

        //定時器初始化

        //每1毫秒中斷一次

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

        #define SYS_CLK   12000000L

        #define TIME0_LOAD -(SYS_CLK/12/1000)

        typedef struct FREQ

        {

           unsigned char start;

          unsigned int timer;

          unsigned int int_Count;

          unsigned int T;

        }FREQ;

        FREQ  freq={0,0};

        void Timer0_Init( )

        {

           TMOD = TMOD | 0x01;

          TH0 = TIME0_LOAD>>8;

          TL0 = TIME0_LOAD0x00FF;

          EA =1;

          ET0 =1;

          TR0 =1;

        }

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

        //定時器串口中斷程序

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

        void Timer0_isr( ) interrupt 1

        {


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 洞头县| 杭州市| 南溪县| 邮箱| 和平区| 同心县| 金平| 淄博市| 台湾省| 松阳县| 沙坪坝区| 缙云县| 县级市| 成安县| 华阴市| 阳城县| 葫芦岛市| 临沂市| 湘潭市| 彝良县| 子洲县| 平乐县| 嘉峪关市| 志丹县| 淮滨县| 文山县| 安陆市| 临海市| 鄂托克旗| 祁连县| 荥阳市| 女性| 嘉黎县| 建湖县| 波密县| 鹿泉市| 栖霞市| 紫金县| 南郑县| 八宿县| 六枝特区|