實驗結果
從視頻中,可以看到,當手指捏住傳感器后,OLED屏上的溫濕度數據發生變化。
基于FPGA的OLED動態顯示(溫濕度實時數據)
Part一
硬件解析
1. 國產FPGA:HME-P1P060
58K邏輯單元,36K LUT-6,4個PLL,32個全局時鐘,144個DSP,基本上已經滿足了學生等級開發,感興趣的,可以去米聯客店鋪看看。
2. 0.96寸OLED
關于OLED的顯示,這里不做介紹,詳見二級菜單文章:京微齊力:基于HMEP060的OLED字符顯示(及FUXI工程建立演示)
3. DTH11溫濕度模塊(比較枯燥,請耐心看完原理)
DHT11數字溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合傳感器。
上圖為DHT11的內部原理圖,可以看出感濕元件、感溫元件和OTP內存直接連接在內部一個八位MCU上,該MCU通過計算得出測量數值。
DATA用于FPGA與DHT11之間的通訊和同步,采用單總線數據格式,一次通訊時間4ms左右,數據分為整數部分和小數部分,數據格式如下:一次完整的數據傳輸為40bit,高位在前。
數據格式:
數據傳送正確時校驗和數據等于“8bit濕度整數數據+8bit濕度小數數據+8bit溫度整數數據+8bit溫度小數數據”所得結果的末8位。校驗和=數據之和,通過這個可以判斷接收到的數據是否正確。
下面說一下,數據傳輸時序:
主機(此處指FPGA)首先發送一次開始信號,即:拉低數據線,保持t1(至少18ms)時間;然后拉高數據線保持t2(20~40us)時間,隨后開始讀取DHT11的響應;如果操作正確的話,DHT11會拉低數據線,保持t3(80us)時間,作為響應信號;接下來DHT11會拉高數據線,保持t4(80us)時間,隨后開始輸出有效數據。
DHT11共輸出40bit有效數據,每1bit數據都是以50us低電平開始,高電平的持續時間作為判斷數據位的條件。當數據位為0時,高電平的持續時間為26~28us;當數據位為1時,高電平的持續時間為70us。
DHT11數據位“0”時序圖和數據位“1”時序圖如圖:
需要注意的是,DHT11的溫度和濕度轉換較慢,如果讀取速度過快會導致DHT11無法響應的情況。
Part二
程序設計
1. DTH11數據采集(狀態機)
DHT11驅動模塊使用三段式狀態機來讀取DHT11的溫度和濕度值,從下圖可以比較直觀的看到每個狀態實現的功能以及跳轉到下一個狀態的條件。
再次強調,這里需要注意:由于DHT11溫度和濕度轉換較慢,如果讀取速度過快會導致DHT11無法響應的情況,所以我們在每次讀操作結束后延時兩秒(這樣魯棒性會比較高,也可以不要這步)。
在時序圖中,提到了18ms、26-28us、20-40us、50us、70us、80us等等,但是經過分析后,并不需要定義這么多個計時周期數,只需要定義兩個即可。為什么只定義這兩個就可以了呢?
在時序圖中,需要FPGA判斷時間的,有兩個位置,一個是FPGA拉低18ms以上,另外一個是判斷數據表示是數據0還是數據1。第一個很清楚就是18ms。數據0表示的數據位26-28us,為了保險起見,這里設置為35us,如果高電平的持續時間低于35us,那么就表示數據0。
2. 字符顯示
OLED的顯示(包括字符提取等),這里不做介紹,我在另一篇文章有介紹過,感興趣的可以看看:京微齊力:基于HMEP060的OLED字符顯示(及FUXI工程建立演示)
3. 字符輸出
代碼有注釋,可以看注釋
35 本例中,OLED顯示一共分為如下5個狀態。在初始化完成后,屏幕顯示的是雜亂無章的數據,所以在初始化完成后,要進行一次刷新,將OLED中的數據全部寫0。然后進行顯示固定不變的支符,例如像溫度濕度這樣的字符。然后進入空閑態,直到DHT11采集到數據后,就進入到數據顯示狀態,數據顯示完成后,又回到空閑態。這是整個的一個流程。
Part三
弧形抓取
在工程中,例化了debugware IP核,對溫濕度傳感器的波形進行抓取,可以看到如下:
前文有說過,傳感器的數據位總共有40位,考慮到后續可能抓取別的波形,所以此處debugware的數據位寬我設置到了45位,預留了5位。
這里抓到的波形是:2E 0019 034A
對應的二進制即:
0010_1110_0000_0000_0001_1001_0000_0011_0100_1010
根據上文數據公式:8bit濕度整數數據+8bit濕度小數數據+8bit溫度整數數據+8bit溫度小數數據+8bit校驗和數據
所以此刻的,濕度:
46.00(10_1110_0000_0000)
溫度:
25.03(0001_1001_0000_0011)
審核編輯:湯梓紅
-
傳感器
+關注
關注
2548文章
50740瀏覽量
752143 -
dsp
+關注
關注
552文章
7962瀏覽量
348308 -
FPGA
+關注
關注
1626文章
21678瀏覽量
602027 -
OLED
+關注
關注
119文章
6183瀏覽量
223859 -
動態顯示
+關注
關注
0文章
40瀏覽量
11654
原文標題:京微齊力:基于P1P060的OLED動態顯示(溫濕度實時數據)
文章出處:【微信號:HME-FPGA,微信公眾號:HME京微齊力】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論