《單片機技術(shù)與應(yīng)用》教案20項目6任務(wù)4-DS18B20溫度采集系統(tǒng)_第1頁
《單片機技術(shù)與應(yīng)用》教案20項目6任務(wù)4-DS18B20溫度采集系統(tǒng)_第2頁
《單片機技術(shù)與應(yīng)用》教案20項目6任務(wù)4-DS18B20溫度采集系統(tǒng)_第3頁
《單片機技術(shù)與應(yīng)用》教案20項目6任務(wù)4-DS18B20溫度采集系統(tǒng)_第4頁
《單片機技術(shù)與應(yīng)用》教案20項目6任務(wù)4-DS18B20溫度采集系統(tǒng)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE1教案學(xué)習領(lǐng)域項目6溫度檢測報警系統(tǒng)設(shè)計學(xué)習情境任務(wù)4DS18B20溫度采集系統(tǒng)序號20課型理實一體化課時4教具學(xué)具電教設(shè)施pc機;keil以及proteus軟件;任務(wù)書(供學(xué)生用);課件教學(xué)目標知識目標①掌握單總線DS18B20溫度傳感器硬件結(jié)構(gòu)②掌握單片機驅(qū)動DS18B20溫度傳感器的方法能力目標①能夠通過Keil和Proteus軟件的初步使用,提高觀察和分析能力②能夠通過單片機驅(qū)動DS18B20編寫程序,培養(yǎng)邏輯思維能力③能夠編制按鍵狀態(tài)機程序,提高分析和解決問題的能力情感目標①能夠透過實驗現(xiàn)象歸納事物本質(zhì)②培養(yǎng)學(xué)生對本專業(yè)的職業(yè)認同感③培養(yǎng)學(xué)生科學(xué)探索的興趣、嚴謹扎實的工作作風和團結(jié)協(xié)作精神教學(xué)重難點重點①掌握單總線DS18B20溫度傳感器硬件結(jié)構(gòu)②掌握單片機驅(qū)動DS18B20溫度傳感器的方法難點①掌握單總線DS18B20溫度傳感器硬件結(jié)構(gòu)②掌握單片機驅(qū)動DS18B20溫度傳感器的方法學(xué)法教法實驗探究、任務(wù)引領(lǐng)法、討論法、張貼法、頭腦風暴法、演示法教學(xué)內(nèi)容更新、補充、刪節(jié)參考資料課后體會學(xué)生在任務(wù)的驅(qū)動下,利用仿真電路自主探究電路規(guī)律,結(jié)合教師對相關(guān)知識點的講授,達到對所學(xué)知識的掌握。這個思路帶來了很好的教學(xué)效果,但增加的實驗部分會使得教學(xué)時數(shù)稍顯緊張,這一點還需日后改進。教與學(xué)互動設(shè)計教師活動內(nèi)容學(xué)生活動內(nèi)容一、組織教學(xué)(2分鐘)1.首先清點學(xué)生出勤情況,填寫考勤記錄。2.檢查學(xué)生工作服、帽、鞋等是否符合安全要求。3.宣布今天的實習內(nèi)容、技術(shù)要求、工時、勞動紀律等。4.強調(diào)生產(chǎn)實習安全注意事項。5.學(xué)生分組分上機、實習工位。6.發(fā)放任務(wù)書、自評和互評表以及白紙到每組的學(xué)生手中。二、布置任務(wù)(3分鐘)下達任務(wù),本任務(wù)要求由PC機發(fā)出不同的數(shù)據(jù),單片機接收后回傳給PC機,從而驗證接收數(shù)據(jù)是否正確。三、資訊計劃(25分鐘)(一)溫度傳感器DS18B201.DS18B20概述DS18B20數(shù)字溫度計是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計,十分方便。2.DS18B20產(chǎn)品的特點(1)只要求一個端口即可實現(xiàn)通信。(2)在DS18B20中的每個器件上都有獨一無二的序列號。(3)實際應(yīng)用中不需要外部任何元器件即可實現(xiàn)測溫。(4)測量溫度范圍在-55。C到+125。C之間。(5)數(shù)字溫度計的分辨率用戶可以從9位到12位選擇。(6)內(nèi)部有溫度上、下限告警設(shè)置。3.DS18B20引腳圖及引腳功能介紹TO-92封裝的DS18B20的引腳排列見圖6-13,其引腳功能描述見表6-6。(底視圖)圖6-13DS18B20引腳圖接下來,看看引腳定義,如表6-6所示意:表6-6DS18B20引腳定義序號名稱引腳功能描述1GND地信號2DQ數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源。3VDD可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。4.DS18B20的內(nèi)部結(jié)構(gòu)以及使用方法DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM,溫度傳感器,非揮發(fā)的溫度報警觸發(fā)器TH和TL,配置寄存器。(1)光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余檢驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。64位的光刻ROM又包括5個ROM的功能命令:讀ROM,匹配ROM,跳躍ROM,查找ROM和報警查找。根據(jù)DS18B20的通訊協(xié)議,主機控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進行復(fù)位操作,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預(yù)定的操作,ROM和RAM指令見表6-8和表6-9所示。表6-8ROM指令表指令約定代碼功能讀ROM33H讀DS18B20溫度傳感器ROM中的編碼(即64位地址)符合ROM55H發(fā)出此命令之后,接著發(fā)出64位ROM編碼,訪問單總線上與該編碼相對應(yīng)的DS18B20使之作出響應(yīng),為下一步對該DS18B20的讀寫作準備搜索ROM0F0H用于確定掛接在同一總線上DS18B20的個數(shù)和識別64位ROM地址。為操作各器件作好準備跳過ROM0CCH忽略64位ROM地址,直接向DS18B20發(fā)溫度變換命令,適用于單片工作告警搜索命令0ECH執(zhí)行后只有溫度超過設(shè)定值上限或下限的片子才做出響應(yīng)表6-9RAM指令表指令約定代碼功能溫度轉(zhuǎn)換44H啟動DS18b20進行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時間最長為750ms(9位為93.75ms),結(jié)果存入內(nèi)部9字節(jié)RAM中讀暫存器0BEH讀內(nèi)部RAM中9字節(jié)的內(nèi)容寫暫存器4EH發(fā)出向內(nèi)部RAM的3、4字節(jié)寫上、下限溫度數(shù)據(jù)命令,緊跟該命令之后,是傳送三字節(jié)的數(shù)據(jù),三字節(jié)的數(shù)據(jù)分別被存到暫存器的第3、4、5字節(jié)復(fù)制暫存器48H將RAM中第3、4、5字節(jié)的內(nèi)容復(fù)制到E2PROM中重調(diào)E2PR0M0B8H將E2PROM中內(nèi)容恢復(fù)到RAM中的第3、4、5字節(jié)讀供電方式0B4H讀DS18B20的供電模式。寄生供電時DS18B20發(fā)送“0”,外接電源供電DS18B20發(fā)送“1”(2)DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625℃/LSB形式表達,其中S為符號位,溫度值格式表見6-10所示。表6-10DS18B20溫度值格式表這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在DS18B20的兩個8bit的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FE6FH,-55℃的數(shù)字輸出為FC90H,溫度值與真實溫度對應(yīng)關(guān)系見表6-11所示。表6-11DS18B20溫度數(shù)據(jù)表TEMPERATURE(OC)DIGITALOUTPUT(BINARY)DIGITALOUTPUT(HEX)+125000001111101000007D0h+85*00000101010100000550h+25.062500000001100100010191h+10.125000000001010001000A2h+0.500000000000010000008h000000000000000000000h-0.51111111111111000FFF8h-10.1251111111101011110FF5Eh-25.06251111111001101111FE6Fh-551111110010010000FC90h(3)DS18B20溫度傳感器的存儲器DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E2PRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。存儲器能完整的確定一線端口的通訊,數(shù)據(jù)開始用寫寄存器的命令寫進寄存器,接著也可以用讀寄存器的命令來確認這些數(shù)據(jù)。當確認以后就可以用復(fù)制寄存器的命令來將這些數(shù)據(jù)轉(zhuǎn)移到可電擦除RAM中。當修改過寄存器中的數(shù)據(jù)時,這個過程能確保數(shù)據(jù)的完整性。高速暫存存儲器由9個字節(jié)組成,其分配如表6-12所示。當溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補碼形式存放在高速暫存存儲器的第1和第2個字節(jié)。CPU可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,數(shù)據(jù)格式如表3所示。對應(yīng)的溫度計算:當符號位S=0時,直接將二進制位轉(zhuǎn)換為十進制;當S=1時,先將補碼變?yōu)樵a,再計算十進制值。第3和第4個字節(jié)是復(fù)制TH和TL,同時第3和第4個字節(jié)的數(shù)據(jù)可以更新;第5個字節(jié)是復(fù)制配置寄存器,同時第5個字節(jié)的數(shù)據(jù)可以更新;6、7、8三個字節(jié)是計算機自身使用。第9個字節(jié)是冗余檢驗字節(jié)。表6-12DS18B20暫存寄存器分布寄存器內(nèi)容字節(jié)地址溫度值低位(LSByte)1溫度值高位(MSByte)2高溫限值(TH)3低溫限值(TL)4配置寄存器5保留6保留7保留8CRC校驗值9(4)配置寄存器該字節(jié)各位的意義如下表6-13所示:表6-13配置寄存器結(jié)構(gòu)低五位一直都是"1",TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,用戶不要去改動。R1和R0用來設(shè)置分辨率,如下表6-14所示(DS18B20出廠時被設(shè)置為12位)。表6-14溫度分辨率設(shè)置表R1R0RESOLUTION(BITS)MAXCONVERSIONTIME00993.75ms(tCONV/8)0110187.5ms(tCONV/4)1011375ms(tCONV/2)1112750ms(tCONV)(5)DS18B20外部電源的連接方式DS18B20可以使用外部電源VDD,也可以使用內(nèi)部的寄生電源。當VDD端口接3.0V~5.5V的電壓時是使用外部電源;當VDD端口接地時使用了內(nèi)部的寄生電源。無論是內(nèi)部寄生電源還是外部供電,I/O口線都要接4.7KΩ的上拉電阻,如圖6-13所示。DS18B20的外部電源供電方式在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時I/O線不需要強上拉,不存在電源電流不足的問題,可以保證轉(zhuǎn)換精度,同時在總線上理論可以掛接任意多個DS18B20傳感器,組成多點測溫系統(tǒng)。注意:在外部供電的方式下,DS18B20的GND引腳不能懸空,否則不能轉(zhuǎn)換溫度,讀取的溫度總是85℃。圖6-14外部電源連接DS18B20溫度處理過程1)配置寄存器配置寄存器是配置不同的位數(shù)來確定溫度和數(shù)字的轉(zhuǎn)化。2)溫度的讀取DS18B20在出廠時已配置為12位,讀取溫度時共讀取16位,所以把后11位的2進制轉(zhuǎn)化為10進制后再乘以0.0625便為所測的溫度,還需要判斷正負。前5個數(shù)字為符號位,當前5位全為1時,讀取的溫度為負數(shù);當前5位全為0時,讀取的溫度為正數(shù)。16位數(shù)字擺放是從低位到高位。3)DS18B20控制方法DS18B20有六條控制命令(RAM):見表6-9。4)DS18B20的初始化總線主機發(fā)送一復(fù)位脈沖(最短為480us的低電平信號);總線主機釋放總線,并進入接收方式;單線總線經(jīng)過5K的上拉電阻被拉至高電平狀態(tài);DS18B20在I/O引腳上檢測到上升沿之后,等待15-60us,接著發(fā)送存在脈沖(60us-240us的低電平信號)。5)向DS18B20發(fā)送控制命令先通過總線向DS18B20發(fā)送ROM指令,對ROM進行操作;之后,發(fā)送ROM指令,來啟動傳感器或進行其它RAM操作,以完成對溫度數(shù)據(jù)的轉(zhuǎn)換。下面給出DS18B20相關(guān)操作對應(yīng)的時序:(7)DS18B20的復(fù)位時序DS18B20的復(fù)位時序見圖6-15所示。圖6-15DS18B20的復(fù)位時序圖(8)DS18B20的讀時序DS18B20的讀時序見圖6-16所示,對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程。對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。圖6-16DS18B20讀時序圖(9)DS18B20的寫時序?qū)τ贒S18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。對于DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線,如圖6-17所示。圖6-17DS18B20的寫時序四、計劃實施(50分鐘)在proteus中繪制如下電路圖:在KeilC51中錄入下面程序,并調(diào)試程序:DS18B20對應(yīng)的程序代碼如下:#include<reg52.h>#include<intrins.h>#define uchar unsignedchar#define uint unsignedint#define u8 unsignedchar#define u16 unsignedint#define u32 unsignedlongint#define uchar32unsignedlongcharunsignedintsdata;//測量到的溫度的整數(shù)部分unsignedcharxiaoshu1;//小數(shù)第一位unsignedcharxiaoshu2;//小數(shù)第二位unsignedcharxiaoshu;//兩位小數(shù)bitfg=1;//溫度正負標志sbitP10=P1^0;sbitP11=P1^1;sbitP12=P1^2;//通信端口使用#define TX_0 P10=0#define TX_1 P10=1//uchar32*p=sort_temp;//=======================================//精確延時函數(shù)//=======================================//延時1us==用于在切換引腳電平時,等待引腳電平穩(wěn)定voiddelay1us(void)//12MHz,12分頻單片機{}//延時7us==讀間隙產(chǎn)生后延時7us,然后單片機讀取引腳電平voiddelay7us(void)//12MHz,12分頻單片機{ //調(diào)用占2個周期 _nop_();_nop_(); _nop_();_nop_();_nop_();}//延時15us==拉低500us復(fù)位后,18B20在15us后會發(fā)出存在脈沖voiddelay15us(void)//12MHz,12分頻單片機{ //調(diào)用占2個周期 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();}//延時60us==產(chǎn)生寫時序后,延時60us,等待18B20成功讀取引腳電平voiddelay60us(void)//12MHz,12分頻單片機{unsignedchara,b;for(b=11;b>0;b--)for(a=1;a>0;a--);}//延時500us==復(fù)位時用到voiddelay500us(void)//12MHz,12分頻單片機{unsignedchara,b;for(b=99;b>0;b--)for(a=1;a>0;a--);}//========================//粗略可調(diào)延時函數(shù)//========================voiddelayms(u16ms){ while(ms--) {unsignedchara,b,c;for(c=1;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--); }}voiddelay(void)//417us對應(yīng)2400波特率{unsignedchara;for(a=206;a>0;a--);}//===========================//DS18B20讀一個字節(jié)//===========================u8DS18B20_Read_Byte(void){ u8i; u8byte=0; for(i=0;i<8;i++) { byte>>=1; P11=0; delay1us(); P11=1; //上升沿產(chǎn)生讀時間間隙 delay7us(); //至少7us以后,讀取DS18B20數(shù)據(jù),但也不能過大,例如延時15us就不正常了 if(P11) { byte|=0x80; } delay60us(); P11=1; //釋放總線 } returnbyte;}//===========================//向DS18B20寫一個字節(jié)//===========================voidDS18B20_Write_Byte(u8byte){ u8i=0; for(i=0;i<8;i++) { P11=0; //下降沿產(chǎn)生寫時間間隙 delay1us(); if(byte&0x01) //把數(shù)據(jù)對應(yīng)位的電平送到DQ引腳 { P11=1;} else { P11=0;} delay60us(); //延時60us,等待DS18b20讀取引腳電平 byte>>=1; P11=1; //釋放總線 }}//===========================//復(fù)位DS18B20//===========================voidDS18B20_RST(void){ P11=1; delay1us(); P11=0;delay500us(); //拉低500us,復(fù)位信號P11=1; //DQ=1 delay15us(); //15us}//=============================//DS18B20存在檢測返回0表示器件存在,1不存在//=============================u8DS18B20_Check(void){ u8revalue=0; u8times=0; while(times<240&&(P11!=0)) //檢測到低電平跳出或者循環(huán)240次跳出 { times++; delay1us(); } if(times>=240) revalue=1; else times=0; while(times<240&&(P11==0)) //檢測到高電平跳出 { times++; delay1us(); } if(times<240) revalue=0; else revalue=1; returnrevalue;}//===========================//讀取DS18B20溫度值//===========================floatDS18B20_Read_Temp(void){ intTEMP_INT; floatTEMP; u8H8,L8; DS18B20_RST(); //復(fù)位 DS18B20_Check(); DS18B20_Write_Byte(0xcc); //跳過ROM命令單個傳感器所以不必讀取ROM里的序列號 DS18B20_Write_Byte(0x44); //開始轉(zhuǎn)換 DS18B20_RST(); //復(fù)位 DS18B20_Check(); DS18B20_Write_Byte(0xcc); //跳過ROM命令單個傳感器所以不必讀取ROM里的序列號 DS18B20_Write_Byte(0xbe); //讀寄存器,共九字節(jié),前兩字節(jié)為轉(zhuǎn)換值 L8=DS18B20_Read_Byte(); //低8位 H8=DS18B20_Read_Byte(); //高8位 if(H8>0x7f)//最高位為1時溫度是負{L8=~L8;H8=~H8+1;//補碼轉(zhuǎn)換,取反加一fg=1;//讀取溫度為負時fg=1} xiaoshu1=(L8&0x0f)*10/16;//小數(shù)第一位xiaoshu2=(L8&0x0f)*100/16%10;//小數(shù)第二位xiaoshu=xiaoshu1*10+xiaoshu2;//小數(shù)兩位 TEMP_INT=(H8<<8)|L8; //將高8位左移8位后與低8位相加【此處按位或相當于相加】 TEMP=TEMP_INT*0.0625; //默

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論