新聞中心

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

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

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

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

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

         電路圖邏輯上是這樣的:

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

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

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

        //定時器初始化

        //每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 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 和平区| 扎囊县| 临邑县| 宣威市| 镇远县| 曲阜市| 呼伦贝尔市| 永丰县| 忻城县| 曲水县| 论坛| 新巴尔虎左旗| 上犹县| 日照市| 重庆市| 隆安县| 喜德县| 武穴市| 东莞市| 大悟县| 蒙阴县| 建平县| 旬阳县| 岑巩县| 北安市| 伊宁县| 年辖:市辖区| 莲花县| 阿勒泰市| 大新县| 若羌县| 铅山县| 什邡市| 河源市| 凤城市| 安庆市| 定结县| 三原县| 江城| 花莲县| 长春市|