新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于51單片機的頻率計程序

        基于51單片機的頻率計程序

        作者: 時間:2012-09-17 來源:網絡 收藏

        10.jpg10.jpg

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

        這個是電路原理圖
        ***********************************************
        **************入門級計設計******************
        ***************精度低,希望各位初學者在此基礎上修改為精度更高的*************
        使用了,動態掃描,中斷定時/計數等資源,電路圖如上設計者:liujy
        日期:2010/03/25*******************************/
        #include reg52.h>
        #define uchar unsigned char
        sbit w1=P2^0;
        sbit w2=P2^1;
        sbit w3=P2^2;
        sbit w4=P2^3;//位控
        sbit w5=P2^4;
        sbit w6=P2^5;
        sbit s=P3^7;//啟動鍵
        bit flag;//標簽
        uchar ss,sg,fs,fg,ms,mg, shu=1;//顯示位變量,由數字鐘變來
        uchar t0,t1,t2,a;
        unsigned long num,x,y;
        unsigned char code table1[]={0xc0,0xf9,0xa4,0xb0, //0-f
        0x99,0x92,0x82,0xf8,
        0x80,0x90,0x88,0x83,
        0xc6,0xa1,0x86,0x8e};
        void delay(int z)//延時子
        {
        int h,t;
        for(h=z;h>0;h--)
        for(t=110;t>0;t--);
        }
        void iint()//初始化函數
        {
        flag=0;
        TMOD=0x15;//t1為定時器,t0為計數器模式
        TH1=(65536-4000)/256;//設初值
        TL1=(65536-4000)%256;
        TH0=0;
        TL0=0;
        EA=1; //開總中斷
        ET0=1;//開中斷允許
        ET1=1;//開中斷允許
        TR1=1;//開中斷控制
        TR0=1;//開中斷控制
        }
        void main()
        {
        loop: if(s==0)//按鍵啟動
        {
        while(s!=0);//等按鍵松手
        a++;//功能變量
        }
        if(a==1)
        {
        iint();
        //while(1)
        // {

        while(1)
        {
        if(t1==250)
        {
        t1=0;
        EA=0;//關中斷
        TR0=0;//開中斷控制,可省
        flag=1;//標簽標志置位
        }

        y=TH0*256+TL0;//賦值部分
        x=t0*65536;
        num=x+y;
        ss=num/100000;
        num=num%100000;//賦值部分
        sg=num/10000;
        num=num%10000;
        fs=num/1000;
        num=num%1000;
        fg=num/100;//賦值部分
        num=num%100;
        ms=num/10;
        num=num%10;
        mg=num%10;
        if(flag==1)//動態掃描顯示
        {
        P2=0;//數據口
        w1=1;
        P0=table1[ss];
        delay(shu);
        P2=0;
        w2=1;
        P0=table1[sg];
        delay(shu);

        P2=0;
        w3=1;
        P0=table1[fs];
        delay(shu);
        P2=0;
        w4=1;
        P0=table1[fg];
        delay(shu);
        P2=0;
        w5=1;
        P0=table1[ms];
        delay(shu);
        P2=0;
        w6=1;
        P0=table1[mg];
        delay(shu);
        //num=0;
        if(s==0){ while(s!=0);a++;}
        if(a==2)
        {
        a=0;
        goto loop;
        }
        }

        }
        // }

        }
        }
        void timer0() interrupt 1
        {
        TH0=0;
        TL0=0;
        t0++;

        }
        void timer1() interrupt 3
        {
        TH1=(65536-4000)/256;
        TL1=(65536-4000)%256;
        t1++;

        }

        51單片機相關文章:51單片機教程


        c語言相關文章:c語言教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 松江区| 雷山县| 建德市| 宣汉县| 合作市| 新巴尔虎右旗| 成都市| 锡林浩特市| 囊谦县| 娄底市| 大连市| 开封县| 湄潭县| 多伦县| 孟津县| 宜春市| 梅河口市| 新蔡县| 桂东县| 南木林县| 桃园县| 玉屏| 吐鲁番市| 屏东县| 山阳县| 师宗县| 绿春县| 山东省| 正定县| 剑川县| 长兴县| 麦盖提县| 宾川县| 潜江市| 和田县| 万年县| 凤翔县| 合阳县| 乾安县| 佳木斯市| 宝清县|