




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章緒論1.1研究目的及意義多功能溫濕度電子鬧鐘是一種集時鐘、鬧鐘、溫度計和濕度計等多種功能于一體的電子設備。它的問世,為人們的生活帶來了更大的便利和精確性。多功能溫濕度電子鬧鐘具備精確計時的能力。隨著社會的發展,時間對于人們的生活、學習、工作等方面變得越來越重要。人們希望能夠精確掌握時間,以便合理安排自己的日程。多功能溫濕度電子鬧鐘內置精確的時鐘芯片,能夠準確顯示時間,并通過同步網絡時間等功能自動進行時間校準,確保時間的準確性。多功能溫濕度電子鬧鐘還具備鬧鐘功能。人們需要一個可靠的鬧鐘來幫助他們準時起床或提醒重要的活動。多功能溫濕度電子鬧鐘可以設置多個鬧鈴,可以根據個人需求進行靈活的設置。無論是平日的起床鬧鐘還是會議提醒,它都能準時發出響亮的提醒聲,確保人們不會錯過重要的事情。多功能溫濕度電子鬧鐘還具備溫度和濕度監測功能。溫度和濕度是人們日常生活中常常需要關注的環境因素。多功能溫濕度電子鬧鐘內置高精度的溫濕度傳感器,能夠實時檢測當前環境的溫度和濕度,并通過顯示屏上的數字或指示燈等方式進行直觀展示。這對于特殊行業或需要嚴格控制環境條件的場所來說,尤其重要。比如在醫療實驗室、溫室、倉庫等地方,多功能溫濕度電子鬧鐘可以提供及時準確的溫濕度信息,幫助人們更好地進行工作或管理。多功能溫濕度電子鬧鐘的問世使得人們在時間計量、鬧鈴提醒以及環境監測方面獲得了更高的準確性和便利性。它的功能多樣而實用,適用于各行各業的人們。隨著科技的不斷進步,相信多功能溫濕度電子鬧鐘將會在未來發展出更多的功能和應用,為人們的生活帶來更多的便利和質量提升。1.2國內外研究現狀2015年鄭平;黃志煌;唐齊時;林軍;呂丹《研究》中主要技術指標完成情況1、多功能溫濕度監測儀具有高準確度、高穩定性,能夠快速測量溫度、濕度參數。測量精度達到如下指標:相對濕度范圍:(0~100)%;準確度:±2%RH;溫度范圍:(-25~60)℃;準確度:±0.2℃。2、通過軟硬件設計,該監測儀可接入三種主流溫濕度傳感器;編寫軟件程序,可通過儀器側邊四個按鍵簡單對溫濕度傳感器進行選擇,以及顯示亮度調節、時間設定等。3、多功能溫濕度監測儀通過無線組網方式,采集位于工作區域各個溫濕度端口信號,集成反饋到中央控制系統進行處理。4、根據產品的功能和性能指標編寫相應的說明書,滿足客戶使用要求。5、進行儀表進行大量的實驗,改進設備的硬件電路,與軟件結構。并且送福建省計量科學研究院檢定,根據所出具的證書,可得該儀表達到要求,可以在多種場合工作。二、主要經濟指標完成情況項目組結合多年溫濕度參數檢定工作的積累以及對國內外各種溫濕度傳感的了解開發,研制了一種多功能無線自組網溫濕度監測儀,監測工作區域的溫度、濕度參數,并通過無線通信等方式反饋到控制系統,參與房間的溫濕度控制,確保溫濕度控制的準確、可靠。這不但可以解決我國各級計量檢測部門現場溫度、濕度等參數校準的問題,而且還可以應用在醫療、環保、電子、農業、工業氣體、造紙、紡織等行業。目前已用于我院基地建設的溫濕度監測系統中,應用情況良好、使用穩定。2020年衛東;霄在《計》中說明糧庫儲藏環境、溫室生長環境及家居生活環境,其中溫濕度都是重要的考慮因素。本系統以AT89C52為核心控制器,基于數字型DHT11溫濕度傳感器,將采集到的溫度和濕度信息傳輸給控制器進行數據分析和決策,并通過系統硬件部分預留的驅動控制接口,實現對不同應用場合自動控制的需要;同時通過LCD1602液晶屏實時顯示溫濕度數據,并且溫濕度數據若超出設置的閾值則自動發出聲光報警,提醒糧庫保管員、溫室技術人員、用戶警覺環境的變化,并及時查看系統是否自動采取了相應的措施,避免因溫度和濕度因素造成的不必要的經濟及健康損失。2022年露星;玲在《多功能鬧鐘設計》中設計一款基于STM32芯片的多功能鬧鐘,以實現顯時定時,顯示當地天氣信息、農歷節氣、實時監測周圍環境溫度和濕度變化并可通過語音控制來播報此信息等功能。且聯網功能擺脫了通過在程序源文件更改WIFI賬號來連接不同熱點的麻煩,使用APP或微信即可連接網絡更新鬧鐘天氣信息及時間,用戶使用鬧鐘更加方便。2022年HasanpourSadegh;KarperienLucas;WalshTavia;JahanshahiMaryam;HadisiZhina在《用于持續傷口監測的混合型螺紋溫度和濕度傳感器》中紡織濕度和溫度傳感器在服裝、傷口的管理、病人健康的監測等方面有著廣泛的應用。在這里,我們提出了一種多步輥對輥浸涂方法,以生產帶有氟化乙烯丙烯(FEP)涂層的納米粒子棉線。FEP涂層消除了溫度讀數對濕度的依賴性。然后,通過將FEP涂覆的線程和非涂覆的線程集成到傳感基板中,構建了一種混合溫度和濕度傳感器。所開發的傳感平臺可實現RH在30-80%范圍內的快速測量和溫度在20-90?°C范圍內的變化,保質期長達6個月。為了展示該傳感器用于傷口監測的可行性,將RH和溫度傳感器集成到定制的有機硅傷口敷料中。基于線的傳感器對細胞沒有任何負面影響,表明適合應用于傷口愈合。2022年MaresD.;PrajzlerV.;MartanT.;JerabekV.在《混合聚合物玻璃平面布拉格光柵作為溫度和濕度傳感器》中提出了一種新型平面光學聚合物波導布拉格光柵(PolymerWaveguideBraggGrating,PWBG)溫濕度傳感器的設計與構建。綜合國內外發展情況不難看出,如今在物質生活日益豐富的同時,人們對,科學技術的不斷發展,生活節奏越來越快,競爭日益激烈,人們對時間計量的精度要求越來越高,所以開發此款系統具有非常重要的意義。1.3主要研究內容該設計的主要流程如下:首先閱讀大量參考文獻,進行設計方案的確定,然后在protues上進行原理圖的繪制和修改,在仿真通過的情況下,購買所需要的元器件(元器件應考慮大小)。接著把元器件焊接到各個功能電路的模塊上,并結合程序進行調試。最后將各個功能的電路程序組合起來,然后再進行總體調試直到成功。實現的功能如下:純下位機:1.系統時間日期可設置;2.系統可實時顯示時間,日期;3.系統掉電后,有紐扣電池供電,時間日期掉電不丟失;4.系統可設置時鐘,到達鬧鈴時間提醒;5.系統可實時監測當前環境的溫濕度和PM2.5狀況,并顯示。總體結構框圖如下:圖1-1系統結構框圖第2章系統的總體結構2.1設計方案文獻研究法,通過查閱文獻來獲得研究資料,對系統設計中所涉及到的相關內容進行研究,初步構想系統要實現的功能及其運用的技術并搜集相關資料,作為系統設計的素材。功能分析法,功能分析法是社會科學用來分析社會現象的一種方法,是社會調查常用的分析方法之一。本系統通過功能分析法,對軟件的各項功能進行具體分析,從而明確開發目標。定性分析法,通過對文獻的研究,運用歸納和演繹、分析與綜合以及抽象與概括等方法,深入了解軟件和硬件開發的相關技術,從而熟悉系統中各個功能模塊之間的關系,掌握系統的工作原理及其本質,確定開發流程。經驗總結法,希望通過已有的每一塊功能的結合進行總結,設計出一套優良的系統,并規范的編寫程序。2.2功能需求分析2.2.1技術路線(1)硬件部分需要單片機模塊、時鐘芯片模塊、溫濕度檢測模塊、液晶屏模塊、聲音模塊、按鍵模塊;(2)采用KEIL5軟件平臺和C編程語言完成下位機軟件設計;(3)采用QT平臺和利用C語言和MYSQL完成系統設計;(4)設計結構框圖.2.2.2預期結果1.學會獨立完成系統的分析,設計;2.設計的結果具有實用性、科學性。3.建立“傳感器”,“信號收發”,“液晶顯示屏”三部分結構。4.硬件制作完成后進行軟件調試。5.設計電路圖。6.完成設計,進行實驗。7.撰寫畢業論文.2.3總體方案設計第一:理論知識準備階段,理解設計課題,認真研究課題所涉及到的內容,能夠較好的掌握有關題目的知識;第二:確定系統各個模塊,理清各個模塊之間的關系,收集相關得到軟硬件資料;第三:規劃課題,確定系統組成結構,勾畫出大體系統框架并在結構框架的基礎上提出原理框圖;第四:利用軟件完成硬件電路部分設計并畫出各部分電路圖,將系統部件通過接口電路集合在一起,并畫出電路圖;第五:根據系統控制過程完成軟件設計部分,繪制出主流程圖;第六:進行模擬仿真,檢查系統是否能夠按照要求實現控制功能,整理論文。2.4單片機型號選擇如圖2-1,本系統選擇型號為STC89C52的52單片機,是一款高性能的8位單片機。與stm32單片機相比其開發難度較低且具有在線編程功能,;要求的工作電壓更低;市面上價格更加實惠。STC89C52單片機是51單片機的一種增強版本,它的主要優勢如下:1.處理速度更快:STC89C52單片機的時鐘頻率可以達到33MHz,比常規的12MHz的51單片機快得多。因此,它可以更快地執行指令,更快地處理輸入和輸出操作。2.更大的存儲器:STC89C52單片機擁有更大的Flash存儲器和RAM存儲器,可分別達到32KB和2KB。這意味著它可以存儲更多的程序,并處理更復雜的任務。因其價格低廉,且能夠滿足設計所需,故此本系統選STC89C52用其作為控制芯片。圖2-1單片機最小系統原理圖第3章系統的硬件部分設計3.1系統總體設計本設計是一種基于單片機技術的多功能溫濕度電子鬧鐘設計,系統由單片機對信號進行運算處理,該設計的主要流程如下:首先閱讀大量參考文獻,進行設計方案的確定,然后在protues上進行原理圖的繪制和修改,在仿真通過的情況下,購買所需要的元器件(元器件應考慮大小)。接著把元器件焊接到各個功能電路的模塊上,并結合程序進行調試。最后將各個功能的電路程序組合起來,然后再進行總體調試直到成功。純下位機:1.系統時間日期可設置;2.系統可實時顯示時間,日期;3.系統掉電后,有紐扣電池供電,時間日期掉電不丟失;4.系統可設置時鐘,到達鬧鈴時間提醒;5.系統可實時監測當前環境的溫濕度和PM2.5狀況,并顯示。3.2系統的主要功能模塊設計3.2.1DHT11溫濕度傳感器模塊設計DHT11傳感器是一種數字溫濕度傳感器,具有價格低廉、使用方便、精度高等優點。它的工作原理是通過測量介質中的溫度和濕度,將其轉化為電信號輸出。DHT11傳感器具有4個引腳,分別是VCC、DATA、NC、GND。硬件部分主要包括DHT11傳感器的連接和單片機的連接。DHT11傳感器的VCC引腳連接到單片機的33V電源引腳,GND引腳連接到單片機的地引腳,DATA引腳連接到單片機的任意一個數字IO口。本設計使用STM32單片機作為主控芯片,通過軟件設計和硬件設計,成功地實現了基于DHT11傳感器的溫濕度傳感器。通過串口傳輸,我們可以實時地監測環境中的溫度和濕度變化。實驗結果表明,該傳感器具有較高的精度和穩定性,可以滿足實際應用需求。圖3-1DHT11溫濕度傳感器模塊原理圖3.2.2DS1302時鐘模塊設計DS1302時鐘芯片工作時為了對任何數據傳送進行初始化,需要將復位腳(RST)置為高電平且將8位地址和命令信息裝入移位寄存器。數據在時鐘(SCLK)的上升沿串行輸入,前8位指定訪問地址,命令字裝入移位寄存器后,在之后的時鐘周期,讀操作時輸出數據,寫操作時輸出數據。時鐘脈沖的個數在單字節方式下為8+8(8位地址+8位數據),在多字節方式下為8加最多可達248的數據。DS1302時鐘芯片是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周、時、分、秒進行計時,Y一個月小于31天時可以自動調整,且具有閏年補償等多種功能。圖3-2DS1302時鐘模塊原理圖工作原理:時鐘芯片:DS1302時鐘模塊內部集成了一個時鐘芯片,該芯片包含一個實時時鐘計數器和一些寄存器用于存儲時間和控制信息。時鐘信號源:DS1302通過外部提供的電池供電,在斷電情況下也能保持時鐘運行。時鐘信號源產生穩定的振蕩信號,用于驅動時鐘芯片內部的計數器。時間計數器:DS1302時鐘模塊內部的實時時鐘計數器使用一個32.768kHz的振蕩器作為時鐘信號源。這個振蕩器的頻率很穩定,因此可以提供準確的時間計數。寄存器存儲:DS1302時鐘模塊具有一組寄存器,用于存儲年、月、日、時、分、秒等時間信息,以及一些控制位用于配置和控制模塊的功能。數據傳輸:通過與主控芯片(如單片機或微處理器)之間的串行通信接口,可以讀取和寫入DS1302時鐘模塊內部的寄存器。主控芯片通過向特定的寄存器地址發送命令和數據,與DS1302進行通信。充電保護:DS1302內部的電池充電電路可用于為備用電源(電池)充電,以保持時鐘在斷電情況下的運行。充電保護電路確保電池不會過充,同時在斷電時切斷外部電源,以保護電池充電電路。3.2.3LCD顯示模塊設計LCD(LiquidCrystalDisplay的簡稱)液晶顯示器。能夠同時顯示16x2,32個字符,是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。LCD1602液晶顯示器是廣泛使用的一種字符型液晶顯示模塊。它是由字符型液晶顯示屏(LCD)、控制驅動主電路HD44780及其擴展驅動電路HD44100,以及少量電阻、電容元件和結構件等裝配在PCB板上而組成。該顯示屏的優點是耗電量低、體積小、輻射低。LCD1602主要用來顯示數字、字母、圖形以及少量自定義字符。可以顯示2行16個字符,擁有16個引腳,其中8位數據總線D0-D7,和RS、R/W、EN三個控制端口,工作電壓為5V,并且帶有字符對比度調節V0和背光源AK.主要參數1.顯示字符:16×2個字符2.工作電壓:4.5~5V3.工作電流:2.0mA4.工作溫度:-20°C~70°C5.模塊最佳工作電壓:5.0V6.單個字符尺寸2.95×4.35(W×Hmm)7.引腳:16腳圖3-3LCD顯示模塊原理圖工作原理:液晶分子結構:液晶是一種特殊的物質,具有在電場作用下改變取向的性質。液晶分子通常呈現棒狀或盤狀的結構,具有偶極性。液晶層和電極:液晶顯示屏由兩塊平行的透明導電玻璃板組成,中間夾著一層液晶材料。這些玻璃板上有導電電極,它們以網格狀或條狀排列。像素結構:每個像素由一個液晶分子和兩個交叉的電極組成,這些電極可以通過外部電壓來控制。偏振器:在液晶層的上下方分別放置兩個偏振器,它們的方向互相垂直。電壓控制:當沒有電壓施加到液晶分子上時,它們的取向會受到偏振器的阻擋,光無法通過液晶層,顯示為黑色。當外部電壓施加到液晶分子上時,液晶分子會重新排列,改變光的偏振方向,從而允許光通過液晶層。顯示圖像:液晶顯示屏的每個像素都可以根據所施加的電壓來控制,從而改變液晶分子的取向。通過控制不同像素的電壓,可以形成圖像。色彩顯示:液晶顯示屏通常是單色的,為了實現彩色顯示,可以使用彩色濾光片或使用多個子像素來實現RGB(紅、綠、藍)顏色的組合。3.2.4蜂鳴器模塊設計蜂鳴器是一種一體化結構的電子訊響器,采用壓供電,廣泛應用于計算機、打印機、復印機、報警器、玩具、汽車電子設備、電話機、時器等電子產品中作發聲器件。蜂鳴器主要分為和器兩種類型。蜂鳴器在電路中用字母“H”或“HA”(舊標準用“FM”、“ZZG”、“LB”、“JD”等)表示。驅動方式,系統有兩個他激蜂鳴器,頻率都為100Hz,一個由I/O口進行控制,另一個由PWM輸出口進行控制;系統還有兩個按鍵,一個按鍵為PORT按鍵,I/O口控制的蜂鳴器不鳴叫時按一次按鍵I/O口控制的蜂鳴器鳴叫,再按一次停止鳴叫,另一個按鍵為PWM按鍵,PWM口控制的蜂鳴器不鳴叫時按一次按鍵PWM輸出口控制的蜂鳴器鳴叫,再按一次停止鳴叫。蜂鳴器是不能用做機的,因為,蜂鳴器內部有一個振蕩電路,通上電源后就會驅動內部的一個微型喇叭發出蜂鳴聲。蜂鳴器可不是一個單純的小喇叭。另外,蜂鳴器有兩種。一種是,內部自帶振蕩器的;一種是,需要外接一個振蕩器的,也就是一個普通的微型喇叭。對于不帶振蕩器的那種,也是不能用的,因為它的電阻一般為32歐姆左右,也有8歐或16歐的。這些都屬于低阻抗的,所以不能用。圖3-4蜂鳴器模塊設計原理圖有源蜂鳴器是一種具有內置振蕩源的電子器件,它能夠產生聲音信號。下面是有源蜂鳴器的工作原理:振蕩源:有源蜂鳴器內部集成了一個振蕩源,通常是一個簡單的震蕩電路或封裝的振蕩器芯片。這個振蕩源會產生一定頻率的電信號,通常是音頻范圍內的頻率。蜂鳴器元件:有源蜂鳴器內部包含一個振膜和一個驅動電路。振膜是一個可以震動的薄膜,通常由金屬或陶瓷制成。它與驅動電路相連,可以根據接收到的電信號進行振動。驅動電路:驅動電路是有源蜂鳴器中的關鍵組成部分,它接收來自振蕩源的電信號,并將其轉換為適合驅動振膜的電壓信號。驅動電路通常包括放大器和輸出級,用于增強電信號的功率,并將其傳遞給振膜。振膜振動:一旦驅動電路提供了適當的電壓信號,振膜開始以相應頻率振動。這種振動會產生聲音波,將電信號轉化為聽得見的聲音。聲音輸出:當振膜振動時,它會將聲音波傳播到周圍的空氣中。這些聲音波通過蜂鳴器的結構和開口部分傳播出來,從而產生可以聽到的聲音。3.2.5PM2.5傳感器模塊設計PM2.5傳感器是一種用于測量空氣中PM2.5顆粒物濃度的設備,它可以檢測細小顆粒物的含量并提供相應的濃度數據。其工作原理如下:激光光源:PM2.5傳感器內部配備了一個激光光源,通常是一顆激光二極管。激光光源會產生一個穩定且具有特定波長的激光束。散射原理:PM2.5傳感器采用散射原理來測量顆粒物濃度。激光束會被空氣中的PM2.5顆粒物散射,形成散射光。接收器和光敏元件:傳感器內部還包含一個接收器,用于接收被散射的光。在接收器上安裝了一個光敏元件(例如光電二極管),它可以轉換光信號為電信號。光信號檢測:光敏元件會感應到接收到的散射光,根據光的強度變化產生相應的電信號。數據處理:傳感器內部的電路將從光敏元件接收到的電信號進行放大和處理。處理后的信號可以提供有關PM2.5顆粒物濃度的信息。校準和校正:為了確保傳感器的準確性,通常需要進行校準和校正。這涉及將傳感器與已知濃度的顆粒物進行比較,并調整傳感器的輸出,以使其能夠準確反映實際濃度。數據輸出:最后,PM2.5傳感器會將測量到的PM2.5顆粒物濃度數據輸出到外部設備,如顯示屏、數據記錄器或微處理器等,以供用戶查看和分析。PM2.5傳感器模塊的硬件電路設計可以包括以下關鍵部分:電源電路:為傳感器模塊提供所需的電源電壓。通常情況下,傳感器模塊需要一個穩定的電壓源,可以使用線性穩壓器或開關穩壓器來提供所需的電源電壓。傳感器接口電路:將傳感器與主控制器或微處理器連接起來。PM2.5傳感器通常使用串行接口(如UART或I2C)與主控制器進行通信。您需要設計一個適配器電路,將傳感器的串行接口與主控制器的串行接口相匹配。模擬前端電路:用于處理傳感器輸出的模擬信號。傳感器通常輸出一個模擬電壓或電流信號,您需要設計一個模擬前端電路來放大、濾波和條件化傳感器的輸出信號,以便將其轉換為數字信號。ADC(模數轉換器)電路:用于將模擬信號轉換為數字信號。傳感器的模擬輸出信號需要通過ADC轉換為數字信號,以便主控制器能夠處理和分析數據。選擇一個合適的ADC芯片,并設計相應的電路將模擬信號轉換為數字信號。外部存儲器電路(可選):如果您計劃將數據存儲在外部存儲器中,例如閃存芯片或SD卡,您需要設計相應的接口電路,將主控制器與外部存儲器連接起來。指示燈和按鍵電路(可選):如果您希望添加指示燈或按鍵以實現用戶交互,您可以設計相應的電路來控制指示燈和接收按鍵輸入。PCB設計:將上述電路設計布局到一個PCB(PrintedCircuitBoard)上,考慮電路的連接、布線、噪聲抑制和適當的地線設計等因素。第4章系統的軟件設計4.1軟件的主要流程首先開始時進行系統初始化,當初始化完成后,單片機進行程序的開始,按鍵會更改我們的時鐘信號,同時也會觸發我們的蜂鳴器響應,我們的溫濕度數據和時鐘數據,都會在我們的LCD屏上進行顯示。圖4-1系統主要流程圖4.2LCD顯示屏模塊的軟件設計首先進行單片機的初始化,初始化成功后,我們的單片機會將溫濕度傳感器采集到的數據,時鐘的數據都從LCD屏上顯示出來。圖4-2LCD顯示屏軟件設計圖LCD顯示屏模塊的軟件設計可以包括以下幾個方面:硬件初始化:首先,你需要將LCD顯示屏模塊連接到主控單元(例如微控制器)的合適引腳。根據LCD模塊的規格和接口類型,你需要進行硬件初始化,包括設置引腳模式、電源電壓等。顯示控制:LCD顯示屏通常使用并行或串行接口進行數據傳輸。你需要根據LCD的通信協議和接口類型,發送適當的指令和數據以控制顯示屏。這可能包括設置顯示模式、清除屏幕、設置光標位置、繪制圖形等。字符和圖形顯示:通過發送適當的指令和數據,你可以在LCD上顯示字符、字符串和圖形。你需要設計相應的算法和數據結構,以將字符和圖形轉換為適當的字節和位圖格式,并將其發送到LCD模塊進行顯示。光標控制:對于支持光標的LCD模塊,你可以控制光標的位置和狀態。這包括將光標移動到特定的行和列、顯示/隱藏光標、設置光標閃爍等。根據LCD模塊的規格和文檔,使用適當的指令和數據進行光標控制。顯示模式和屬性:LCD顯示屏通常支持不同的顯示模式和屬性,例如行數、字符大小、背光亮度等。你可以根據需要設置和調整這些顯示模式和屬性,以滿足你的應用需求。動態顯示和刷新:如果你需要在LCD上顯示動態內容,例如實時數據、計數器等,你可以設計相應的邏輯和算法。這可能包括定時刷新顯示、數據更新和重繪等。錯誤處理和異常情況:在軟件設計過程中,你應該考慮到可能出現的錯誤和異常情況。例如,與LCD的通信失敗、顯示數據不正確等。你可以添加適當的錯誤處理機制,例如錯誤代碼、超時檢測等,以確保程序可以恢復正常運行或提供相應的提示。4.3DS1302模塊的軟件設計首先進行初始化,初始化成功后,我們的單片機會進行程序的開始。時鐘程序開始進行,并且時鐘模塊的數據會傳輸到我們的單片機上。圖4-3時鐘模塊軟件設計流程圖DS1302時鐘模塊的軟件設計可以包括以下幾個方面:硬件連接:首先,你需要將DS1302時鐘模塊連接到你的主控單元(例如微控制器)。DS1302模塊通常使用3個引腳進行通信:RST(復位),SCLK(時鐘),和IO(數據)。確保正確連接這些引腳,并根據需要連接電源和地線。通信協議:DS1302模塊使用串行接口進行通信,你需要根據DS1302的通信協議來進行數據傳輸。這通常涉及到發送和接收字節數據,并且需要注意時序和時鐘頻率。你可以使用主控單元的GPIO功能或特定的串行通信庫函數來實現通信。初始化:在開始使用DS1302之前,你需要對其進行初始化設置。這包括設置時鐘的初始時間和日期,以及配置其他功能,例如時鐘格式(12小時制或24小時制),使能鬧鐘等。根據DS1302的規格和文檔,使用合適的命令和數據格式進行初始化。時鐘讀取和設置:通過DS1302的通信接口,你可以讀取當前的時鐘時間和日期。這包括小時、分鐘、秒、年、月、日等信息。你也可以通過通信接口設置新的時鐘時間和日期,以更新DS1302的內部計數器。記住,寫入新的時間和日期可能需要進行特定的數據格式轉換。鬧鐘功能:DS1302通常還提供了鬧鐘功能,允許你設置特定的時間點觸發鬧鐘。你可以通過設置相關的寄存器來配置鬧鐘的時間,并通過輪詢或中斷方式檢測是否觸發了鬧鐘。電池備份:DS1302通常具有電池備份功能,以保持時鐘計數器的運行,即使主電源斷開。你可以通過設置相應的寄存器來啟用或禁用電池備份功能。在設計軟件時,你需要考慮電池狀態和電池電量的監測,并在必要時提供警告或處理措施。錯誤處理和異常情況:在軟件設計過程中,你應該考慮到可能出現的錯誤和異常情況。例如,與DS1302的通信失敗、時鐘數據不正確等。你可以添加適當的錯誤處理機制,例如錯誤代碼、超時檢測等,以確保程序可以恢復正常運行或提供相應的提示。4.4蜂鳴器模塊軟件設計開始時首先進行的是我們的初始化,初始化成功后,我們的進入設定的程序,我們的摁鍵會觸發我們的蜂鳴器響應,當我們的時鐘到達我們設定的時間時,我們的蜂鳴器也會進行報警。圖4-4蜂鳴器模塊軟件設計蜂鳴器模塊的軟件設計可以包括以下幾個方面:硬件初始化:首先,你需要將蜂鳴器模塊連接到主控單元(例如微控制器)的合適引腳。根據蜂鳴器模塊的規格和接口類型,你需要進行硬件初始化,包括設置引腳模式(輸入/輸出)、電平狀態等。蜂鳴器控制:通過控制蜂鳴器模塊所連接的引腳,你可以產生不同的聲音和音調。通常,蜂鳴器模塊是通過改變引腳的高低電平狀態來控制的。你可以使用主控單元的GPIO功能或特定的蜂鳴器控制庫函數來實現控制。音頻生成:根據你的需求,你可以生成不同頻率和持續時間的音頻信號。這可以通過在適當的時序下改變引腳電平狀態來實現。你可以使用定時器或延時函數來控制音頻的持續時間和頻率。聲音模式和序列:除了單個音頻信號,你還可以設計和控制不同的聲音模式和序列。這可能包括播放音樂、警報聲、脈沖等。你可以使用控制邏輯和計時器來生成復雜的聲音模式和序列。音量控制:在一些應用中,你可能需要對蜂鳴器的音量進行控制。這可以通過改變蜂鳴器的驅動電壓或使用可調電阻等方式來實現。根據蜂鳴器模塊的設計和規格,你可以選擇合適的音量控制方法。錯誤處理和異常情況:在軟件設計過程中,你應該考慮到可能出現的錯誤和異常情況。例如,當蜂鳴器模塊無法正常工作或出現故障時,你可以添加適當的錯誤處理機制,以確保程序可以恢復正常運行或提供相應的提示。4.5PM2.5檢測模塊軟件設計PM2.5傳感器模塊的軟件設計可以包括以下幾個方面:硬件初始化:首先,你需要通過適當的接口將傳感器模塊連接到你的主控單元(例如微控制器)。根據傳感器模塊的規格和通信協議,你需要進行硬件初始化,包括設置引腳模式、通信速率等。傳感器數據讀取:通過與傳感器模塊之間的通信接口(例如串口、I2C、SPI等),你可以讀取傳感器模塊提供的PM2.5濃度數據。根據通信協議,你需要發送相應的指令,并解析傳感器返回的數據。數據處理和計算:一旦你成功讀取傳感器的濃度數據,你可以進行數據處理和計算。這可能包括數據濾波、校準和單位轉換等。你還可以根據需求對數據進行統計分析,例如計算平均值、最大值、最小值等。數據存儲和顯示:你可以選擇將傳感器數據存儲在內部存儲器中,或者將其發送到外部設備(例如計算機、云服務器等)。此外,你還可以在顯示屏或其他輸出設備上實時顯示傳感器數據,以便用戶可以直觀地了解PM2.5濃度。報警和異常處理:你可以設置閾值來監測PM2.5濃度的變化,并觸發警報或采取相應的措施。例如,當濃度超過預設的安全范圍時,可以通過聲音、光線或消息通知用戶。軟件優化和穩定性:在軟件設計過程中,你應該考慮到性能優化和穩定性。這包括減少資源占用、優化算法、處理異常情況等。你還可以添加錯誤處理機制,以確保在發生錯誤時程序可以恢復正常運行。第5章系統測試5.1系統實物圖如圖我們可以看到蜂鳴器,溫濕度傳感器,PM2.5傳感器,開關,紐扣電池、按鍵等,按鍵依次為我們的設置按鍵、加按鍵、減按鍵。圖5-1系統實物圖5.2測試步驟系統通過溫濕度傳感器傳來的數據進行分析,可以在顯示屏上顯示當前環境的溫度和濕度。系統可實時顯示時間,日期并可以進行設置。系統掉電后,有紐扣電池供電,系統掉電日期也不會丟失。在測試的時候,可能會出現測試的溫度或者濕度不準的情況,出現這種情況時,可以多測試幾次,直至準確為止。測試鬧鐘,通過我們設定鬧鐘時間為一分鐘,一分鐘后如圖可以看到我們的LED燈已經亮起,這時候我們的蜂鳴器也進行了報警提示,鬧鐘響起實驗完成且成功。圖5-2實物測試圖系統通過PM2.5傳感器傳來的數據進行分析,可以在顯示屏上顯示當前環境的PM2.5濃度,在測試的時候,可能會出現測試的PM2.5濃度不準的情況,出現這種情況時,可以多測試幾次,直至準確為止。圖5-3實物測試圖第六章總結與展望本設計不僅具備傳統電子鬧鐘的功能,如可設置系統時間日期、實時顯示時間和日期,并在掉電時通過紐扣電池供電以保證時間日期不丟失,還具備了監測環境溫濕度和PM2.5狀況的能力,并能實時顯示這些數據。通過設計,我們使得這款電子鬧鐘成為一個實用的家居設備。用戶可以根據自己的需要設置時間和日期,確保準確的鬧鈴提醒。而且,在掉電情況下,紐扣電池的應用保證了時間和日期的持久性,使得用戶不必擔心重新設置系統。另外,該鬧鐘的環境監測功能為用戶提供了實時的溫濕度和PM2.5狀況信息。這對于關注空氣質量和室內環境的用戶來說,尤為重要。用戶可以通過鬧鐘上的顯示屏隨時了解當前環境的狀況,根據需要采取相應的措施,例如調整溫度、濕度或開啟空氣凈化器等,以改善居住環境。展望:雖然我們已經成功設計了一款多功能溫濕度電子鬧鐘,但仍有一些潛在的改進和擴展的空間。我們可以考慮增加更多的環境監測功能,例如檢測空氣中的其他污染物或有害氣體。這將使鬧鐘成為一個更全面的環境監測儀器,為用戶提供更多有關室內空氣質量的信息。我們可以進一步改進鬧鐘的顯示屏和用戶界面。提高顯示屏的分辨率和亮度,使得數據更加清晰可見。同時,簡化用戶界面,使設置時間、日期和其他功能更加方便和直觀。考慮到移動設備的普及,我們可以將鬧鐘與手機或其他智能設備進行連接,實現更多的功能擴展。例如,用戶可以通過手機應用程序與鬧鐘進行交互,設置鬧鐘、查看歷史數據等。總的來說,多功能溫濕度電子鬧鐘的設計為用戶提供了便利和實用性。通過不斷的改進和擴展,我們可以進一步提升該產品的性能和功能,滿足用戶對于環境監測和鬧鐘功能的需求,并適應日益智能化的家居生活。參考文獻[1]松井邦彥.傳感器實用電路設計與制作[M].北京:科學出版社,2019,107-110.[2]林志琦.單片機原理接口及應用[M].中國水利水電出版社,2019.[3]黃繼昌.傳感器工作原理及應用實例[A].北京:人民郵電出版社,2018.[4]高燕梅.數字電子技術基礎[M].電子工業出版社,2018.120-73.[5]童詩白.模擬電子技術基礎[M].高等教育出版社,2019,79-85.[6]孫曉云.接口與通信技術原理與應用[J].中國電力出版社,2018.[7]黃照翠,張荃,陳暉,等.智慧校園視頻服務體系應用研究[J].中國教育信息化,2020.[8]李耀武.基于單片機的電子LED閃字屏的電路設計[J].西部皮革.2018.[9]李合軍.基于單片機的網絡覆蓋控制技術[J].電子技術與軟件工程.2021.[10]張浩銳.短距離無線數據傳輸系統研究[J].科技資訊.2019.[11]段露星,馮治杰,付瑞玲.多功能鬧鐘設計[J].黃河科技學院學報,2022,24(08):80-83.[12]蔣衛東,賈文娟,喬凌霄.多功能溫濕度智能測控儀設計[J].運城學院學報,2020,38(03):26-28.[13]陳建泉,林偉軍.自帶溫濕度系統的多功能移動工器具車[J].電工技術,2019,(02):85-86.[14]王振運,孟立凡,李菠.多功能智能藥盒的設計與實現[J].電子世界,2016,(01):189-190.[15]陳洪俠,呂妍.多功能溫濕度現場校驗裝置的設計[J].儀器儀表標準化與計量,2015,(06):41-42+45.[16]陳洪俠,基于虛擬儀器技術的多功能溫濕度現場校驗裝置.黑龍江省,黑龍江省計量檢定測試院,2015-10-29.[17]鄭平,多功能無線自組網溫濕度監測儀的研究.福建省,福建省計量科學研究院,2015-01-12.[18]林軍,多功能數字溫濕度計/體溫計的研制.福建省,福建省計量科學研究院,2014-03-14.[19]KewangZhang,QizhaoWu,XinLi.Relayparticipated-new-typebuildingcncrgymanagcmentsystcm:Ancncrgy-efficientroutingschemeforwirelesssensornetwork-basedbuildingenergymanagementsystems.2018,13(1):169-185.[20]PengweiHua,XiaowuLiu,JiguoYu,NaDang,XiaoweiZhang.Energy-efficientadaptiveslice-basedsecuredataaggregationschemeinWSN[J].ProcediaComputerScience,2018,129.[21]KORTUMK,MOLLERM,HIRNEIBC,etal.Smarteyedata:devdtopahealtO0%ofoundationformedicalrescarchusingSmartDataapplications[J].DerOphthalmologeZeitschriftDerDeutschenOphthalmologischenGescllschaft,2019.[22]RaafiB.DesignandDevelopmentofFuzzy-PIDControllerforFour-wheeledMobileRoboticStability:AC'aseStudyontheUphillRoad[J].PTEKJournalofEngineering,2020,6(2):6.[23]ZhouY,DongW,FYuan,etal.ResearchofOnlineWaterQualityMonitoringSystemBasedonZigbeeNetwork[J].AdvancesinInformationSciences&ServiceSciences,2019,4(5):255-261.附錄電路圖
源代碼sbitBUZZER=P1^3; //蜂鳴器驅動端口==P1^3sbitReduc=P3^6; //按鍵鍵輸入端口==P1^7sbitAdd=P3^5; //按鍵加輸入端口==P3^1sbitMode=P3^4; //按鍵加輸入端口==P3^1/**************************************************函數名稱:voidmain(void)**函數功能:主函數**輸入:無**輸出:無**說明:************************************************/voidmain(void) { ucharseconds=0x55,points=0x12,when=0x12,years=0x14,month=0x12,day=0x11,week=0x04;//時間、日期變量 ucharT_data=0,RH_data=0;//溫度、濕度變量 ucharnao_when=0x12,nao_points=0x13;//鬧鐘變量 ucharshezhi_flag=1,Mode_flag=1;//設置變量 ucharbueezr_flag=0,count=0,buzzer_time=9;//蜂鳴器報警變量 uintMode_count=0; uchardisp1[16]={"20--Week"}; uchardisp[16]={"::C%"}; LCD_Init();// WriteChar(1,0,16,"Feiyanan");//在第一行顯示內容// WriteChar(2,0,16,"130402326");//在第二行顯示內容// Delay(5000);// Delay(5000); nao_when=byte_read(0x2000); //讀出鬧鐘時 nao_points=byte_read(0x2001);//讀出鬧鐘分 while(1) { T_data=Read_TRH(0);//溫度 disp[9]=T_data/10+0x30;//十位 disp[10]=T_data%10+0x30;//個位 RH_data=Read_TRH(1);//濕度 disp[13]=RH_data/10+0x30;//十位 disp[14]=RH_data%10+0x30;//個位 years=getds1302(0x8D);//年 disp1[2]=years/16+0x30;//十位 disp1[3]=years%16+0x30;//個位 week=getds1302(0x8B);//星期 disp1[15]=week%16+0x30;//個位 month=getds1302(0x89);//月 disp1[5]=month/16+0x30;//十位 disp1[6]=month%16+0x30;//個位 day=getds1302(0x87);//日 disp1[8]=day/16+0x30;//十位 disp1[9]=day%16+0x30;//個位 when=getds1302(0x85);//時 disp[0]=when/16+0x30;//十位 disp[1]=when%16+0x30;//個位 points=getds1302(0x83);//分 disp[3]=points/16+0x30;//十位 disp[4]=points%16+0x30;//個位 seconds=getds1302(0x81);//秒 disp[6]=seconds/16+0x30;//十位 disp[7]=seconds%16+0x30;//個位 /*******查看陰歷數據********/ if(Add==0)//判斷Add鍵是否按下 { Conversion(0,years,month,day);//陽歷轉陰歷函數 WriteChar(2,0,16,"");//在第二行顯示'內容'陰歷數據 WriteCOMDATA(0xC3,0); WriteCOMDATA('2',1); WriteCOMDATA('0',1); WriteCOMDATA(year_moon/10+0x30,1); WriteCOMDATA(year_moon%10+0x30,1); WriteCOMDATA('/',1); WriteCOMDATA(month_moon/10+0x30,1); WriteCOMDATA(month_moon%10+0x30,1); WriteCOMDATA('/',1); WriteCOMDATA(day_moon/10+0x30,1); WriteCOMDATA(day_moon%10+0x30,1); count=40; while(count--)//陽歷數據第一行,陰歷數據第二行,顯示時間4S { Delay(400); } } //鬧鐘函數 if(points==nao_points&&nao_when==when&&seconds<0x30)//鬧鐘時間比較,30S { bueezr_flag=1; } //整點報時 elseif(points==0&&seconds<0x02)//整點報時比較1S { bueezr_flag=1; } else { bueezr_flag=0; BUZZER=1; } /*******蜂鳴器報警********/ count++;if(count>buzzer_time*10)count=buzzer_time+1; if(count%buzzer_time==0&&bueezr_flag) { BUZZER=~BUZZER;//蜂鳴器取反發出聲音提示 } /*******Mode鍵設置時間日期********/ if(Mode==0&&Mode_flag) { WriteCOMDATA(0x0F,0);//LCD顯示光標 Delay(100); if(Mode==0) { BUZZER=1; bueezr_flag=0; Mode_flag=0; shezhi_flag=1; WriteChar(1,0,16,"20--Week");//在第一行顯示內容 WriteChar(2,0,16,":::");//在第二行顯示內容 WriteCOMDATA(0x82,0);WriteCOMDATA(years/16+0x30,1); WriteCOMDATA(0x83,0);WriteCOMDATA(years%16+0x30,1); WriteCOMDATA(0x85,0);WriteCOMDATA(month/16+0x30,1); WriteCOMDATA(0x86,0);WriteCOMDATA(month%16+0x30,1); WriteCOMDATA(0x88,0);WriteCOMDATA(day/16+0x30,1); WriteCOMDATA(0x89,0);WriteCOMDATA(day%16+0x30,1); WriteCOMDATA(0x8F,0);WriteCOMDATA(week%16+0x30,1); WriteCOMDATA(0xC0,0);WriteCOMDATA(when/16+0x30,1); WriteCOMDATA(0xC1,0);WriteCOMDATA(when%16+0x30,1); WriteCOMDATA(0xC3,0);WriteCOMDATA(points/16+0x30,1); WriteCOMDATA(0xC4,0);WriteCOMDATA(points%16+0x30,1); WriteCOMDATA(0xC6,0);WriteCOMDATA(seconds/16+0x30,1); WriteCOMDATA(0xC7,0);WriteCOMDATA(seconds%16+0x30,1); WriteCOMDATA(0xCA,0);WriteCOMDATA(nao_when/16+0x30,1); WriteCOMDATA(0xCB,0);WriteCOMDATA(nao_when%16+0x30,1); WriteCOMDATA(0xCD,0);WriteCOMDATA(nao_points/16+0x30,1); WriteCOMDATA(0xCE,0);WriteCOMDATA(nao_points%16+0x30,1); while(1) { switch(shezhi_flag) { case1: WriteCOMDATA(0x82,0);WriteCOMDATA(years/16+0x30,1); WriteCOMDATA(0x83,0);WriteCOMDATA(years%16+0x30,1); WriteCOMDATA(0x83,0); break; case2: WriteCOMDATA(0x85,0);WriteCOMDATA(month/16+0x30,1); WriteCOMDATA(0x86,0);WriteCOMDATA(month%16+0x30,1); WriteCOMDATA(0x86,0); break; case3: WriteCOMDATA(0x88,0);WriteCOMDATA(day/16+0x30,1); WriteCOMDATA(0x89,0);WriteCOMDATA(day%16+0x30,1); WriteCOMDATA(0x89,0); break; case4: WriteCOMDATA(0x8F,0);WriteCOMDATA(week%16+0x30,1); WriteCOMDATA(0x8F,0); break; case5: WriteCOMDATA(0xC0,0);WriteCOMDATA(when/16+0x30,1); WriteCOMDATA(0xC1,0);WriteCOMDATA(when%16+0x30,1); WriteCOMDATA(0xC1,0); break; case6: WriteCOMDATA(0xC3,0);WriteCOMDATA(points/16+0x30,1); WriteCOMDATA(0xC4,0);WriteCOMDATA(points%16+0x30,1); WriteCOMDATA(0xC4,0); break; case7: WriteCOMDATA(0xC6,0);WriteCOMDATA(seconds/16+0x30,1); WriteCOMDATA(0xC7,0);WriteCOMDATA(seconds%16+0x30,1); WriteCOMDATA(0xC7,0); break; case8: WriteCOMDATA(0xCA,0);WriteCOMDATA(nao_when/16+0x30,1); WriteCOMDATA(0xCB,0);WriteCOMDATA(nao_when%16+0x30,1); WriteCOMDATA(0xCB,0); break; case9: WriteCOMDATA(0xCD,0);WriteCOMDATA(nao_points/16+0x30,1); WriteCOMDATA(0xCE,0);WriteCOMDATA(nao_points%16+0x30,1); WriteCOMDATA(0xCE,0); break; } Delay(300); //加 if(Reduc==0) { Delay(200); //while(Reduc==0); switch(shezhi_flag) { case1:if(years==0x99)years=0;else{if(years%16==9)years+=7;elseyears++;}break; case2:if(month==0x12)month=1;else{if(month%16==9)month+=7;elsemonth++;}break; case3:if(day==0x31)day=1;else{if(day%16==9)day+=7;elseday++;}break; case4:if(week==0x07)week=1;else{if(week%16==9)week+=7;elseweek++;}break; case5:if(when==0x23)when=0;else{if(when%16==9)when+=7;elsewhen++;}break; case6:if(points==0x59)points=0;else{if(points%16==9)points+=7;elsepoints++;}break; case7:if(seconds==0x59)seconds=0;else{if(seconds%16==9)seconds+=7;elseseconds++;}break; case8:if(nao_when==0x23)nao_when=0;else{if(nao_when%16==9)nao_when+=7;elsenao_when++;}break; case9:if(nao_points==0x59)nao_points=0;else{if(nao_points%16==9)nao_points+=7;elsenao_points++;}break; } } //減 if(Add==0) { Delay(200); //while(Add==0); switch(shezhi_flag) { case1:if(years==0)years=0x99;else{if(years%16==0)years-=7;elseyears--;}break; case2:if(month==1)month=0x12;else{if(month%16==0)month-=7;elsemonth--;}break; case3:if(day==1)day=0x31;else{if(day%16==0)day-=7;elseday--;}break; case4:if(week==1)week=0x07;else{if(week%16==0)week-=7;elseweek--;}break; case5:if(when==0)when=0x23;else{if(when%16==0)when-=7;elsewhen--;}break; case6:if(points==0)points=0x59;else{if(points%16==0)points-=7;elsepoints--;}break; case7:if(seconds==0)seconds=0x59;else{if(seconds%16==0)seconds-=7;elseseconds--;}break; case8:if(nao_when==0)nao_when=0x23;else{if(nao_when%16==0)nao_when-=7;elsenao_when--;}break; case9:if(nao_points==0)nao_points=0x59;else{if(nao_points%16==0)nao_points-=7;elsenao_points--;}break; } } //短按切換設置項目長按退出設置頁面 if(Mode==0) { Delay(300); while(Mode==0) { Delay(300); Mode_count++; if(Mode_count>6) { //T_data=Read_TRH(0);//溫度 disp[9]=T_data/10+0x30; disp[10]=T_data%10+0x30; //RH_data=Read_TRH(1);//濕度 disp[13]=RH_data/10+0x30; disp[14]=RH_data%10+0x30; //years=getds1302(0x8D);//年 disp1[2]=years/16+0x30; disp1[3]=years%16+0x30; //week=getds1302(0x8B);//星期 disp1[15]=week%16+0x30; //month=getds1302(0x89);//月 disp1[5]=month/16+0x30; disp1[6]=month%16+0x30; //day=getds1302(0x87);//日 disp1[8]=day/16+0x30; disp1[9]=day%16+0x30; //when=getds1302(0x85);//時 disp[0]=when/16+0x30; disp[1]=when%16+0x30; //points=getds1302(0x83);//分 disp[3]=points/16+0x30; disp[4]=points%16+0x30; //seconds=getds1302(0x81);//秒 disp[6]=seconds/16+0x30; disp[7]=seconds%16+0x30; WriteCOMDATA(0x0C,0);//關閉LCD光標 Delay(10); WriteChar(1,0,16,disp1);//在第一行顯示內容 WriteChar(2,0,16,disp);//在第二行顯示內容 } } if(Mode_count>6) { Mode_count=0; /********鬧鐘寫入EEPROM********/ SectorErase(0x2000); byte_write(0x2000,nao_when); byte_write(0x2001,nao_points); /********時間、日期、星期寫入DS1302********/ setds1302(0x80,seconds);//秒 setds1302(0x82,points);//分 setds1302(0x84,when);//時 setds1302(0x86,day);//日 setds1302(0x88,month);//月 setds1302(0x8A,week);//星期 setds1302(0x8C,years);//年 break; } elseMode_count=0; shezhi_flag++; if(shezhi_flag>9)shezhi_flag=1; } } } } /********LCD1602顯示********/ WriteChar(1,0,16,disp1);//在第一行顯示‘內容’日期和星期 WriteChar(2,0,16,disp);//在第二行顯示‘內容’時間、溫度和濕度 if(Mode_flag==0){Mode_count++;if(Mode_count>20){Mode_count=0;Mode_flag=1;}} }}sbitDHT11_DQ=P3^3;ucharU8count,U8temp,U8FLAG,U8comdata;voidDelay_10us(void){ uchari; i--; i--; i--; i--; i--; i--;}voidCOM(void){ uchari;for(i=0;i<8;i++){ U8FLAG=2; while((!DHT11_DQ)&&U8FLAG++); Delay_10us(); Delay_10us(); U8temp=0; if(DHT11_DQ)U8temp=1; U8FLAG=2; while((DHT11_DQ)&&U8FLAG++); if(U8FLAG==1)break; U8comdata<<=1;U8comdata|=U8temp; }}ucharRead_TRH(ucharch){ ucharTRH_data=0; staticucharU8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; staticucharU8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;DHT11_DQ=0;Delay(24);DHT11_DQ=1;Delay_10us();Delay_10us();Delay_10us();Delay_10us();DHT11_DQ=1;if(!DHT11_DQ){ U8FLAG=2; while((!DHT11_DQ)&&U8FLAG++); U8FLAG=2; while((DHT11_DQ)&&U8FLAG++); COM();U8RH_data_H_temp=U8comdata; COM();U8RH_data_L_temp=U8comdata; COM();U8T_data_H_temp=U8comdata; COM();U8T_data_L_temp=U8comdata; COM();U8checkdata_temp=U8comdata; DHT11_DQ=1; U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp==U8checkdata_temp) { U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; }} if(ch)TRH_data=U8RH_data_H; elseTRH_data=U8T_data_H; returnTRH_data;}#endif#ifndef__DELAY_H__#define__DELAY_H__#include<reg52.h>//#include<string.h>#defineucharunsignedchar#defineuintunsignedintvoidDelay(uintT){uchari;for(T;T>0;T--)for(i=200;i>0;i--);}#endif#defineRdCommand0x01//定義ISP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 適合中學生的幽默演講稿(4篇)
- 醫療服務協議(19篇)
- 承包土地轉包合同范本(4篇)
- 2025年中等職業自我鑒定(6篇)
- 大學個人暑假計劃(4篇)
- 杠桿收購中的股權質押合同
- 短期市場洞察員協議
- 商場餐飲檔合同協議
- 快遞代加工合同協議
- 向家具廠供貨合同協議
- 2025年審計審查重點試題及答案
- 2025年證券從業資格證考試真題試題及答案
- 城市管理文明執法規范(試行)
- 廣東省2024-2025學年佛山市普通高中教學質量檢測物理試卷及答案(二)高三試卷(佛山二模)
- 【9數一模】2025年安徽合肥市第四十五中學九年級中考一模數學試卷(含答案)
- 2025年中石油政工師理論考試題庫(含答案)
- 2025年二建-水利-簡答200問
- 安全專項施工方案內容
- 2025天津市安全員《B證》考試題庫及答案
- 幼兒園趣味迷宮課件
- 電網工程設備材料信息參考價(2024年第四季度)
評論
0/150
提交評論