找回密碼
         注冊會員
        搜索附件  
        MCU資訊論壇 附件中心 單片機論壇 51單片機論壇 數字頻率計.rar

        數字頻率計.rar

         

        兩個版本的數字頻率計帶仿真:
        這里有兩個版本的數字頻率計
        這個是用中斷寫的,另一個用計數器計數的,中斷的是我自己寫的,不過好像有點問題,仿真的時候結果不穩定,不知道真的做成硬件是不是好點,后一個挺好,分享給大家了,有問題一起討論共同學習
        #include <reg52.h>
        #define uint unsigned int
        #define uchar unsigned char
        #define A 30

        code unsigned char TAB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
        sbit P37=P3^7;
        uint number;
        uchar sig;
        void delay(uchar m)
        {
        while(--m)
        {;}
        }
        void display(uint number)
        {
        unsigned char B1,B2,B3,B4,B5;//定義數的各個位,萬,千,百,十,個位
        ;
        B1=number/10000;//萬位
        B2=number%10000/1000;//千位
        B3=number%1000/100;//百位
        B4=number%100/10;//十位
        B5=number%10;//個位
        while(1){
        if(P37==1) break;

        P2=0xFE;//顯示個位
        P0=TAB[B5];
        delay(A);

        P2=0xFD;//顯示十位
        P0=TAB[B4];
        delay(A);

        P2=0xFB;//顯示百位
        P0=TAB[B3];
        delay(A);

        P2=0xF7;//顯示千位
        P0=TAB[B2];
        delay(A);

        P2=0xEF;//顯示萬位
        P0=TAB[B1];
        delay(A);
        }
        }
        void main(void)
        { P0=TAB[0];//剛開始顯示00000
        P2=0xC0;
        TMOD=0X01;
        EA=1;
        EX0=1;
        IT0=1;
        PT0=1;
        ET0=1;
        TL0=(65536-50000)%256;
        TH0=(65536-50000)/256;
        TR0=1;
        sig=0;
        while(1)
        { if(P37==1)
        {number=0;
        P2=0xc0;
        P0=TAB[0];
        }
        while(sig==1)
        { sig=0;
        number=number*20;
        display(number);
        number=0;
        }
        }
        }
        void timer0() interrupt 1
        {
        TL0=(65536-50000)%256;
        TH0=(65536-50000)/256;
        sig=1;
        }
        void freint() interrupt 0
        {
        number++;
        }
        計數器版本的
        /******************************************************************
        AT89S51的T0,T1計數器對輸入的信號進行頻率計數,測量結果用五位數碼管
        動態顯示,要求對0~65KHZ的信號頻率進行準確測量,誤差不超過5HZ
        *****************************************************************/
        #include <reg51.h>
        #define uint unsigned int
        #define A 3
        sbit P37=P3^7;
        unsigned char num=0;
        code unsigned char TAB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
        /*顯示變量對應的數值*/
        /***************定時器0中斷服務函數************************/
        void timer0()interrupt 1{
        TH0=0x3C;
        TL0=0xB0;//定時50ms
        num++;//記到20就直接停止

        }
        /**************************延時函數************************************/
        void delay(unsigned char t){
        unsigned char i,j;
        for(i=0;i<t;i++)
        for(j=0;j<125;j++);
        }

        /*************************顯示函數**************************************/
        void Display(){
        uint number;
        unsigned char B1,B2,B3,B4,B5;//定義數的各個位,萬,千,百,十,個位
        number=TH1*256+TL1;
        B1=number/10000;//萬位
        B2=number%10000/1000;//千位
        B3=number%1000/100;//百位
        B4=number%100/10;//十位
        B5=number%10;//個位
        while(1){
        if(P37==1) break;

        P2=0xFE;//顯示個位
        P0=TAB[B5];
        delay(A);

        P2=0xFD;//顯示十位
        P0=TAB[B4];
        delay(A);

        P2=0xFB;//顯示百位
        P0=TAB[B3];
        delay(A);

        P2=0xF7;//顯示千位
        P0=TAB[B2];
        delay(A);

        P2=0xEF;//顯示萬位
        P0=TAB[B1];
        delay(A);
        }
        }

        void main(){
        P0=TAB[0];//剛開始顯示00000
        P2=0xC0;
        TMOD=0x51;//T0 記時 T1計數
        TH0=0x3c;//定時50ms
        TL0=0xB0;
        TH1=0x00;//計數
        TL1=0x00;
        TR0=1; //開T0
        TR1=1;//開T1
        ET0=1;//開中斷
        EA=1;//打開總中斷
        while(1){
        if(num>=20){//記滿一秒
        num=0;
        TR1=0;
        TR0=0;
        Display();
        }
        if(P37==1) break;
        }
        }







        QQ|手機版|MCU資訊論壇 ( 京ICP備18035221號-2 )|網站地圖

        GMT+8, 2025-5-4 19:27 , Processed in 0.040506 second(s), 8 queries , Redis On.

        Powered by Discuz! X3.5

        © 2001-2025 Discuz! Team.

        返回頂部
        2022国产精品最新在线| 国产精品夜色一区二区三区| 中文字幕亚洲精品| 久久成人影院精品777| 国产丝袜精品丝袜一区二区三区| 国产精品你懂的在线播放| 国产精品久久久久影院色| 热99re久久国超精品首页| 东京热TOKYO综合久久精品| 无码国产精品一区二区免费模式 | 99久久亚洲综合精品成人| 国产精品成人观看视频免费| 国产成人久久精品二区三区| 在线精品动漫一区二区无广告| 青青热久久国产久精品 | 日韩一区二区三区在线精品| 国产久爱免费精品视频| 四虎影视国产精品亚洲精品hd| 国产成人vr精品a视频| 国产精品美女久久久久av爽| 美女视频黄的全免费网站| 国产精品免费精品自在线观看| 久久精品国产精品亚洲下载| 国产线视频精品免费观看视频| 亚洲国产精品国自产电影| 日本精品一区二区久久久| 精品亚洲成a人片在线观看| 欧美精品中文字幕亚洲专区 | 精品乱码一区二区三区四区| 亚洲日韩一页精品发布| 亚洲线精品一区二区三区影音先锋| 97久久精品国产精品青草| 成人无码精品1区2区3区免费看| 国产精品狼人久久久久影院 | 亚洲国产精品综合久久一线| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 精品一区二区三区高清免费观看| 国产小呦泬泬99精品| 亚洲综合av永久无码精品一区二区| 欧美精品亚洲精品日韩专区va| 尤物视频在线播放|