系統功能簡介 本系統所要完成的任務如下: (1)人性化的設計。界限溫度值及濕度能夠由用戶根據不同的需求輸入并通過顯示器顯示,能夠實時、準確的顯示當前的溫度值與濕度值。 (2)通過采集的溫度值及濕度值,準確的判斷預定值與當前值之間的差異,看是都符合預定值,及時的采取措施,使其到達設定的范圍,若室內煙霧濃度過高時還會啟動蜂鳴器報警裝置,同時LED燈亮,從而達到提示的作用。 具體功能如下: 系統通過獨立按鍵中的K1鍵選擇改變最高溫度、最低溫度、最高濕度、最低濕度、煙霧濃度預定值,通過K2鍵調高設定的預定值,通過K3鍵調低設定的預定值。 當溫度高于預定的最高值時,LED1燈亮,同時風扇工作;當溫度低于預定的最低值時,LED2燈亮,同時由繼電器控制的加熱器工作;當濕度高于預定的最高值時,LED3燈亮;當濕度低于預定的最低值時,LED4燈亮;當煙霧濃度高于預定值時,蜂鳴器報警,LED燈亮。 2.2系統硬件設計 單片機是整個系統的控制中樞,它指揮外圍器件協調工作,從而完成特定的功能,硬件上實現模塊化設計,每一模塊只實現一個特定功能,最后再將各個模塊搭接在一起,這種設計方法可以降低系統設計的復雜性。本系統主要硬件設計包括店員電路、蜂鳴器電路、LED顯示電路,溫濕度傳感器電路等。
圖片1.png (30.32 KB, 下載次數: 31)
下載附件
2020-2-28 14:10 上傳
圖 1(核心電路) LCD顯示電路的連接圖如圖2所示,第1腳和第2腳分別接到了電路的GND和VCC,這2個腳是液晶工作的電源輸入腳。第3腳連接到地端,可通過調節該電位器來調節液晶的對比度。第4腳是液晶的寄存器控制腳。第5腳是液晶的讀寫控制腳第6腳是液晶的使能腳。第7腳到第14腳是液晶的數據/地址8位總線,接到了單片機的PO口上。
圖片2.png (11.6 KB, 下載次數: 24)
下載附件
2020-2-28 14:10 上傳
圖 2(LCD顯示電路)發光二極管簡稱為LED。 由含鎵(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。在電路及儀器中作為指示燈,或者組成文字或數字顯示。在本系統中,LED的作用是提示。在溫度高于預定范圍時LED1燈會亮,顯示為綠色;在溫度低于預定范圍時LED2燈會亮,顯示為黃色;在濕度高于預定范圍時LED3燈會亮,顯示為紅色;在濕度低于預定范圍時LED4燈會亮,顯示為綠色;在煙感濃度高于設定值時LED燈會亮,顯示為紅色。LED的連接圖如圖3所示
圖片3.png (8 KB, 下載次數: 35)
下載附件
2020-2-28 14:10 上傳
圖 3(LED控制電路)
圖片4.png (2.23 KB, 下載次數: 50)
下載附件
2020-2-28 14:10 上傳
圖 4(電動機電路) 蜂鳴器是-種一體化結構的電子訊響器,采用直流電壓供電,可以用作發聲器件。本設計使用的是電磁式蜂鳴器。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產生的音頻信號電流通過電磁線圈,使電磁線圈產生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發聲。蜂鳴器的連接圖如圖5所示:
圖片5.png (2.96 KB, 下載次數: 28)
下載附件
2020-2-28 14:10 上傳
圖 5(蜂鳴器電路)
圖片6.png (12.63 KB, 下載次數: 31)
下載附件
2020-2-28 14:10 上傳
圖 6(煙霧感應電路) 鍵盤是人與單片機打交道的主要設備。其中獨立鍵盤硬件電路簡單,而且在程序設計上也不復雜。而本設計中由于采用的按鍵數量較少,只有3個按鍵,分別是“設置需要改變的參數”、“加”、“減”,進而選用了獨立鍵盤的形式。按鍵的連接圖如圖7所示:
圖片7.png (6.13 KB, 下載次數: 47)
下載附件
2020-2-28 14:10 上傳
圖 7(按鍵輸入電路)
圖片8.png (5.49 KB, 下載次數: 34)
下載附件
2020-2-28 14:10 上傳
圖 8(溫度傳感器電路)
圖片9.png (5.82 KB, 下載次數: 26)
下載附件
2020-2-28 14:10 上傳
圖 9(濕度傳感器電路)
三、系統實現 此系統是基于c51單片機的集成系統,此系統中,運用DS18B20溫度傳感器檢測溫度,運用DHT11溫度傳感器來檢查濕度,運用MQ-135空氣質量傳感器檢測空氣質量。 首先確定AT89C51芯片的引腳占用情況,設計占用引腳情況如下圖
圖片10.png (35.94 KB, 下載次數: 31)
下載附件
2020-2-28 14:15 上傳
實驗51hei.docx
(827.27 KB, 下載次數: 20)
2020-2-28 14:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
圖 10(c51芯片引腳占用圖) 其中00-07、24-27為LCD顯示屏占用引腳;34、35、36、37、24為指示燈占用引腳;33、22、21為按鍵占用引腳;20為DS18B20傳感器數據占用引腳;32為HTD11濕度傳感器占用引腳;17為蜂鳴器占用引腳;16為繼電器占用引腳;15、 13、 12、 11分別接AD數模轉換中的CS、DIN、DOUT、CLK引腳;10為電動機占用引腳。
然后分別定義延時函數、寫命令函數、寫數據函數、LCD1602初始化函數、DHT11復位函數;
定義DHT11_Check()
DHT11檢測函數,檢測DHT11是否存在,如果DHT11不存在,則在顯示屏上顯示ERROR;
定義DHT11_Init()
DHT11初始化函數,初始化成功返回0,失敗返回1;
定義DHT11_Read函數讀取濕度值;
定義void ds18b20init() //18b20初始化
定義void ds18b20wr(uint8 dat) //18b20寫數據
定義uint8 ds18b20rd() //18b20讀數據
定義void key_pros() //按鍵處理函數
運用if函數分別判斷是哪個函數,判斷出不同的按鍵運用if判斷和flag值實現按鍵不同的功能
定義void data_pros() //數據處理函數
當三個傳感器讀取數值之后,傳入到數據處理函數,并通過公式計算出相應的數值用作顯示和后期報警判斷;
定義void sound()函數
此函數為蜂鳴器驅動函數,運用延遲函數實現蜂鳴器的間歇鳴響;
定義void baojingpros()函數
此函數為判斷函數,用來判斷傳感器所檢測到的數值,并與系統所設置的最高最低值判斷,當數值處在正常值范圍內,系統正常;當數值超過正常范圍,這分別觸動不同的報警反應。
定義main()函數
此函數為系統的主函數,用于調用相應函數并初始化報警設備。
|