版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本科生畢業(yè)設計(論文)基于ZigBee的溫度測量網絡軟件設計SoftwareDesignofTemperatureMeasurementNetworkBasedonZigBee總計:30頁表格:3個插圖:30幅本科畢業(yè)設計(論文)學院(系):電子與電氣工程系專業(yè):電子信息工程基于Zigbee的溫度測量網絡軟件設計[摘要]本設計是基于ZigBee技術的溫度測量網絡的軟件設計,實現把采集到的溫度數據以無線的方式發(fā)射給接收裝置。設計采用Mega16單片機作為控制器,利用數字式DS1820作為溫度傳感器,同時采用TM12864對采集到的數據進行顯示,xbee模塊作為無線的接收與發(fā)射模塊。數字式溫度傳感器DS1820和單片機以單總線方式連接,使用方便。Mega16按照DS1820的通信協(xié)議,便可得到DS1820轉換后的溫度數據。TM12864為128*64的液晶顯示模塊,Mega16按其操作指令對其進行讀寫便可顯示所需數據。單片機與xbee模塊以UART方式傳輸數據,使用方便。用C語言實現對Mega16的編程,從而實現對溫度的采集、顯示與傳輸。[關鍵詞]ZigBee;xbee;溫度傳感器;無線傳輸SoftwareDesignofTemperatureMeasurementNetworkBasedonZigbeeAbstract:ThetopicissoftwaredesignoftemperaturemeasurementnetworkbasedonZigBee.ItusesthexbeemoduleofMaxStream.Thisdesignwantsthesystemtotransmitthedataoftemperaturetothereceiver.ThedesignusesMega16asthecontrollertocontroltheDS1820tocapturethedataoftemperature,drivetheTM12864todisplay.DigitaltemperaturesensorDS1820communicatewithMega16viasinglebus.Weusethemoduleofxbeeaswirelessreceiverandtransmitter.Mega16cangetthedataoftemperaturefromDS1820accordingtothecommunicationprotocolofDS1820.TM12864is128*64latticsdisplaydevice.Mega16controlTM12864todisplaythedatabyusingtheinstructions.Mega16cancommunicatewiththexbeemoduleviaUART.Itisconveniencetouse.Programmingformega16intheenvironmentofClanguageachievethedataacquisition,displayandreception.KeyWords:ZigBee;xbee;temperaturesensor;wirelesstransmission目錄1引言 11.1選題背景及意義 11.2本設計的主要內容 12系統(tǒng)方案設計 12.1系統(tǒng)原理 12.2發(fā)送模塊框圖 22.3接收模塊框圖 23發(fā)送模塊的軟件設計 23.1溫度采集軟件設計 23.1.1初始化流程 33.1.2ROM操作命令 43.1.3存儲器操作命令 43.1.4寫命令流程 53.1.5讀數據流程 63.1.6溫度數據的處理 73.2顯示控制軟件設計 83.2.1TM12864指令 93.2.2指令的數據格式與功能 93.2.3寫時序及相關操作流程 103.2.4讀時序及相關流程 113.2.5顯示一個字形的控制流程 133.3數據發(fā)送軟件設計 143.3.1xbee模快 143.3.2單片機與xbee模塊的通信 144接收模塊的軟件設計 154.1數據的接收 164.2數據的顯示 175系統(tǒng)仿真及調試 175.1xbee模塊的參數設置 175.2仿真與調試 20結束語 22參考文獻 23附錄 24致謝 301引言1.1選題背景及意義近年來,各種無線技術快速發(fā)展,它們在配置、安裝、修改和擴展等方面有很多優(yōu)勢,同時無線網絡的成本要低于有線網絡,給人們的生產生活帶來了很多方便。其中ZigBee技術就是新興的無線技術之一,它是IEEE802.15工作組的標準之一[1],采用直接序列擴頻(DSS)技術。工作頻率為868MHz、915MHz或者2.4G,頻率的無線技術,用于個人局域網和對等網絡是一種適用于固定、便攜或移動設備使用的低復雜度、低成本、低功耗、低速率的短距離雙向無線通信協(xié)議[2]。ZigBee技術在農業(yè),汽車,家居得等方面都有很大的發(fā)展優(yōu)勢與空間,其耗電量低,可擴節(jié)點多很適合用于溫度濕度等的檢測。本課題的設計正是基于ZigBee技術的無線溫濕度測量網絡,可將采集傳感器獲得的溫度數據顯示并且以傳送出去。同時由接收模塊接收發(fā)出的數據。1.2本設計的主要內容本課題所設計的系統(tǒng)以AVR單片機作為控制器,以ICCV7forAVR為系統(tǒng)程序開發(fā)平臺,用C語言[3]進行程序設計,以Proteus作為仿真軟件。系統(tǒng)主要有發(fā)射部分和接收部分兩部分組成。發(fā)射部分主要有溫度采集、顯示、傳輸三小部分組成,接收部分主要有接收數據與顯示兩部分。這樣系統(tǒng)經過xbee無線傳輸模塊把采集到的數據通過自動組網方式傳輸到接收模塊,接收模塊經過AVR數據處理,把接收到的數據顯示到液晶模塊。2系統(tǒng)方案設計2.1系統(tǒng)原理溫度的測控采用以AVR單片機與溫度傳感器的單總線連接方式,溫度傳感器DS1820是智能溫度傳感器,它的輸入/輸出采用數字量,以單總線方式,接收控制器發(fā)送的命令,根據DS1820內部的協(xié)議進行相應的處理,將轉換的溫度數值以串口形式發(fā)送給控制器。因此讓控制器機按照DS1820的通信協(xié)議用一個I/O口模擬DS1820的時序[4],發(fā)送命令(初始化命令、ROM命令、功能命令)給DS1820,并讀取溫度值,單片機進行相應的數值處理[5],控制字符型液晶模塊顯示室內的溫度。由于要求系統(tǒng)能夠發(fā)送數據還能夠接收發(fā)送來的數據,系統(tǒng)總體由發(fā)送模塊與接收模塊兩部分組成。這樣系統(tǒng)就完成了采用ZigBee技術無線傳輸模塊xbee把采集到的數據通過自動組網方式傳輸到接收模塊,接收模塊經過單片機數據處理,把接收到的數據顯示到液晶模塊。2.2發(fā)送模塊框圖發(fā)送模塊有AVR單片機控制溫度傳感器,把得到的數據經過處理后,一方面控制顯示器顯示出來,另外控制采用ZigBee技術的無線模塊發(fā)送出去,從而實現溫度數據的發(fā)送。發(fā)送模塊的框圖設計如圖1所示。液晶顯示單片機液晶顯示單片機無線模塊溫度傳感器圖1發(fā)送模塊框圖設計2.3接收模塊框圖AVR單片機把通過xbee模塊接收到的數據,通過數據處理后控制液晶顯示模塊將數據顯示出來設計框圖如圖2所示。液晶模塊單片機液晶模塊單片機無線模塊圖2接收模塊框圖3發(fā)送模塊的軟件設計本部分要完成溫度的采集,把得到的數據顯示出來同時將數據發(fā)射出去,其整體流程如圖3所示,當開始后首先控制溫度的采集,然后將溫度數據顯示出來,并發(fā)送出去,按此操作順序循環(huán)下去。3.1溫度采集軟件設計溫度傳感器采用了DS1820,信息通過單線接口進入DS1820,因此從中央處理器[7]到DS1820僅需一條線(和地)讀寫和溫度轉換所需的電源可從數據線本身獲得,而不需要外接電源,使用比較方便。由于DS1820與單片機的連接只有一條線,沒有專門的數據端口與控制端口,單片機需要按照訪問單總線接口DS1820的協(xié)議,才能獲得溫度數據。訪問時序如下:(1)初始化(2)對ROM操作命令(3)存儲器操作命令(4)處理數據本設計中溫度傳感器DS1820僅一個且采用外電源供電。單片機對DS1820的控制操作如下表1示,把表1轉換為溫度采集的整體流程如圖4所示。采集溫度數據顯示和發(fā)送采集溫度數據顯示和發(fā)送開始圖3發(fā)射模塊的整體流程3.1.1初始化流程單總線上的所有處理均從初始化序列開始,初始化序列包括主機發(fā)出一系列復位脈沖,接著從屬器件發(fā)出存在脈沖。(其脈沖如圖5)一旦主機發(fā)現從器件存在它便發(fā)出ROM命令。表1溫度采集指令主機方式數據(LSB在先)注釋TXCCHSkipROM(跳過命令)TX44HConvertT(溫度變換)命令RX(1個數據字節(jié))讀“忙”標志3次。主機一個接一個連續(xù)讀一個字節(jié)(或位)直至數據為FFH(全部為1)為止。TXReset(復位)復位脈沖RXPresence(存在)存在脈沖TXCCHSkipROM(跳過ROM)命令TXBEHReadScratchpad(讀暫存存儲器)命令RX(9個數據字節(jié))讀整個暫存存儲器TXReset(復位)復位脈沖XRresence(存在)存在脈沖,操作完成開始初始化18b20跳過讀序列號的操作(skip命令)開始初始化18b20跳過讀序列號的操作(skip命令)啟動溫度轉換(約定代碼44h)轉換等待(至少2s)初始化跳過讀序列發(fā)出讀溫度寄存器命令接收數據數據處理結束圖4溫度采集流程圖等待15~60us等待15~60us主機初始化低電平480us~960us主機初始化低電平480us~960us18b20回應60~240us圖5DS1820復位與存在脈沖主機先發(fā)出一個在480us到960us的低電平,然后等待15us到60us若主機接收到60us到240us的低電平,說明從器件應答存在,如圖5所示。單片機的PB7端口與DS1820的DQ端口相連接,要實現始化需PB7口輸出如圖5的脈沖。初始化的流程如圖6所示,當給出初始化脈沖后,等待60至260us后,如果收到高電平說明初始化成功,否則失敗[8],程序見附錄。3.1.2ROM操作命令所有ROM操作命令均為八位長。這些命令有:ReadRom(讀ROM),MatchRom,SkipRom等五種共有ROM操作命令,由于此模塊僅連接一個DS1820,可以不使用這些命令,不再詳述。3.1.3存儲器操作命令存儲器的操作命令如表2所示。由于溫度傳感器僅有一個且采用外部電源,本設計可采用的命令有以下這些[10]:(1)Skip(“跳過”ROM)[CCH]此命令允許不提供64位ROM編碼而訪問存儲器來節(jié)省時間。但如果存在多個從器件,當skip命令發(fā)出之后,那么由于多個從器件同時發(fā)出數據,會在總線上發(fā)生沖突(產生線與)。(2)ConvertT[44H]溫度變換命令、啟動溫度變換,溫度轉換大概需要2秒。(3)ReadScratchpad[BEH]讀暫存存儲器。讀開始于字節(jié)零,并繼續(xù)經過暫存寄存器,直至第九個字節(jié)被讀出為止。如果有的存儲器不讀,那么主機可隨時發(fā)出復位命令以中止讀操作。(4)寫暫存存儲器[4EH],寫字節(jié)至暫存存儲器地址2和3處(TL和TH溫度觸發(fā)器)。(5)復制暫存存儲器[43H],把暫存存儲器復制入非易失性存儲器(僅地址2和地址3)。PB7作輸入口開始PB7作輸入口開始延遲60~240us端口PB7作輸出口延遲60~240us端口PB7作輸出口YPB7高電平輸出YPB7高電平輸出DINB7=1?DINB7=1?失敗PB7低電平輸出480u失敗PB7低電平輸出480us~960usNN初始化成功PB7輸出高電平15us~60us初始化成功PB7輸出高電平15us~60us圖6DS1820初始化流程圖3.1.4寫命令流程要控制溫度傳感器DS1820獲取的溫度數據,就需要向DS1820寫入一系列的命令,寫時序如圖7所示,當主機把數據線從高電平拉至低電平時,產生寫時間片。寫時間片有兩種類型:寫1時間片和寫0時間片。所有的時間片必須有60ms持續(xù)期,在個寫周期之間須有1us的回復時間。在I/O線由高電平拉至低電平之后,DS1820在15us至60us的時間窗口對I/O線采樣,如果線為高電平,寫1就發(fā)生,為低電平寫0就發(fā)生,寫時序的流程如圖8,在寫流程中可用一個for循環(huán)來判斷是否共有八次,從而完成一個命令代碼字節(jié)的發(fā)送,在每發(fā)送一位后都要讓PB7拉高單總線,為寫下一位做好準備,程序見附錄。表2存儲器操作命令指令說明約定代碼發(fā)出約定代碼后單總線的操作溫度變換命令溫度變換啟動溫度變換44H讀溫度“忙”狀態(tài)存儲器命令讀暫存存儲器從暫存存儲器讀字節(jié)BEH(讀9字節(jié)數據)寫暫存存儲器寫字節(jié)至暫存存儲器地址2和3處(TH和TL溫度觸發(fā)器)4EH(寫數據至地址2和地址3的2個字節(jié))復制暫存存儲器把暫存存儲器復制入非易失性存儲器(僅地址2和地址3)43H(讀復制狀態(tài))重新調出E2把儲存在非易失性存儲器內的數值重新調入暫存存儲器(溫度觸發(fā)器)E3H(讀溫度“忙”狀態(tài))讀電源發(fā)DS1820電源方式的信號至主機B4H(讀電源狀態(tài))15us15us15us15us30usDs1820samples15us15usDs1820samples30usMasterwrite0slotMasterwtrite1slot>1u圖7單片機向DS1820寫命令時序3.1.5讀數據流程當溫度轉換好后要把數據從DS1820的存儲器中讀出來,讀時序如9所示。從DS1820讀數據時主機產生讀時間片,當主機把數據線從邏輯高電平拉至低電平時,產生讀時間片。數據線必須把低邏輯電平保持至少1us,來自DS1820的數據在讀時間片下降沿之后15us有效。因此,從讀時間片開始主機一共必須保持至少15us的低電平。讀時間片結束后,I/O線有外部的上拉電阻拉至高電平。所有讀時間片最短維持周期為60us,每個讀時間片之間至少需1us的回復時間,讀時序的流程如圖10所示,讀流程中PB7端口將總線拉低開始數據的讀取,等待15us后,讀總線上的電平,在判斷為高電平后將由dat|=0x01將dat的最低位置1而不改變其它位,在每讀取一位后,將dat中的數據左移一位,同時在每讀取一位后應留有至少1us的恢復時間。程序見附錄。PB7端口輸出0要寫的命令位為1?PB7端口輸出0要寫的命令位為1?PB7端口輸出高電平PB7端口輸出低電平延時15-60ms命令左移一位發(fā)送了8位寫結束YNYNPB7輸出1圖8單片機向DS1820寫命令流程圖圖9單片機讀DS1820時序3.1.6溫度數據的處理由于溫度數據以16位、二進制補碼的讀數形式提供,在讀取溫度數據后,要對其進行處理才能進一步使用,這里要讀出兩個字節(jié)a與b,第一個字節(jié)a的低四位是溫度的小數位信息,高四位是溫度整數信息的低四位。第二個讀出的字節(jié)b高五位,位全1的話表示是負溫度,全為0標是正溫度。b的低三位是溫度數位。這樣b的低三位與a的高四位組成了溫度的整數位[9]。溫度數據處理程序流程如圖11所示,流程圖中的fsbz為負數標志位,其為1時表示溫度值為負,為0時表示溫度值為正。至此完成了溫度采集的整體過程,程序見附錄。NNNNYYdat|=0x01延時至少1usPB7端口輸出低電平延時至少15us將dat中數據左移一位判斷單總線是否為高電平開始是否讀入8位讀結束圖10單片機讀DS1820時序流程b[7:3]都為1b左移四位,a右移四位后b|=a,fsbz=0a取反,b取反,fsbz=1b[7:3]都為1b左移四位,a右移四位后b|=a,fsbz=0a取反,b取反,fsbz=1b左移四位,a右移四位后b|=a,b-=1返回bNY讀出a與b圖11溫度數據處理流程圖3.2顯示控制軟件設計當采集到溫度數據后要把溫度顯示出來,顯示器件采用TM12864,TM12864是128*64液晶陣列,對TM12864的控制是通過指令加數據的方式進行的,這些控制信號包括讀/寫(R/W)信號,數據/指令(RS)信號,數據總線(DB0-DB7)組成[11]。3.2.1TM12864指令TM12864的指令可分為三類:(1)設置內部RAM地址的指令(2)向內部RAM寫入或讀出的指令(3)其它指令在普通的使用中,第二類指令使用的較為頻繁。由于在讀取或寫入數據后,RAM的Y地址會自動的加一,編程代碼將會縮短。但是指令在執(zhí)行指令期間,它不能接收另外的指令,因此在每次發(fā)送指令前應確定其閑忙狀態(tài),以確保指令可被執(zhí)行。3.2.2指令的數據格式與功能指令的數據格式如下表3所示:表3指令數據格式編碼格式顯示ON/OFF000011111D顯示起始行0011顯示起始行(0…63)設置X地址0010111X:0…7設置Y地址0001Y地址(0...63)讀狀態(tài)10Busy0On/OffRest0000寫顯示數據01顯示數據讀顯示數據11顯示數據下面對其指令詳細介紹如下:(1)顯示開/關當D為1是LCD將顯示數據,D為0時LCD不顯示數據,LCD不顯示數據并不是說RAM中的數據消失。因此可有D來控制顯示的開和關。(2)顯示起始行設置在顯示開始行寄存器中的Z地址所對應RAM地址中的數據會被顯示在屏幕的頂端,此命令可用于動態(tài)顯示。(3)設置葉(X地址)當要顯示的RAM數據的地址設置在X地址寄存器后,寫或讀數據都在該設定葉中進行。(4)設置Y地址當把要操作的RAM的Y地址寫入Y地址計數器后,對RAM的讀寫操作Y地址計數器會自動加1。(5)讀狀態(tài)指令當在讀狀態(tài)中如果發(fā)現Busy(DB7)為1,說明LCD系統(tǒng)處于忙狀態(tài),此時不能接收其它指令,因此在每一次發(fā)送指令前應判斷是否處于空閑狀態(tài)。如果ON/OFF位(DB5)為1,說明處于顯示開狀態(tài),為0時關狀態(tài)。Reset位(DB4)為1表面系統(tǒng)正被初始化,此時除了讀狀態(tài)指令外其它指令不可被執(zhí)行,為0表示初始化已完成。(6)寫顯示數據指令將要顯示的字符數據寫入指定的RAM地址中。3.2.3寫時序及相關操作流程知道了命令格式及其用途后,就可以根據寫時序向TM12864發(fā)出相關命令。單片機的寫時序如圖12所示,可見在E的下降沿DB0_7被讀入。TdsuR/WWWTdsuR/WWWEDB0-7TwhTwlCS1B,CS2BCS3RStc圖12單片機向TM12864寫時序前四個指令的R/W和D/I相同都位0,對這四個指令可編寫一個寫指令函數以下為實現以上命令的調用,其流程如圖13所示:在寫命令流程中的,檢測TM12864是為了了解是否忙,是的話要一直等待直到空閑為止,最后一步是為了產生E的下降沿,程序見附錄。設寫命令函數為write_inst(),那么可用一下方式調用:(1)如果要輸出顯示開/關指令,則調用write_inst(0x3e+i),其中i==1時為開i==0時為關。(2)設置起始行可調用wrist_inst(0xc0+x),x為起始顯示的RAM地址。(3)設置RAM的X地址write_inst(0xb8+x)。X地址即葉地址,八行RAM為一葉。(4)RAM的Y地址write_inst(0x40+Y),當葉地址設定后每當一次讀寫后Y地址自動加一。檢測TM12864是否忙,忙則等待R/W=0,RS=0,寫命令檢測TM12864是否忙,忙則等待R/W=0,RS=0,寫命令PA輸出相應命令E=1延時E=0開始圖13單片機向TM1864寫命令時序圖RAM地址中的X與Y的結構如圖14所示:圖14顯示RAM地址結構對于寫顯示數據的流程只要將寫指令流程中的RS=0改為RS=1既可。3.2.4讀時序及相關流程對TM12864的操作有時要讀出其內部數據,了解它的工作狀態(tài),其讀時序如圖15所示:tDUSR/WWWEtDUSR/WWWEDB0-7TwhTwlCS1B,CS2BCS3RStc圖15單片機向TM12864讀數據時序由讀時序可得出讀顯示數據的流程如圖16所示:圖16單片機向TM12864讀數據時序流程對于讀顯示數據在指定了地址后要有一個假的讀操作,以使數據鎖存在輸出緩沖器中。在每一次對TM12864操作都要判斷其是否處于忙狀態(tài),可用讀狀態(tài)解決,讀出的第七位為1表示忙,為0表示空閑,程序見附錄。這一判斷過程可用流程圖17表示:圖17單片機讀TM12864狀態(tài)的流程圖有了寫指令、讀顯示數據、讀狀態(tài),就能夠指定顯示的內容和在屏幕何處顯示,同時還可知道TM12864的工作狀態(tài),組成LCD的顯示控制函數,程序見附錄。3.2.5顯示一個字形的控制流程要顯示字符首先要有一個字模,字符以8*16的形式顯示,以下為實現顯示字符的流程如圖18所示:X地址<64?選中左屏X地址<64?選中左屏選中右屏設置行地址設置寫地址寫入要顯示字符的字模開始寫完兩頁結束NYNY圖18單片機控制TM12864顯示一個字符的流程圖由于是以8*16形式顯示,因此要有兩頁來表示,每個字模有16個字節(jié)組成,程序見附錄。3.3數據發(fā)送軟件設計數據的無線收發(fā)采用xbee模塊,xbee是美國Maxstream公司基于ZigBee技術的一個無線傳輸模塊,該模塊使用起來非常簡單,只需要簡單的把數據輸入到一個xbee模塊,數據就能自動地被發(fā)送到無線連接的另一端,同時也支持AT命令進行高級配置,此模塊通過異步串行端口與其它設備連接,通過其串行端口,模塊可與任何兼容的UART邏輯和電壓的設備通信[11]。3.3.1xbee模塊xbee內部工作原理圖如19所示圖19Xbee模塊內部數據無線鏈路上總是半雙工式通信,用一條天線作發(fā)射或接收,但兩者并非在同一時間工作。不過,xbee模塊可以通過分時的方式達到UART端的同時發(fā)射和接收(全雙工模式)。數據由DIN端口進入串行接收緩沖,接著進入RFTX緩沖有transmitter經天線發(fā)射出去。3.3.2單片機與向Xbee模塊的通信要讓xbee模塊把數據發(fā)送出去首先要做的就是把數據送入xbee模塊,數據通過DIN端口以異步的串行信號進入模塊UART。節(jié)下來xbee模塊就自動把數據發(fā)送出去,沒有數據傳輸時DIN信號保持高電平。下圖20描繪了流經模塊的數據位操作模式,通過UART發(fā)送一個UART數據包0x1F1111100011111000SignalVoltageStartbitStopbittimevoltage圖20數據位操作模式xbee模塊留置少量緩沖以收集收到的串行和RF數據,串行接收緩沖收集流入的串行字符,并保留直到它們被處理為止。串行數據通過RF進入模塊時,數據將被保存在串行接收緩沖器中直到它被處理,在一定條件下可能不能立即處理大量數據,這時需要用CTS流控避免串行接收緩沖溢出。如果使用CTS流控制,當串行緩沖是17字節(jié)時,模塊取消CTS(拉高),讓主機停止發(fā)送數據。串行緩沖有34個字節(jié)數據空間時,將重設CTS。由于單片機與xbee模塊的通過UART方式進行,單片機與xbee模塊應有相同的baud率并且數據格式也應一樣,這也是數據發(fā)送的關鍵處。流程如圖22所示。4接收模塊的軟件設計接收模塊有xbee,單片機,液晶顯示三部分組成。其大部分與發(fā)送模塊相同,惟一不同的是xbee模塊從發(fā)送變?yōu)榻邮?,接收數據后控制TM12864顯示出來其整體流程如圖21所示。接收數據顯示數據接收數據顯示數據開始圖21接收模塊流程開始后控制xbee接收數據,然后顯示出來,按此順序循環(huán)。設定baud率為9600/CTS是否為1設定baud率為9600/CTS是否為1YN等待,停止發(fā)送數據發(fā)送數據發(fā)送完畢?結束/RTS=1/RTS=0YN開始建立鏈接YN圖22單片機向xbee發(fā)送數據流程圖4.1數據的接收接收數據時xbee模塊的內部數據流為數據先進入Receiver再進入RFRXbuffer,最后有單片機發(fā)出RTS流控,將數據讀入單片機。如果使用RTS流控制,只要RTS處于取消設置狀態(tài)(拉高),串行傳輸緩沖器中的數據不會被送出DOUT端口。若RTS取消長時間傳位傳輸緩沖器會溢出,造成其它數據丟失,數據的接收流程如23所示程序見附錄。設定baud率為9600接收數據設定baud率為9600接收數據接收完畢?結束/RTS=1YN建立鏈接YN/RTS=0開始圖23單片機從xbee接收數據的流程/RTS流控信號有單片機發(fā)出,當/RTS為0是告知xbee模塊單片機要讀取數據,而/CTS流控信號有xbee模塊發(fā)出,當/CTS為1時告知單片機停止向xbee模塊發(fā)送數據。4.2數據的顯示仍然采用TM12864完成所接收數據的顯示,其原理與控制過程與發(fā)送模塊部分的相同,不再贅述。5系統(tǒng)仿真及調試5.1Xbee模塊的參數設置xbee模塊在正常工作之前必須進行相應的設置。對xbee模塊的設置既可以按照xbee手冊介紹的AT指令,通過串行終端完成,也可以借助X-CTU這一工具來完成,這里用X-CTU比較方便[12]。在用USB電纜將Ardino與PC機連接好之后,運行X-CTU軟件。在“PCSettings”中里選擇對應的通信端口,并設置好波特率等參數。xbee模塊出廠默認的設置為9600,8,N,1,如圖24所示。圖24默認設置單擊“Test/Query”按鈕,來測試是否能夠正確地連接上xbee模塊。如果通信正確,點擊“Query”如圖25所示圖25鏈接正常確認對話框測試正常之后轉到“ModemConfiguration”。首先單擊“ModemParametersandFirmware”中的“Read”按鈕讀出xbee模塊中的當前參數,接著讀出的“Networking&Security”中將“Channel”設置為“C”,將“PANID”設置為“1234”。如圖26所示。圖26PANID設置點擊“SerialInterfacing”中將“BD–BaudRate”設置為頻率為9600,如圖27所示。圖27baud率設置5.2仿真與調試程序的編譯環(huán)境為ICCV7forAVR,系統(tǒng)的軟件調試采用程序分塊調試的原則,首先把系統(tǒng)分為系統(tǒng)的主程序模塊,ZigBee無線收發(fā)的調試,溫度數據顯示程序。對程序進行從局部到全面的調試。以下為系統(tǒng)調試的主要方法:(1)系統(tǒng)軟件按照功能劃分模塊,對各個模塊或者子函數逐個單一調試運行,并且檢查運行的準確性。(2)額外編寫獨立的測試子程序單獨測試個別子功能模塊準確性和合理性。(3)將程序中設置標記,以便為調試各個模塊程序和測試運行狀態(tài)提供方便,以便檢驗程序運行結果。軟件的仿真采用Proteus[13]仿真結果如28圖示,有mega16,DS1820和TM12864組成,仿真結果表明,可以將溫度數據讀出,并且TM12864顯示了出來,達到了設計效果。圖28仿真結果接下來調試xbee模塊,1號PC機通過串口調試助手經Xbee模塊將數據發(fā)送出去,2號PC機上的xbee模塊接收發(fā)出的數據由串口調試助手顯示出來。調試助手接收數據串口選擇COM3端口,波特率9600,數據位8,停止位1,校驗位和流量控制NONE,選擇十六進制顯示。發(fā)送數據如圖29所示。圖29調試助手發(fā)送數據xbee通過自動組建網絡的功能,將1號PC機發(fā)送的數據傳輸到2號PC機,接收到得數據如圖30所示。圖30調試助手接收數據至此完成了溫度數據的采集、顯示、發(fā)送與接收的仿真,參數的設置,證明了設計的正確。結束語至此基于ZigBee的無線溫度采集單元的軟件設計已完成。本系統(tǒng)的特點就是采用了ZigBee技術,因此它耗電少,通信的安全性與可靠性好,使用起來比較方便,不受供電與場地的限制,可方便的采集溫度。設計采用Mega16單片機作為控制器,利用數字式DS1820作為溫度傳感器,同時采用TM12864對采集到的數據進行顯示,xbee模塊作為無線的接收與發(fā)射模塊。數字式溫度傳感器DS1820和單片機以單總線方式連接,使用方便。Mega16按照DS1820的通信協(xié)議,便可得到DS1820轉換后的溫度數據。TM12864為128*64的液晶顯示模塊,Mega16按其操作指令對其進行讀寫便可顯示所需數據。單片機與xbee模塊以UART方式傳輸數據,使用方便。用C語言實現對Mega16編程,從而實現對溫度的采集、顯示與傳輸,它還具有很大的擴展性,可以完成多個地點的溫度采集與匯總。參考文獻[1]李文忠、段朝玉.Zibgbee無線網絡技術入門與實戰(zhàn).北京:北京航天航空大學出版社,2008年4月[2]李文忠、段朝玉.CC1110/CC2510無線單片機和無線自組織網絡入門與實戰(zhàn).北京:北京航天航空大學出版社,2008年4月[3]李朝青.單片機原理與接口技術.北京航天航空大學出版社,1995年7月[4]謝俊.單片機C語言編程與實踐.北京:電子工業(yè)出版社,2009年8月[5]周向紅.51系列單片機應用與實踐教程.北京:北京航空航天大學出版社,2008年5月[6]楊將新.單片機程序設計及應用.北京:電子工業(yè)出版社,2006年3月[7]張越,張炎,趙延軍.基于DS18B20溫度傳感器的數字溫度計[J].微電子學,2007[8]譚浩強.C程序設計.北京:清華大學出版社,2005年[9]周慈航.單片機應用程序設計技術.北京:北京航空航天大學出版社,1991年[10]DS1820單總線數字溫度計.http://www.qfm[11]SpecificationForLcdModule,ModelNo.TM12864_Z.[12]ZigBeeSpecification2006..[13]Proteus中文使用書冊附錄(1)DS180初始化程序voidInit_DS18B20(void){unsignedcharx=0;DDRB|=0x01;//PORTB.0作為輸出口PORTB|=(1<<0);//portb.0輸出低電平,復位delay(8);//稍做延時PORTB&=~(1<<0);//單片機將1820的DQ拉低delay(80);//精確延時大于480usPORTB|=(1<<0);//拉高DQdelay(10);DDRB&=0x00;//portb作輸入x=PORTB;//稍做延時后如果x=0則初始化成功x=1則初始化失敗delay(5);}(2)寫字節(jié)函數voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--)//8次給出一個字節(jié){DDRB|=0X01;//port.0為輸出口PORTB&=~(1<<0);//把數據線拉底產生寫時間片if(dat&0x01)//判斷要發(fā)送的數據是1還是0PORTB|=(1<<0);elsePORTB&=~(1<<0);delay(5);PORTB|=(1<<0);//拉高,供電dat>>=1;//右移一位}delay(5);}(3)讀字節(jié)函數unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DDRB|=0X01;//protb.0設為輸出口PORTB&=~(1<<0);//給脈沖信號,dat<<=1;//向左移一位PORTB|=(1<<0);//給脈沖信號DDRB&=~(1<<0);//protb.0設為輸入口if(DINB&0X01)//判斷讀入的是1還是0dat|=0x01;delay(5);}return(dat);}(4)寫命令函數voidwrite_inst(uchardata){ceck_busy();//是否忙狀態(tài)DDRB|=0X07;//PB.0/1/2腳設置為輸出PORTB|=(1<<1);//R/W=1寫狀態(tài)PORTB&=~(1<<0);//RS=0指令DDRA=0xff;//porta作輸出口PORTA=data;PORTB|=(1<<2);//E=1,產生E的一個下降沿,讓data所存在輸入寄存器中PORTB&=~(1<<2);//E=0}(5)讀數據函數ucharrada_dat(void){uchardata;ceck_busy();DDRA=0x00;//設置PA為輸入口DDRB=0x07;PORTB|=(1<<1);//R/W=1寫狀態(tài)PORTB|=(1<<0);//RS=1PORTB|=(1<<2);//E=1,產生E的一個下降沿,讓data;所存在輸入寄存器中data=DINAPORTB&=~(1<<2);//E=0}(6)寫數據函數voidwrite_dat(uchardata){uchardata;ceck_busy();DDRA=0xff;//設置PA為輸出口DDRB=0x07;PORTB&=~(1<<1);//R/W=1寫狀態(tài)PORTB|=(1<<0);//RS=1PORTB|=(1<<2);//E=1,產生E的一個下降沿,讓data;所存在輸入寄存器中PA=data;PORTB&=~(1<<2);//E=0}(7)讀狀態(tài)函數voidceck_busy(){DDRA=0x00;//PA設為輸入delay(100); DDRB=0x07;PORTB|=(1<<1);//R/W=1寫狀態(tài)PORTB&=~(1<<0);//RS=0指令PORTB|=(1<<2);while(0x80&DINA){;}//忙時循環(huán)等待PORTB&=~(1<<2);}(8)顯示一個字節(jié)的函數voiddisp_char(unsignedcharx,unsignedchary,unsignedcharascii){unsignedchari=0x00;constunsignedchar*q; /*取字庫指針*/ascii-=0x20;q=&ENGLISH_FONT[ascii*16]; /*定位指針地址*/i=0x00;/*顯示高8位*/ if(x<64)/*地址在左半屏范圍內*/{cs1_1;cs2_0
; write_inst(y|0xB8);write_inst(x|0x40);while(i<8){write_data(*q);q++;x++;i++;if(x>63)/*判斷地址是否越界*/{break;}}}if(i<8)/*地址進入右半屏范圍*/{cs1_0;cs2_1LCD1_write_com(y|0xB8);LCD1_write_com(x|0x40);while(i<8){LCD1_write_data(*q);q++;x++;i++;}}/*顯示低8位*/i=0x00;x-=8;if(x<64)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物標志物指導EGJ腺癌免疫聯(lián)合治療策略
- 生物標志物在藥物臨床試驗中的多學科協(xié)作
- 生物材料導管與再生修復的協(xié)同策略
- 生物打印技術在心臟組織工程中的挑戰(zhàn)
- 生物化學虛擬實驗與科研方法培養(yǎng)
- 生物制品穩(wěn)定性試驗生物傳感器應用
- 生物制劑失應答的炎癥性腸病精準醫(yī)療實踐
- 游戲體驗與娛樂項目管理要點及面試題目參考
- 工業(yè)制造領域的數據分析師招聘題目
- 深度解析(2026)《GBT 19529-2004技術信息與文件的構成》
- 2025天津宏達投資控股有限公司及所屬企業(yè)招聘工作人員筆試備考試題及答案解析
- 統(tǒng)編版高中語文選擇性必修中冊《為了忘卻的記念》課件
- 含微生物有機無機復合肥料編制說明
- 溝通的藝術(湖南師范大學)學習通網課章節(jié)測試答案
- 煤礦下井車司機培訓課件
- 強夯機安全操作知識培訓課件
- 和田玉培訓知識課件
- 系統(tǒng)接口結構解析
- 知道智慧樹材料與社會-探秘身邊的材料滿分測試答案
- 國家開放大學人文英語3學習行為評價范文
- (高清版)DB4206∕T 94-2025 檢驗檢測機構標準物質與標準溶液 管理規(guī)范
評論
0/150
提交評論