專案記錄 基於FPGA實現數字溫度計

2021-10-08 15:07:11 字數 2869 閱讀 3826

目錄

1、設計目標

2、硬體部分

3、程式設計

4、**及測量效果

1)溫度測量範圍0~125℃;

2)led數碼管顯示溫度;

3)存在報警溫度(可修改)。

主要由三個部分構成:    

1)溫度採集模組;(ds18b20)

2)資料處理模組;(fpga)

3)溫度顯示模組。(led數碼管)

框圖:

ds18b20

1. 特性

2. 溫度資料輸出

說明:本次試驗顯示忽略了小數字,只取整數字,那麼只取data[10:4]這7位, 便是溫度的整數值。

分為四個模組:

1)ds18b20驅動模組(主程式);

2)分頻模組;

3)數制轉換模組(含報警);

4)顯示模組。

3.1 ds18b20驅動模組

ds18b20驅動模組是總程式,呼叫三個子程式,從而達到溫度的顯示。ds18b20採用一根 i/o 匯流排讀寫資料,因此它對讀寫資料位有嚴格的時序要求。ds18b20 遵循相應的通訊協議從而保證資料傳輸的正確性和完整性。該通訊協議定義了多種訊號時序 : 初始化時序、寫時序、讀時序。 從分頻模組的clk_lm輸出1mhz到通訊模組的clk作為時鐘訊號;根據 ds18b20所遵循的初始化時序、讀時序、寫時序等通訊協議將程式完成; 將獲取的12位的溫度訊號傳送給下乙個模組。

3.2 分頻模組

針對50mhz的時鐘 頻率進行分頻產生1mhz頻率控制訊號和1khz頻率掃瞄訊號。

1. 埠說明

clk:輸入50m時鐘;

rst:復位訊號;

clk_lk:分頻後輸出的時鐘

clk_lm:分頻後輸出的時鐘。

2. 原理分析

系統時鐘訊號進入分頻模組clk引腳,經過分頻後得到訊號clk_lm 和clk_lk輸出。

輸出的clk_lk的頻率訊號用於掃瞄數碼管做動態顯示,使人不會看到數碼管的閃爍感;輸岀的clk_lm的頻率訊號用於產生1us時鐘,用於控制感測器讀寫時序。

3.3 數制轉換模組

利用數制轉換模組將輸入的16位二進位制的溫度資料轉換為bcd碼。

1. 埠說明

data[15..0]:輸入16位資料

bcd_out[11..0]:輸出 12 位資料

led[2..0]:輸出3位led燈電平資料

2. 原理分析

data[15..0]表示從ds18b20獲取的16位資料,前4位表示溫度的正負號,後12位表示資料,本次試驗顯示忽略了小數字和負號, 只取整數字,那麼只取data[10:4]這7位,便是溫度的整數值。

bcd_out[11..0]的每四位儲存乙個資料,一共有3個資料,這三個資料分別代表著溫度的個位、十位、百位,便於在下乙個模組中將其轉換成十進位制顯示出來。

led[2..0]控制fpga板子上的三個led燈,當溫度資料超過所設定的範圍時,送高電平,三個燈亮,實現報警功能。

3.4 顯示模組

數碼管採用動態顯示(共陽極);從分頻模組的clk_lk輸出1khz到該模組作為時鐘掃瞄訊號。

1. 埠說明

clk:輸入clk_lk的時鐘訊號;

rst:復位訊號

data[11..0]:進製轉換岀的12位資料

seg[7..0]:段選訊號;

en[3..0]:位選訊號。

2. 原理分析

本次設計釆集的溫度忽略了百位,所以只需要顯示溫度的十位跟個位就可以了,呼叫兩個數碼管,其中乙個數碼管當作十位,另乙個數碼管則是個位,當十位的數碼解碼為「00100101 」時,則說明十位數碼管將顯示數值「2」,當個位的數碼管解碼為「00001101 」時,則說明個位顯示「3」。 因此個位和十位都是按照八段解碼的原則將0〜9之間的數字顯示出來。

4.1 數制轉換模組**

報警上下限設為100℃和10℃:

報警上下限設為30℃和10℃:

說明:由**結果可知,數制轉換模組能成功將輸入的資料轉化為bcd碼;同時可以看出,溫度上限分別為100℃和30℃時,對應輸入溫度資料33,led分別為000和111,報警功能正常實現。

4.2 溫度測量效果

說明:測量結果符合預期,數碼管能正常顯示溫度資料,超過溫度上限時led燈亮,表示報警。

工程原始碼 基於FPGA的數字識別的實現

基於fpga的數字識別的實現 1基於數字特徵演算法實現數字識別 我們採用基於數字特徵的演算法進行數字的識別,通過影象採集模組採集到影象,進行灰度化,二值化,然後進行數字特徵的提取和統計來完成對數字的識別,最終顯示到數碼管上,完成影象資訊到數字資訊的轉化。數字特徵資訊的提取基於列印體,如上圖1,以圖1...

基於FPGA的TDC 數字時間轉換 設計

額,老師讓做乙個tdc的計時模組用fpga,那就做唄。首先說一句,我在做的過程中發現有些人說vivado不太可以做tdc的後仿,我自己試著發現是可以的,當然也許我其實是錯的 哈哈哈 先不管了。首先上一張後仿的圖 大家不要在意我的傻吊命名。我設定的起始和結束訊號之間的差值是21ns,那我最後的結果是多...

基於FPGA數字混頻器的設計(1)

混頻即兩個不同頻率之間的混合,得到第三個頻率。數字混頻器的設計也是fpga數字訊號處理中基礎入門的設計之一,混頻便是兩個訊號相乘得它們的和頻率和差頻率。數字混頻在通訊的調製 解調 duc 數字上變頻 ddc 數字下變頻 等系統中廣泛應用。通常把其中乙個訊號稱為本振訊號 local oscillato...