找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2843|回復(fù): 23
收起左側(cè)

單片機對一個外部脈沖測試頻率,每小時測一次,以后每次測出的頻率第一次(或者第....

[復(fù)制鏈接]
ID:491875 發(fā)表于 2021-12-7 09:21 | 顯示全部樓層 |閱讀模式
100黑幣
各位能者,我是一個剛剛接觸單片機的老年人,因工作需要,檢測一個外部脈沖的頻率,每小時檢測一次,然后將每次檢測的脈沖頻率與第一次(或者第二次)檢測的脈沖頻率進行比較,如果飄移達到一定值就發(fā)出報警信號。這樣需要對第一次(或者第二次)檢測頻率進行存儲()以后每次檢測可以存儲,也可以不存儲,不知道能否用數(shù)組解決(定義一個200元素的1維數(shù)組)。謝謝。

最佳答案

查看完整內(nèi)容

以STC89C54RD+為例,擁有1K的 XRAM 如果全部用于保存頻率,每個頻率的長度為16位的話,可以保存512個,完全沒有任何問題。你只需要聲明數(shù)組變量 unsigned short xdata freq_buf[512]; 就可以了。 保存的時候, 定義一個計數(shù) freq_Num,作為數(shù)組指針 每次+1 保存就好了。如果你要第一次的周期始終不被覆蓋,可以把第一次的周期另外存在變量 freq_sample; 如果只需要存第一次和第二次, 可以有兩個方法,一個是把第一次第 ...
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-12-7 09:21 | 顯示全部樓層
以STC89C54RD+為例,擁有1K的 XRAM 如果全部用于保存頻率,每個頻率的長度為16位的話,可以保存512個,完全沒有任何問題。你只需要聲明數(shù)組變量
unsigned short xdata  freq_buf[512];  就可以了。
保存的時候, 定義一個計數(shù) freq_Num,作為數(shù)組指針 每次+1 保存就好了。如果你要第一次的周期始終不被覆蓋,可以把第一次的周期另外存在變量   freq_sample;

如果只需要存第一次和第二次, 可以有兩個方法,一個是把第一次第二次的操作寫在 while(1)外面。另一個是可以定義一個變量比如: checkFlag  初始為0
然后 第一次保存后   置1, 第二次保存后置2, 只要 為 2 了,之后都是統(tǒng)一的操作,不需要再去變化這個變量了。
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 10:22 | 顯示全部樓層
這樣連續(xù)檢測5-7天,所以一個200的數(shù)組應(yīng)該可以滿足要求。如果能夠存儲這200個頻率值為后續(xù)上傳上位機更好。傳播設(shè)想將每次檢測值與第二次檢測值的差的絕對值*100再除以第二個頻率值計算飄移率。這樣可以避免小數(shù)(即使有小數(shù)也可以舍去不管)
回復(fù)

使用道具 舉報

ID:313048 發(fā)表于 2021-12-7 10:41 | 顯示全部樓層
1、外部脈沖是一直存在的嗎?如果是的話則可以一直檢測脈沖頻率,通過定時器計時,到點時進行比較就可以了;
2、你說的與第一次或者第二次脈沖頻率比較是說的設(shè)備首次上電的脈沖頻率還是每次上電的脈沖頻率。如果是首次的話,則需要存儲到eeprom或者flash,否則不需要存儲,直接弄一個全局變量就可以了。沒必要使用到數(shù)組。
回復(fù)

使用道具 舉報

ID:57657 發(fā)表于 2021-12-7 11:16 | 顯示全部樓層
一次測多長時間? 多少HZ的頻率?
如果頻率上Mhz,加一顆74HC的二進制計數(shù)芯片分頻,型號有很多。
回復(fù)

使用道具 舉報

ID:852300 發(fā)表于 2021-12-7 12:33 | 顯示全部樓層
要求有點亂,以第一和第二次那一次為準(zhǔn)?不確定就沒法做!一定下來整個程序就很容易了!還有就是:斷電后是不是清除所有數(shù)據(jù)?
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2021-12-7 15:03 | 顯示全部樓層
樓主想制作的這個設(shè)備應(yīng)該沒有什么難處,但需要把相關(guān)數(shù)據(jù)說清楚才能規(guī)劃軟硬件方案。外部脈沖的頻率范圍?外部脈沖峰值電壓幾V?測量誤差允許范圍?頻率漂移極限范圍?間隔1小時取樣的時間精度要求?設(shè)備使用環(huán)境?采用哪種顯示方式?是否電池供電?數(shù)據(jù)實時上傳還是任務(wù)結(jié)束后一次性上傳?按說不需要定義一個200元素的數(shù)組,選用有內(nèi)置EEPROM的單片機,可以把監(jiān)測的時間和頻率數(shù)據(jù)永久保存任意調(diào)看。這一點點數(shù)據(jù)隨便找一款STC15W或STC8芯片都可勝任。

評分

參與人數(shù) 1黑幣 +15 收起 理由
老愚童63 + 15 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:19 | 顯示全部樓層
AUG 發(fā)表于 2021-12-7 10:41
1、外部脈沖是一直存在的嗎?如果是的話則可以一直檢測脈沖頻率,通過定時器計時,到點時進行比較就可以了 ...

對,一直存在
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:21 | 顯示全部樓層
AUG 發(fā)表于 2021-12-7 10:41
1、外部脈沖是一直存在的嗎?如果是的話則可以一直檢測脈沖頻率,通過定時器計時,到點時進行比較就可以了 ...

每次上電的脈沖。外部脈沖和單片機公用電源
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:22 | 顯示全部樓層
npn 發(fā)表于 2021-12-7 11:16
一次測多長時間? 多少HZ的頻率?
如果頻率上Mhz,加一顆74HC的二進制計數(shù)芯片分頻,型號有很多。

頻率再1000Hz以內(nèi)(一般在500以內(nèi)),
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:23 | 顯示全部樓層
謝謝各位解答
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:23 | 顯示全部樓層
謝謝各位的解答和幫助,謝謝
回復(fù)

使用道具 舉報

ID:313048 發(fā)表于 2021-12-7 18:27 | 顯示全部樓層
老愚童63 發(fā)表于 2021-12-7 18:21
每次上電的脈沖。外部脈沖和單片機公用電源

每次上電的話則不需要進行存儲,使用全局變量保存第一次/第二次采集到的頻率,后面每次進行比較就可以了,如果想上傳上位機的話,通過串口TTL轉(zhuǎn)USB就可以了,具體如何上傳則根據(jù)你自己的需求,你也可以一直上傳,也可以通過PC下發(fā)指令上傳都是可以的。

評分

參與人數(shù) 1黑幣 +15 收起 理由
老愚童63 + 15 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:30 | 顯示全部樓層
AUG 發(fā)表于 2021-12-7 18:27
每次上電的話則不需要進行存儲,使用全局變量保存第一次/第二次采集到的頻率,后面每次進行比較就可以了 ...

謝謝,明天試一下看看能否解決。
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:32 | 顯示全部樓層
6620680 發(fā)表于 2021-12-7 12:33
要求有點亂,以第一和第二次那一次為準(zhǔn)?不確定就沒法做!一定下來整個程序就很容易了!還有就是:斷電后是 ...

第二次吧,因為是同一個脈沖源,所以相鄰2次的飄移不會很大。第一次考慮上電不穩(wěn)定因數(shù),還是第二次可靠一些
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:34 | 顯示全部樓層
npn 發(fā)表于 2021-12-7 11:16
一次測多長時間? 多少HZ的頻率?
如果頻率上Mhz,加一顆74HC的二進制計數(shù)芯片分頻,型號有很多。

用一個外部中斷源每小時給一個中斷再測試,測試時間沒有要求,10秒左右就可以了。
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:38 | 顯示全部樓層
wulin 發(fā)表于 2021-12-7 15:03
樓主想制作的這個設(shè)備應(yīng)該沒有什么難處,但需要把相關(guān)數(shù)據(jù)說清楚才能規(guī)劃軟硬件方案。外部脈沖的頻率范圍? ...

單片機考慮用STC89C54RD+或者58RD+或者考慮用STC8A8K64S4A12系列,手頭正好有這幾個芯片,STC8系列不太熟悉,主要是晶振頻率的設(shè)置不清楚。最好是用STC89C54RD+或者STC89C58RD+。
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:39 | 顯示全部樓層
6620680 發(fā)表于 2021-12-7 12:33
要求有點亂,以第一和第二次那一次為準(zhǔn)?不確定就沒法做!一定下來整個程序就很容易了!還有就是:斷電后是 ...

斷電后清除所有數(shù)據(jù),這樣確保下次測量。
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-12-7 18:45 | 顯示全部樓層
看你的說法,好像,你應(yīng)該沒什么問題,你現(xiàn)在的問題,或者說難點,又或者說困惑,主要是在什么方面?

頻率捕捉?
頻率保存?
頻率比較?
定時執(zhí)行?
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:53 | 顯示全部樓層
頻率保存,因為檢測次數(shù)比較多,前面第二次檢測的值有可能被覆蓋。
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 18:54 | 顯示全部樓層
188610329 發(fā)表于 2021-12-7 18:45
看你的說法,好像,你應(yīng)該沒什么問題,你現(xiàn)在的問題,或者說難點,又或者說困惑,主要是在什么方面?

頻 ...

還有怎么區(qū)別對待第二次和以后各次的檢測存儲問題(第二次以后可以不保存),
回復(fù)

使用道具 舉報

ID:852300 發(fā)表于 2021-12-7 19:16 | 顯示全部樓層
老愚童63 發(fā)表于 2021-12-7 18:54
還有怎么區(qū)別對待第二次和以后各次的檢測存儲問題(第二次以后可以不保存),

數(shù)量不多可以直接以變量方式存儲,只保存出現(xiàn)異常的數(shù)據(jù)及時間段(某小時)就簡單了
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 19:22 | 顯示全部樓層
188610329 發(fā)表于 2021-12-7 19:19
以STC89C54RD+為例,擁有1K的 XRAM 如果全部用于保存頻率,每個頻率的長度為16位的話,可以保存512個,完全 ...

謝謝,看看能否編寫出來。明天試一試。
回復(fù)

使用道具 舉報

ID:491875 發(fā)表于 2021-12-7 19:24 | 顯示全部樓層
6620680 發(fā)表于 2021-12-7 19:16
數(shù)量不多可以直接以變量方式存儲,只保存出現(xiàn)異常的數(shù)據(jù)及時間段(某小時)就簡單了

謝謝,剛剛接觸單片機,編程還不熟悉,只能慢慢試了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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