智能小家電控制系統的設計_第1頁
智能小家電控制系統的設計_第2頁
智能小家電控制系統的設計_第3頁
智能小家電控制系統的設計_第4頁
智能小家電控制系統的設計_第5頁
已閱讀5頁,還剩37頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 單片機課程設計論文題 目 智能小家電控制系統的設計(2)學 院 電子與控制工程學院 專 業 電氣工程及其自動化 班 級 學生姓名 學 號 指導教師 題目5 智能小家電控制系統的設計(2)(一)功能介紹 全自動洗衣機是常見的家用電器。它能夠按照預設模式自動地完成衣物的洗滌、漂洗和脫水,也可以單獨地進行洗滌、漂洗和脫水操作,這些過程一般按時間進行控制。通常在給定的模式下,根據衣物多少允許用戶設置不同的水位,當洗衣機啟動后,上水電磁閥打開注水,當水到達設定的限位時,上水電磁閥斷電,注水過程停止,啟動電機,即可開始洗衣操作,為了提高洗衣效率,電機一般先正轉若干秒,然后再反轉若干秒。另外,每個洗衣機都

2、有容量限制,當洗衣量大于它的額定容量容量時,控制系統報警并且不啟動。(二)設計參數(1)電機 100W 220V AC(2)洗衣容量 5 kg(3)電力供應:220V AC(三)設計要求(1)實現3種模式選擇:標準、輕柔和快洗,被選中的模式用LED顯示器表明。(2)實現不同模式下的洗衣過程,根據衣物多少允許用戶設置4種的水位,被選中的水位用LED顯示器表明。當洗衣機啟動后,上水電磁閥打開注水,當水到達設定的限位時,上水電磁閥斷電,注水過程停止,啟動電機全自動控制洗衣操作,整個過程的進行按時間控制,時間自定(3)液位檢測和控制:使水位限定在某一個給定的液位范圍內,當水位越限時打開下水電磁閥放水,

3、不啟動洗衣過程,待滿足要求后,投入運行。(4)當投入洗衣量大于洗衣機額定容量時,控制系統應報警,不啟動洗衣過程。待滿足要求后,投入運行。(5)顯示工作模式、狀態和剩余時間,每個動作完成時,通過聲光報警提示。(6)測量并顯示水的溫度。(四)擴充功能(1)PWM調節電機轉速(2)同一模式下,不同水位的選擇。摘要本設計使用STC89C54RD單片機為主要控制器,輔以74LS245總線驅動器、溫度傳感器DS18B20、FYM25BY48L064、獨立鍵盤以及1602液晶顯示等電路,本設計是基于51系列的單片機進行的洗衣機課程設計,功能實現更加穩定可靠,設計功能滿足課程設計要求,1602顯示更加大氣和人

4、性化。所有程序編寫完成后,在keil軟件中進行調試,確定沒有問題后,在Proteus軟件中嵌入單片機內進行仿真。然后,再下載到實物單片機中進行調試,重復上述過程,直到達到預期的功能。關鍵詞:STC89C54RD單片機、智能洗衣機、時間、溫度、液晶、步進電機AbstractThis design use STC89C54RD microcontroller as the main controller, along with 74 LS245 bus driver, the temperature sensor DS18B20, FYM25BY48L064, independent keyboa

5、rd and 1602 LCD display circuits, etc, this design is based on the single chip microcomputer 51 series of washing machine curriculum design, functions more stable and reliable, design functions meet course design requirements, 1602 show more atmospheric and humanization.All programming, after the co

6、mpletion of keil software in commissioning, make sure no, after Proteus software embedded in within the single chip microcomputer simulation. Then, back to the kind of single chip microcomputer download commissioning, and repeat the process until we reached the expected function.前言單片機應用系統的軟件設計是系統設計中

7、最基本而且工作量較大的任務。與系統機上操作系統支持下的純軟件不同,單片機的軟件設計是在裸機的條件下進行的,而且隨應用系統的不同而不同。在軟件中一般需考慮以下幾個方面:1)根據要求確定軟件的具體任務細節,然后確定合理的軟件結構。一般系統軟件的主程序和若干個子程序及中斷服務程序組成,詳細劃分主程序、子程序和中斷服務程序的具體任務,確定各個中斷的優先級。主程序是一個順序執行的無限循環的程序,不停地順序查詢各種軟件標志,以完成對事務的處理。在子程序和中斷服務程序中,要考慮現場的保護和恢復,以及它們和主程序之間的信息交換方法。2)程序的結構用模塊化結構,即把監控程序分解為若干個功能相對獨立的較小的程序模

8、塊分別設計,以便于調試。具體設計時可采用自底向上或自頂向下的方法。3)在進行程序設計時,先根據問題的定義描述出各個輸入變量和輸出變量之間的數學關系,即建立數學模型,然后繪制流程圖,再根據流程圖用匯編語言進行具體程序的編寫。4)在程序設計完成后,利用相應的開發工具和軟件進行程序的匯編,生成程序的機器碼6。本設計中系統軟件是采用C51編寫的.在研制單片機應用系統時,匯編語言是一種常用的軟件工具,具有簡單的語法結構和強大的處理功能,具有運行速度快、編譯效率高,移植性好和可讀性強等多種優點,可以實現對系統便件的直接操作。用C語言來編寫目標系統軟件,可以大大縮短開發周期,且明顯地增加軟件的可讀性,便于改

9、進和擴充,從而開發出大規模、高性能的應用系統。方案分析與論證一、方案分析與論證1、單片機芯片的選擇方案和論證方案一: 采用51芯片作為硬件核心,采用Flash ROM,STC89C54內部具有16KB ROM 存儲空間, 而STC89C52只有4K的存儲空間。二者都能于3V的超低壓工作,而且與MCS-51系列單片機完全兼容,但是運用于電路設計中時由于不具備ISP在線編程技術, 當在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,對芯片的多次拔插會對芯片造成一定的損壞。所以選擇采用STC89S54RC作為主控制系統。2、顯示模塊選擇方案和論證方案一:采用LED液晶顯示屏,液

10、晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,但是價格昂貴,需要的接口線多,所以在此設計中不采用LED液晶顯示屏。方案二:采用點陣式數碼管顯示,點陣式數碼管是由八行八列的發光二極管組成,對于顯示文字比較適合,如采用在顯示數字顯得太浪費,且價格也相對較高,方案三:采用LED數碼管動態掃描,LED數碼管價格適中,對于顯示數字最合適,而且采用動態掃描法與單片機連接時,占用的單片機口線少,但效果較差。所以采用了1602液晶作為顯示。3、電路設計最終方案確定綜上各方案所述,對此次作品的方案選定: 以單片機STC89S54RD為主控制器,時間數據是由單片機定時計數器提供信號,并通過LE

11、D液晶顯示出來,并用鍵盤來完成對當前模式的調整。三、硬件設計(1)所需硬件設備:STC89C54RD單片機、74LS245總線驅動器、溫度傳感器DS18B20、獨立鍵盤以及1602液晶、短路塊若干,電阻電容若干、MAX232、12MHz晶振、LED指示燈為了實現步進電機的正常運轉74LS245作驅動控制顯示內容。STC89C54RD單片機介紹:STC89C54RD提供以下標準功能:16k字節可重擦寫Flash閃速存儲器、32個可編程I/O口線、一個6向量兩級中斷結構,一個全雙工串行通信口,片內振蕩及時鐘電路。同時,STC89C54RD可降至0Hz的靜態邏輯操作,并支持兩種軟件可選的節電工作模式

12、。空閑方式停止CPU的工作,但允許RAM、定時/計數器、串行通信口及中斷系統繼續工作。掉電方式保存RAM中的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。STC89C54RD的引腳封裝圖如下圖所示: 1) 電源及時鐘引腳l Vcc:電源接入引腳;l GND:接地引腳;l XTAL1:晶體振蕩器接入的一個引腳(采用外部振蕩器時,此引腳接地);l XTAL2:晶體振蕩器接入的另一個引腳(采用外部振蕩器時,此引腳作為外部振蕩信號的輸入端)。2) 控制線引腳l RST:復位信號輸入引腳。圖13)并行I/O口引腳l P0.0P0.7:一般I/O口引腳或數據/低位地址總線復用引腳;l P

13、1.0P1.7:一般I/O口引腳l P2.0P2.7:一般I/O口引腳或數據/高位總線引腳;l P3.0P3.7:一般I/O口引腳或第二功能引腳。晶振:在設置STC89C54RD的振蕩頻率時,我們采用內部時鐘方式,。在單片機內部有一振蕩電路,只要在單片機XTAL1和XTAL2引腳外接石英晶體(簡稱晶振),就構成了自激振蕩器并在單片機內部產生時鐘脈沖信號。電容器C1和C2的作用是穩定頻率和快速起振,電容值在5-30pF,典型值為30pF。晶振CYS的振蕩頻率范圍為1.2-12MHz,典型值為12MHz和6MHz。本次設計我們選擇了11.0592MHz。圖二數字溫度傳感器DS18B20介紹:1、適

14、應電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數 據線供電2、獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊3、 DS18B20支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,實現組網多點測溫4、DS18B20在使用中不需要任何外圍元件,全部 傳感元件及轉換電路集成在形如一只三極管的集成電路內5、溫范圍55125,在-10+85時精度為0.56、可編程 的分辨率為912位,對應的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現高精度測溫7、在9位分辨率時最多在 93.75ms內把溫度轉換

15、為數字,12位分辨率時最多在750ms內把溫度值轉換為數字,速度更快圖三8、測量結果直接輸出數字溫度信號,以一 線總線串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力9、負壓特性:電源極性接反時,芯片不會因發熱而燒毀, 但不能正常工作。74LS245芯片的介紹:74LS245是我們常用的芯片,用來驅動LED或者其他的設備,它是8路同相三態雙向總線收發器,可雙向傳輸數據。*74LS245還具有雙向三態功能,既可以輸出,也可以輸入數據。*當8051單片機的P0口總線負載達到或超過P0最大負載能力時,必須接入74LS245等總線驅動器。圖四*當片選端/CE低電平有效時,DIR=“0

16、”,信號由 B 向 A傳輸;(接收)*DIR=“1”,信號由 A 向 B 傳輸;(發送)當/CE為高電平時,A、B均為高阻態。由于P2口始終輸出地址的高8位,接口時74LS245的三態控制端/1G和/2G接地,P2口與驅動器輸入線對應相連。P0口與74LS245輸入端相連,/E端接地,保證數據線暢通。8051的/RD和/PSEN相與后接DIR,使得/RD或/PSEN有效時,74LS245輸入(P0.iDi),其它時間處于輸出(P0.iDi)。MAX232芯片的介紹:MAX232芯片是美信公司專門為電腦的RS-232標準串口設計的接口電路,使用+5v單電源供電。內部結構基本可分三個部分:第一部分

17、是電荷泵電路。由1、2、3、4、5、6腳和4只電容構成。功能是產生+12v和-12v兩個電源,提供給RS-232串口電平的需要。第二部分是數據轉換通道。由7、8、9、10、11、12、13、14腳構成兩個數據通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數據通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數據通道。圖六TTL/CMOS數據從T1IN、T2IN輸入轉換成RS-232數據從T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數據從R1IN、R2IN輸入轉換成TTL/CMOS數據

18、后從R1OUT、R2OUT輸出。第三部分是供電。15腳GND、16腳VCC(+5v)。 1602液晶的介紹設計分析需求分析與方案: 洗衣機要完成洗衣工作,除了對一般洗衣過程的人工工作及效能進行模擬之外,還要根據洗衣機的機械電子性質進行有關控制和檢測。 對于一臺套桶式單缸波輪全自動洗衣機而言,首先要求能完成洗衣功能;同時還要根據用戶的不同要求設置幾種不同的洗衣程序;還要根據模式的不同考慮水流的情況決定洗滌的弱強情況;另外,還要對洗衣過程出現的故障進行診斷并提醒用戶;保證高速運轉是脫水的安全性等。所以對全自動洗衣機,一般要求具有如下基本功能。 (1)不同模式時的弱強洗滌功能。要求強洗時正 反轉驅動

19、時間各為4S,間歇時間為2S;弱洗時正 反轉驅動時間各為3S,間歇時間為2S。 (2)6種洗衣工作程序,即標準程序,輕柔洗衣,快洗,單次洗衣,單漂和脫水程序。標準程序是進水洗滌排水-脫水,如此循環3次,具體是第一循環為洗滌,時間為15min,中間洗滌為5min.排水時間采用動態檢測,脫水時間第一二次為2 min的短脫水,下來是調漂洗程序。最后為5min的長脫水.輕柔程序與標準程序一樣,只是采用弱洗洗滌,循環同樣為三次。快洗同標準差不多,只不過洗滌6min,循環2次;單洗程序是進水洗滌(15 min)結束(留水不排不脫)。單漂為進水洗滌(10s)排水如此循環3次;單脫程序是脫水(5min)結束,

20、時間確定與上述程序相應環節相同。(3)進水系統故障自動診斷功能。洗衣機在進水過程中,若超過預定的水位,就說明進水有故障,系統自動調整到預定水位。(4)脫水期間安全保護和防振動功能。洗衣機脫水期間,若打開機蓋時,洗衣機就會自動停止脫水操作。脫水期間,如果出現衣物纏繞引起脫水桶重心偏移而不平衡,洗衣機也會自動停止脫水,以免振動過大,發出警報待人工處理后恢復工作。 (5)間歇驅動方式。洗滌期間采取間歇驅動方式,以便節能。本系統要求正反轉之間停2s,間歇期間靠慣性力使洗衣桶桶保持旋轉。 (6)聲光顯示功能。洗衣機各種工作方式的選擇和各種工作狀態均有聲 光提示和顯示。 (8)過容保護功能:洗衣機在啟動前

21、若過容則報警提醒用戶解決,待解決后才能啟動洗衣。控制邏輯電路分析 (硬件分析)全自動洗衣機的控制邏輯電路如附圖1-1所示。它由單片機STC89C54為核心加上有關集成電路及元器件組成。從圖中看出,這個全自動洗衣機控制邏輯電路相當簡單。 全自動洗衣機的工作部件有3個,這就是電機.進水閥和排水閥。電機是洗衣機的動力源,它的轉動帶動洗衣桶和波輪的轉動,從而時現對衣物的洗滌。進水閥用于控制洗衣機的進水量。排水閥用于控制排水。電機在脫水時還高速旋轉帶動衣物脫水。 電機的狀態有3種,即正轉.反轉及停止狀態。電機一般工作在這三種狀態的不斷轉換之中,從而實現洗滌。但在脫水時,只工作在正轉高速狀態。 進水閥和派

22、排水閥則只有開.關這兩種狀態。 從附圖1-1的控制電路中可以看出:STC89C54的P1端口中的P0.0P0.3共四條I/O線通過4塊電磁繼電器分別直接驅動洗衣機的這些工作部件。電磁繼電器是一種常用繼電器,內有電磁鐵心及磁力開關,通電就可使開關切換。之所以選用這個器件,是因為它一方面可使電路進一部簡化,另一方面還可使強.弱兩類電完全隔離,保證主板的安全。 74LS245來驅動步進電機,效果很好,省去了達林頓管接線復雜的煩惱。 表一:完成整個過程 過程代碼 過程名稱 所需動作代碼注: 洗滌:XD 漂洗:PX 脫水:TS流程圖開機顯示溫度時間到?設置任務模式水位NO時間到?YESY N 洗衣開始(

23、既定模式)電機正轉電機停轉剩余時間=0?電機反轉結束報警圖1自動洗衣流程記錄次數NY是否按鍵key3?下?模式設置(8秒內)記錄次數LY是否按鍵key?下?N是否按鍵key2?下?YN記錄次數M統計次數執行相應任務開定時圖2 模式設置流程統計結果見下表格圖3:流程統計結果Y定時器中斷入口數據秒減1置TH0、 TL0計數初值是否1 秒?分減1N秒為0NY分秒全為零定時結束圖4 定時程序流程圖倒計時程序:圖5、溫度程序流程圖18B20存在否?調溫度復位子程序返回主程序 N轉化溫度數據并存儲讀出溫度數據發出讀溫度命令寫入數據跳過ROM匹配發出溫度轉換命令寫入數據Y操作說明開機后8秒之內進行模式和任務

24、和水位的選擇分別由key1、 key2、key5控制,具體見上表,8秒后自動進入預設洗衣的模式,定時開,開始倒計時,除了脫水過程之外電機轉兩圈反轉兩圈,且可以調節電機轉速,轉速的控制由key3、key4控制。水位的控制由撥碼開關相應的控制。軟件調試硬件調試結果總結通過這次單片機課程設計我受益匪淺,讓我明白了理論聯系實際的重要性,這次設計不僅鞏固了所學單片機理論知識,還培養了我的動手能力以及如何合理的查找資料,利用資料的能力。通過這次課程設計,我學到了很多書本上學不到的東西,也深刻的認識到自己對知識的掌握和運用還遠遠不足,這次課程設計也鍛煉了我獨立思考問題的能力以及如何去檢測解決問題,提高了我的

25、實際動手能力,積累了一些做課程設計的經驗,對我們今后的學習起到啟發作用。我認為本次課程設計的不足之處是手動修改不是很方便,由于初始方案想法的確定,最后已經沒有時間進行修改了,但我認為采用本設計的修改方法可以更為快捷的設置到任何想要的數字。不方便是因為,在修改的時候不能看到其他的顯示部分,只能是一位一位的顯示。總體上來說,通過這次課程設計學習,檢驗了平時對理論的學習,使我進一步熟悉了單片機的結構及工作原理,鍛煉了我的動手能力,提高了自學能力,為以后的學習打下了好的開端。在這次設計中我學到了很多,也發現了自己的不足,也難免有錯誤之處,敬請提出!最后,還要感謝段老師的悉心教導。附錄參考文獻1段晨東.

26、單片機原理及接口技術.北京:清華大學出版社,20082周潤景 郝曉霞.傳感器及檢測技術.北京:電子工業出版社,20093樓然苗 李光飛.51系列單片機設計實例.北京: 北京航天航空大學出版社,20064高峰.單片微型計算機原理與接口技術.北京:科學出版社,20035何立民.單片機高級教程應用與設計.北京:北京航空航天大學出版社,2000原件清單:元器件數量備注電阻31K電阻45.1K電阻28K獨石電容60.1uF獨石電容230PF電解電容110Uf 25V51單片機實驗板189C54芯片1MAX232芯片174LS245芯片216021DS18B201三極管90122PNP二極管IN40011

27、晶振111.0592MHz芯片座6電源座1三腳 5V通信插座1CON232電源適配器1通訊電纜1微型按鈕開關10實驗插板1單排插針若干雙排插針若干短路塊若干導線若干程序源代碼#include#define uchar unsigned char#define uint unsigned int uchar code table=tmp ; /7uchar code table1=moshi?; /6uchar code table2=SY30:00; /6uchar code table10=SY32:00; /6uchar code table12=SY28:00; /6uchar code

28、 table9=SY10:00; /6uchar code table6=XD; /6uchar code table7=PX; /2uchar code table8=TS; /2uchar code FFW8=0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9;uchar code REV8=0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1;sbit lcden=P34;/液晶使能端sbit lcdrs=P35;/液晶數據命令選擇端sbit ds=P13;sbit key1=P10;sbit key2=P11;sbit key3=P

29、12;sbit beep=P30;sbit zhushui=P31;sbit fangshui=P33;sbit key4=P36;sbit key5=P37;sbit SW1=P17;sbit SW2=P16;sbit SW3=P15;sbit SW4=P14;uchar num,fen,l,m,n,count,flag,i,jian1,jian2,jian3,jian5,mi,pwm1=10;uint temp;float f_temp,miao;void chushihua()EA=1;/開總中斷EX0=1;/開外部中斷0TMOD=0x11;TH0=(65536-50000)/256;T

30、L0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;/TR0=1;/啟動定時器0ET1=1;/TR1=1;/啟動定時器1void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*以下是步進電機的程序*/void delayA(uint t) uint k; while(t-) for(k=0; k125; k+) void motor_ffw() uchar i; uint j; for (j=0; j12; j+) /轉1*n圈 /

31、*if(K3=0) break; */ /退出此循環程序 for (i=0; i8; i+) /一個周期轉30度 if(key4=0)delay(8);if(key4=0)pwm1-; if(key3=0)delay(8);if(key3=0)pwm1+; P0 = FFWi; /取數據 delayA(pwm1); /調節轉速 /*/*步進電機反轉/*/void motor_rev() uchar i; uint j; for (j=0; j12; j+) /轉1n圈 /退出此循環程序 for (i=0; i8; i+) /一個周期轉30度 if(key4=0)delay(8);if(key4

32、=0)pwm1-; if(key3=0)delay(8);if(key3=0)pwm1+; P0 = REVi; /取數據 delayA(pwm1); /調節轉速 /*步進電機甩干專用*/ void motor_ffwz() uchar i; uint j; for (j=0; j12; j+) /轉1*n圈 /*if(K3=0) break; */ /退出此循環程序 for (i=0; i8; i+) /一個周期轉30度 P0 = FFWi; /取數據 delayA(6); /調節轉速 /*步進電機反轉*/void motor_revf() uchar i; uint j; for (j=0

33、; j12; j+) /轉1n圈 /*if(K3=0) break;*/ /退出此循環程序 for (i=0; i8; i+) /一個周期轉30度 P0 = REVi; /取數據 delayA(10); /調節轉速 /*輕柔洗*/ void motor_ffwq() uchar i; uint j; for (j=0; j12; j+) /轉1*n圈 /*if(K3=0) break; */ /退出此循環程序 for (i=0; i8; i+) /一個周期轉30度 P0 = FFWi; /取數據 delayA(11); /調節轉速 /*/*/*步進電機反轉(輕柔)/*/*/void motor

34、_revq() uchar i; uint j; for (j=0; j12; j+) /轉1n圈 for (i=0; i8; i+) /一個周期轉30度 P0 = REVi; /取數據 delayA(11); /調節轉速 /*步進電機(快洗)*/ void motor_ffwk() uchar i; uint j; for (j=0; j12; j+) /轉1*n圈 for (i=0; i8; i+) /一個周期轉30度 P0 = FFWi; /取數據delayA(9); /調節轉速 /*步進電機反轉(快洗)*/void motor_revk() uchar i; uint j; for (

35、j=0; j12; j+) /轉1n圈 /*if(K3=0) break;*/ /退出此循環程序 for (i=0; i8; i+) /一個周期轉30度 P0 = REVi; /取數據 delayA(9); /調節轉速 /*以下是液晶的程序*/void write_com(uchar com)lcdrs=0;P2=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)lcdrs=1;P2=date;delay(5);lcden=1;delay(5);lcden=0;void init()lcden=0;write_co

36、m(0x38);/設置16X2顯示,5X7點陣,8位數據接口write_com(0x0c);/設置開顯示,不顯示光標write_com(0x06);/寫一個字符后地址指針加1write_com(0x01);/顯示清零,數據指針清零write_com(0x80);for(num=0;num0)i-; ds=1; i=4; while(i0)i-;bit tempreadbit(void) /讀1位函數 uint i; bit dat; ds=0;i+; /i+ 起延時作用 ds=1;i+;i+; dat=ds; i=8;while(i0)i-; return (dat);uchar tempre

37、ad(void) /讀1個字節 uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tempreadbit(); dat=(j1); /讀出的數據最低位在最前面,這樣剛好一個字節在DAT里 return(dat);void tempwritebyte(uchar dat) /向18B20寫一個字節數據 uint i; uchar j; bit testb; for(j=1;j1; if(testb) /寫 1 ds=0; i+;i+; ds=1; i=8;while(i0)i-; else ds=0; /寫 0 i=8;while(i0)i-; ds=1; i+;i+; void tempchange(void) /DS18B20 開始獲取溫度并轉換 dsreset(); delay(1); tempwritebyte(0xcc); / 寫跳過讀ROM指令 tempwritebyte(0x44); / 寫溫度轉換指令uint get_temp() /讀取寄存器中存儲的溫度數據 uchar a,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); /讀低8位 b=tempr

溫馨提示

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

評論

0/150

提交評論