基于單片機的溫度采集系統(tǒng)的設(shè)計論文_第1頁
基于單片機的溫度采集系統(tǒng)的設(shè)計論文_第2頁
基于單片機的溫度采集系統(tǒng)的設(shè)計論文_第3頁
基于單片機的溫度采集系統(tǒng)的設(shè)計論文_第4頁
基于單片機的溫度采集系統(tǒng)的設(shè)計論文_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、畢業(yè)設(shè)計(論文) 基于stc8952單片機的溫度采集系統(tǒng)設(shè)計stc8952-based mcu design of the temperature acquisition system 摘要單片機已在各行業(yè)得到廣泛應(yīng)用,為適應(yīng)更多的應(yīng)用領(lǐng)域,廠家采取了在一塊單片機芯片上集成多種功能部件和大容量存儲器的方法。因而,整個應(yīng)用系統(tǒng)不需要擴展,而體積變小、可靠性增高,使單片機成為真正意義上的單片機系統(tǒng)。本設(shè)計是基于stc89c52單片機和ds185b20實現(xiàn)溫度的測量系統(tǒng),單片機在本系統(tǒng)中作為溫度輸入和顯示控制器件,ds18b20被用作溫度數(shù)據(jù)的采集和溫度輸出器件。本系統(tǒng)采用單總線操作,線路簡單,測量

2、值精確,可實現(xiàn)多點測量,并對溫度超過限制值,產(chǎn)生報警和數(shù)據(jù)采集。本系統(tǒng)被廣泛應(yīng)用于溫度控制、溫度檢測、溫度采、消防等系統(tǒng)中。關(guān)鍵詞 單片機;數(shù)據(jù)轉(zhuǎn)換;溫度顯示;目 錄1 緒論11.1 本系統(tǒng)功能11.1.1 溫度測量功能11.1.2 溫度采集功能11.1.3 系統(tǒng)工作流程11.2 本系統(tǒng)優(yōu)點21.2.1 線路簡單21.2.2溫度精確22 系統(tǒng)硬件介紹22.1本系統(tǒng)硬件和軟件組成22.1.1 硬件組成22.1.2軟件組成22.2 stc單片機介紹32.2.1 stc單片機功能介紹32.3 ds18b20數(shù)字溫度傳感器介紹62.3.1 功能介紹62.3.2 ds18b20溫度傳感器是存儲器82.3

3、.3 ds18b20內(nèi)部邏輯圖102.3.4 ds18b20溫度傳感器讀寫時序102.3.5 ds18b20存儲器操作命令122.4 74hc573鎖存器說明132.4.1 74hc573管腳功能圖132.4.2 74hc573管腳功能132.5顯示模塊說明142.5.1 71led數(shù)碼管內(nèi)部結(jié)構(gòu)142.5.2共陽數(shù)碼管數(shù)字編碼153 程序的編寫與調(diào)試153.1 程序的編寫153.1.1 新建工程163.1.2編寫程序163.2 程序的調(diào)試174 系統(tǒng)原理圖的繪制184.1 繪制原理圖庫184.1.1軟件啟動184.1.2繪制原理圖元件194.2 繪制pcb庫194.2.1 繪制pcb元件20

4、4.3 系統(tǒng)完整原理圖205 系統(tǒng)pcb圖215.1 為覆銅pcb圖215.2覆銅pcb圖216 系統(tǒng)工作過程226.1 溫度的測量226.2 溫度的采集237 程序框圖及c語言程序247.1溫度采集系統(tǒng)原理框圖247.1.1溫度顯示模塊247.1.2讀溫度子程序257.1.3溫度轉(zhuǎn)換子程序257.1.4計算溫度子程序267.2溫度采集系統(tǒng)c語言程序26結(jié)論35致謝36參考文獻371 緒論1.1 系統(tǒng)功能1.1.1 溫度測量功能利用ds18b20數(shù)字溫度傳感器實現(xiàn)對溫度進行準(zhǔn)確的測量,使溫度值顯示到數(shù)碼管上。1.1.2 溫度采集功能利用ds18b20數(shù)字溫度傳感器進行溫度的采集,單片機作為控制

5、器件,數(shù)據(jù)通過串口(rs232)傳至計算機,進行溫度的采集。1.1.3系統(tǒng)工作流程,見圖1-1系統(tǒng)上電初始化ds18b20進行數(shù)據(jù)的采集并將數(shù)據(jù)以二進制的形式傳至單片機單片機對數(shù)據(jù)進行處理數(shù)碼管進行溫度顯示通過串口將數(shù)據(jù)傳至計算機圖1-1系統(tǒng)工作流程1.2 本系統(tǒng)優(yōu)點1.2.1 線路簡單ds18b20與單片機之間一根導(dǎo)線進行數(shù)據(jù)傳輸,不需要對數(shù)據(jù)進行轉(zhuǎn)換,接線簡單。1.2.2 溫度測量準(zhǔn)確ds18b20的溫度分辨率為0.0625,所以對溫度值可以進行準(zhǔn)確的溫度轉(zhuǎn)換。2系統(tǒng)硬件介紹2.1系統(tǒng)硬件及軟件組成2.11硬件組成本系統(tǒng)所用的硬件有:見表2-1。表2-1系統(tǒng)硬件清單器件名稱數(shù)量stc89c

6、52單片機1個74hc573鎖存器2個led發(fā)光二級管8個蜂鳴器1個獨立鍵盤5個數(shù)碼管(兩個一組)2個三極管1個ds18b201個max233串口芯片1個電容若干電阻若干導(dǎo)線若干2.1.2軟件組成軟件有:keil軟件、windows操作系統(tǒng)和串口調(diào)試助手等軟件組成。2.2 stc單片機介紹單片機作為微型計算機的一個重要分支,其應(yīng)用范圍很廣,發(fā)展也很快。1971年intel公司首次宣布4004的4位微處理器,1974年12月fairchild(仙童)公司即推出了8位單片機f8,開創(chuàng)了單片機的門戶。單片機在我國的應(yīng)用始于20世紀(jì)70年代末,那時我國的科研工作者開始對單片機的應(yīng)用進行了初期探索,20

7、世紀(jì)80年代,單片機在我國得以廣泛的應(yīng)用,各理工科院校陸續(xù)開設(shè)了有關(guān)應(yīng)用課程。在教學(xué)及應(yīng)用上,zilog公司生產(chǎn)的z80cpu成為我國工業(yè)控制的主流,以z80為cpu組成的tp801單板機在教學(xué)上及應(yīng)用領(lǐng)域發(fā)揮過巨大作用。20世紀(jì)80年代末至90年代初,我國在工業(yè)控制領(lǐng)域開始轉(zhuǎn)向使用intel公司生產(chǎn)的mcs-51。單片機從1976年公布8位機至今不到30年的時間,它沒有像微處理器那樣從8位、16位,一直發(fā)展到32位、64位,8位機目前依然是單片機的主流機型。但是,它突破了原有的集成結(jié)構(gòu),在內(nèi)部繼承了越來越多的外圍電路和外設(shè)接口,從而發(fā)展成為控制器(microcontroller)的體系結(jié)構(gòu),

8、其發(fā)展歷程大致分為以下幾步:第一階段:單片機的控索階段第二階段:單片機的完善階段第三階段:8位單片機的鞏固發(fā)展及16位單片機的推出階段第四階段:微控制器的全面發(fā)展階段單片機已在各行業(yè)得到廣泛應(yīng)用,為適應(yīng)更多的應(yīng)用領(lǐng)域,廠家采取了在一塊單片機芯片上集成多種功能部件和大容量存儲器的方法。因而,整個應(yīng)用系統(tǒng)不需要擴展,而體積變小、可靠性增高,使單片機成為真正意義上的單片機系統(tǒng)2.2.1 stc單片機功能介紹單片機是隨著大規(guī)模集成電路的出現(xiàn)極其發(fā)展,將計算機的cpu,ram,rom,定時/計數(shù)器和多種i/o接口集成在一片芯片上,形成了芯片級的計算機,因此單片機早期的含義稱為單片微型計算機(single

9、 chipmicrocomputer).它擁有優(yōu)異的性價比、集成度高、體積小、可靠性高、控制功能強、低電壓、低功耗的顯著優(yōu)點.主要應(yīng)用于智能儀器儀表、工業(yè)檢測控制、機電一體化等方面,并且取得了顯著的成果.單片機應(yīng)用系統(tǒng)可以分為:(1)最小應(yīng)用系統(tǒng)是指能維持單片機運行的最簡單配置的系統(tǒng)。這種系統(tǒng)成本低廉,結(jié)構(gòu)簡單,常構(gòu)成一些簡單的控制系統(tǒng),如開關(guān)狀態(tài)的輸入/輸出控制等。片內(nèi)有rom/eprom的單片機,其最小應(yīng)用系統(tǒng)即為配有晶振,復(fù)位電路,電源的單個單片機.片內(nèi)無rom/eprom的單片機,其最小應(yīng)用系統(tǒng)除了外部配置晶振,復(fù)位電路,電源外,還應(yīng)外接eprom或eeprom作為程序存儲器用.(2)

10、最小功耗應(yīng)用系統(tǒng)是指為了保證正常運行,系統(tǒng)的功耗最小.(3)典型應(yīng)用系統(tǒng)是指單片機要完成工業(yè)測控功能所必須的硬件結(jié)構(gòu)系統(tǒng)。stc89c52 是一種低功耗、高性能 cmos8 位微控制器,具有8k 在系統(tǒng)可編程 flash 存儲器。使用 atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80c51產(chǎn)品指令和引腳完全兼容。片上 flash 允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的 8 位 cpu 和在系統(tǒng)可編程 flash,使得 stc89c52 為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。stc89c52 具有以下標(biāo)準(zhǔn)功能: 8k 字節(jié) flash,256

11、 字節(jié) ram,32 位 i/o 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個 16 位定時器/計數(shù)器一個 6 向量 2 級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,stc89c52 可降至 0hz 靜態(tài)邏輯操作,支持 2 種軟件可選擇節(jié)電模式。空閑模式下,cpu停止工作,允許 ram、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,ram 內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。2211引腳結(jié)構(gòu),見圖2-1圖2-1單片機封裝及引腳結(jié)構(gòu)2212內(nèi)部邏輯圖,見圖2-2圖2-2內(nèi)部邏輯圖2213 引腳功能描述vcc :電源gnd:地p0 口:p0 口是一

12、個 8 位漏極開路的雙向 i/o 口。作為輸出口,每位能驅(qū)動 8 個 ttl 邏輯電平。對 p0 端口寫“1”時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,p0 口也被作為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,p0 具有內(nèi)部上拉電阻。在 flash 編程時,p0 口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。p1 口:p1 口是一個具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p1 輸出緩沖器能驅(qū)動 4 個ttl 邏輯電平。對 p1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸

13、出電流(iil)。此外,p1.0 和 p1.2 分別作定時器/計數(shù)器 2 的外部計數(shù)輸入(p1.0/t2)和時器/計數(shù)器 2的觸發(fā)輸入(p1.1/t2ex),具體如下表所示。在 flash 編程和校驗時,p1 口接收低 8 位地址字。p2 口:p2 口是一個具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 輸出緩沖器能驅(qū)動 4 個ttl邏輯電平。對p2端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。在訪問外部程序存儲器或用 16 位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行 movx dptr)時, p2 口送出高

14、八位地址。在這種應(yīng)用中,p2 口使用很強的內(nèi)部上拉發(fā)送 1。在使用8 位地址(如 movx ri)訪問外部數(shù)據(jù)存儲器時,p2 口輸出 p2 鎖存器的內(nèi)容。在 flash 編程和校驗時,p2 口也接收高 8 位地址字節(jié)和一些控制信號。p3 口:p3 口是一個具有內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 輸出緩沖器能驅(qū)動 4 個ttl 邏輯電平。對 p3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。p3 口亦作為 stc89c52 特殊功能(第二功能)使用,如下表所示。在 flash 編程和校驗時,p

15、3 口也接收一些控制信號。rst:復(fù)位輸入。晶振工作時,rst 腳持續(xù) 2 個機器周期高電平將使單片機復(fù)位??撮T狗計時完成后,rst 腳輸出 96 個晶振周期的高電平。特殊寄存器 auxr(地址 8eh)上的 disrto 位可以使此功能無效。disrto 默認狀態(tài)下,復(fù)位高電平有效。ale/prog:地址鎖存控制信號(ale)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在 flash 編程時,此引腳(prog)也用作編程輸入脈沖。在一般情況下,ale以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ale 脈沖將會跳過。如果需

16、要,通過將地址為 8eh 的 sfr 的第 0 位置“1”,ale 操作將無效。這一位置“1”,ale 僅在執(zhí)行 movx 或 movc 指令時有效。否則,ale 將被微弱拉高。這個 ale 使能標(biāo)志位地址為 8eh 的 sfr 的第 0 位)的設(shè)置對微控制器處于外部執(zhí)行模式下無效。psen:外部程序存儲器選通信號psen是外部程序存儲器選通信號。當(dāng) stc89c52 從外部程序存儲器執(zhí)行外部代碼時,psen 在每個機器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,psen 將不被激活。 xtal1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。xtal2:振蕩器反相放大器的輸出端。2.3 ds18

17、b20數(shù)字溫度傳感器介紹2.3.1 功能介紹dallas最新單線數(shù)字溫度傳感器ds18b20的“一線器件”體積更小、適用電壓更寬、更經(jīng)濟 dallas 半導(dǎo)體公司的數(shù)字化溫度傳感器ds1820是世界上第一片支持 “一線總線”接口的溫度傳感器。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。ds18b20、 ds1822 “一線總線”字化溫度傳感器 同ds1820一樣,ds18b20也 支持“一線總線”接口,測量溫度范圍為 -55c+125c,-10+85c范圍內(nèi),精度為0.5c。ds1822的精度較差為 2c ?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,

18、大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:境控制、設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3v5.5v的電壓范圍,使系統(tǒng)設(shè)計更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。 ds18b20、 ds1822 的特性 ds18b20可以程序設(shè)定912位的分辨率,精度為0.5c。可選更小的方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報警溫度存儲在eeprom中,掉電依然保存。ds18b20的性能是新一代產(chǎn)品中最好的!性能價格比也非常出色! ds1822ds18b20軟件兼容,是ds18b20的簡化版本。省略了存儲用戶定義報警溫度、分辨率參數(shù)的eepr

19、om,精度降低為2c,適用于對性能要求不高,成本控制嚴格的應(yīng)用,是經(jīng)濟型產(chǎn)品。 繼“一線總線”的早期產(chǎn)品后,ds1820開辟了溫度傳感器技術(shù)的新概念。ds18b20和ds1822使電壓、特性及封裝有更多的選擇,讓我們可以構(gòu)建適合自己的經(jīng)濟的測溫系統(tǒng)。ds18b20的內(nèi)部結(jié)構(gòu)ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器th和tl、配置寄存器。ds18b20的管腳排列如下: dq為數(shù)字信號輸入/輸出端;gnd為電源地;vdd為外接供電電源輸入端(在寄生電源接線方式時接地)。光刻rom中的64位序列號是出廠前被光刻好的,它可以看作是該ds18b20的地

20、址序列碼。64位光刻rom的排列是:開始8位(28h)是產(chǎn)品類型標(biāo)號,接著的48位是該ds18b20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(crc=x8+x5+x4+1)。光刻rom的作用是使每一個ds18b20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個ds18b20的目的。ds18b20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625/lsb形式表達,其中s為符號位,見表2-1。表2-1ds18b20內(nèi)部溫度表示形式這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18b20的兩個8比特的ram中,二進制中的前面5位是符號位,如

21、果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。例如+125的數(shù)字輸出為07d0h,+25.0625的數(shù)字輸出為0191h,-25.0625的數(shù)字輸出為ff6fh,-55的數(shù)字輸出為fc90h。見表2-2表2-2ds18b20轉(zhuǎn)化溫度形式實際溫度值數(shù)字輸出(二進制)數(shù)字輸出(十六進制)+1250000 0111 1101 000007d0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00010191h+10.125000

22、0 0000 1010 001000a2h+0.50000 0000 0000 10000008h00000 0000 0000 00000000h-0.51111 1111 1111 1000fff8h-10.1251111 1111 0101 1110ff5eh-25.06251111 1110 0110 1111fe6eh-551111 1100 1001 0000fc90h2.3.2 ds18b20溫度傳感器的存儲器ds18b20溫度傳感器的內(nèi)部存儲器包括一個高速暫存ram和一個非易失性的可電擦除的e2ppram,后者存放高溫度和低溫度觸發(fā)器th、t和結(jié)構(gòu)寄存器。暫存存儲器包含了8個連

23、續(xù)字節(jié),前兩個字節(jié)是測得的溫度信息,第一個字節(jié)的內(nèi)容是溫度的低八位,第二個字節(jié)是溫度的高八位。第三個和第四個字節(jié)是th、tl的易失性拷貝,第五個字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,這三個字節(jié)的內(nèi)容在每一次上電復(fù)位時被刷新。第六、七、八個字節(jié)用于內(nèi)部計算。第九個字節(jié)是冗余檢驗字節(jié),見表2-3。表2-3ds18b20暫存存儲器的8個連續(xù)字節(jié)寄存器內(nèi)容字節(jié)地址溫度最低數(shù)字位0溫度最高數(shù)字位1高溫限值2低溫限值3保留4保留5計數(shù)剩余值6每度計數(shù)值7ctr校驗8該字節(jié)各位的意義如下: tm r1 r0 1 1 1 1 1 低五位一直都是1 ,tm是測試模式位,用于設(shè)置ds18b20在工作模式還是在測試模式。在

24、ds18b20出廠時該位被設(shè)置為0,用戶不要去改動。r1和r0用來設(shè)置分辨率,如下表所示:(ds18b20出廠時被設(shè)置為12位),見表2-4表2-4分辨率設(shè)置表 根據(jù)ds18b20的通訊協(xié)議,主機控制ds18b20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對ds18b20進行復(fù)位,復(fù)位成功后發(fā)送一條rom指令,最后發(fā)送ram指令,這樣才能對ds18b20進行預(yù)定的操作。復(fù)位要求主cpu將數(shù)據(jù)線下拉500微秒,然后釋放,ds18b20收到信號后等待1660微秒左右,后發(fā)出60240微秒的存在低脈沖,主cpu收到此信號表示復(fù)位成功。 ds1820使用中注意事項ds1820雖然具有測溫系統(tǒng)簡單

25、、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應(yīng)用中也應(yīng)注意以下幾方面的問題: (1)較小的硬件開銷需要相對復(fù)雜的軟件進行補償,由于ds1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對ds1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在使用pl/m、c等高級語言進行系統(tǒng)程序計時,對ds1820操作部分最好采用匯編語實現(xiàn)。 (2)在ds1820的有關(guān)資料中均未提及單總線上所掛ds1820數(shù)量問題,容易使人誤認為可以掛任意多個ds1820,在實際應(yīng)用中并非如此。當(dāng)單總線上所掛ds1820超過8個時,就需要解決微處理器的總線驅(qū)動問題,這一點在進行多點測溫系統(tǒng)設(shè)計時要加以

26、注意。(3)連接ds1820的總線電纜是有長度限制的。試驗中,當(dāng)采用普通信號電纜傳輸長度超過50m時,讀取的測溫數(shù)據(jù)將發(fā)生錯誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時,正常通訊距離進一步加長。這種情況主要是由總線分布電容使信號波形產(chǎn)生畸變造成的。因此,在用ds1820進行長距離測溫系統(tǒng)設(shè)計時要充分考慮總線分布電容和阻抗匹配問題。 (4)在ds1820測溫程序設(shè)計中,向ds1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待ds1820的返回信號,一旦某個ds1820接觸不好或斷線,當(dāng)程序讀該ds1820時,將沒有返回信號,程序進入死循環(huán)。這

27、一點在進行ds1820硬件連接和軟件設(shè)計時也要給予一定的重視。測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接vcc和地線,屏蔽層在源端單點接地。2.3.3 ds18b20的內(nèi)部邏輯圖,見圖2-3。c64 位rom和單線接口高速緩存存儲器與控制邏輯溫度傳感器高溫觸發(fā)器th低溫觸發(fā)器tl配置寄存器8位crc發(fā)生器vdd圖2-3ds18b20內(nèi)部內(nèi)部邏輯圖2.3.4 ds18b20讀寫時序主機使用時間隙(time slots)來讀寫 dsl820 的數(shù)據(jù)位和寫命令字的位2.3.4.1初始化時序見圖 2-4主機總線 to 時刻發(fā)送一復(fù)位脈沖(最短為 480us 的低電平信號)接著

28、在 tl 時刻釋放總線并進入接收狀態(tài)dsl820 在檢測到總線的上升沿之后 等待 15-60接著 ds1820 在 t2 時刻發(fā)出存在脈沖(低電平持續(xù) 60-240 us)如圖中虛線所示圖2-4ds18b20初始化時序圖程序:init_ds18b20(void)/初始化ds1820 dq = 1; /dq復(fù)位 _nop_(); _nop_(); /稍做延時2ms dq = 0; /單片機將dq拉低,發(fā)出復(fù)位脈沖(要求480us960us) delay(70); /精確延時566us dq = 1; /拉高總線(要求1660us) delay(5); /延時46us presence = dq;

29、 /如果=0則初始化成功 =1則初始化失敗 delay(25); dq = 1; return(presence); /返回信號,0=presence,1= no presence2.3.4.2寫時間隙當(dāng)主機總線 t o 時刻從高拉至低電平時 就產(chǎn)生寫時間隙從 to 時刻開始 15us 之內(nèi)應(yīng)將所需寫的位送到總線dsl820 在 t1為15-60us 間對總線采樣 若低電平 寫入的位是 0見若高電平 寫入的位是連續(xù)寫 2 位間的間隙應(yīng)大于 1us ,見圖2-5。 圖2-5寫時間隙程序:writeonechar(unsigned char dat)unsigned char i=0;for (i

30、=8; i0; i-) dq = 0; dq = dat&0x01; delay(5); dq = 1; dat=1;2.3.4.3讀時間隙見圖 2-6 主機總線 to 時刻從高拉至低電平時總線只須保持低電平 l 7ts之后15捍 s也就是說t z 時刻前主機必須完成讀位 并在 t o 后的 60 尸 s 一 120 fzs 內(nèi)釋放總線讀位子程序(讀得的位到 c 中) 圖2-6讀時序程序:readonechar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) dq = 0; / 給脈沖信號 dat=1; dq = 1;

31、/ 給脈沖信號 if(dq) dat|=0x80; delay(4);return(dat);2.3.5存儲器操作命令,見表2-5表2-5存儲器操作命令指令約定代碼功能讀rom33h讀取ds18b20rom中的編碼(64位地址)符合rom55h發(fā)出命令后,接著發(fā)出64位rom編碼,訪問單總線上與該編碼相同的ds18b20,使之做出反應(yīng),為下一步讀寫作準(zhǔn)備。搜索rom0f0h用于確定掛在同一總線上ds18b20的個數(shù),和識別64位rom地址,微操作各器件做準(zhǔn)備。跳過rom0cch忽略64位rom地址,直接向ds18b20發(fā)送溫度轉(zhuǎn)換命令,適用于單片工作。告警搜索命令0ech執(zhí)行后只有溫度值超過限

32、度值才做出反應(yīng),溫度變換命令44h啟動ds18b20進行溫度轉(zhuǎn)換,轉(zhuǎn)換時間最長為500毫秒,結(jié)果存入內(nèi)部就九字節(jié)ram中。讀暫存器0beh讀內(nèi)部ra九字節(jié)內(nèi)容寫暫存器4eh發(fā)出向內(nèi)部ram的第3、4字節(jié)寫上下限溫度命令,緊隨該命令之后是傳送兩個字節(jié)數(shù)據(jù)。復(fù)制暫存器48h將ram中的第3、4字節(jié)內(nèi)容寫到eepram中。重調(diào)eepram0b8h將eepram中的第3、4字節(jié)內(nèi)容寫到ram中。讀供電方式0b4h讀ds18b20供電模式,寄生供電ds18b20時發(fā)送“1”,外接電源發(fā)送“1”。2.4 鎖存器74hc57374hc573為八進制3態(tài)非反轉(zhuǎn)透明鎖存器且跟ls/al573 的管腳一樣。器件的

33、輸入是和標(biāo)準(zhǔn)cmos 輸出兼容的;加上拉電阻,他們能和ls/alsttl 輸出兼容。 當(dāng)鎖存使能端為高時,這些器件的鎖存對于數(shù)據(jù)是透明的(也就是說輸出同步)。當(dāng)鎖存使能變低時,符合建立時間和保持時間的數(shù)據(jù)會被鎖存。輸出能直接接到cmos,nmos 和ttl 接口上操作電壓范圍:2.0v6.0v低輸入電流:1.0uacmos 器件的高噪聲抵抗特性2.4.1管腳功能見圖2-7圖2-7管腳功能2.4.2 74hc573功能,見表2-6表2-6 74h573n真值表輸入輸出 輸出使能鎖存使能 dq l h hh l h l l l l x 不變 h x x z2.5顯示模塊led數(shù)碼管正向壓降一般為1

34、.52v,額定電流為10ma,最大電流為40ma。本設(shè)計采用4位共陽led數(shù)碼管,從p0口輸出段碼,列掃描用還用p0口來實現(xiàn)。2.5.1led數(shù)碼管內(nèi)部結(jié)構(gòu),見圖2-8。圖2-8led共陽數(shù)碼管內(nèi)部結(jié)構(gòu)2.5.2共陽數(shù)碼管數(shù)字編碼,見表2-7表2-7:共陽數(shù)碼管數(shù)字編碼顯示數(shù)字共陽極字段碼0c0h1f9h2a4h3b0h499h592h682h7f8h880h990h3 程序的編寫與調(diào)試3.1 程序的編寫 本系統(tǒng)軟程序采用c語言編寫,所用軟件位keil,見圖3-1。圖3-1keil軟件編程界面3.1.1新建工程 打開keil軟件,單擊project-new project輸入工程名選擇相應(yīng)單片

35、機,見圖3-2。圖3-2新建工程3.1.2編寫程序 根據(jù)電路編寫程序,見圖3-3。圖3-3編寫程序3.2調(diào)試程序 編譯程序,檢查錯誤。如果沒有錯誤,按ctrl+f5進行程序調(diào)試,見圖3-4。圖3-4調(diào)試程序4 繪制系統(tǒng)原理圖本系統(tǒng)是用altium designer 09 進行原理圖的繪制,放置元器件在放置元器件之前首先應(yīng)該繪制系統(tǒng)所用的原理圖庫和pcb庫。4.1繪制原理圖庫4.1.1打開軟件filenewlibrarysch library,見圖4-1。 4.1.2繪制原理圖元件 單擊toolnew compennent元件名繪制元件,見圖4-2。圖4-2繪制原理圖元件4.2繪制pcb庫打開軟

36、件filenewlibrarypcb library ,見圖4-3。圖4-3繪制pcb庫4.2.1繪制pcb元件單擊toolnew blank compennent元件名繪制元件,見圖4-4。圖4-4繪制pcb元件4.3系統(tǒng)完整原理圖,見圖4-5。圖4-5系統(tǒng)總原理圖5 系統(tǒng)pcb圖5.1未覆銅pcb圖,見圖5-1。圖5-1未覆銅pcb5.2覆銅,見圖5-2。圖5-2覆銅pcb6 系統(tǒng)工作過程6.1 溫度的測量 ds18b20數(shù)字溫度傳感器溫度數(shù)據(jù)以數(shù)字的形式傳至單片機,單片機將數(shù)據(jù)轉(zhuǎn)換成十進制,送到數(shù)碼管進行顯示,這也就完成了,溫度的測量,6-1。圖6-1溫度測量6.2溫度數(shù)據(jù)的采集 ds1

37、8b20數(shù)字溫度傳感器溫度數(shù)據(jù)以數(shù)字的形式傳至單片機,單片機通過rs232將數(shù)據(jù)傳至計算機,由串口調(diào)試助手進行數(shù)據(jù)的記錄和顯示,見圖6-2。圖6-2溫度數(shù)據(jù)的采集7程序框圖及c語言程序7.1溫度采集系統(tǒng)原理框圖,見圖7-1初始化調(diào)用顯示子程序1s到?初次上電?讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開始命令ny主流程圖y主流程圖n圖7-1溫度采集系統(tǒng)原理框圖7.1.1溫度顯示模塊顯示數(shù)據(jù)刷新子程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進行刷新操作,當(dāng)最高顯示位為0時將符號顯示位移入下一位。程序流程,見圖7-2。溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?n y百位數(shù)0? ny百位數(shù)顯示數(shù)據(jù) (不顯示符號)十位

38、數(shù)顯示符號百位數(shù)不顯示 y 結(jié)束圖7-2溫度顯示模塊流程圖7.1.2讀溫度子程序讀出溫度子程序的主要功能是讀出ram中的9字節(jié),在讀出時需要進行crc校驗,其程序流程,見圖7-2。發(fā)ds18b20復(fù)位命令發(fā)跳過rom命令讀取溫度命令讀取操作,crc校驗9字節(jié)完?crc校驗正確?移入溫度暫存器結(jié)束 n y n y圖7-3讀溫度子程序7.1.3溫度轉(zhuǎn)換子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,其子程序流程見圖7-4。ds18b20復(fù)位命令跳過rom命令溫度轉(zhuǎn)換開始命令結(jié)束圖7-4溫度轉(zhuǎn)換子程序流程7.1.4計算溫度子程序此程序?qū)am中讀取值進行bcd碼的轉(zhuǎn)換運算并進行正負判定流程,見圖7

39、-5。開始溫度零下? n溫度值取補碼置“”標(biāo)志 y置“+”標(biāo)志計算小數(shù)位溫度bcd值計算整數(shù)位溫度bcd值結(jié)束圖7-5計算溫度子程序流程7.2 溫度采集系統(tǒng)c語言程序#include #define uchar unsigned char#define uint unsigned intsbit ds=p22;sbit fm=p23; /define interface 定義 ds18b20 接口int temp; / 溫度變量uchar flag1,count; / sign of the result positive or negativesbit dula=p26;sbit wela=

40、p27;unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/不帶小數(shù)點編碼。unsigned char code table1=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; /帶小數(shù)點編碼。void delay(uint x) /delayuchar i,j; for(i=0;ix;i+)for(j=0;j0)i-; ds=1; i=4; while(i0)i-;bit tmpreadbit(void) /read a bit讀一位 int

41、 i; bit dat; ds=0;i+; /i+小延時一下 ds=1;i+;i+; dat=ds; i=8;while(i0)i-; return (dat);uchar tmpread(void) /讀一個字節(jié) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /讀出的數(shù)據(jù)最低位在最前面,這樣剛好 /一個字節(jié)在 dat 里 return(dat); /將一個字節(jié)數(shù)據(jù)返回void tmpwritebyte(uchar dat) /寫一個字節(jié)到 ds18b20 里 int i; char j; bit testb;

42、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 tmpchange(void) /發(fā)送溫度轉(zhuǎn)換命令 dsreset(); /初始化 ds18b20 delay(1); /延時 tmpwritebyte(0xcc); /跳過序列號命令 tmpwritebyte(0x44); /發(fā)送溫度轉(zhuǎn)換命令int tmp() /獲得溫度 float tt; uchar a,b; dsreset(); delay(1

43、); tmpwritebyte(0xcc); /跳過讀取rom命令 tmpwritebyte(0xbe); /發(fā)送讀取數(shù)據(jù)命令 a=tmpread(); /連續(xù)讀兩個字節(jié)數(shù)據(jù) b=tmpread(); temp=b; temp=30) p0=p0;fm=fm;delay(1);if(ser30)p0=0xff;fm=1;if(temp1=1000)a1=temp1/1000;a2=temp1%1000/100;a3=temp1%100/10;a4=temp1%10;p1=0x00;wela=1;wela=0;p1=tablea1;dula=1;dula=0;p1=0x01;wela=1;wela=0;delay(8);p1=0x00;wela=1;wela=0;p1=tablea2;dula=1;dula=0;p1=0x02;wela=1;wela=0;delay(8);p1=0x00;wela=1;wela=0;p1=table1a3;dula=1;du

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論