一、軟件設計總體思路及主程序流程圖
本系統的軟件編程采用C語言和匯編語言混合編寫,軟件結構采用模塊化結構,將各功能程序以子程序的形式寫好,分配好它們之間的寄存器地址,以避免寄存器與I/O間的相互沖突,使用時只需在主程序中調入即可。編程時,盡可能多地采用子程序調用指令取代跳轉指令,避免程序結構的復雜化,以功能模塊編寫程序可使程序結構的邏輯清晰且便于調試、改和維護。如圖18所示,整個軟件程序由主程序、DHT21多點溫濕度檢測子程序、矩陣鍵盤掃描子程序、LCD 1602溫濕度循環顯示子程序、中斷控制子程序、溫濕度數據存儲于U盤的子程序組成。每個子程序只有一個入口及出口,且相互間的邏輯關系獨立,防止因某個子程序模塊出錯而導致整個系統癱瘓。
二、測量溫濕度模塊
程序主要是完成干燥箱和集熱器中6個點的溫濕度檢測。為了將干燥箱與集熱器的數據獨立存儲,分為兩條通道,每條通道的單總線掛接3個DHT21傳感器。兩個通道之間采用巡檢方式,即當拉高P2.0口而將其屏蔽,檢測P2.1口,這時檢測的是集熱器內3個測量點的溫濕度。單片機在單總線上檢測3個傳感器的溫濕度數據步驟是:主機發出復位脈沖→主機檢測存在脈沖→主機發出Search ROM命令→主機發出Match ROM命令→主機發出讀暫存寄存器命令→主機讀溫濕度寄存器→主機發出復位脈沖→主機發出忽略ROM命令→主機發出啟動溫濕度轉換命令→主機發出復位脈沖。同理,檢測干燥箱內溫濕度,只需將P2.1拉高,令P2.0低電平即可。其流程圖如圖19所示。
三、矩陣鍵盤掃描模塊
這部分程序主要完成的功能是按鍵處理程序通過掃描按鍵情況,讀取鍵值,完成各點溫濕度傳感器上下限報警參數設置。這部分程序設計主要分三個步驟:
1)判斷有無鍵按下;
2)軟件延時10ms去抖動;
3)求鍵的位置(行、列)。
其流程圖如圖20所示。http://www.9919977.com