




已閱讀5頁,還剩77頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
摘 要 環境溫濕度檢測系統是日常生活、工業生產和農業管理中廣泛使用的一種設備。該設備具備以下主要功能:實時檢測出環境中的溫度和濕度參數值,并顯示出來,根據設定的報警限予以報警指示,可以和上層控制器通信。 隨著單片機的大規模應用,單片機在檢測系統中也越來越多的被使用。本設計以AT89S52這款低功耗、高性能、在系統編程的8位單片機為系統控制處理核心,由單總線數字溫濕度傳感器DHT11、數碼管顯示屏、LED與蜂鳴器、通信串口和按鍵控制輸入等五個部分組成,從而實現環境問世的監測系統的主要功能。后期的探索設計換用紅外遙控控制和LCM為顯示屏、外加時鐘和存儲芯片、增加照度檢測電路,極大地提升了系統的性能,使系統不僅可以檢測并顯示環境溫度、濕度和照度變量,而且可以按照時間順序存儲適量的數據。 此外,系統有降壓整流和穩壓濾波電路,可用交流市電(220V)、各種安全直流電(524V)、太陽能電池等為系統供電,并且可以存儲少量電能(900mAh),因此,系統有較寬的工作電壓,可滿足多種應用場合。本設計由Protel畫出了電路原理圖和PCB圖,并由此完成了硬件的制作,使用C51語言對單片機進行編程控制,并模塊化仿真,最后通過綜合調試,符合預期的設計要求。關鍵詞:AT89S52單片機 DHT11傳感器 PCB設計 溫濕度檢測Abstract Environment temperature and humidity detection system is a kind of equipment which is widely used in daily life, industrial production and agricultural menagement.The equipment has following main function:detecting the temperature and humidityparameters in the environment real-time and display them,giving alarm indication according to the set limits, and being able to contact with upper controller. With the SCM used large-scalely,the SCM is more and more used in detection system.This design,uses the 8-bit SCM named AT89S52,which has a lot of advantages such as low-power dissipation,high-performance and ISP,and made up of five parts:single-wire digital temperature and humidity sensor,digitron display,LED andbuzzer, serial comunications and keys input,thus perform the function of environment temperature and humidity detection system.The exploration design in later stage,including infrared remote control and LCM display,clock and memory chips,and illumination detection circuit,immensely promotes the property of the system,makes it not only detecte and display the temerature,humidity and illumination,but also store some data in order of time. In addition,with step-down rectifier and stabilivolt filter circuit,the system can use utility power AC220V,different safety DC524V,solar battery to supply power,and store some electric energy about 900mAh,so that it has a wide power supply voltage and meets different application places. The design gives the circuit design schematics and PCB diagram with Protel, and completes the hardware part of the production, and uses C51 language system to accomplish the control program of SCM,and simulates every part successfully.Through the synthetical debugging,the design achieves the required designs.Key words:AT89S52 SCM,DHT11 sensor,serial communication,temperatureand humidity detection,PCB design 目 錄 第一章 前 言11.1 設計的目的意義調查11.2 設計的市場現狀分析21.3 設計的內容要求說明31.4 設計的實施方案構想4第二章 硬件的設計52.1 單片機的選用52.2 傳感器的選用72.2.1 初期設計72.2.2 最佳方案82.2.3 電路設計92.3 數碼管驅動電路設計102.3.1 數碼管的選用102.3.2 驅動電路的設計102.4報警電路設計122.4.1 蜂鳴器驅動電路132.4.2 LED驅動電路132.5控制輸入電路設計142.6 串口通信電路設計162.7 穩定電源電路設計172.8 系統三大部分的PCB設計182.8.1 系統主體部分PCB設計192.8.2 串口通訊PCB設計202.8.3穩壓電源部分PCB設計21第三章 程序的設計233.1 程序功能描述、單片機內部資源分配和程序流程圖233.1.1 程序功能描述233.1.2 單片機內部資源分配兩個定時器的分工233.1.3 程序的流程圖243.2 編程語言和工具的選擇以及程序文件的分配253.2.1 編程語言的選擇253.2.2 編程工具的選擇263.2.3 程序文件的分配263.3 傳感器通信程序設計273.3.1 握手確認273.3.2 數據傳送283.3.3 相關問題解決方案313.4 數碼管掃描程序設計323.5 報警及設置程序設計333.5.1 報警驅動333.5.2 報警值調整343.6 按鍵掃描程序設計343.7 串口發送數據程序設計363.7.1 波特率設置363.7.2 數據發送格式373.7.3 發送方式373.8 Keil 綜合編譯和結果分析、程序下載383.8.1 綜合編譯情況和結果分析383.8.2 生成HEX 文件下載至單片機中40第四章 系統后期探索優化設計簡介414.1 換用紅外控制和LCM 顯示的探索414.1.1 紅外控制414.1.2 LCM 顯示444.2 增加實時時鐘和存儲芯片來記錄數據的探索484.3 增加照度檢測電路的探索50結束語54參考文獻56附錄57附1 單片機驅動程序57附2 硬件制作元器件安裝圖、 布線圖78第一章 前 言本章主要敘述了溫濕度檢測系統設計的一些基本情況,包括目的意義、市場現狀、設計要求和實施方案等幾個部分。 1.1 設計的目的意義調查現代社會,隨著國家的經濟不斷發展,人們的生活水平逐漸提高,在衣食住行基本滿足之后,追求一種健康長壽的生活方式已經成為時代的潮流。家庭居室,工作場所是人們每天較長時間生活的兩個環境,而環境中的溫度和濕度變化則和人們的生理、心理等身體健康狀況息息相關。相關研究結果摘錄如下;據生理學家研究,室內溫度過高時,會影響人的體溫調節功能,由于散熱不良而引起體溫升高、血管舒張、脈搏加快、心率加速。冬季,如果室內溫度經常保持在25度以上,人就會神疲力乏、頭暈腦脹、思維遲鈍、記憶力差。同時,由于室內外溫差懸殊,人體難以適應,容易患傷風感冒。如果室內溫度過低,則使人體代謝功能下降,脈搏、呼吸減慢,皮下血管收縮,皮膚過度緊張,呼吸道粘膜的抵抗力減弱,容易誘發呼吸道疾病。因此,科學家們把人對冷耐受”的下限溫度和”冷耐熱”的上限溫度,分別定為11度和32度。然而,人的體感并不單純受氣溫或氣濕兩種因素的影響,而是兩者綜合作用的結果。通過實驗測定,最適宜的人的室內溫濕度是:冬天溫度為18至25度,濕度為30%至80%。夏天溫度為23至28度,濕度為30%至60%。在此范圍內感到舒適的人占95%以上。在裝有空調的室內,室溫為19至24度,濕度為40%至50%時,人會感到最舒適。如果考慮到溫濕度對人思維活動的影響,最適宜的室內溫度應是工作效率最高的值。溫度應是18度,濕度應是40%至60%,此時,人的精神狀態最好,思維最敏捷。因此,隨時關注環境的溫濕度變化而由此采取措施對人們的健康生活和高效工作有著重要的意義。除此之外,工業生產、農業管理和醫療護理等環境中的溫濕度也是兩項重要的檢測控制參數,對安全生產、糧食豐收和病人康復等意義重大。部分要求數據如下:由此看來,研究設計環境溫濕度檢測系統十分有必要。1.2 設計的市場現狀分析 縱觀市場,溫濕度檢測技術已經比較成熟,已有的各種溫濕度檢測產品,五花八門,猶如八仙過海,各顯神通,如A2000家用溫濕度報警表、YD-808A工業用溫濕度顯示器等產品。從功能上分析這些產品可以看出,一個比較完整的環境溫濕度檢測系統應該具備以下主要的四個功能: (1)實時檢測出環境中的溫度和濕度參數; (2)檢測的參數值顯示在顯示設備上(如數碼管,液晶顯示器等); (3)根據環境要求,設定溫度濕度報警的上下限值,并實時報警; (4)與上層監控設備通信(如PC),實現數據傳輸(雙向或單向);因此,本設計也應該具備這些功能,并且對每一個部分進行優化設計,也可以擴展系統功能。除了功能上的分析之外,再看這些產品的造價和供電情況,有以下兩個問題:(1)價格太高,不符合普通消費者的消費水平,如A2000家用溫濕度報警表,淘寶網上售價300左右;(2)供電都比較單一,規定在直流6V,9V,12V或交流220V等,除了購買產品主體之外,還需要一個特定的電源適配器;綜上所述,本設計設計出的環境溫濕度檢測系統,除了具備市場上已有產品的功能之外,還應盡量降低制作價格,確保有較寬的工作電壓。1.3 設計的內容要求說明根據上述市場調查情況和畢業設計任務書的要求,本設計的研究內容包括以下幾個方面:1、基本要求(1)主要檢測環境變化中的溫度和適度參數;(2)溫濕度參數顯示在LED數碼管屏幕上;(3)可以設置溫濕度報警點,并能按照設置實時報警;2、控制要求(1)根據需求,溫濕度數據可以發送給上層監控設備,如普通電腦等;(2)可以按照時間順序,以一定格式將溫濕度數據導出保存,以便進行再分析處理;3、制作要求(1)造價低廉,工作可靠;(2)工作電壓較寬,滿足不同的供電測試條件;(3)做出產品樣機,調試通過,可以正常工作;因此,本溫濕度檢測系統的設計應以這三方面的要求為依據,從而進行各個部分的詳細設計。1.4 設計的實施方案構想基于單片機的環境溫濕度檢測系統實施方案構想如下:1、由溫度和濕度傳感器對環境中的溫度和濕度變量進行采樣;2、單片機和傳感器通信,獲得采樣數據并暫存;3、單片機對數據進行預處理(如校驗等),對有效數據再進行以下四種處理:(1) 驅動顯示電路,把數據顯示在數碼管上;(2) 掃描輸入的控制信號,設定報警限值;(3) 根據設定的報警,驅動報警電路工作,予以報警指示;(4) 掃描輸入的控制信號,根據需要發送數據給上層設備,在設備上進行數據再處理或保存;4、 在系統供電端有穩壓濾波電路或電能存儲器件,保證系統正常工作;5、 選用價格低廉的器件或設計電路,減少花費;6、 在以上方案都實施的情況下,對系統進行優化創新設計,強化功能; 因此,本系統的設計應按照這個思路進行具體設計,把每一步的構想轉化為現實的設計。系統的結構圖如下:第二章 硬件的設計根據緒論中的分析說明,可以明確溫濕度檢測系統的硬件電路分為電源穩壓、傳感器檢測、數碼管顯示驅動、報警驅動、輸入控制、數據發送等六大部分,其中后五個部分都以單片機為核心,由單片機來進行控制處理,因此單片機的選用至關重要。2.1 單片機的選用 自從20世紀70年代,因特爾公司推出第一代單片機以來,單片機的發展如雨后春筍。各大電氣商、半導體商根據不同的控制需求,尤其在嵌入式系統控制方面,以因特爾公司的51單片機的框架結構為基礎,研發了各種各樣的、功能強大的單片機。而今,我們已經進入了一個單片機可廣泛選擇的、百花齊放的時代。因此,選用一款價格低廉,性能優良的單片機已不再困難。在MCS-51單片機8051的基礎上,ATMEL公司開發的AT89系列的單片機自問世以來,以其較低廉的價格和獨特的程序存儲器快速閃存器為用戶所親萊,尤其是AT89S52這款單片機,它有以下幾個特點:1、與MCS-51單片機產品兼容,完全可采用51指令系統用匯編或C51編程;2、8K字節在系統可編程FLASH存儲器,并且有1000次擦寫周期,這使得。調試程序和下載程序十分方便;3、全靜態操作,工作頻率范圍為0Hz33MHz,頻率范圍寬,便于系統功耗控制;4、三級加密程序存儲器,使程序和系統更加難以仿制,確保了產品的知識產權;5、32個可編程I/O口線,每個I/O都可以獨立或聯合使用,實現不同的數據操作,而且PI端口的高三位第二功能為ISP編程,實現在系統調試;6、三個16位定時器/計數器,其中定時器2也可以作為串口波特率的產生;7、八個中斷源,分為兩個優先級,可軟件設置;8、一個全雙工通用異步接收發送數據借口,以便與外設進行串行數據通信;9、有低功耗空閑和掉電模式,掉點后可由中斷喚醒,可設置掉電標識符;10、寬工作電壓范圍,VCC為2.75.5V,與TTL電平和CMOS電平兼容;總之,AT89系列單片機與MCS-51系列單片機相比,前者和后者有兼容性,但前者的性能價格比等指標更為優越。因此,選用AT89S52單片機可實現溫濕度檢測系統的功能,下圖為該單片機的DIP40封裝外觀和引腳功能:圖2-1 單片機的引腳圖根據單片機的推薦外圍電路,復位(10K電阻,10uf電容)、晶振(12MHZ,電容22pf)電路設計如上圖所示:圖2-2 單片機復位電路圖2-3 單片機晶振電路2.2 傳感器的選用 2.2.1 初期設計本設計的初期構想是用一個溫度傳感器和一個濕度傳感器來檢測環境中的溫度和濕度參數,其中溫度傳感器選用單總線數字溫度傳感器DS18B20,濕度傳感器選用數字式濕度傳感器SHT11,則檢測部分功能框圖如下:圖2-4 傳感器初期設計方案比較DS18B20和SHT11,這兩個傳感器的通信都比較復雜,具體過程為:主機發起通信、傳感器確認通信、主機給傳感器寫命令字、傳感器給主機發送檢測數據,且SHT11還要求外部輸入串行時鐘信號。這種通信的復雜,不僅體現在硬件電路的設計上,而且體現在程序的設計上,并且串行通信對時序要求比較嚴格,這樣對單片機來說將是一個巨大的挑戰,何況單片機還要進行其他的后續控制處理。除此之外,這兩大傳感器的價格都不菲,DS18B20在8元左右,而SHT11則在50元左右,這對支付能力也是一個巨大的考驗。因此,這種方案不可取,必須尋求其他的傳感器解決方案,從而簡化硬件電路和程序設計,讓單片機有更多的內外部資源來處理后續操作。2.2.2 最佳方案后期采用單總線數字溫濕度傳感器DHT11。這款傳感器由廣州奧松電子科技有限公司研發,與單片機的通信十分簡潔方便,無需外接時鐘信號,通信如下:圖2-5 單總線數字溫濕度傳感器DHT11與單片機通信除此之外,它還有很多突出的優點:(1)溫濕度傳感器的一體化結構能同時對相對濕度和溫度進行測量,并以數字信號輸出,從而減少用戶對信號的預處理負擔;(2)獨特的單總線數據傳輸線協議使得讀取傳感器更加便捷,而且還有全部校準數據字節,編碼方式為8位二進制數;(3)40位二進制數據輸出,高位先出,格式為:濕度整數部分8位,小數部分8位;溫度整數部分8位,小數部分8位,最后8位為校驗字節,為前32位數據的和。(4)寬工作電壓,幾乎與AT89S52的電壓相同,為35.5V,而且功耗較低,通信最大電流為2.5mA。其簡要的性能參數如下表所示;表2-1 溫濕度傳感器DHT11性能參數從表中可以看出,它的測量范圍較小,但對實驗或民用已經足夠了,如果要工業使用的話,可選用該公司的同類工業級產品AM323,測量范圍為-55.0+125.0度,測量范圍為0.0100.0%RH,并且可以和DHT11完全互換。2.2.3 電路設計 按照說明書的要求,DHT11與單片機的連接距離小于20米時,需要在VCC和DATA引腳之間接一個5K左右的電阻,因此電路設計如下:圖2-6 溫濕度傳感器DHT11與單片機連接電路 至此,傳感器的硬件電路設計完成,另一部分的工作就是編程問題,在下一章節介紹。2.3 數碼管驅動電路設計2.3.1 數碼管的選用 由于溫濕度傳感器DHT11 測溫范圍為050,測濕范圍為2090%RH,溫度和濕度都是兩位數據,因此可以用兩個兩位一體的數碼管來顯示溫濕度數據,共陰極或共陽極都可以,本設計中選用兩個型號為FJS5202FH 型共陽極紅色兩位一體的數碼管。2.3.2 驅動電路的設計 數碼管驅動軟件設計有兩種方案,一種是靜態驅動,即四位數碼管的段選信號和位選信號,分別接入控制器的端口,需要84+4=36 個端口;另一種是動態驅動,段選信號線公用,而位選信號分開控制,需要8+4=12 個端口。考慮到單片機可用的I/O 引腳只有32 個,為不擴展引腳而外加芯片,因此采用動態驅動方式較合理。數碼管驅動電路一般也有兩種設計方案,一種是使用八D 鎖存芯片74HC373或74LS373 鎖存驅動,另一種是用三極管放大驅動。市場上74HC373 芯片較74LS373 芯片價格便宜也為2 元左右一塊,而三極管只有0.2 元左右,四個三極管共8 角錢,相對來說比較經濟實惠,因此選用后一種方案。而相關器件電氣參數為: (1)紅色共陽極數碼管(實際上是八個并聯的紅色LED)的電壓范圍1.52.0V,最大工作電流為20mA8=160mA; (2)單片機每個引腳灌電流(外部電流流入單片機)大約為24mA,拉電流(單片機電流流入外設)小于1mA。根據這兩項參數,初步確定三極管選用90 系列PNP 型,用集電極接數碼管位選引腳,基極用電阻限流后接單片機引腳予以位選控制。再考慮數碼管電流的限定,符合要求的三極管只有8550 和9012,其簡要參數見下表:表2.2 可選三極管參數由表可以看出,8550的電流和功率都很大,既浪費資源又不利于降低系統功耗,因此選用9012較為合適。因此,這部分的電路設計如下:圖2.7 數碼管段選信號與單片機連接電路圖2.8 數碼管位選信號與單片機連接電路用單片機P0 端口作為數碼管段選信號,P2 端口的高四位作為位選信號,四個電阻的粗略大小為:R=(VCC-VEB)/Ib=(5.5V-0.7V)/1mA=4.8K,可選用E24 系列的電阻4.7K 或5.1K。2.4報警電路設計本設計需要指示一種溫濕度正常狀態、一種數據發送狀態和四種超限報警狀態,即溫度超下限,溫度超上限,濕度超下限,濕度超上限,可采用簡單的聲(蜂鳴器)光(LED)報警電路。LED 顏色和狀態及蜂鳴器狀態分配如下表所示:表2.3 報警指示狀態分配注:“”表示LED 熄滅或蜂鳴器無聲。2.4.1 蜂鳴器驅動電路根據蜂鳴器的參數:電壓1.31.5V,電流2080mA,電阻68 知,可用選用集成放大芯片LM386 驅動,但更經濟的是用一個三極管9012 或8550 驅動即可,電路如圖所示:圖2.9 蜂鳴器報警驅動電路2.4.2 LED驅動電路根據LED 的參數:電壓1.52.5V,電流1020mA,則可用一電阻對電源進行下拉,限流分壓后,LED 陰極接入單片機予以控制,電阻阻值大約為:R=(VCC-VLED)/I=(5.5V-2V)/10mA=350,選用330 或360 的電阻即可,具體電路如下圖所示:圖2.10 報警LED驅動電路2.5控制輸入電路設計本設計的控制輸入部分為簡單的三個按鍵,由于單片機默認狀態下端口引腳為高電平,可以接上按鍵與地相連,單片機檢測按鍵端口的電平情況來決定是否有按鍵按下和哪個按鍵被按下,抖動問題采用軟件延時方式,減少硬件電路設計,電路如圖所示:圖2.11 控制輸入按鍵連接電路經過上述對各個模塊的分布設計,現在可給出系統主體部分的原理總圖。圖2.12 系統主體部分原理總圖考慮到 PCB 設計單面板布線的可行性,單片機的外部資源(端口引腳)分配按下進行:傳感器DHT11 數據線P11;蜂鳴器HXD 驅動三極管基極P10;程序調試ISP 插座P15、P16、P17;按鍵KEY1、2、3P32、P33、P35;串口RXD、TXDP30、P31;數碼管段選信號、位選信號P0、P23、P24、P25、P26;LED 綠、黃、紅P22、P21、P20。2.6 串口通信電路設計單片機AT89S52 有一個全雙工的UART 接口,即RXD(P3.0)和TXD (P3.1),因此可以用來和上層設備如PC 通信,但是由于PC 的串口使用RS232 電平通信協議,而單片機使用TTL 電平通信協議,這兩種電平的特點見下表:表2.4 RS232和TTL電平標準比較比較兩表,可以看出RS232 電平和TTL 電平并不兼容,為使單片機和PC 通信,必須先轉換電平,可采用新型集成芯片MAX232 實現數據發送轉換和接收轉換的雙重功能,依據芯片手冊上的推薦電路,經合理簡化后設計的串口發送數據部分電路為:圖2.13 通信串口電路其中J1 與單片機串口相連,J2 經針腳到插孔的RS232 數據線與電腦相連,即可實現電腦和單片機的全雙工通信。2.7 穩定電源電路設計按照設計要求,系統供電要求多樣化,除了交流220V 的市電是必用的外,還應該具備其他供電要求,如太陽能電池,各種安全直流電壓源等,而且還應該有一定的蓄電能力。考慮到市電電壓太高且為正弦變化,而太陽能電池輸出電壓不穩定等問題,必須要對市電進行降壓,對變動的電壓進行穩壓,而單片機系統的電壓要求在5V 左右,因此,可考慮用集成穩壓模塊LM7805 進行終端穩壓。LM7805 是三端正5V 電源穩壓器件,輸入電壓為直流524V,輸出電壓為4.85.2V,最大允許電流為1.5A,有電流限制、熱過載保護和短路保護功能,確保輸出電壓正常穩定。具體電路設計如下:圖2.14 穩壓電源電路該電路有四個電源插座,其中J1 為市電AC220V 供電輸入,J2 為太陽能電池或其他輸出直流為524V 的電壓源的輸入,J3 為充電輸出接口,可為充電電池(1.2V4 只)恒流充電,J4 為系統供電+5V 電壓輸出端口,由此接到系統的電源端。當用市電供電時,先經過220V/12V 的變壓器T1 把電壓降低至有效值為12V的交流電,再用電橋BR1 進行全波整流為有效值12V(峰值大約為17.0V)的脈動電壓,然后前置電容EC1 和C1 濾波,經LM7805 穩壓并后置電容C2 濾波,輸出大約為穩定的+5V 直流電,一部分為系統供電,另一部分為電池充電,通過調節電位器CR1 可調整充電電流,給不同的電池充電。 LED1 為電源指示燈。當用太陽能電池等輸出為直流電的電源設備時,直接接入J2 端口,亦可為系統供電。使用這種設計,可以確保系統有較寬的工作電壓,并且可以存儲少量電能,從而達到在不同場合供電的目的。2.8 系統三大部分的PCB設計在Protel99 中新建設計文檔,根據以上分析,畫出系統主體部分、串口通信部分和電源部分的原理圖,并選擇合適的封裝外形,設計相應的PCB 圖。三部分的PCB 圖及設計時應注意的問題簡要介紹如下:2.8.1 系統主體部分PCB設計圖2.15 系統主體PCB圖設計要求:(1)傳感器的安裝位置傳感器必須安置在PCB 的邊緣位置,不僅應確保沒有發熱吸濕的器件在其附近,而且傳感器的感溫感濕柵窗應朝向外部,否則可能會影響傳感器對外部環境中溫濕度的測量,如圖2.15 左下角的插座J2 即為傳感器的安裝位置。(2)數碼管的布線不僅數碼管的引腳較多,與單片機的連線也較多,而且制作實驗硬件使用的是單面板,只能在底面布線,因此,在布線的時候應該綜合考慮三方(單片機、數碼管和單面實驗板)的特點,選擇合理的布線方案。為保證多在底面布線,本設計對數碼管采用變碼布線,即數碼管aDp 段并沒有和單片機P00P07 一一對應,而且位選信號線和部分段選信號線在頂面布線,詳細情況如圖2.15 所示,其中DG1 和DG2 為數碼管。(3)電源開關、插頭插座和按鍵的位置電源開關、插頭插座和按鍵是經常使用的器件,為方便操作,需要安裝在邊緣位置,和其他元件的距離不應過小。如圖2.15 中的SW1、J1、J3、KEY-R、KEY1KEY3 以及ISP1 等。(4)單片機的位置單片機是系統的核心,為了便于安裝和更換,單片機的周圍不應放置過多元件,留有余地。(5)布線要求布線不應過密,特別是DIP 封裝的元件,引腳之間禁止布線,否則可能導致連線短路或信號相互干擾。2.8.2 串口通訊PCB設計圖2.16 串口通信部分PCB圖設計要求:(1)芯片安裝位置芯片U1 的凹槽朝向J2,便于和J2 連線。(2)電容封裝選擇由于電容C4 引腳間有布線,封裝應選用中間可布一線的外形,或把引腳間距較小的間距拉大,確保可布一線。(3)J2 的焊盤尺寸J2 的兩端的固定焊盤應適當加大,以增強焊接力。因為串口插頭較大,而且會有頻繁的插拔,若固定焊盤過小,可能出現松動。2.8.3穩壓電源部分PCB設計圖2.17 電源部分PCB圖設計要求:(1)高壓部分J1 為AC220V 的插頭,T1 為AC220V/12V 的變壓器,這兩個器件在設計時應考慮安全問題。J1 的引腳間距應加大,T1 的輸入輸出線應適當加粗,確保高壓隔離和大電流散熱良好。(2)穩壓器件的位置當LM7805 工作電壓高于5V 時,會有較大熱量產生,因此在設計時應放在PCB 邊緣通風散熱良好的地方,并且散熱片朝向外部。根據上述三部分的PCB 圖,用萬用板和相應元器件焊接制作實驗硬件,依據設計用細裸導線布線,完成三部分硬件的制作。第三章 程序的設計本章依據已經設計好的的硬件,選用合適的語言給每一個模塊設計驅動程序,最后綜合編譯,生成下載文件。程序文檔由傳感器通信、數碼管動態掃描、LED和蜂鳴器報警、按鍵輸入檢測和串口發送數據五個部分組成。3.1 程序功能描述、單片機內部資源分配和程序流程圖3.1.1 程序功能描述程序設計的目的是控制單片機引腳的電平變化,從而控制相應外圍電路按照要求工作,這些控制包括單總線溫濕度傳感器的數據獲取、數碼管的動態掃描顯示、LED 和蜂鳴器的聯合驅動報警、按鍵信號檢測和串口數據發送,并且這些控制必須保持協調統一、可靠穩定地實現系統的要求功能。3.1.2 單片機內部資源分配兩個定時器的分工數碼管的顯示在本系統中為關鍵部分,它的顯示有連續性(掃描兩位之間時間差不能過大,否則會斷續顯示)和暫留性(每一位顯示的停留時間不能過短,否則亮度不高),因此采用默認中斷優先級較高的定時器0 進行中斷動態掃描,掃描時間定為1 毫秒。報警LED 和蜂鳴器的狀態變化也應該有實時性,否則會出現報警滯后的問題,因此用定時器1 進行中斷報警掃描,蜂鳴器的響聲用最簡單的“滴滴”聲響,采用頻率為5Hz 的方波,而LED 的閃爍也同步進行,掃描時間定為100 微妙。此外,在串口發送數據期間,由于單片機本身要求,定時器1 用作波特率產生器。其他控制部分在主函數中進行或附加在定時器的中斷服務中,但中斷服務不能處理太多操作,否則程序執行效率很低。3.1.3 程序的流程圖根據單片機的特點和系統各部分的運行時序,經過多次試驗,最后確定系統高效穩定工作的執行順序為:開始初始化并啟動兩個定時器掃描按鍵判斷按鍵值執行相應功能完畢返回至按鍵掃描,其中定時器0 中斷服務掃描數碼管每隔1 秒獲取傳感器數據,定時器1 中斷服務報警判斷(低溫,高溫,低濕,高濕),重復進行此過程,即可實現系統循環工作。詳細流程圖如下圖所示:圖 3-1 系統程序流程圖3.2 編程語言和工具的選擇以及程序文件的分配3.2.1 編程語言的選擇從程序的流程圖可以看出,系統的程序較為復雜,如果選用執行效率相對較高的匯編來書寫,代碼會很長,閱讀不便,并且調試也很困難。為了提高程序的可讀性和調試的便利性,選用C 語言來編寫。C 語言功能豐富,表達能力強,使用靈活方便,應用面廣,目標程序效率高,可執行性好,而且C 語言既有高級語言的特點,也有匯編語言的特點,能直接對單片機硬件進行操作,因此使用起來十分方便。當然,C 語言和MCS-51 單片機結合之后產生的C51 語言,與標準的C 語言還有一定的差別,編程的時候應該注意這些問題。除此之外,C51 的強大功能及其高效率的重要體現之一在于其豐富的可直接調用的庫函數,這使得程序代碼簡單,結構清晰,易于調試和維護。特別是本征庫的9 個函數,雖然少,但都非常有用,其頭文件為intrins.h,主要功能為按位循環左移或右移,位測試等。3.2.2 編程工具的選擇由于單片機種類繁多,各大公司都紛紛開發了自己的編程軟件,而KEIL C51軟件是眾多單片機應用開發的優秀軟件之一,它集編輯、編譯、仿真于一體,支持匯編、PLM 語言和C 語言的程序設計,界面友好,易學易用。此外,Keil 還支持自動添加多款單片機的編譯預處理文件,包含各類單片機的頭文件,如51 單片機的頭文件reg51.h。3.2.3 程序文件的分配經過上述分析,程序可用五個C 文件來存放五個功能獨立的程序模塊,另外有一個公共調用的延時函數文件和主函數文件,此外,各部分還有相應的調用頭文件來進行連接,從而實現了程序和硬件對應,設計模塊化,調試更為方便。具體文件分配如表:表 3.1 系統程序文件分配3.3 傳感器通信程序設計由于DHT11 為單總線通信器件,為了確保單片機成功與其通信,編寫的程序必須嚴格遵守它獨特的通信協議。DHT11 的通信由兩部分組成握手確認和數據傳送。3.3.1 握手確認先來看說明書中的時序圖:圖 3-2 傳感器與單片機握手確認時序從圖中可以看出,傳感器和主機相互確認的過程為:未通信時,通信線保持高電平;通信開始后,主機先拉低電平至少18 毫秒,用以確保傳感器可以檢測到主機信號,之后主機再拉高電平2040 微妙等待傳感器響應;傳感器響應后,先拉低電平4050 微妙,予以通知主機,再拉高電平同樣的時間之后就轉入數據傳輸時序,握手通信也就結束。部分程序如下(DHT 為通信端口):/主機與DHT11 通信開始DHT=0;/主機先拉低總線電平/調用延時函數,延時18 毫秒DHT=1;/再拉高總線電平/調用延時函數,延時40 微妙DHT=1;/拉高電平,設置總線為輸入狀態if(!DHT)/如果DHT11 輸出低電平響應,就開始接收數據while(!DHT);/先等待DHT 響應的低電平結束4050 微秒while(DHT);/再等待DHT 響應的高電平結束4050 微妙/下面開始接收數據3.3.2 數據傳送還是先來看說明書中的時序圖。圖 3-3 傳感器發送數據0 時序圖 3-4 傳感器發送數據1 時序從圖中可以看出,在數據傳輸時,單片機只要按照時序檢測傳感器輸出的電平信號即可得到一位數據,具體要求為:無論數據是0 還是1,都以1214 微妙的低電平開始,之后,若數據是0,則傳感器拉高電平并保持2628 微妙;若數據是1,則傳感器拉高電平并保持116118 微妙,如此連續進行,送出40位的數據。由于電平變化時間是以微妙計算,非常小,因此寫程序時必須要嚴格精確的控制時間,這在設計時有兩個探索過程。 (1)初期構想定時器精確計時法晶振為12MHz 時,定時器最小定時為1 微妙,先聲明一個大小為40 的無符號字符型數組,用來存儲定時器獲得的40 個微妙數,單片機計時過程如下:圖 3-5 定時器計時接收數據流程 那么這樣就得到了40 個微秒時間數,再對這40 個時間數進行判斷,得到數據0 或1,從而得到溫濕度數據。 經過分析和試驗發現,這樣處理,單片機的數據量會比較大,而且定時器的啟動和關閉、數組的操作會額外花費很多時間,這就導致雖然定時器計得很精確,但是總的來說,并不是很精確,而且傳感器的輸出也會有一定的誤差,因此這種處理數據的方式不可取,必須尋求新的解決方案。 (2)合理方案超時修改判斷法經過后期的不斷實驗分析,采用以下方案較為合理:圖 3-6 超時修改數據流程 這種方案正是利用了數據0 和1 高電平的時間不同來判斷數據,先認為是數據0 的時間(2628 微妙),延時30 微秒越過這個時間已經足夠了,再檢測數據線是否仍然為高電平,如果是高電平就修改數據為1,并且等待數據1 剩下的高電平結束,分字節接收,因此程序簡要如下: while(!DHT);/先出現低電平約12-14 微秒,等待結束 /延時30 微秒,越過數據0 的高電平時間2628 微秒 Temp_Data=0x00;/先判定數據為0 if(DHT)Temp_Data=0x01; /如果數據0 高電平超時,則修改為數據1 while(DHT);/等待數據1 剩下的高電平時間結束,大約118-30=88 微秒/以下為接收數據處理程序3.3.3 相關問題解決方案 (1)精確延時函數 毫秒延時: / 一次for 循環大約8 個機器周期,加上while 判斷和函數調用、返回,大約共1208+40= 1000us=1ms void Delay_ms(unsigned int ms ) unsigned char Temp; while(ms-) for(Temp=0;Temp120;Temp+); 10 微秒延時: /nop 一次1 個機器周期,加上函數調用和返回各2 個周期,共6+22=10us void Delay_10us() _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); (2)采樣傳感器數據的時序安排 前期設計時,定義了兩個溫濕度全局變量,中斷使用這兩個變量來顯示數據;而主函數則采樣傳感器,修改這兩個全局變量,這種看似沒有問題的設計,在實驗時卻始終得到的是亂碼數據。結合相關資料和分析實驗結果后發現,這種設計的問題就在于中斷和主函數可能同時訪問了這兩個變量,并且主函數在修改全局變量時可能被中斷打斷,導致溫度或濕度數據只修改了幾位,就被迫送入數碼管顯示,顯示的當然也就是亂碼了。 數據的修改和顯示應遵從程序執行的時序,即先修改數據再顯示或先顯示再修改數據。考慮到傳感器通信并不復雜,且最壞情況也為25 毫秒左右,因此可在中斷掃描數碼管之前或之后,定時1s 來讀取傳感器,這樣安排程序位置后,經調試,系統顯示數據正常。3.4 數碼管掃描程序設計 根據硬件電路的設計,數碼管采用動態掃描方式驅動,而動態掃描方式較多,在這里選用switch-case 結構完成。 在設計硬件時,為了方便在單面板上布線,共陽極數碼管采用了變碼編碼方式,即數碼管的aDp 段和單片機的P00P07 并不對應,實際安排為:表 3.2 數碼管段選信號線安排因此,10 個數字和報警設定顯示符號的編碼定義為下表方式:表3.3 數碼管顯示符號編碼 注:編碼為十六進制,其中“”和“”代表溫度和濕度,“L”和“H”代表低和高,如數碼管前兩位顯示“L”時,代表正在進行低溫報警值設定。 當數碼管顯示實時溫濕度數據時,前兩位顯示溫度,后兩位顯示濕度;當數碼管處于報警設定時,前兩位顯示當前設定的內容,后兩位顯示設定的值,如H、60,表示當前設定的為濕度上限,值為60%RH。以下為顯示實時溫濕度數據的部分程序: switch(Seg_Order) case 0:Bit4=0;P0=SegTemperature /10;break;/顯示溫度高位 case 1:Bit3=0;P0=SegTemperature %10;break;/顯示溫度低位 case 2:Bit2=0;P0=SegHumidity /10;break;/顯示濕度高位 case 3:Bit1=0;P0=SegHumidity %10;break;/顯示濕度低位 顯示完畢后修改Seg_Order 的程序為: Seg_Order+; Seg_Order&=0x03;/超過四位后就返回第一位,從而顯示下一位數碼管。3.5 報警及設置程序設計報警程序包括兩個部分,一為報警驅動信號,另為報警值調整。3.5.1 報警驅動 這部分的程序較為簡單,主要是作溫濕度超限的簡單判斷并為蜂鳴器和LED引腳送出電平信號即可 如,蜂鳴器閃爍報警時信號為Buzzer=Buzzer;紅色LED 熄滅為LED_R=1。3.5.2 報警值調整 程序設計思路為,進入某個限值設定狀態時,先修改數碼管顯示狀態全局變量,使其顯示調整結果;再進入一個死循環,在循環中掃描按鍵,根據不同的按鍵執行相應操作:結束本次調整、調整值加一或調整值減一,流程如圖。圖 3-7 報警值調整流程 如此進行四次,設定四個報警點,最后再把四個子函數放入一個主調函數中,即可實現一次完整的報警調整操作。3.6 按鍵掃描程序設計由于系統只有三個按鍵,個數少,可采用if-else 結構逐個掃描,采用經濟型的延時去抖動法,為了保證按鍵可靠被按下,實驗表明,按鍵短按一次總的時間大約為300 毫秒,因此按鍵按下抖動時間、按下時間和按鍵釋放抖動時間的延時共300 毫秒為宜,而鍵KEY1 為多功能鍵,有長按和短按之分,具體安排如下:表3.4 按鍵與鍵值分配注:多功能鍵 KEY1 可靠短按總時間定為500 毫秒,只要超過此值即認為0 是長按,依舊采用超時檢測法程序簡要如下。 if(Key1=0)/先掃描1號按鍵 Delay_ms(500);/延時500毫秒越過短按時長 if(Key1) While(!Key1);/等待按鍵釋放 Delay_ms(100);/長按釋放去抖 return Key_M;/返回鍵值 else return Key_R else /剩下程序為掃描2,3號鍵 3.7 串口發送數據程序設計由于串口發送數據時,需要用定時器1發生波特率,而且用較高的波特率發送數據時,定時器0也不能正常工作,因此在發送數據時,兩個定時器的中斷服務函數都被禁止訪問,因此需要關閉數碼管,關閉喇叭,而且還要重新初始化定時器為產生波特率,返回時再初始化為之前狀態,恢復顯示與報警。因此,串口數據發送有三個問題:波特率設置,發送格式,發送方式。3.7.1 波特率設置為保證單片機和PC之間通信的實時性,再考慮定時器1的本身可以設置的大小,采用BR=2400bps的波特率比較合適。定時器采用自動重裝方式2,初值計算為:由此對單片機的串口相關內部資源設定如下:TMOD=0x20;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 任丘素質拓展活動方案
- 企業學雷鋒活動方案
- 仿生設計活動方案
- 企業互助活動方案
- 企業黨內活動方案
- 企業公益瑜伽活動方案
- 江西省贛州市章貢區2022-2023學年五年級下學期數學素質評價試卷(含答案)
- 企業員工國慶活動方案
- 企業困難活動方案
- 企業安全培訓活動方案
- 法人授權委托書深圳標準版
- 2025年新高考歷史預測模擬試卷山東卷(含答案解析)
- 智創上合-專利應用與保護知到課后答案智慧樹章節測試答案2025年春青島工學院
- 2025年全國中小學校科普知識競賽題庫及答案(共80題)
- 商業模式創新的試題與答案
- 《愛護鳥類》參考課件
- 輸血科管理制度、程序性文件、SOP文件
- 《水泥混凝土橋面鋪裝及護欄機械化施工技術指南》
- 大學美育知到智慧樹章節測試課后答案2024年秋上海電機學院
- 雨傘的專業知識培訓
- 船舶操縱性-第0章緒論課件
評論
0/150
提交評論