久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1470|回復: 7
打印 上一主題 下一主題
收起左側

單片機頻率計檢測特定頻率并點亮LED

[復制鏈接]
跳轉到指定樓層
樓主
ID:76027 發表于 2024-3-19 15:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
抄了一個頻率計的單片機代碼,設想檢測到設定的頻率,點亮LED。但現在是頻率計有一定的誤差,比如設定的頻率是188Hz,但檢測到的有可以是187Hz 188Hz或189Hz,正負各差1Hz,無法正常點亮LED。特請教各位大佬指教,如何通過換算,消除這個誤差,正常點亮LED。
******************************************************************************/

void TM1_Isr() interrupt 3

{   

  static unsigned int ms_flag = 0;  //1s計數標志

        if(ms_flag++ == 1000)

        {

                freq = (TH0<<8|TL0);           //獲取當前計數器計數值      
        
                if(freq ==188)                  //檢測到的頻率有可能是187 188也有可能是189

                        {
                                led=0;
                                ms_flag=1000;
                        }
                        
                else
                        {
                                led=1;
                        }
               
                ms_flag = 0;                   //1s計數標志復位

                send_flag = 1;                 //串口發送標志位置位

          TH0 = 0x00;                    //復位計數器

          TL0 = 0x00;                    //復位計數器        

        }

         TF1 = 0;                      //清中斷標志

}

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:883242 發表于 2024-3-19 17:15 | 只看該作者
把freq ==188改成freq >=187 && freq <=189不就行了嗎?
回復

使用道具 舉報

板凳
ID:76027 發表于 2024-3-19 19:39 | 只看該作者
Hephaestus 發表于 2024-3-19 17:15
把freq ==188改成freq >=187 && freq

謝謝,我試試。
回復

使用道具 舉報

地板
ID:213173 發表于 2024-3-19 21:09 | 只看該作者
用外部中斷取樣計算頻率要好些。
//T0中斷服務函數
void Timer0_Isr() interrupt 1
{
        count++;
}
//INT0中斷服務函數
void INT0_Isr() interrupt 0
{       
        TR0=0;                            //關定時器0
        Cnt_us=(count*65536)+(TH0<<8|TL0);//讀取定時器0中計數值
        TL0 = 0x00;                       //定時器0計數值清0
        TH0 = 0x00;                       //定時器0計數值清0
        TR0=1;                            //開定時器0
        count=0;                          //中斷計數值清0
}
//初始化定時器T0
void Timer0_Init(void)                //@12.000MHz
{
        AUXR &= 0x7F;                     //定時器時鐘12T模式
        TMOD &= 0xF0;                     //設置定時器模式1
        TMOD |= 0x01;                     //設置定時器模式1
        TL0 = 0x00;                       //設置定時初始值
        TH0 = 0x00;                       //設置定時初始值
        TF0 = 0;                          //清除TF0標志
        TR0 = 0;                          //關定時器0
}
回復

使用道具 舉報

5#
ID:76027 發表于 2024-3-19 21:24 | 只看該作者
wulin 發表于 2024-3-19 21:09
用外部中斷取樣計算頻率要好些。
//T0中斷服務函數
void Timer0_Isr() interrupt 1

感謝大佬,我試試。
回復

使用道具 舉報

6#
ID:420836 發表于 2024-3-20 08:28 | 只看該作者
設置控件的容差范圍,例如將閾值設置在 185 Hz 和 190 Hz 之間。
回復

使用道具 舉報

7#
ID:76027 發表于 2024-3-27 10:25 | 只看該作者
我現在的做法是freq >=187 || freq <=189,但檢測速度有點慢,有沒有提高速度的方法,中斷是不是快一點。
回復

使用道具 舉報

8#
ID:76027 發表于 2024-3-27 10:53 | 只看該作者
TTQ001 發表于 2024-3-20 08:28
設置控件的容差范圍,例如將閾值設置在 185 Hz 和 190 Hz 之間。

要檢測多個頻率,并且頻率間相差太近,實測有重疊的部分。只有提高精度才行。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精美视频 | 欧美成人h版在线观看 | 亚洲天堂av网| 中文日韩在线 | 人操人免费视频 | 欧美视频一区二区三区 | 成人激情视频免费观看 | 亚洲毛片在线观看 | 精品中文字幕一区 | 亚洲精品一区二区三区中文字幕 | 中文在线a在线 | www.国产一区| xnxx 日本免费 | 91伦理片 | 在线观看亚洲专区 | 91在线视频一区 | 一级片av | a精品视频 | 国产精品久久久久久久免费大片 | 久久久久久亚洲精品 | 国产一区二区黑人欧美xxxx | 一区二区三区国产精品 | 午夜激情视频 | 中文字幕在线看人 | 久久综合伊人 | av网站免费在线观看 | 黄色av免费网站 | 国产日韩精品视频 | 国产 日韩 欧美 制服 另类 | 99国产精品久久久久 | 亚洲欧美日本在线 | 色精品| 超碰免费在线观看 | 亚洲国产成人精品在线 | 亚洲欧美在线视频 | 日韩欧美国产电影 | 超碰日本 | 97日日碰人人模人人澡分享吧 | 中文字幕精品一区 | h视频在线观看免费 | 久久综合久久久 |