基于51單片機的智能窗簾的研究與設計_第1頁
基于51單片機的智能窗簾的研究與設計_第2頁
基于51單片機的智能窗簾的研究與設計_第3頁
基于51單片機的智能窗簾的研究與設計_第4頁
基于51單片機的智能窗簾的研究與設計_第5頁
已閱讀5頁,還剩27頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、遼工大電子設計目錄摘要1第1章 緒論21.1 系統設計的背景及意義21.2 設計的基本內容21.3 實現的基本功能3第2章 總體電路設計與原理說明42.1 方案介紹42.2總體方案設計52.2.1 自動控制窗簾基本功能52.2.2 總體結構設計5第3章 硬件分析與設計73.1 單片機及相關電路設計73.1.1 89C51單片機概述73.1.2 晶振電路83.1.3 復位電路83.1.4 顯示電路93.2 光敏傳感器電路93.3 A/D轉換電路103.4 步進電機電路11123.5 溫度檢測電路123.6 紅外控制電路14第4章 程序分析設計184.1 主程序184.2 重要子程序設計18第5章

2、 總結19參考文獻20附錄1 :原理圖21附錄 2 :部分子程序22 摘要自動控制技術是20世紀發展最快、影響最大的技術之一,也是21世紀最重要的高技術之一。今天,技術、生產、軍事、管理、生活等各個領域,都離不開自動控制技術。就定義而言,自動控制技術是控制論的技術實現應用,是通過具有一定控制功能的自動控制系統,來完成某種控制任務,保證某個過程按照預想進行,或者實現某個預設的目標。隨著電子計算機技術和其他高技術的發展,自動控制技術的水平越來越高,應用越來越廣泛,作用越來越重要。尤其是在生產過程的自動化、工廠自動化、機器人技術、綜合管理工程、航天工程、軍事技術等領域,自動控制技術起到了關鍵作用。當

3、然,在智能家居方面,自動控制技術有較好的發展前景。應用自動控制技術,將是家居環境更加智能化,人性化。針對家居環境采光及避光問題,自動窗簾控制系統將取代手動控制,更加人性化。本文綜述了自動窗簾系統的設計與控制系統,介紹了設計制作一個完整的自動窗簾控制系統所需要做的理論分析,以及各環節功能的實現。自動窗簾控制系統核心是采用單片機AT89C51控制,其次采用感光傳感器,紅外控制電路,溫度檢測電路等外圍電路。整個系統在各模塊的配合下實現半自動控制,自動控制等功能。該設計在理論層面上,以程序語言驅動各模塊工作,實現了各模塊的內在聯系,應用層面上采用軟件進行原理圖設計和仿真。該自動窗簾系統硬件電路主要由光

4、敏檢測電路,紅外控制電路,溫度檢測電路,步進電機驅動電路構成。該設計則主要討論了自動窗簾系統的設計過程,硬件電路設計,軟件調試過程,以及利用軟件實現紅外線遙控信號的編碼及解碼方式。通過本系統可以實現通過光照強度實現窗簾開關自動控制,通過溫度檢測電路實現窗簾開關自動控制,同時實現紅外遙控的半自動控制。關鍵詞:自動控制,自動窗簾,單片機,步進電機第1章 緒論1.1 系統設計的背景及意義智能家居以住宅為平臺,兼備建筑、網絡通信、信息家電、設備自動化,集系統、結構、服務、管理為一體的高效、舒適、安全、便利、環保的居住環境,盡顯便捷將家中的各種設備(如音視頻設備、照明設備、窗簾控制、空調控制、網絡家電等

5、)通過家庭網絡連接到一起。與普通家居相比,不僅具有傳統的居住功能,提供安全舒適的家庭生活空間,還能提供全方位的信息交互功能,優化人們的生活方式。隨著社會信息化的加快,人們的工作、生活和通訊、信息的日益緊密。信息化社會在改變人們生活方式與工作習慣的時候,也對傳統的住宅提出了挑戰,社會、技術以及經濟的進步更使人們的觀念隨之巨變。人們對家居的要求早已不是物理空間,更為關注的是一個安全、方便、舒適的居家環境。隨著技術產業結構的調整,生產工藝的飛速發展,人們的生活水平不斷提高,家用電氣逐漸普及。高精度、多功能、低功耗是現代科技發展的趨勢。在這種趨勢下,窗簾的數字化、智能化已經成為現代生產研究的主導設計方

6、向。單片機在電子產品中的應用已經越來越廣泛,在很多電子產品中也用到了紅外控制。結合感光系統和紅外遙控系統的智能窗簾系統具有較好的發展前景。1.2 設計的基本內容本智能家居自動窗簾控制系統以STC89S51單片機為控制核心,由電源模塊、光敏感應模塊、溫度監測模塊、紅外遙控模塊等幾個環節組成本系統的主要框架,與此同時可外擴一些其他的控制功能。系統可以實現對外界光線強度的實時監測,從而來控制窗簾的自動開啟和關閉,并可對室內的溫度進行檢測和顯示,可由用戶隨時設定溫度閾值,當實際的溫度超過或低于設定溫度后,通過窗簾的開閉,使室內的光線和溫度達到一個較為理想的條件。為了更體現人性化,本設計通過紅外線的發送

7、和接收,可根據用戶的意愿實現對窗簾開閉的遠距離遙控。該設計主要分為以下幾個章節:(1) 緒論:介紹介紹系統設計的背景及意義。(2) 總體方案設計:介紹自動窗簾控制系統總體方案,及總體結構設計。(3) 硬件系統分析:介紹主要硬件系統。(4) 軟件分析:介紹軟件設計。(5) 總結:對該設計的不足和擴展進行分析。1.3 實現的基本功能自動窗簾控制系統具有以下幾個基本功能:(1) 光照控制:根據光照強度值,通過感光器采集,自動打開或關閉窗簾。即當早晨光照強度增強到設定值,通過感光器采集,單片機控制步進電機打開窗簾;當夜晚光照強度減弱到設定值,通過感光器采集,單片機控制步進電機關閉窗簾。(2) 溫度控制

8、:通過紅外遙控器設定給定溫度,通過溫度監測系統,檢測環境溫度,當溫度高于或低于給定值時,單片機控制步進電機打開或關閉窗簾。(3) 紅外控制:當光照強度未達到設定值,手動操作紅外遙控器,由紅外接收系統接收信號,單片機控制步進電機打開或關閉窗簾。第2章 總體電路設計與原理說明2.1 方案介紹方案:基于光照檢測及溫度檢測的自動控制原理框圖如下:圖 2-1 原理框圖2.2總體方案設計自動窗簾控制系統總體方案的設計是基于滿足設計要求的前提下,根據理論上的可實現性和硬件電路的經濟實用型,進行設計。本設計從人們對系統設計功能的需求出發,綜合考慮各種因素的情況下,設計出自動控制系統的整體框架,并且在整體功能實

9、現的基礎上,盡可能考慮系統的可擴展性。2.2.1 自動控制窗簾基本功能自動窗簾控制系統具有以下幾個模塊:(1) 感光控制模塊:本模塊首先通過光敏電阻在外界光線強度的變化下阻值的改變,使得輸出電壓發生變化。變化的電壓信號傳送到PFC8591八位的AD/DA轉換芯片,將模擬量轉化為數字量,進而輸入到單片機處理器。經處理器的運算與處理,控制電機的正反轉,達到窗簾開閉的目的。(2) 溫度監測模塊:模塊通過溫度傳感器DS18B20采集室內的溫度值,經過單總線的傳輸方式將采集到的溫度信號傳送給單片機,并由LCD顯示器顯示當前的溫度。其中,溫度的閾值可由用戶通過紅外線來遙控設定。當室內溫度超過或低于設定值時

10、,伴隨著著電機的正反轉。(3) 紅外遙控模塊:本模塊利用HT6221芯片組成的遙控器發射紅外信號,接收頭接收后先解碼,并用液晶顯示每個按鍵對應的用戶碼值。利用遙控器上的按鍵,軟件中設置可供用戶隨時控制電機正反轉的程序,實現可在任意時刻控制窗簾的打開和關閉。此處,紅外遙控另外一個功能是在進入溫度設定模式下設置初始的溫度值,并可借用紅外遙控外擴一些較為實用的家庭簡單控制電路,為人們的日常生活帶來方便。2.2.2 總體結構設計系統設計的總體框圖如下: 圖2-2 總體框圖第3章 硬件分析與設計3.1 單片機及相關電路設計3.1.1 89C51單片機概述AT89C51是一種帶4K字節閃爍可編程可擦除只讀

11、存儲器的低電壓,高性能CMOS8位微處理器,俗稱單片機。單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。主要參數:(1) 片內震蕩器和時鐘電路(2) 4K字節可編程閃爍存儲器;(3) 128*8位內部RAM(4) 32可編程I/O線(5) 兩個16位定時器/計數器(6) 5個中斷源 (7) 全靜態工作:0HZ-24MHZ(8) 低功耗

12、閑置和掉電模式3.1.2 晶振電路圖3-1 單片機內部晶振電路連接圖單片機必須在時鐘的驅動下才能進行工作。MCS-51系列單片機內部都有一個時鐘振蕩電路,只需外接晶振源,就能產生一定頻率的時鐘信號送到單片機的內部的各個單元,決定單片機的工作速度。圖4-3就是內部時鐘工作方式的電路圖,這是一種常用的方式。這種方式是外界振蕩源,本設計就采用這種外接晶振的方法。電路中的兩個電容的作用有兩個:一是幫助振蕩器起振(C1 C2的值大,起振的速度慢;反之,速度快。);二是對振蕩器的頻率起到微調的作用(C1 C2的值大,頻率略有減少,反之,頻率略有提高)。C1 C2的值采用30pF。3.1.3 復位電路圖3-

13、2 復位電路在系統運行的過程中,有時可能對系統需要進行復位,為了避免對硬件系統經常加電和斷電造成的損害,設計了手動的復位電路。如圖4-2所示。這種電路的設計,在系統的運行過程中需要復位時,只需使開關閉合,在RST端就會出現一定時間的高電平信號,從而使單片機實現復位。3.1.4 顯示電路按照電路圖鏈接電路即可,需要說明的是在這個電路圖中,LCD的第三腳VEE沒有接,這個腳是控制屏幕對比度的??梢詫㈦娢黄鞯膬啥朔謩e接VCC和GND,中間端接LCD的第三腳。圖3-3 1602液晶電路3.2 光敏傳感器電路光敏傳感器是最常見的傳感器之一,它的種類繁多,主要有:光電管、光電倍增管、光敏電阻等。光敏電阻又

14、稱光導管,常用的制作材料為硫化鎘,另外還有硒、硫化鋁、硫化鉛和硫化鉍等材料。這些制作材料具有在特定波長的光照射下,其阻值迅速減小的特性。這是由于光照產生的載流子都參與導電,在外加電場的作用下作漂移運動,電子奔向電源的正極,空穴奔向電源的負極,從而使光敏電阻器的阻值迅速下降。圖3-4 光敏傳感器當光敏電阻受到脈沖光照射時,光電流要經過一段時間才能達到穩定值,而在停止光照后,光電流也不立刻為零,這就是光敏電阻的時延特性。由于不同材料的光敏,電阻時延特性不同,所以它們的頻率特性也不同,硫化鉛的使用頻率比硫化鎘高得多,但多數光敏電阻的時延都比較大,所以,它不能用在要求快速響應的場合。3.3 A/D轉換

15、電路PCF8591是一個單片集成、單獨供電、低功耗、8-bit CMOS數據獲取器件。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I²C總線接口。PCF8591的3個地址引腳A0, A1和A2可用于硬件地址編程,允許在同個I²C總線上接入8個PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的址、控制和數據信號都是通過雙線向I²C總線以串行的方式進行傳輸。PCF8591的功能包括多路模擬輸入、內置跟蹤保持、8-bit模數轉換和8-bit數模轉換。PCF8591的最大轉化速率由I²C總線的最大速率決定。圖3-5 A/D轉換電路P

16、CF8591 特性:單獨供電;PCF8591的操作電壓范圍2.5V-6V;低待機電流;通過I2C總線串行輸入/輸出;PCF8591通過3個硬件地址引腳尋址;PCF8591的采樣率由I2C總線速率決定;4個模擬輸入可編程為單端型或差分輸入;自動增量頻道選擇;PCF8591的模擬電壓范圍從VSS到VDD;PCF8591內置跟蹤保持電路;8-bit逐次逼近A/D轉換器;通過1路模擬輸出實現DAC增益。3.4 步進電機電路步進電機是將電脈沖信號轉變為角位移或線位移的開環控制元步進電機件。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數,而不受負載變化的影響,當步進驅動器接收到一個

17、脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度,稱為“步距角”,它的旋轉是以固定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速的目的。圖3-6 步進電機電路3.5 溫度檢測電路 DS18B20外形及引腳說明:圖3-7 溫度傳感器引腳說明:GND:地;DQ:單線運用的數據輸入/輸出引腳;VD:可選的電源引腳。單總線通常要求接一個約4.7K左右的上拉電阻,這樣,當總線空閑時,其狀態為高電平。圖3-8 DS18B20接線原理圖DS18B20時序圖:主機使用時間隙來讀寫DS18B20的數據位

18、和寫命令字的位。初始化時序如下圖: 圖3-9 DS18B20初始化時序 DS18B20讀寫時序:圖3-10 DS18B20讀寫時序3.6 紅外控制電路紅外通信基本原理:紅外通信是利用950nm近紅外波段作為傳遞信息的媒體,即通信信道。發送端將基帶二進制信號調制為一系列的脈沖串信號,通過紅外發射管發射信號。接收端將接收到的信號裝成電信號,再經過放大、濾波等處理后送給解調電路進行解調,還原為二進制信號后輸出。常用的有通過脈沖寬度來實現信號調制(PWM)和通過脈沖串之間的時間間隔來實現信號調制的脈時調制(PPM)兩種方法。簡而言之,紅外通信的實質就是對二進制數字信號進行調制與解調,以便利用紅外信道進

19、行傳輸;紅外通信接口就是針對紅外信道的調制解調。紅外遙控系統主要由遙控發射器、一體化接收頭、單片機、接口電路組成。遙控器用來產生遙控編碼脈沖,驅動紅外發射管輸出紅外遙控信號,遙控接收頭來完成對遙控信號的放大、檢波、整形、解調出遙控編碼脈沖。遙控編碼脈沖是一組串行二進制碼,對于一般的紅外遙控系統,此串行碼輸入到微控制器,由其內部CPU完成對遙控指令解碼,并執行相應的遙控功能。紅外遙控控制過程:本系統以89C51單片機為核心,由發射和接受兩部分組成,發射部分主要完成編碼和調制,接收部分完成調解和解碼。其發射部分主要由89C51單片機完成編碼,然后由紅外發射管發射紅外線,接收部分主要由光電轉換,放大

20、,解調,解碼組成。其中光電轉換,放大調解由紅外線一體化接頭來完成,接收單片機主要完成解碼功能。遙控器發射及其編碼:紅外線遙控采用自定義編碼方式,由發送單片機來完成。遙控發射器專用芯片很多,根據編碼格式可以分為脈沖寬度調制和香味調制兩大類。當發射器案件按下后,即有遙控碼發出,所按的鍵不同遙控編碼也不同,這碼具有以下特征:采用脈寬調制的串行碼,以脈寬為0.26ms、間隔0.26ms、周期為0.52ms的組合表示二進制的“1”(如圖3-11A),其特征是脈沖中高電平的寬度等于0.26ms,相當于10個26s的寬度;以脈寬為0.26ms、間隔為0.52ms、周期為0.78ms的組合表示二進制的“0”(

21、如圖3-11B),其特征是脈沖中而低電平的寬度是高電平的二倍,等于0.52ms,相當于20個26s的寬度。可以根據傳輸數據的不同來調節脈沖的寬度。 表示1 表示0 0.26mm 0.26mm 0.52mm 0.26mm A B圖3-11 二進制信號 二進制信號的調制:二進制信號的調制由發送單片機來完成,它把編碼后的二進制信號調制成頻率為38KHz的間斷脈沖串,相當于用二進制信號的編碼乘以頻率為38KHz的脈沖信號得到的間斷脈沖串,即是調制后用于紅外發射二極管發送的信號。如圖3所示,A是二進制信號的編碼波形,B是頻率為38KHz(周期為26s)的連續脈沖串,C是經調制后的間斷脈沖串(相當于C=A

22、×B),用于紅外發射二極管發送的波形。 1 0 A 編碼后的二進制信號 10個脈沖 20個脈沖 B 單個脈沖 26us 10個脈沖 C=A*B 調制后的二進制信號(發送) 圖3-12 二進制信號的調制 二進制信號的解調:二進制信號的調制仍由發送單片機來完成,它把編碼后的二進制信號調制成頻率為38KHz的間斷脈沖串,相當于用二進制信號的編碼乘以頻率為38KHz的脈沖信號得到的間斷脈沖串,即是調制后用于紅外發射二極管發送的信號。如圖3.3所示,是二進制信號的編碼波形,B是頻率為38KHz(周期為26s)的連續脈沖串,C是經調制后的間斷脈沖串(相當于C=A×B),用于紅外發射二極

23、管發送的波形。二進制信號的解碼:二進制信號的解碼由接收單片機來完成,它把紅外接收頭送來的二進制編碼波形通過解碼,還原出發送端發送的數據。 D 紅外接收頭接收的波形(輸入) 表示1 表示0 表示1 E 紅外接收頭調解后輸出的波形 圖3-13 HS0038的輸入輸出波形基于字節傳輸的紅外遙控數據格式:在發送字節的開始先通過單片機發送20個脈沖寬度(每個脈沖周期26s)的高電平作為傳輸開始,接著發送8位數據(字節高位在前,低位在后),最后發送10個脈沖寬度的低電平作為傳輸結束,如圖3-14所示。 傳輸開始 8位數據 傳輸結束 20個脈沖 高位在前,低位在后 10個脈沖 圖3-14 基于字節傳輸的紅外

24、遙控數據格式第4章 程序分析設計4.1 主程序程序流程為:當清晨是陽光較強,此時光敏二極管呈現低電阻,相當于接入單片機為低電平,可以通過程序控制步進電機正轉,來打開窗簾,單片機輸出停止,電動機M停轉。當傍晚時光線比較弱,此時光敏電阻呈現高電阻,相當于接入單片機為高電平,可以通過程序輸出負相脈沖控制步進電機反轉,來關閉窗。簾單片機輸出停止,電動機M停轉。4.2 重要子程序設計 主要包括:光敏傳感程序,紅外控制程序,溫度檢測程序,步進電機程序,液晶顯示程序等,參照附錄二。第5章 總結該設計通過分析自動窗簾系統的現狀和人們對自動窗簾系統功能的需求,對自動窗簾系統控制器進行總體設計??傮w設計采用步進電

25、機為單片機控制元件,執行窗簾開閉的主要任務;以光敏電阻為檢測元件,提供單片機外界光照變化;以紅外檢測電路,實現手動控制;以89C51單片機為主控制芯片,控制整個系統運行;此外輔助以按鍵和顯示電路,在各模塊的配合下,最終實現自動窗簾控制系統的智能化要求。自動窗簾控制系統具有以下幾個基本功能:光照控制:根據光照強度值,通過感光器采集,自動打開或關閉窗簾。即當早晨光照強度增強到設定值,通過感光器采集,單片機控制步進電機打開窗簾;當夜晚光照強度減弱到設定值,通過感光器采集,單片機控制步進電機關閉窗簾。溫度控制:通過紅外遙控器設定給定溫度,通過溫度監測系統,檢測環境溫度,當溫度高于或低于給定值時,單片機

26、控制步進電機打開或關閉窗簾。紅外控制:當光照強度未達到設定值,手動操作紅外遙控器,由紅外接收系統接收信號,單片機控制步進電機打開或關閉窗簾。參考文獻1閻石.數字電子技術基礎(第五版) 北京:高等教育出版社,20062李哲英.電子技術及其應用基礎(數字部分)北京:高等教育出版社,20033郭天祥.十天學會單片機和C語言編程 北京;電子工業出版社,2009 附錄1 :原理圖附錄 2 :部分子程序unsigned int LowTime,HighTime; unsigned char i,j; for(i=0;i<10;i+) for(j=0;j<33;j+) ; void delay(

27、unsigned char n) unsigned char i;for(i=0;i<n;i+) delay1ms(); void DelayDelay(unsigned int num) while( -num ) ;void delay11(unsigned char x) /x*0.14MS unsigned char i; while(x-) for (i = 0; i<13; i+) void beep()/蜂鳴器響一聲函數 unsigned char i; BEEP=1; for (i=0;i<100;i+) delay1ms(); /BEEP取反 BEEP=0;

28、 /關閉蜂鳴器 delay(250); /延時 void motor_ffw(unsigned char ii) /unsigned char num, unsigned char i; unsigned int j;/while(num-)/ for (j=0; j<64; j+) /轉1*n圈 for (i=0; i<8; i+) /一個周期轉30度 if(ii=1) P1 = FFFi; /取數據 ii控制電機的正反轉ii=0 或者 ii=1 if(ii=2) P1 = FFZi; delay(1); /調節轉速 / void iic_start(void) /時鐘保持高,數

29、據線從高到低一次跳變,I2C通信開始SDA = 1; SCL = 1;delayNOP(); / 延時5us SDA = 0;delayNOP(); SCL = 0;void iic_stop(void) SDA = 0; /時鐘保持高,數據線從低到高一次跳變,I2C通信停止SCL = 1;delayNOP();SDA = 1;delayNOP(); SCL = 0; void iicInit(void) SCL = 0; iic_stop(); void slave_ACK(void)SDA = 0; SCL = 1;delayNOP();SCL = 0;void slave_NOACK(v

30、oid) SDA = 1;SCL = 1;delayNOP();SDA = 0; SCL = 0; void check_ACK(void) SDA = 1; / 將p1.1設置成輸入,必須先向端口寫1SCL = 1;askflag = 0;delayNOP(); if(SDA = 1) / 若SDA=1表明非應答,置位非應答標志askflag askflag = 1; SCL = 0;void IICSendByte(unsigned char ch) unsigned char idata n=8; / 向SDA上發送一位數據字節,共八位while(n-) if(ch&0x80)

31、= 0x80) / 若要發送的數據最高位為1則發送位1 SDA = 1; / 傳送位1SCL = 1; delayNOP();/SDA = 0;SCL = 0; else SDA = 0; / 否則傳送位0SCL = 1;delayNOP(); SCL = 0;ch = ch<<1; / 數據左移一位uchar IICreceiveByte(void)uchar idata n=8; / 從SDA線上讀取一上數據字節,共八位uchar tdata=0;while(n-) SDA = 1; SCL = 1; tdata =tdata<<1; /左移一位 if(SDA =

32、1) tdata = tdata|0x01; / 若接收到的位為1,則數據的最后一位置1else tdata = tdata&0xfe; / 否則數據的最后一位置0 SCL = 0; return(tdata);void ADC_PCF8591(uchar controlbyte) uchar i=0; /idata: 單片機間接訪問的片內RAM區,允許訪問全部片內RAMiic_start();IICSendByte(PCF8591_WRITE);/控制字check_ACK();if(askflag = 1)SystemError = 1;return;IICSendByte(cont

33、rolbyte);/控制字check_ACK();if(askflag = 1)SystemError = 1;return; iic_start(); /重新發送開始命令 IICSendByte(PCF8591_READ);/控制字check_ACK();if(askflag = 1)SystemError = 1;return; IICreceiveByte(); /空讀一次,調整讀順序 slave_ACK(); /收到一個字節后發送一個應答位/讀四次,如果只啟動一個通道,讀一次就行讀出值是16進制的/*while(i<4) receive_da=IICreceiveByte();

34、receivebufi+=receive_da; slave_ACK(); /收到一個字節后發送一個應答位*/ /讀一次寫法receivebuf=IICreceiveByte();slave_NOACK(); /收到最后一個字節后發送一個非應答位iic_stop(); unsigned char BusyTest(void) bit result;RS=0; /根據規定,RS為低電平,RW為高電平時,可以讀狀態 RW=1; E=1; /E=1,才允許讀寫 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應時間 result=BF;

35、 /將忙碌標志電平賦給resultE=0; return result; void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根據規定,RS和R/W同時為低電平時,可以寫入指令 RW=0; E=0; /E置低電平(根據表8-6,寫指令時,E為高脈沖, / 就是讓E從0到1發生正跳變,所以應先置"0" _nop_(); _nop_(); /空操作兩個機器周期,給硬件反應時間 P0=dictate; /將數據送入P0口,即寫入指令或地址 _nop_(); _nop_(

36、); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應時間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應時間 E=0; /當E由高電平跳變成低電平時,液晶模塊開始執行命令 void WriteAddress(unsigned char x) WriteInstruction(x|0x80); /顯示位置的確定方法規定為"80H+地址碼x" void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS為高電平,

37、RW為低電平時,可以寫入數據 RW=0; E=0; /E置低電平(根據表8-6,寫指令時,E為高脈沖, / 就是讓E從0到1發生正跳變,所以應先置"0" P0=y; /將數據送入P0口,即將數據寫入液晶模塊 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應時間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應時間 E=0; /當E由高電平跳變成低電平時,液晶模塊開始執行命令 void LcdInitiate(void) delay(15);

38、 /延時15ms,首次寫指令時應給LCD一段較長的反應時間 WriteInstruction(0x38); /顯示模式設置:16×2顯示,5×7點陣,8位數據接口delay(5); /延時5msWriteInstruction(0x38);delay(5);WriteInstruction(0x38);delay(5);WriteInstruction(0x0c); delay(5);WriteInstruction(0x06); delay(5);WriteInstruction(0x01); delay(5); Init_DS18B20(void) DQ = 1 ; DelayDelay(8) ; DQ = 0 ; DelayDelay(90) ; DQ = 1 ; DelayDelay(8) ; presence = DQ ; /如果=0則初始化成功 =1則初始化失敗 DelayDelay(100) ; DQ = 1 ; return(presence) ; /返回信號,0=presence,1= no presence Disp_Temperature() display4=temp_data0&0x0f ; display0=ditabdisplay4+0x30 ;/查表得小數位的值 display4=(t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論