3.1 主程序的設計
主程序流程圖
主程序如圖,一給單片機上電,單片機就初始化。然后掃描各個按鍵、開關的狀態,檢測開關是否打開、屋內是否有人,若同時滿足則給臺燈電路上電。同時向數碼管輸出時間初值,隨后時間計時子函數運行,時鐘正常工作。然后檢測時間調整按鍵是否按下,判斷修改哪個數據,掃描調整按鍵,增加或減少數值。單片機接收并處理來自 DS18B20 傳過來的數據在數碼管上顯示當時的室內溫度,最后進入循環。
3.2 按鍵模塊程序設計
按鍵用來調整時間和日期,各鍵功能在介紹硬件部分已描述。
因為有年月日,時分秒幾個參數要調,所以設置這幾個參數的計數。當按模式
鍵時,單片機進行相應的操作。
3.3 臺燈模塊程序設計
該模塊只需給 P3.6 到送高電平即可,再通過手動旋鈕\環境光強調整燈光亮度。
3.4 時鐘模塊程序設計
分別出寫時間、日期的函數,再寫出時間、日期的顯示函數。設計時、分、
秒,年、月、日幾個變量分別表示時分秒,年月日。
3.5 報時模塊程序設計
對蜂鳴器,在其所接的 I/O 口P3.3寫 1 即可實現它的蜂鳴,當分鐘數增加到60時響鈴,寫程序時給它加了個1s延時,實現整點報時。
3.6 溫度模塊程序設計
設計初始化函數,設計讀 DS18B20 數據和對 DS118B20 寫數據的函數,再寫出
從 DS18B20 讀溫度并轉換為十進制的函數,最后逐位顯示溫度的函數。
3.7 紅外傳感器模塊程序設計
編寫一個讀端口P3.4的函數,即FC-51模塊OUT端口狀態,檢測有人與否,若有人,傳感器發給單片機一個低電平,單片機同時判斷燈開關是否打開,使得單片機P3.6口為高電平,控制臺燈電路上電;若人離開桌前,則P3.4為高電平,臺燈斷電。這就實現了檢測屋內有人與否并自動開啟或關閉的智能節能的臺燈。
4 總結
該設計實現了日期、時間及溫度檢測和顯示電路,具備整點報時功能,以提醒用戶久坐時長,避免長期久坐導致的一系列健康問題。同時自動檢測桌前是否有人并自動開啟/關閉功能;臺燈具有光亮度自動\手動調節功能;但在細節
方面還有不足之處。燈光亮度達不到很亮的程度,只能在一個很小的范圍變化,
以致于光亮度不夠。關閉的功能。該傳感器檢測距離通過調節FC-1模塊上變阻器可在1m-20m間調節。蜂鳴器在仿真過程中不響,多次排查后仍沒有找到原因,在設計答辯完成后,我們會繼續尋找問題的源頭,爭取解決。在實際的實物制作過程中,因材料的限制,觸發臺燈所用的三極管使用了雙向可控硅代替,這帶來了一系列問題:1可控硅的參數不明,導致了變阻器在調節過程中無法精確到具體值,只能不斷嘗試2可控硅的負載能力小,使得燈在長時間運行后出現過載現象,自動熄滅。
原本的設計是只有臺燈電路,畢竟節能臺燈的節能應考慮設計簡化,但為提升本次設計作業的復雜性,加入了更多其他模塊,雖有些本末倒置的意味,但鍛煉了我們的動手能力、單片機編程能力,更提升了我們對MC-51系列單片機、數碼管及DS18B20 的了解與認識,為以后的畢業設計及往后的工作打下經驗基礎。
以上的程序見附錄
實物圖
仿真及實物演示視頻見設計文件
系統連接圖
附錄