新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機簡易頻率計源代碼

        51單片機簡易頻率計源代碼

        作者: 時間:2016-11-30 來源:網絡 收藏
        //定時器0 設置定時時間1秒 定時器1 設置計數1秒內的脈沖數量
        #include
        #define uchar unsigned char
        #define uint unsigned int
        uint ff; //接受頻率值
        uchar start=1; //定時器,計數模式啟動變量
        code uchar seg[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};
        code uchar tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
        void delay(uint k) //延時函數
        {
        while(k--);
        }
        void show(uint k) //數值顯示函數
        {
        static uchar i,j;
        uint ss[5];
        i=0;
        do
        {
        ss[i]=k%10;
        i++;
        }while(k/=10);
        for(j=0;j {
        P0=seg[ss[j]];
        P2=tab[j];
        delay(100);
        P0=0xff;
        P2=0xff;
        }
        }

        void time0_init()
        {
        TMOD|=0x01; //定時器0 定時模式 計數范圍65536
        TH0=0x3c; //定時初值50ms
        TL0=0xb0;
        TR0=0; //暫停定時器0
        }
        void time1_init()
        {
        TMOD|=0x50; //定時器1 計數模式,計數范圍65536
        TH1=0; //計數初值0
        TL1=0;
        TR1=0;//暫停計數器
        }
        void str_init() //定時器中斷
        {
        EA=1;
        ET0=1;
        }
        void time0_event() interrupt 1
        {
        static uchar i;
        i++;
        TH0=0x3c; //定時初值50ms
        TL0=0xb0;
        if(i==20)
        {
        i=0;
        TR1=0; //停止計數
        TR0=0; //停止定時
        ff=(TH1*256+TL1); //求出頻率值 就是1秒內脈沖次數
        TH1=0; //計數值清零
        TL1=0;
        TH0=0x3c; //定時初值50ms
        TL0=0xb0;
        start=1; //啟動定時器開啟變量
        }
        }
        void main()
        {
        time0_init();
        time1_init();
        str_init();
        while(1)
        {
        if(start==1)
        {
        TR0=1; //啟動定時器
        TR1=1; //啟動計數器
        start=0; //關閉啟動變量位 保證1秒時間
        }
        show(ff);
        }
        }


        關鍵詞: 51單片機頻率

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 乌兰察布市| 卢湾区| 东台市| 富宁县| 江华| 淄博市| 江津市| 武清区| 磐石市| 长乐市| 柳江县| 延川县| 喀喇沁旗| 镇赉县| 兖州市| 中牟县| 新昌县| 开原市| 延吉市| 和政县| 哈密市| 田林县| 淮北市| 托里县| 濮阳县| 鄂尔多斯市| 孙吴县| 水城县| 济阳县| 孟连| 南漳县| 和田县| 修水县| 射洪县| 长治市| 西华县| 南雄市| 龙门县| 那坡县| 普定县| 黄龙县|