基于51單片機的溫度控制系統(tǒng)的設計_第1頁
基于51單片機的溫度控制系統(tǒng)的設計_第2頁
基于51單片機的溫度控制系統(tǒng)的設計_第3頁
基于51單片機的溫度控制系統(tǒng)的設計_第4頁
基于51單片機的溫度控制系統(tǒng)的設計_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于單片機的溫度限制系統(tǒng)設計1.設計要求要求設計一個溫度測量系統(tǒng),在超過限制值的時候能進行聲光報警。具體設計要求如下:①數(shù)碼管或液晶顯示屏顯示室內(nèi)當前的溫度;②在不超過最高溫度的狀況下,能夠通過按鍵設置想要的溫度并顯示;設有四個按鍵,分別是設置鍵、加1鍵、減1鍵和啟動/復位鍵;③DS18B20溫度采集;④超過設置值的±5℃時發(fā)出超限報警,采納聲光報警,上限報警用紅燈指示,下限報警用黃燈指示,正常用綠燈指示。2.方案論證依據(jù)設計要求,本次設計是基于單片機的課程設計,由于實現(xiàn)功能比較簡潔,我們學習中接觸到的51系列單片機完全可以實現(xiàn)上述功能,因此可以選用AT89C51單片機。溫度采集干脆可以用設計要求中所要求的DS18B20。報警和指示模塊中,可以選用3種不同顏色的LED燈作為指示燈,報警鳴笛采納蜂鳴器。顯示模塊有兩種方案可供選擇。方案一:運用LED數(shù)碼管顯示采集溫度和設定溫度;方案二:運用LCD液晶顯示屏來顯示采集溫度和設定溫度。LED數(shù)碼管結(jié)構(gòu)簡潔,運用便利,但在運用時,若用動態(tài)顯示則須要不斷更改位選和段選信號,且顯示時數(shù)碼管不斷閃動,使人眼簡潔疲憊;若采納靜態(tài)顯示則又須要更多硬件支持。LCD顯示屏可識別性較好,背光亮度可調(diào),而且比LED數(shù)碼管顯示更多字符,但是編程要求比LED數(shù)碼管要高。綜合考慮之后,我選用了LCD顯示屏作為溫度顯示器件,由于顯示字符多,在進行上下限警戒值設定時同樣可以采集并顯示當前溫度,可以直觀的看到實際溫度與警戒溫度的對比。LCD顯示模塊可以選用RT1602C。3.硬件設計依據(jù)設計要求,硬件系統(tǒng)主要包含6個部分,即單片機時鐘電路、復位電路、鍵盤接口模塊、溫度采集模塊、LCD顯示模塊、報警與指示模塊。其相互聯(lián)系如下圖1所示:單片機時鐘電路單片機時鐘電路復位電路鍵盤接口模塊溫度采集模塊單片機LCD顯示模塊報警與指示模塊圖1硬件電路設計框圖3.1單片機時鐘電路圖2單片機內(nèi)部時鐘方式電路形成單片機時鐘信號的方式有內(nèi)部時鐘方式和外部時鐘方式。本次設計采納內(nèi)部時鐘方式,如圖2所示。圖2單片機內(nèi)部時鐘方式電路單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別為此放大器的輸入端和輸出端,其頻率范圍為1.2~12MHz,經(jīng)由片外晶體振蕩器或陶瓷振蕩器與兩個匹配電容一起形成了一個自激振蕩電路,為單片機供應時鐘源。3.2復位電路圖3單片機按鍵復位電路復位是單片機的初始化操作,其作用是使CPU和系統(tǒng)中的其他部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)起先工作,以防止電源系統(tǒng)不穩(wěn)定造成CPU工作不正常。在系統(tǒng)中,有時會出現(xiàn)工作不正常的狀況,為了從異樣狀態(tài)中復原,同時也為了系統(tǒng)調(diào)試便利,須要設計一個復位電路。圖3單片機按鍵復位電路單片機的復位電路有上電復位和按鍵復位兩種形式,因為本次設計要求須要有啟動/復位鍵,因此本次設計采納按鍵復位,如圖3。復位電路主要完成系統(tǒng)的上電復位和系統(tǒng)在運行時用戶的按鍵復位功能。3.3鍵盤接口模塊圖4鍵盤接口模塊本次設計須要的按鍵有4個,除去一個復位按鍵外,還有3個功能按鍵,因此選擇獨立式鍵盤。如圖4,將鍵盤干脆與單片機P1口的P1.0、P1.1、P1.2相連。3個鍵設計思路如下:當按下S1鍵時,系統(tǒng)進入上下限警戒值調(diào)整狀態(tài);當?shù)谝淮伟聪耂1鍵時,進行上限警戒值設定,當其次次按下S1鍵時,進行下限警戒值設定,當?shù)谌伟聪耂1鍵時,回到正常工作狀態(tài)。在警戒值調(diào)整狀態(tài)下,按下S2鍵,上下限警戒值加1,按下S3鍵,上下限警戒值減1,正常工作狀態(tài)下,按下S2和S3鍵無作用。圖4鍵盤接口模塊3.4溫度采集模塊本次設計中的溫度傳感器運用的是DALLAS公司的單總線數(shù)字溫度傳感器DS18B20,這是一種常用的溫度傳感器,具有體積小、硬件開銷低、抗干擾實力強、精度高的特點。DS18B20采納獨特的一線接口,具有只須要一條口線通信多點的實力,簡化了分布式溫度傳感應用,無需外部元件??捎脭?shù)據(jù)總線供電,電壓范圍為3.0V至5.5V,測量溫度的范圍為-55℃至+125℃,在-10℃至+85℃范圍內(nèi)精度為±0.5℃。溫度傳感器可編程的辨別率為9~12位,溫度轉(zhuǎn)換為12位數(shù)字格式最大值為750毫秒,用戶可定義的非易失性溫度報警設置,應用范圍包括恒溫限制、工業(yè)系統(tǒng)、消費電子產(chǎn)品溫度計、或任何熱敏感系統(tǒng)。由于DS18B20是一條口線通信,所以中心微處理器與DS18B20只有一個一條口線連接。因為每一個DS18B20的包含一個獨特的序號,多個DS18B20可以同時存在于一條總線,這使得溫度傳感器放置在很多不同的地方。它的用途很多,包括空調(diào)環(huán)境限制,感測建筑物內(nèi)溫設備或機器,并進行過程監(jiān)測和限制。圖5DS18B20封裝及引腳DS18B20的核心功能是它的干脆讀數(shù)字的溫度傳感器。溫度傳感器的精度為用戶可編程的9、10、11或12位,分別以0.5℃,0.25℃,0.125℃和0.0625℃增量遞增。在上電狀態(tài)下默認的精度為12位。DS18B20啟動后保持低功耗等待狀態(tài);當須要執(zhí)行溫度測量和AD轉(zhuǎn)換時,總線限制器必需發(fā)出[44h]吩咐。在那之后,產(chǎn)生的溫度數(shù)據(jù)以兩個字節(jié)的形式被存儲到高速暫存器的溫度寄存器中,DS18B20接著保持等待狀態(tài)。當DS18B20由外部電源供電時,總線限制器在溫度轉(zhuǎn)換指令之后發(fā)起“讀時序”,DS18B20正在溫度轉(zhuǎn)換中返回0,轉(zhuǎn)換結(jié)束返回1。假如DS18B20由寄生電源供電,除非在進入溫度轉(zhuǎn)換時總線被一個強上拉拉高,否則將不會由返回值。在硬件上,DS18B20與單片機的連接有兩種方法:一種是VDD接外部電源,GND接地,DQ與單片機的I/O口相連;另一種是用寄生電源供電,此時,VDD、GND接地,DQ接單片機的I/O口。無論是接外部電源還是用內(nèi)部寄生電源,I/O口線要接5kΩ左右的上拉電阻。本次設計中,采納外部電源方式,其連接方式如圖6所示。單總線DQ端接單片機的P1.7口,DQ端接一個4.7kΩ的上拉電阻,這樣單總線DQ在閑置狀態(tài)時為高電平。圖6DS18B20外部電源連接方式3.5LCD顯示模塊在本次設計中,運用RT1602C字符型液晶顯示模塊(LCM)來設計當前溫度和上下限警戒值的顯示電路。RT1602C字符型液晶顯示模塊是16字×2行的采納5×7點陣圖形來顯示字符的液晶顯示器,采納標準的16腳接口,其引腳定義如圖7所示。引腳號引腳名說明引腳號引腳名說明1GND/Vss電源地7D08位雙向數(shù)據(jù)線2Vdd+5V電源8D13VL液晶顯示偏壓信號9D24RS數(shù)據(jù)/吩咐限制,H/L10D35R/W讀/寫限制,H/L11D46E使能端12D515BLA背光源正極13D616BLK背光源負極14D7圖7RT1602C的引腳定義RT1602C的內(nèi)部結(jié)構(gòu)可以分為3個部分:LCD限制器、LCD驅(qū)動器、LCD顯示器,其中LCD限制器采納的是HD44780。RT1602C與單片機的連線如圖8所示。圖8RT1602C與單片機連線LCM的數(shù)據(jù)總線與單片機的P0口通過一個上拉電阻排相連,LCM的三條限制線RS、RW、EN分別與單片機的I/O口P2.0、P2.1、P2.2相連,第1、2引腳分別與地、電源相連,第3引腳運用一個10kΩ的可調(diào)電阻對顯示屏的光明進行調(diào)整。3.6報警與指示模塊圖9報警與指示模塊在本次設計中,采納LED發(fā)光二極管作為系統(tǒng)指示燈,采納蜂鳴器作為報警鳴笛。當溫度高于上限警戒值時,點亮紅色發(fā)光二極管,蜂鳴器發(fā)出響聲;當溫度低于下限警戒值時,點亮黃色發(fā)光二極管,蜂鳴器發(fā)出響聲;溫度在正常范圍內(nèi)時,點亮黃色發(fā)光二極管。整個報警與指示電路如圖9所示,其中綠、紅、黃色指示燈分別接單片機P2.0、P2.1、P2.2口,電平拉低時點亮LED,蜂鳴器電路接單片機的P2.7口,電平拉高時蜂鳴器響。圖9報警與指示模塊至此便完成了整個硬件電路的設計工作,整個系統(tǒng)的原理圖見附錄二,系統(tǒng)I/O安排表如下:I/O口功能說明I/O口功能說明P0.0~P0.7LCM數(shù)據(jù)口P2.1LCM讀/寫限制P1.0~P1.3鍵盤輸入P2.2LCM使能P1.7DS18B20溫度采集P2.4~P2.6LED信號輸出P2.0LCM數(shù)據(jù)/吩咐限制P2.7報警信號輸出4.軟件設計單片機應用系統(tǒng)的設計中,軟件設計占有重要的位置。在本次設計中,依據(jù)功能要求,可以把系統(tǒng)程序劃分為5個模塊,即主程序模塊、顯示模塊、溫度測量模塊、鍵盤掃描模塊、其它子程序模塊,如圖10所示。主程序模塊顯示模塊主程序模塊顯示模塊溫度測量模塊鍵盤掃描模塊其它子程序4.1主程序設計起先初始化溫度傳感器初始化起先初始化溫度傳感器初始化單片機初始化顯示模塊鍵盤掃描讀取溫度顯示字形轉(zhuǎn)換顯示/************主程序************/voidmain(void){ P1=0xff;//初始化P1口以便讀入 P2|=0x70; P2&=0x7f; Temp_set1=90;//上限報警溫度初值90 Temp_set2=10;//下限報警溫度初值10 Delay(500);//延時500ms啟動 init_LCD();//LCD初始化 init_18B20();//DS18B20初始化 Display_str(0,0,str2);//開機界面 Display_str(0,1,str2);//開機界面圖11圖11主程序流程圖 Display_str(0,0,str0); Display_str(0,1,str1); while(1) { Key_scan();//掃描鍵盤 Read_temp();//讀取溫度 Change(); Display();//顯示 Alarm();//指示燈與報警程序 Delay(1000); }}4.2顯示模塊顯示程序主要完成的功能是模式、上下限警戒值和測量溫度值的顯示,模塊中包含LCD初始化、顯示單個字符子函數(shù)、顯示一個字符串子函數(shù)。程序流程圖如圖12所示,LCD初始化程序如下,其它子函數(shù)程序詳見附錄一。起先寫顯示吩咐起先寫顯示吩咐定位顯示位置寫顯示字符結(jié)束顯示voidinit_LCD(void){ P0=0; Delay(15); LCD_Command(0x38,0); Delay(5); LCD_Command(0x38,0);圖1圖12顯示程序流程圖 LCD_Command(0x38,0); Delay(5); LCD_Command(0x38,1);//8位數(shù)據(jù)傳送,2行顯示,5*7字形 LCD_Command(0x08,1);//關(guān)閉顯示 LCD_Command(0x01,1);//清屏 LCD_Command(0x06,1);//顯示光標右移設置 LCD_Command(0x0c,1);//顯示屏打開,光標不顯示不閃耀}4.3溫度測量模塊溫度測量程序主要功能是讀出數(shù)字溫度傳感器的溫度值。要正確地讀出溫度值必需嚴格遵守單總線器件的吩咐序列,否則單總線器件不會響應主機。單總線器件的吩咐序列如圖13所示。溫度測量模塊程序流程圖如圖14所示,DS18B20初始化程序如下,其它子程序詳見附錄一。/************DS18B20初始化************/voidinit_18B20(void){ ucharx=0;YN起先讀DS18B20序列號YN起先讀DS18B20序列號初始化DS18B20DS18B20存在?溫度轉(zhuǎn)換發(fā)跳過ROM指令讀取溫度返回 Delay_us(4);//延時 DQ=0;//將DQ拉低 Delay_us(250);//精確延時大于480us DQ=1;//拉高總線 Delay_us(40); x=DQ;起先發(fā)ROM指令起先發(fā)ROM指令初始化發(fā)功能指令結(jié)束}圖1圖14溫度測量程序流程圖圖13單總線吩咐序列4.4鍵盤掃描模塊本次設計中運用了4個按鍵,除了1個復位鍵還有3個功能鍵,具體功能前面已介紹。鍵盤掃描程序如下,其它子程序詳見附錄一,相關(guān)流程圖如圖15所示。/************鍵盤掃描************/voidKey_scan(void){uchartemp;P1=0xff;if(P1!=0xff){延時去抖動起先延時去抖動起先初始化DS18B20有鍵按下?讀取鍵值Y執(zhí)行鍵功能程序返回有鍵按下?NNY if(P1!=0xff) { temp=P1; switch(temp) { case0xfe:Key_set();break;//P1.0按下,功能選擇 case0xfd:Key_inc();break;//P1.1按下,數(shù)字加一 case0xfb:Key_dec();break;//P1.2按下,數(shù)字減一 default:break; } }}圖1圖15鍵盤掃描程序流程圖4.5其它子程序程序中運用的其它子程序,包括延時子程序、顯示字符轉(zhuǎn)換子程序等,具體詳見附錄一。5.仿真分析在本次的設計中,運用了Proteus仿真軟件進行了功能測試,具體仿真步驟及分析如下。(1)依據(jù)原理圖,從Proteus元件庫中找出對應元件,搭建硬件仿真電路,將程序燒寫到單片機中,仿真圖見附錄三。(2)點擊運行按鈕起先仿真,初始上下限值為90℃和10℃,當前溫度為25℃,當前模式為N正常工作,綠燈亮,蜂鳴器不響,如圖16。圖16正常模式下仿真圖(3)按下S1鍵,進入上限警戒值設置模式H,此時按S2、S3鍵可以進行上限值設定,同時溫度正常顯示,設置上限值80℃,如圖17。圖圖17上限值設定仿真圖(4)再次按下S1鍵,進入下限警戒值設置模式L,此時按S2、S3鍵可以進行下限值設定,同時溫度正常顯示,設置下限值20℃,如圖18。圖18下限值設定仿真圖(5)再次按下S1鍵,返回正常模式N,調(diào)整DS18B20溫度,測量溫度隨之變更,降低溫度,超過下限值5℃以下時,黃燈亮,蜂鳴器報警,如圖19。圖19下限報警仿真圖圖20上限報警仿真圖(6)上升溫度,超過上限值5圖20上限報警仿真圖(7)按下S4鍵,單片機復位。在本次仿真中,可以看出,本次設計的硬件電路和軟件程序均能勝利仿真出來,設計要求的各種功能均已達到。6.總結(jié)本次課程設計為期一周,到此已全部結(jié)束。回想一周中的設計過程,我深深感覺收獲良多。由于從前只是在理論上學習了單片機以及各種其它學問,即使是試驗也只是依據(jù)試驗指導書進行操作,并沒有實際的獨立設計一個系統(tǒng),因此在剛起先接觸本次課程設計時,有一點無從下手的感覺。后來通過查閱相關(guān)資料,慢慢起先了解課程設計的一般過程,起先明白一些元器件的相關(guān)作用與編程實現(xiàn)方法,并在此期間通過不斷深化的學習和熬煉,起先慢慢能嫻熟運用和嫻熟編程起來。通過本次計算機限制技術(shù)的課程設計,我更深層次的把理論學問和實際設計結(jié)合在一起,熬煉了我的綜合運用所學的專業(yè)基礎學問和解決實際工程問題的實力。同時也提升了我查閱文獻資料、設計手冊、設計規(guī)范以及電腦制圖等其他學問實力水平。對各種系統(tǒng)的適用條件,各種設備的選用標準,各種管道的安裝方式,我都是隨著設計的不斷深化而漸漸熟識并學會應用的。并且,通過對整體的掌控,對局部的取舍,對細微環(huán)節(jié)的斟酌處理,以及繪圖的技巧都使我在設計領域的實力得到了熬煉,得到了較豐富閱歷。

最終,通過這次的課程設計,我也深刻地相識到,只有將書本與具體的實踐相結(jié)合,才會有真正的收獲,才能鞏固自己的所學,相識到自己的不足,同時我們也要有一種主動學習的看法,時代在進步我們也要跟著時代前進,要不斷學習,不斷創(chuàng)新,用自己的學問與行動來證明自己的價值。本次課程設計以單片機為核心,介紹了用DS18B20溫度傳感器進行溫度采集,并將其傳輸給AT89C51單片機進行處理再送到LCD顯示屏顯示。在此期間可以通過按鍵進行上下限警戒值設置,通過LED和蜂鳴器進行指示和報警。本文是采納模塊化的方式進行敘述,對各模塊的設計進行了比較具體地闡述,并著重分析硬件搭建過程和系統(tǒng)軟件的設計過程,運用單片機C語言進行程序沒計。本次設計的基于DS18B20的溫度測量系統(tǒng)是一個分布式的溫度測量系統(tǒng),它可以遠程對溫度實現(xiàn)測量和監(jiān)控,廣泛應用于電力工業(yè)、煤礦、森林、火災、高層建筑等場合。本設計應用性比較強,可以應用在倉庫溫度、大棚溫度、機房溫度、水池等的監(jiān)控。當然,本次設計還存在一些不足,例如在本次設計中,由于時間較短,警戒值只是在1~99℃之間,沒有能夠擴展到負溫度和100℃以上;在本次設計中只是用了4個獨立按鍵,實現(xiàn)簡潔的上下限警戒值設定,操作較麻煩,假如能夠設計出多按鍵的矩陣式鍵盤,則能夠?qū)囟冗M行很便利的設定。此外假如把本設計方案擴展為多點溫度限制,加上上位機,則可以實現(xiàn)遠程溫度監(jiān)控系統(tǒng),將具有更大的應用價值。7.參考文獻[1]潘新民,王燕芳.微型計算機限制技術(shù)[M].北京:電子工業(yè)出版社,2014[2]王迎旭.單片機原理與應用[M].北京:機械工業(yè)出版社,2013[3]康華光.電子技術(shù)基礎[M].北京:高等教化出版社,2013[4]周正華,唐寧RT1602C與FPGA接口技術(shù)[J].中國科技信息,2008(10)[5]廖琪梅,韓彬等.基于DS18B20的溫度測量儀[J].國外電子元器件,2008(2)附錄一:程序清單#include<reg51.h>#include<intrins.h>#include<absacc.h>#defineucharunsignedchar#defineuintunsignedint#defineBUSY0x80voidDelay(uint);voidinit_LCD(void);voidLCD_Command(uchar,uchar);voidLCD_Data(uchar);voidReadyLCD(void);voidDisplay_char(uchar,uchar,uchar);voidDisplay_str(uchar,uchar,ucharcode*Data);voidChange(void);voidDisplay(void);voidinit_18B20(void);ucharRead_18B20(void);voidWrite_18B20(uchar);voidRead_temp(void);voidDelay_us(uchari);voidKey_scan(void);voidKey_set(void);voidKey_inc(void);voidKey_dec(void);voidAlarm(void);sbitLCD_RS=P2^0;sbitLCD_RW=P2^1;sbitLCD_EN=P2^2;sbitDQ=P1^7;sbitNormal=P2^4;sbitAlarm_H=P2^5;sbitAlarm_L=P2^6;sbitAlarm_BEEP=P2^7;ucharSet_flag=0;ucharTemp_mea,Temp_set1,Temp_set2;ucharTemp_high_1,Temp_high_2;ucharTemp_low_1,Temp_low_2;ucharTemp_true_1,Temp_true_2;externucharcodestr0[]={"High:CLow:C"};externucharcodestr1[]={"Mode:Deg:C"};externucharcodestr2[]={"Hellow!!"};externucharcodestr3[]={"0123456789"};externucharcodemode[]={"NHL"};/********主程序********/voidmain(void){ P1=0xff; P2|=0x70; P2&=0x7f; Temp_set1=90;//上限報警溫度初值90 Temp_set2=10;//下限報警溫度初值10 Delay(500);//延時500ms啟動 init_LCD();//LCD初始化 init_18B20();//DS18B20初始化 Display_str(0,0,str2);//開機界面 Display_str(0,1,str2);//開機界面 Delay(2000); Display_str(0,0,str0); Display_str(0,1,str1); while(1) { Key_scan();//掃描鍵盤 Read_temp();//讀取溫度 Change(); Display();//顯示 Alarm();//指示燈與報警程序 Delay(1000); }}/********延時kms********/voidDelay(uintk){ uinti,j; for(i=0;i<k;i++) { for(j=0;j<60;j++) { ; } }}/********顯示模塊********//********LCD初始化********/voidinit_LCD(void){ P0=0; Delay(15); LCD_Command(0x38,0); Delay(5); LCD_Command(0x38,0); Delay(5); LCD_Command(0x38,0); Delay(5); LCD_Command(0x38,1);//8位數(shù)據(jù)傳送,2行顯示,5*7字形 LCD_Command(0x08,1);//關(guān)閉顯示 LCD_Command(0x01,1);//清屏 LCD_Command(0x06,1);//顯示光標右移設置 LCD_Command(0x0c,1);//顯示屏打開,光標不顯示不閃耀}/********寫指令數(shù)據(jù)到LCD********/voidLCD_Command(ucharLC,ucharBC){ if(BC)ReadyLCD(); P0=LC; LCD_RS=0;//選中指令寄存器 LCD_RW=0;//寫模式 LCD_EN=1; _nop_(); _nop_(); _nop_(); LCD_EN=0;}/********寫顯示數(shù)據(jù)到LCD********/voidLCD_Data(ucharLD){ ReadyLCD(); P0=LD; LCD_RS=1;//選中數(shù)據(jù)寄存器 LCD_RW=0;//寫模式 LCD_EN=1; _nop_(); _nop_(); _nop_(); LCD_EN=0;}/********檢測LCD忙狀態(tài)********/voidReadyLCD(void){ P0=0xff; LCD_EN=1; LCD_RS=0; LCD_RW=1; _nop_(); while(P0&BUSY) { LCD_EN=0; _nop_(); _nop_(); LCD_EN=1; _nop_(); _nop_(); }LCD_EN=0;}/********顯示一個字符********/voidDisplay_char(ucharX,ucharY,ucharData){ Y&=0x01; X&=0x0f; if(Y)X|=0x40; X|=0x80; LCD_Command(X,0); LCD_Data(Data);}/********顯示一串字符********/voidDisplay_str(ucharX,ucharY,ucharcode*Data){ ucharList=0; Y&=0x01; X&=0x0f; while(X<16) { Display_char(X,Y,Data[List]); List++; X++; } }/********顯示字型轉(zhuǎn)換********/voidChange(void){ Temp_high_1=Temp_set1/10; Temp_high_2=Temp_set1%10; Temp_low_1=Temp_set2/10; Temp_low_2=Temp_set2%10; Temp_true_1=Temp_mea/10; Temp_true_2=Temp_mea%10;}/********顯示子程序********/voidDisplay(void){ Display_char(5,0,str3[Temp_high_1]); Display_char(6,0,str3[Temp_high_2]); Display_char(13,0,str3[Temp_low_1]); Display_char(14,0,str3[Temp_low_2]); Display_char(5,1,mode[Set_flag]); Display_char(13,1,str3[Temp_true_1]); Display_char(14,1,str3[Temp_true_2]);}/********溫度測量模塊********//********DS18B20初始化********/voidinit_18B20(void){ ucharx=0; DQ=1;//DQ復位 Delay_us(4);//延時 DQ=0;//將DQ拉低 Delay_us(250);//精確延時大于480us DQ=1;//拉高總線 Delay_us(40); x=DQ; Delay_us(20);}/********從DS18B20讀取一個字節(jié)數(shù)據(jù)********/ucharRead_18B20(void){ uchari=0; uchardat=0; for(i=8;i>0;i--) { DQ=0; _nop_(); dat>>=1; DQ=1; Delay_us(1); if(DQ)dat|=0x80; Delay_us(10); }return(dat);}/********向DS18B20寫入一個字節(jié)數(shù)據(jù)********/voidWrite_18B20(uchardat){ uchari=0; for(i=8;i>0;i--) { DQ=0; _nop_(); DQ=dat&0x01; Delay_us(10); DQ=1; dat>>=1; Delay_us(10); }}/********從DS18B20讀取溫度********/voidRead_temp(void){ uchara=0; ucharb=0; uchart=0; init_18B20(); Write_18B20(0xcc); Write_18B20(0x44); init_18B20(); Write_18B20(0xcc); Write_18B20(0xbe); a=Read_18B20(); b=Read_18B20(); t=b; t<<=8; t=t|a;Temp_mea=t*(0.0625);}/********精確延時********/

溫馨提示

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

評論

0/150

提交評論