欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)頻率計(jì)檢測(cè)特定頻率并點(diǎn)亮LED [打印本頁(yè)]

作者: bd5fna    時(shí)間: 2024-3-19 15:45
標(biāo)題: 單片機(jī)頻率計(jì)檢測(cè)特定頻率并點(diǎn)亮LED
抄了一個(gè)頻率計(jì)的單片機(jī)代碼,設(shè)想檢測(cè)到設(shè)定的頻率,點(diǎn)亮LED。但現(xiàn)在是頻率計(jì)有一定的誤差,比如設(shè)定的頻率是188Hz,但檢測(cè)到的有可以是187Hz 188Hz或189Hz,正負(fù)各差1Hz,無(wú)法正常點(diǎn)亮LED。特請(qǐng)教各位大佬指教,如何通過(guò)換算,消除這個(gè)誤差,正常點(diǎn)亮LED。
******************************************************************************/

void TM1_Isr() interrupt 3

{   

  static unsigned int ms_flag = 0;  //1s計(jì)數(shù)標(biāo)志

        if(ms_flag++ == 1000)

        {

                freq = (TH0<<8|TL0);           //獲取當(dāng)前計(jì)數(shù)器計(jì)數(shù)值      
        
                if(freq ==188)                  //檢測(cè)到的頻率有可能是187 188也有可能是189

                        {
                                led=0;
                                ms_flag=1000;
                        }
                        
                else
                        {
                                led=1;
                        }
               
                ms_flag = 0;                   //1s計(jì)數(shù)標(biāo)志復(fù)位

                send_flag = 1;                 //串口發(fā)送標(biāo)志位置位

          TH0 = 0x00;                    //復(fù)位計(jì)數(shù)器

          TL0 = 0x00;                    //復(fù)位計(jì)數(shù)器        

        }

         TF1 = 0;                      //清中斷標(biāo)志

}

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


作者: Hephaestus    時(shí)間: 2024-3-19 17:15
把freq ==188改成freq >=187 && freq <=189不就行了嗎?
作者: bd5fna    時(shí)間: 2024-3-19 19:39
Hephaestus 發(fā)表于 2024-3-19 17:15
把freq ==188改成freq >=187 && freq

謝謝,我試試。
作者: wulin    時(shí)間: 2024-3-19 21:09
用外部中斷取樣計(jì)算頻率要好些。
//T0中斷服務(wù)函數(shù)
void Timer0_Isr() interrupt 1
{
        count++;
}
//INT0中斷服務(wù)函數(shù)
void INT0_Isr() interrupt 0
{       
        TR0=0;                            //關(guān)定時(shí)器0
        Cnt_us=(count*65536)+(TH0<<8|TL0);//讀取定時(shí)器0中計(jì)數(shù)值
        TL0 = 0x00;                       //定時(shí)器0計(jì)數(shù)值清0
        TH0 = 0x00;                       //定時(shí)器0計(jì)數(shù)值清0
        TR0=1;                            //開(kāi)定時(shí)器0
        count=0;                          //中斷計(jì)數(shù)值清0
}
//初始化定時(shí)器T0
void Timer0_Init(void)                //@12.000MHz
{
        AUXR &= 0x7F;                     //定時(shí)器時(shí)鐘12T模式
        TMOD &= 0xF0;                     //設(shè)置定時(shí)器模式1
        TMOD |= 0x01;                     //設(shè)置定時(shí)器模式1
        TL0 = 0x00;                       //設(shè)置定時(shí)初始值
        TH0 = 0x00;                       //設(shè)置定時(shí)初始值
        TF0 = 0;                          //清除TF0標(biāo)志
        TR0 = 0;                          //關(guān)定時(shí)器0
}

作者: bd5fna    時(shí)間: 2024-3-19 21:24
wulin 發(fā)表于 2024-3-19 21:09
用外部中斷取樣計(jì)算頻率要好些。
//T0中斷服務(wù)函數(shù)
void Timer0_Isr() interrupt 1

感謝大佬,我試試。
作者: TTQ001    時(shí)間: 2024-3-20 08:28
設(shè)置控件的容差范圍,例如將閾值設(shè)置在 185 Hz 和 190 Hz 之間。
作者: bd5fna    時(shí)間: 2024-3-27 10:25
我現(xiàn)在的做法是freq >=187 || freq <=189,但檢測(cè)速度有點(diǎn)慢,有沒(méi)有提高速度的方法,中斷是不是快一點(diǎn)。
作者: bd5fna    時(shí)間: 2024-3-27 10:53
TTQ001 發(fā)表于 2024-3-20 08:28
設(shè)置控件的容差范圍,例如將閾值設(shè)置在 185 Hz 和 190 Hz 之間。

要檢測(cè)多個(gè)頻率,并且頻率間相差太近,實(shí)測(cè)有重疊的部分。只有提高精度才行。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1