999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

DS18B20在實時控制系統中的應用

2012-07-03 02:11:54阮海蓉
制造業自動化 2012年5期
關鍵詞:單片機

阮海蓉

(襄樊學院 物理與電子工程學院,襄陽 441053)

0 引言

DS18B20是美國DALLAS推出的一種內部集成了A/D轉換的單總線數字溫度傳感器,測量范圍為-55℃~120℃,具有0.0625℃的分辨率,在-10℃~85℃內可獲得±0.5℃的精度。DS18B20使用時無須做任何標定,在一根信號線上實現了數據的雙向傳送,與單片機接口時幾乎不需要任何外圍元件。但是,DS18B20轉換時間較長(最大750ms),單總線傳送時序要求嚴格,限制了其在實時控制系統中的應用,一些設計者不得不仍然使用傳統的熱電阻、熱電偶和AD590等傳感元件,而這些方案都需要信號調理、A/D轉換電路,復雜性和使用成本都遠高于DS18B20方案。

1 DS18B20的工作時序

DS18B20有3種典型操作時序:初始化、讀和寫。

初始化:控制器向DS18B20發出480μs低電平,然后釋放總線,15~60μS后DS18B20應答60~240μs低電平后釋放總線。全過程需時555~780μs。

寫:控制器向DS18B20發出一個>1μs的低電平,然后輸出欲寫數據(1或0),15μs后DS18B20進入采樣,采樣過程最長達45μs,全過程需時60μs。

讀:控制器向DS18B20發出一個>1μs的低電平,然后釋放總線,由DS18B20輸出數據(1或0),15μs內控制器完成采樣,45μs釋放總線,全過程需時60μs。

使用DS18B20進行一次溫度轉換,其標準過程和所需要的時間如下:

1)初始化:需時780μs。

2)匹配或忽略ROM指令:控制器向DS18B20寫8位匹配ROM指令55H或忽略ROM指令CCH,需時480μs。

3)匹配ROM:控制器向DS18B20寫64位ROM編碼,需時3840μs。若選擇忽略ROM,則無此項。

4)啟動溫度轉換:控制器向DS18B20寫8位啟動命令44H,需時480μs。

5)等待轉換完成:12位精度需時750ms,11位精度需時375ms,10位精度需時187.5ms,9位精度需時93.75ms。

6)初始化:需時780μs。

7)取轉換結果:控制器向DS18B20讀16位溫度數據,需時960μs。

這樣,使用12位精度時一次溫度轉換所需要的時間為750~760 ms,且在讀、寫過程中要嚴格遵循其時序規則,不能被中斷[1]。

2 實時系統中使用DS18B20的問題

實時系統對溫度采集的要求主要有兩個:1)有固定采樣周期,以方便進行運算和處理;2)不影響系統對其他任務的處理,即溫度的采樣過程很短或在過程中能夠允許中斷。至于溫度采集周期的長短,由于大多數實際環境中溫度的變化是比較緩慢的,每一秒甚至數秒采集一次是完全可以接受的,DS18B20的750~760ms可以滿足大多數環境的要求。

實時系統程序結構,通常是有一個主程序和多個中斷服務程序,對周期性要求不高任務的可在主程序中進行處理,對周期性有嚴格要求的任務及隨機發生的事件則放在各中斷中服務程序中。為了保持對對象的有效控制,一般每幾毫秒~幾十毫秒須進行采樣和處理,也就是幾毫秒~幾十毫秒要中斷一次。

在實時系統中使用DS18B20,常用的方法有以下兩種:

方法一:將溫度采集放在一個定時中斷服務程序中,采集開始后禁止其他任務中斷,直到本次采集結束。這種方法可以實現采樣周期固定,但該處理將獨占CPU達750~760ms,些期間內不能處理其他任務,這對于一個實時控制系統是很難接受的。

方法二:將溫度采樣放在主程序中,定時啟動采樣,在兩次讀、寫周期中間開放中斷,以開放系統中的其他任務的處理。這種處理方法的問題是:1)不能充分利用DS18B20的最小轉換周期,在控制任務比較繁重的實時系統中,由于溫度轉換過程不斷被各種其他任務所中斷,以致完成采集的時間大大超過750~760ms,最終確定的溫度采樣周期會比DS18B20的轉換周期延長很多;2)這種處理方法只能保證啟動溫度采樣的周期一定,但是從啟動采樣到轉換結果更新中間會被實時系統中的其他任務打斷,而其他任務所占用的時間不定,最后溫度數據更新的周期并不恒定。

以上兩種是效果較好的方法,其他方法的效果比以上兩種更差,不再贅述。而這些方法的不足,為實時控制系統中使用DS18B20帶來了一定的困難。

3 典型實時系統分析

為了說明DS18B20在實時系統中的應用方法,構建了一個典型的應用方案,如圖1所示。

在這個應用方案中,主要組成部分為STC5608AD單片機、被控對象(如電機速度、運動位置)、2個溫度測量點和LED數碼管顯示。這個方案是基于多用軟件、少用硬件的理念設計的,LED數碼管使用了動態驅動,硬件很少,成本很低,CPU負擔很重。在工作過程中,CPU除了要完成對被控對象的處理外,還要操作2個溫度測量點的DS18B20進行溫度監測,而LED數碼管又必須每2ms進行一次刷新以得到穩定的顯示效果。

圖1 一個典型的實時控制方案

在軟件設計中,主要有3個任務:LED數碼管動態驅動、DS18B20溫度采集和被控對象的處理。每個任務都不能占用CPU過長時間,如DS18B20溫度采集和被控對象的處理時間片最大不能超過2ms,否則顯示就會出現閃爍。

為了滿足這些要求,一些設計者采用的方法是將動態驅動改為靜態驅動、多CPU分別完成不同的任務、將DS18B20更換為熱電偶或熱電阻等,這些都會使系統硬件復雜化,既增加了成本,又降低了系統的可靠性[2]。

這個方案是一個對CPU極限運用的例子,如果在這個方案中能夠有效使用DS18B20,那么多數常見的實時控制方案中都可以解決。

方案在設計硬件時,為兩只DS18B20的DQ單獨分配了接口,這樣可以省去匹配ROM的時間。

4 分時讀寫DS18B20的程序設計方法

在圖1所示實時控制系統中應用DS18B20的困難,在于LED數碼管動態驅動、被控對象的處理和DS18B20的操作都有嚴格的時序要求,不允許某一任務長時間占用CPU,這與DS18B20的使用特點發生了沖突。

分析DS18B20的操作時序,發現其操作實質上就是通過讀、寫來實現的,如果將讀、寫8位作為一個基本單位,則連續占用CPU約480μs,這個時間占用程度系統是可以接受的。由此,程序設計中可以將DS18B20的操作拆開,以一個8位的讀、寫為基本單位,使得CPU可以兼顧各個任務。

使用C51編寫這個系統的程序[3],其與DS18B20相關的部分如下:

在這段程序中,因LED數碼管動態驅動的要求,每2ms由定時器0產生一次中斷,在中斷服務程序中對LED顯示進行掃描處理,掃描僅占用很少的時間,對其他任務的影響基本可忽略不計。

DS18B20的操作被拆分成十二步:1)輸出低電平并保持2ms以使DS12B80復位;2)輸出高電平并保持2ms結束復位;3)寫0xcc以忽略ROM匹配;4)寫0x44啟動溫度轉換;5)延時750ms等待轉換結束;6)再次輸出2ms復位低電平;7)再次輸出2ms高電平結束復位;8)再寫0xcc以忽略ROM匹配;9)寫0xbe以啟動讀暫存器;10)讀溫度低字節;11)讀溫度高字節;12)本次溫度測量值更新。這12步處理位于77~100行,69~76行是對各計數器做減1運算和賦初值。這些處理放在時間間隔為2ms的定時中斷服務程序中,溫度測量周期為772ms,如果不需要12位的精度,測量周期可進一步縮短,使用9位精度時可壓縮至120ms以內。如果希望將測量周期設定為一個整數(如800 ms),可以修改74行中的750。

在這12步處理中,耗時最多的是讀、寫,每次占用480μs(其間同時處理2個DS18B20)。由于定時器0的中斷周期是2ms,還有不少于1.5ms可以用來對被控對象進行處理,也即3/4的處理時間分配給了被控對象,系統有足夠的時間為被控對象服務。

經過如此設計的程序,可以無沖突地完成LED數碼管動態驅動、被控對象的控制和DS18B20溫度采集。

5 程序移植和使用

以上給出的對DS18B20操作的程序(以下稱典型程序),可以方便地移植到某一實時控制軟件中使用。

一般來說,實時控制軟件中總會有定時中斷的,只要把典型程序中定時中斷中的部分放到具體的實時控制軟件中的定時中斷中就可以了。典型程序對定時中斷周期有寬泛的適應性,1~20 ms都可以正常使用,但周期短會使留給被控對象的處理時間減少,周期長則會使溫度采集的周期延長。當然,如果有富裕的定時器,專門為溫度采集分配一個定時中斷是最好了。

第3行是為25~31行中的精確延時函數設定DJNZ Rn指令的時鐘周期數,經典的51系列單片機中該指令需24個時鐘周期,本方案中使用的STC12C5608AD需4個時鐘周期,用于其他方案中應依據CPU特性進行設置[4]。

第7~14行用聯合設置了兩個溫度保存區,該處理使采集到的溫度數據既可以作為一個完整的有符號整數(TW)使用,也可以作為兩個獨立的無符號字節(TB[1]和TB[0])使用,但要注意TB[1]是低字節而TB[0]是高字節。

第24~62行的3個函數可以直接拷貝到控制軟件中使用,不需要做任何修改。第24行是為了禁止在這3個函數中以絕對地址方式使用寄存器的優化項,以便使用不同寄存器組的中斷服務程序可以調用,第62行恢復這個優化項。

6 結束語

分后在定時中斷服務程序中分時處理。使用此方法可以有效地解決DS18B20在實時控制系統中占用CPU處理時間過多的問題。給出的典型應用程序,具有很好的可移植性,將其嵌入實時控制軟件中的定時中斷服務程序中即可。對DS18B20的讀、寫函數做適當修改,可以實現對更多數量的DS18B20處理,并且占用的時間基本不變。

[1] 金偉正.單線數字溫度感器的使用[J].電子技術應用,2000,26(6):66-68.

[2] 劉鳴,車立新,陳新梧,等.溫度傳感器DS18B20的特性及程序設計方法[J].電測與儀表,2001,38(10):47-51.

[3] 顧振宇,劉魯源,杜振輝.DS18B20接口的C語言程序設計[J].單片機與嵌入式系統應用,2002(7):346-348.

[4] 方飛,薛世華.單片機C延時精度研究[J].單片機與嵌入式系統應用,2008(1):74-75.

猜你喜歡
單片機
基于單片機的SPWM控制逆變器的設計與實現
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機的多功能智能插排
電子制作(2019年11期)2019-07-04 00:34:48
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
小議PLC與單片機之間的串行通信及應用
電子制作(2018年12期)2018-08-01 00:48:04
MSP430單片機在仿真中要注意的幾點問題
電子制作(2017年9期)2017-04-17 03:00:53
基于單片機的平衡控制系統設計
電子制作(2017年19期)2017-02-02 07:08:27
基于單片機的三維LED點陣設計
電子制作(2016年21期)2016-05-17 03:52:51
Microchip推出兩個全新PIC單片機系列
基于Proteus的單片機控制系統的仿真設計
主站蜘蛛池模板: 97se亚洲综合在线天天| 成人噜噜噜视频在线观看| 亚洲永久视频| 成人日韩精品| 无码AV日韩一二三区| 东京热高清无码精品| 国产91丝袜在线播放动漫 | 日本手机在线视频| 亚洲欧美成人在线视频| 欧美全免费aaaaaa特黄在线| AⅤ色综合久久天堂AV色综合| 亚洲性影院| 亚洲人成电影在线播放| 色偷偷一区二区三区| 亚洲精品欧美重口| 欧美成人午夜在线全部免费| 五月婷婷丁香综合| 亚洲经典在线中文字幕| 草草线在成年免费视频2| 女人18一级毛片免费观看| 久久性妇女精品免费| 国产精品白浆在线播放| 制服丝袜一区| 爱做久久久久久| 无码精品一区二区久久久| 亚洲国产天堂久久综合| 国产亚洲精品资源在线26u| 找国产毛片看| 中文字幕无码中文字幕有码在线| 深夜福利视频一区二区| 日韩国产精品无码一区二区三区| 亚洲成a∧人片在线观看无码| 九色国产在线| 欧美激情网址| 亚洲啪啪网| 久久9966精品国产免费| 91精品aⅴ无码中文字字幕蜜桃| 色婷婷狠狠干| 日韩av高清无码一区二区三区| 喷潮白浆直流在线播放| 黄色污网站在线观看| 毛片在线播放网址| 91视频首页| 91破解版在线亚洲| 成人综合久久综合| 亚洲精品另类| 亚洲国产AV无码综合原创| 欧美精品1区2区| 久久免费视频播放| 日本91视频| 亚洲天堂网在线视频| 91在线精品免费免费播放| 9啪在线视频| 激情网址在线观看| 国产精品片在线观看手机版| 精品三级网站| 亚洲中久无码永久在线观看软件| 毛片手机在线看| 国产久草视频| 国产精品内射视频| 99视频在线看| 经典三级久久| 国产成人精彩在线视频50| 伊人色天堂| 国产午夜一级毛片| 久久久久久久久亚洲精品| 国产一区二区人大臿蕉香蕉| 国产成人亚洲综合A∨在线播放| 国产精品手机视频| 国产在线视频导航| 亚洲经典在线中文字幕| 成人伊人色一区二区三区| 亚洲无码电影| 日韩高清一区 | 五月激情婷婷综合| 亚洲国产欧洲精品路线久久| 国产91精品久久| 免费在线观看av| 日韩中文无码av超清| 制服丝袜一区二区三区在线| 精品国产成人高清在线| 亚洲成人动漫在线|