亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于1-Wire總線的嵌入式測溫系統(tǒng)設計

        2009-03-02 09:33:12宋曉博
        現(xiàn)代電子技術 2009年4期
        關鍵詞:管腳時序命令

        宋曉博 柴 波

        摘 要:給出一種基于DS18B20的1-Wire總線的嵌入式測溫系統(tǒng)的軟硬件設計,詳細介紹了數(shù)字溫度傳感器DS18B20和橋接器DS2480B的內部結構、工作原理及使用方法;給出基于1-Wire操作的時序圖和部分驅動代碼,并對代碼做出比較詳細的說明。給出系統(tǒng)硬件電路邏輯,并對硬件電路中的細節(jié)問題做了說明。在以往的應用中,大多為PC機通過串口控制測溫芯片DS18B20和橋接器DS2480B進行溫度測量。采用單片機C8051F040代替?zhèn)鹘y(tǒng)的PC機,通過片上UART對測溫芯片進行控制,在空間狹小的特殊嵌入式環(huán)境中對溫度值進行采集。經實踐證明電路系統(tǒng)工作正常,溫度采集效果良好。

        關鍵詞:1-Wire總線;DS18B20;DS2480B;硬件電路;驅動程序

        中圖分類號:TP274 文獻標識碼:B 文章編號:1004-373X(2009)04-162-04

        Design of Embedded TemperatureMeasurement System Based on 1-Wire Bus

        SONG Xiaobo,CHAI Bo

        (Xi′an Micro-electronics Technology Institute,Xi′an,710075,China)

        Abstract:The software and hardware design of 1-wire embedded temperatare measurement system based on DS18B20 are proposed.the interior structure,work protocol and using method of DS18B20 and DS2480B are introduced.The time sequence pictures and driving code of 1-wire operation,the circuit logic of system′s hardware are given.In the past applications,the temperatare measuremant mostly for the PC-chip through the serial port control DS18B20 and bridges DS2480B.In this paper,C8051F040 is applied to instead of the traditional PC,through on-chip UART chip to control the temperature in the special environment.Practice proves that the circuit system is working normal,the temperature acquisition is good.

        Keywords:1-Wire bus;DS18B20;DS2480B;hardware circuit;driving program

        溫度作為一種基本的環(huán)境因素,直接影響著工業(yè)控制、化工、醫(yī)藥、航空航天等生產工藝過程,因此如何安全、可靠、快速地取得溫度值就顯得尤為重要。隨著計算機軟件、硬件技術及集成電路工業(yè)的迅速發(fā)展,各種溫度采集技術不斷出現(xiàn)。這里介紹一種基于DS18B20的

        1-Wire總線的嵌入式測溫系統(tǒng)設計。

        1-Wire總線是美國Dallas公司的一項專有技術單總線技術(1-Wire Bus Technology),該技術在理論上每條總線連接的1-Wire 器件數(shù)量可達248еВ適用于單主機、多從設備的系統(tǒng)。它與其他串行通信方式最大的不同在于它采用單根信號線雙向傳輸數(shù)據(jù),以其節(jié)省I/O口線資源,成本低廉,體積小,便于總線擴展和維護等優(yōu)點,在串行數(shù)據(jù)通信領域占有越來越重要的地位。

        1-Wire 網絡構成簡單,一般情況下只使用電源線、地線、信號線3條線,當使用寄電方式供電時只需電源/信號線和地線2根線。

        DS18B20是Dallas公司生產的一種簡便易用的數(shù)字式溫度傳感器。它體積小巧,溫度測量范圍廣(-55~ +125 ℃),測量分辨率可選,分別為0.062 5 ℃,0.125 ℃,0.25 ℃,0.5 ℃。

        1 主要器件結構及工作原理

        1.1 DS18B20結構及工作原理

        Dallas公司生產的DS18B20可編程單總線數(shù)據(jù)溫度傳感器共有3種封裝形式:8管腳SO封裝、8管腳μSOP封裝和3管腳TO-92封裝。該設計中為了節(jié)省空間采用3管腳的TO-92封裝,它的管腳排列圖和底視圖如圖1所示,其中GND為接地管腳,VDD為外部供電電源管腳,DQ為數(shù)據(jù)輸入/輸出管腳。

        DS18B20內部結構如圖2所示,包括供電電路、64 b ROM、內部存儲器和存儲器控制邏輯4部分。64 b ROM中存儲著每個DS18B20芯片獨有的64位ROM ID碼,這是系統(tǒng)用來識別DS18B20芯片的標志。其中最低8位是DS18B20的家族碼:28H。中間48位是每片DS18B20獨有的串行碼。最高8位是用前56位計算得到的循環(huán)冗余校驗碼。

        內部存儲器由9 Byte SRAM和3 B E2PROM組成。SRAM中Byte0和Byte1是溫度寄存器,用來存儲采集到的溫度值。Byte0的內容是溫度的低8位,Byte1是溫度的高8位。Byte2和 Byte3為高低溫警報寄存器。Byte4為配置寄存器,用來設置器件溫度采集精度。這3個字節(jié)中的值可以拷貝到E2PROM中,保證掉電后數(shù)據(jù)不會丟失,重新上電后E2PROM中的值將自動重載入SRAM中。Byte5,Byte6,Byte7保留為內部使用。Byte8存儲CRC碼。

        DS18B20有2種供電方式:寄電方式和外部供電方式。寄電方式非常適用于需要遠程溫度測量和空間受限的場合。當工作于這種方式時,管腳3必須接地。總線處于高電平時DS18B20通過DQ管腳從1-Wire網絡上竊取能量并存儲一部分電荷到寄電電容中,總線處于低電平時釋放寄電電容中的電荷給DS18B20供電。在寄電方式中寄電電容中存儲的電荷能滿足DS18B20大部分操作的要求,但是當執(zhí)行溫度轉換和數(shù)據(jù)拷貝命令時操作電流提高到1.5 mA,這將導致內部弱上拉電阻上產生不可接受的壓降,同時這個電流也高于寄電電容能夠提供的電流,所以必須外接強上拉電路以滿足這一類命令的要求。當處于外部供電方式下時則不需要外接強上拉電路,直接通過管腳3從外部供電。

        在溫度超過100 ℃條件時,處于寄電方式下的DS18B20可能不能保證正常通信,所以在某些特殊場合下使用外部供電方式比寄電方式更加可靠。

        DS18B20是一種可編程的基于1-Wire 總線標準的數(shù)字式溫度傳感器,可以通過SRAM中的配置寄存器來選擇測量分辨率,其上電默認值為12位精度,對應分辨率為0.062 5 ℃。其他可選擇的精度包括11位、10位和9位,對應的分辨率分別為0.125 ℃,0.25 ℃,0.5℃。

        DS18B20上電后處于空閑狀態(tài),可通過微處理器發(fā)送轉換命令44H 來啟動1次溫度測量和A/D轉換,并將結果存儲在溫度寄存器中,此后DS18B20返回空閑狀態(tài)。如果DS18B20處于外部供電模式,微處理器可以發(fā)送“讀時隙”來查看溫度采集轉換過程是否完畢,如果結束則應答為1,沒結束則應答為0。如果DS18B20處于寄電方式下則不能使用該功能。DS18B20的溫度數(shù)據(jù)值是以攝氏度為單位的。

        1.2 DS2480B介紹及工作原理

        1-Wire通信協(xié)議可以通過微處理器上的一個I/O引腳實現(xiàn),但是要創(chuàng)建可靠的1-Wire網絡,必須提供正確的時序和適當?shù)妮敵鲭妷簲[率,如果1-Wire主機發(fā)送的時序不正確會導致與1-Wire從器件之間的通信間斷或完全失敗,并限制網絡的長度。DS2480B是從串行接口到1-Wire網絡協(xié)議轉換的橋接器。使用這個橋接器和UART連接就能產生嚴格定時和電壓擺率控制的1-Wire波形,并能減輕主機產生1-Wire 時序信號和對1-Wire 總線進行采樣的負擔。

        DS2480B接收指令與數(shù)據(jù),執(zhí)行1-Wire操作,并將結果返回至主機。圖3為1-Wire復位操作、寫1/讀數(shù)據(jù)操作、寫0操作的時序圖,這3種操作是1-Wire操作中必須具備的基本操作,幾乎所有的其他1-Wire操作都可以由這3種操作構成。由于該設計工作在Flexible模式下,以下提供的參數(shù)都是Flexible模式下適用的參數(shù)。

        1.2.1 復位/應答 時序

        DS2480B接到主機復位命令后將總線拉低512 μs后釋放總線,等待 2 μs(短路/中斷采樣)后檢測總線上是否有短路或中斷信號,如果沒有則等待8 μs(應答采樣)后檢測總線上是否有應答脈沖,再等待512 μs(延遲)后向主機發(fā)送命令應答字。如果總線上有短路或中斷信號則等待4 096 μs后再次檢測總線。時序如圖3所示。

        1.2.2 寫1 /讀數(shù)據(jù)時序

        DS2480B在寫1/讀數(shù)據(jù)時序中先將總線拉低8~15 μs(寫1低),3~10 μs(數(shù)據(jù)采樣)數(shù)據(jù)采樣偏移后對總線采樣并讀從器件應答。再經過49 μs(等待高)1/讀數(shù)據(jù)時序結束。時序圖如圖4所示。

        1.2.3 寫0 時序

        DS2480B的寫0時序中先將總線拉低57 μs(寫0低)然后釋放總線,3~10 μs后寫0時序結束。如圖5所示。

        DS2480B可以被看作包含2個靜態(tài)和多個動態(tài)的狀態(tài)機。上電后DS2480B自動進入兩個靜態(tài)之一的命令模式。此時主機應向DS2480B發(fā)送1次復位命令,用來校準DS2480B內部的時序產生器,所有的1-Wire通信過程都必須以復位命令開始。此后DS2480B準備好接收及執(zhí)行任何合法命令。在命令模式下微處理器可以改變1-Wire網絡的通信速度、供電方式、改變1-Wire通信波形等。DS2480B從命令模式轉換到下一個靜態(tài)-數(shù)據(jù)模式后將從TXD管腳上收到的信息字節(jié)轉換成相應的1-Wire通信波形并將從器件返回的應答字節(jié)通過RXD管腳返回給微處理器。也就是說對1-Wire從器件DS18B20的操作必須在數(shù)據(jù)模式下進行。

        2 系統(tǒng)設計

        系統(tǒng)設計包括硬件設計和軟件設計2部分。

        2.1 系統(tǒng)硬件設計

        與DS2480B橋接器一起工作的UART應支持8位字長、無奇偶校驗、9 600波特率(b/s)的通信方式。該系統(tǒng)采用Silicon公司生產的C8051F040作為主處理器,C8051F040有2個UART串口,且滿足橋接器對UART的要求。溫度采集轉換芯片為Dallas公司生產的DS18B20。系統(tǒng)原理圖如圖6所示。

        其中從C8051F040的UART到DS2480B需用1片QS3245進行3~5 V的電平轉換。1-Wire總線上過多的噪聲會影響1-Wire通信的正確性,為了濾除電路中的噪聲保護DS2480B的1-Wire端口不受靜電損傷DS2480B的1-W管腳外接RC濾波電路。在本設計中只涉及到基本DS2480B操作,在需要進行EPROM編程的設計中應串接2個DS9503。

        2.2 系統(tǒng)軟件設計

        給出的1-Wire 總線驅動程序是結合圖4所述電路,以C8051F040單片機為主控制器,使用內部時鐘頻率24.5 MHz編寫而成,其中包括DS2480B復位子程序、DS2480B初始化子程序、總線復位子程序、溫度采集子程序、溫度值讀取子程序。C8051F040系統(tǒng)內部有64 KB FLASH存儲器可以用來存儲程序代碼。C代碼設計調試工具為Silicon公司提供的單片機集成開發(fā)環(huán)境。

        控制器上電后,對自身和DS2480B進行初始化并與DS2480B取得同步。由于DS2480B中沒有晶振,它必須通過采樣主機發(fā)送的字節(jié)來調節(jié)自身的時基。主控制器在低于9 600波特率條件下發(fā)送1次0字節(jié)可以產生1次復位信號。DS2480B復位后所有參數(shù)恢復到缺省狀態(tài),在該設計中1-Wire網絡長度在10 m之內,屬于小型長度,為了取得良好的性能,選擇在“flexible speed”下進行標準速度通信。對DS2480B復位和初始化是進行正確1-Wire通信的前提,當網絡中應答數(shù)據(jù)包長度或格式不正確時,也必須重新對DS2480B復位和初始化。

        所有的1-Wire操作都是從復位1-Wire總線開始的。每次采集溫度值和讀取溫度值操作前最好對總線進行1次復位操作,同時檢測來自總線上的從器件的在線應答脈沖。驅動程序流程圖如圖7所示,部分程序代碼如下所示:

        #include <c8051f040.h>

        #include "DS2480.h"

        #include <stdio.h>

        // MAIN Routine

        main()

        {

        //.........disable watchdog timer.........

        WDTCN = 0xde;

        WDTCN = 0xad;

        /........................................

        UART_configure (); //UART配置

        DS2480B_Rset();//DS2480B復位

        init_ds2480();//DS2480B初始化

        while(1)

        {

        wire_reset(); //1-Wire總線復位

        tmp_turn(); //溫度值采集

        wire_reset(); //1-Wire總線復位

        tmp_read(ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8); //讀取溫度值

        }

        }

        //........................................

        void DS2480B_Rset(void)

        {

        //change baute to 4800

        out_uart(0x00);//在4 800波特率下主控制器向DS2480B

        //發(fā)送0字節(jié)產生一次復位信號

        delay(2);//延遲2 ms

        //change baute to 9600

        }

        //........................................

        void init_ds2480(void)

        {

        {

        out_uart(0xc1); //發(fā)送總線復位命令

        delay(2); //延遲2 ms

        //設置1-Wire參數(shù),為flexible模式下的1-Wire信號整形

        out_uart(0x17);

        while(get_uart()!=0x16);

        out_uart(0x45);

        while(get_uart()!=0x44);

        out_uart(0x5b);

        while(get_uart()!=0x5a);

        out_uart(0x0f);

        while(get_uart()!=0x00);

        out_uart(0x91);

        while(get_uart()!=0x93);

        }

        //..............................

        void wire_reset(void)

        {

        out_uart(0xe3);

        //切換到命令模式

        delay(2);

        //延遲2 ms

        out_uart(0xc5);

        //發(fā)送總線復位命令

        while(get_es0()!=0xcd);//應答不正確則繼續(xù)等待

        }

        //........................................

        void tmp_turn()

        {

        out_uart(0xe1);//切換到數(shù)據(jù)模式

        delay(2);//延遲2 ms

        out_uart(0xcc);//發(fā)送SKIP ROM命令,尋址總線上所有從器件

        while(get_uart()!=0xcc);

        out_uart(0x44);//發(fā)送CONVERT T命令,令從器件采集溫度值

        while(get_uart()!=0x44);

        out_uart(0xff);//發(fā)送“讀時隙”,檢查溫度采集操作是否結束

        delay(2);//延遲2 ms

        while(get_uart()!=0xff)//沒結束則等待至結束

        }

        //........................................

        void tmp_read(ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8)

        unsigned char ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8;

        {

        out_uart(0xe1);//切換到數(shù)據(jù)模式

        delay(2);//延遲2 ms

        out_uart(0x55);//發(fā)送MATCH ROM命令

        while(get_uart()!=0x55);

        out_uart(ch1); //發(fā)送要讀取溫度值的DS18B20的64位ROM ID號

        while(get_uart()!=ch1);

        out_uart(ch2);

        while(get_uart()!=ch2);

        out_uart(ch3);

        while(get_uart()!=ch3);

        out_uart(ch4);

        while(get_uart()!=ch4);

        out_uart(ch5);

        while(get_uart()!=ch5);

        out_uart(ch6);

        while(get_uart()!=ch6);

        out_uart(ch7);

        while(get_uart()!=ch7);

        out_uart(ch8);

        while(get_uart()!=ch8);

        out_uart(0xbe);//發(fā)送讀暫存器命令

        while(get_uart()!=0xbe);

        out_uart(0xff);//讀暫存器Byte0

        cc1=get_uart();

        out_uart(0xff);//讀暫存器Byte1

        cc2=get_uart();

        cc1=(((cc1>>4)&0x0f) | ((cc2<<4)&0xf0));

        }

        3 結 語

        介紹一種1-Wire總線嵌入式測溫系統(tǒng),并給出了硬件電路及部分驅動代碼。該系統(tǒng)具有設計簡單,擴展方便,占用主控制器資源少,軟件控制方便易于實現(xiàn)自動化測試等特點,并成功應用于工程實踐中。在設計成本、費用和復雜度方面相對于CAN,RS 485等總線有著無可比擬的優(yōu)勢,更適合小型工控系統(tǒng)使用,在今后的工業(yè)應用領域中必將有著更為廣闊的空間。

        參 考 文 獻

        [1]張彥兵,劉永前,李義強.1-Wire總線驅動電路設計.傳感技術學報,2006,19(4):1 020-1 024.

        [2]Dallas Semiconductor Maxim.DS18B20 Programmble Resolution 1-Wire Digital Thermometer.

        [3]Dallas Semiconducor Maxim.DS2480B Serial 1-Wire Line Driver with Load Sensor.2005.

        [4]Dallas Semiconductor Maxim.應用筆記192 DS2480B串行接口1-Wire線驅動器的使用.2005.

        [5]譚浩強.C程序設計.2版.北京:清華大學出版社,2002.

        [6]張培仁.MCS-51單片機原理與應用.北京:清華大學出版社,2003.

        [7]譚立勇,李哲英.1-Wire技術概述.數(shù)據(jù)通信,2004(2):19-21.

        [8]伍家滿,虞禮貞,劉小燕,等.基于1-Wire接口的總線技術及其應用.南昌大學學報:工科版,2005,27(1):89-93,98.

        [9]胡漢才.單片機原理及其接口技術.北京:清華大學出版社,2000.

        [10]沈金龍.計算機通信網.西安:西安電子科技大學出版社,2003.

        [11]劉金勝.局域網基礎與建設.遼寧師專學報:自然科學版,2000,2(2):35-37.

        作者簡介 宋曉博 女,碩士研究生。研究方向為計算機應用。

        柴 波 男,研究員、碩士研究生導師。主要從事嵌入式計算機的系統(tǒng)設計和應用研究工作。

        猜你喜歡
        管腳時序命令
        時序坐標
        只聽主人的命令
        基于Sentinel-2時序NDVI的麥冬識別研究
        移防命令下達后
        一種毫米波放大器時序直流電源的設計
        電子制作(2016年15期)2017-01-15 13:39:08
        基于圖像處理的異型電子元器件管腳偏移誤差檢測方法研究
        CMOS數(shù)字IC管腳電容的估算與測量
        這是人民的命令
        DPBUS時序及其設定方法
        河南科技(2014年15期)2014-02-27 14:12:36
        HC08芯片JVT測試方法的探究
        電子測試(2013年22期)2013-09-26 06:03:52
        黄色国产精品福利刺激午夜片| 精品免费在线| 亚洲中文字幕乱码免费| 国产精品午夜高潮呻吟久久av | 国产在线视频一区二区天美蜜桃| 无码尹人久久相蕉无码| 男人扒开女人双腿猛进女人机机里| 欧美h久免费女| 男女动态91白浆视频| 三年片在线观看免费观看大全中国| 亚洲一区精品无码色成人 | 无码国产色欲xxxxx视频| 色综合久久精品中文字幕| 丝袜人妻中文字幕首页| 亚洲国产日韩a在线乱码| 亚洲欧洲偷自拍图片区| 老熟女熟妇嗷嗷叫91| 中文字幕久久精品一区二区| 999国产精品999久久久久久| 中国猛少妇色xxxxx| 一区二区三区国产美女在线播放 | 日韩av综合色区人妻| 无遮挡激情视频国产在线观看| 精品少妇人妻av一区二区| 国精品无码一区二区三区在线看| 综合中文字幕亚洲一区二区三区| 综合亚洲伊人午夜网| 国产精品va在线观看无码| 亚洲中文无码精品久久不卡| 久久国产精品免费专区| 亚洲国产成人精品无码区在线秒播| 天天做天天爱天天综合网| 国产亚洲三级在线视频| 人妻免费一区二区三区免费| 欧美另类高清zo欧美| 草草影院国产| 国产一级内射一片视频免费| 内射人妻视频国内| 四虎欧美国产精品| 久久精品女人天堂av麻| 亚洲中文字幕久久精品蜜桃|