找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 61|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

PIC16F18877單片機(jī)頻率計設(shè)計 Proteus仿真程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1155513 發(fā)表于 2025-6-28 12:09 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
一、設(shè)計功能與技術(shù)指標(biāo)
1.1 設(shè)計目標(biāo)
本項目旨在基于 PIC16F18877 單片機(jī),設(shè)計并實現(xiàn)一個單片機(jī)頻率測量儀(頻率計)。該系統(tǒng)可通過捕捉外部輸入的方波信號,統(tǒng)計單位時間內(nèi)脈沖數(shù),并在 LCD1602 顯示屏上以 Hz 為單位實時顯示被測信號的頻率值。系統(tǒng)采用軟件定時+硬件捕捉的組合方式,兼顧響應(yīng)速度和測量精度,適用于中低頻率信號的測量需求。

1.2 系統(tǒng)功能
具備 10 Hz ~ 10 kHz 范圍的方波信號頻率測量能力;
采用 CCP1 模塊的上升沿捕捉方式進(jìn)行脈沖統(tǒng)計;
利用定時器 TMR1 提供精確的時間基準(zhǔn)(1s 周期);
通過 LCD1602 實時顯示頻率值;
支持頻率范圍異常判斷與錯誤提示顯示(Err Out);
測頻結(jié)果刷新周期為 1 秒,可連續(xù)穩(wěn)定工作;
支持中斷方式工作,系統(tǒng)實時性強(qiáng),資源占用低。

1.3 關(guān)鍵技術(shù)指標(biāo)
關(guān)鍵技術(shù)指標(biāo)如下:
1 頻率計關(guān)鍵技術(shù)指標(biāo)及詳細(xì)說明
指標(biāo)名稱
參數(shù)說明
  
測量信號類型
  
  
方波、TTL 電平信號(0V-5V)
  
  
測量范圍
  
  
10 Hz ~ 10.00 kHz
  
  
分辨率
  
  
1 Hz(基于單位時間內(nèi)計數(shù)法)
  
  
顯示方式
  
  
LCD1602 液晶屏,5 位十進(jìn)制頻率數(shù)字 + 單位“Hz”
  
  
刷新周期
  
  
1 秒
  
  
測量誤差
  
  
±1 Hz(不考慮輸入信號抖動與干擾)
  
  
捕捉方式
  
  
CCP1 模塊上升沿捕捉,中斷響應(yīng)計數(shù)
  
  
時間基準(zhǔn)
  
  
定時器 TMR1,周期 5ms,累計 200 次構(gòu)成 1 秒
  
錯誤處理機(jī)制
若頻率 <10Hz 或  >10kHz,LCD 顯示“Err Out”
1.4 技術(shù)實現(xiàn)說明
1.    使用內(nèi)部時鐘頻率為 16 MHz,TMR1 工作在 Fosc/4(即 4MHz)下;
2.    TMR1 每次計時 5ms,共 200 次形成 1 秒時間基準(zhǔn);
3.    CCP1 模塊配置為捕捉模式,每次接收到一個上升沿即觸發(fā)中斷,累計脈沖數(shù);
4.    將 1 秒內(nèi)捕獲的脈沖數(shù)即視為頻率值(單位:Hz);
5.    所得頻率值由主循環(huán)中定時調(diào)用的LCD1602 模塊進(jìn)行顯示刷新;
6.    若頻率值超出設(shè)定量程,系統(tǒng)通過設(shè)定頻率為0xFFFF 觸發(fā) LCD 顯示“Err Out”,提示用戶超出測量范圍。
二、 設(shè)計思路
本系統(tǒng)以 PIC16F18877 單片機(jī)為核心,結(jié)合其 CCP 捕捉模塊、TMR1 定時器和 LCD1602 顯示模塊,構(gòu)建一個高精度、低復(fù)雜度、易實現(xiàn)的數(shù)字頻率計系統(tǒng)。系統(tǒng)通過在1秒時間基準(zhǔn)內(nèi)統(tǒng)計外部輸入脈沖信號的個數(shù),從而直接計算出信號頻率。
2.1 整體架構(gòu)
系統(tǒng)主要由以下三個核心模塊組成:
信號輸入捕捉模塊:使用 CCP1 模塊捕捉輸入方波的上升沿;
時間基準(zhǔn)模塊:采用 TMR1 定時器,每 5ms 計時一次,200 次構(gòu)成 1 秒;
數(shù)據(jù)顯示模塊:通過 LCD1602 顯示測得頻率,若超限則顯示錯誤信息。
2.2 硬件設(shè)計思路
硬件設(shè)計基于Proteus平臺完成,采用最小系統(tǒng)電路結(jié)構(gòu)實現(xiàn):
2.2.1  PIC16F18877 單片機(jī)最小系統(tǒng)
時鐘:外部晶振 16MHz(配置為 Fosc/4 模式);
電源:+5V 供電,帶電容濾波;
IO資源分配如下:RC2 作為CCP1捕捉輸入(頻率信號)端口,RD0–RD7是LCD1602數(shù)據(jù)口,RA3–RA5接LCD1602 控制引腳:EN、RW、RS。
2.2.2 輸入信號模擬
使用仿真器提供的信號源模塊生成 10Hz~10kHz 的方波信號輸入至 RC2;
2.3 軟件設(shè)計思路
系統(tǒng)軟件基于 C 語言編寫,采用中斷驅(qū)動機(jī)制,軟件總體流程圖如下:


1 軟件總體流程圖
2.3.1 核心代碼說明
關(guān)鍵初始化配置如下:
CCP1PPS =0x12;     // 將RC2設(shè)置為CCP1輸入
CCP1CON =0x85;     // CCP1上升沿捕捉
CCPTMRS0 =0x01;    // 將TMR1作為CCP1的時鐘源
T1CLK =0x01;       // Fosc/4為TMR1時鐘,周期 = 1us
TMR1H = (65536-20000)/256;
TMR1L =(65536-20000)%256;
TMR1IE = 1;         // 開啟TMR1中斷
中斷服務(wù)程序如下:
void__interrupt() ISR(void)
{
    if(CCP1IF) {
        CCP1IF = 0;
        pulse++;
    }

    if(TMR1IF) {
        TMR1IF = 0;
        counter++;
        if(counter == 200) {
            counter = 0;
            if(pulse < 10 || pulse >10000)
                k = 0xFFFF;  // 標(biāo)記為錯誤
            else
                k = pulse;
            pulse = 0;
        }
    }
}
LCD顯示更新:
if (k == 0xFFFF){
    LCD1602cmd(0x80); // 顯示首行
    LCD1602Write('E'); LCD1602Write('r');LCD1602Write('r');
    LCD1602Write(' '); LCD1602Write('O');LCD1602Write('u');
    LCD1602Write('t');
} else {
    顯示頻率數(shù)值(5位)
}

Proteus仿真程序:
頻率計.7z (27.07 KB, 下載次數(shù): 0)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表