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的單片機控制系統的仿真設計
主站蜘蛛池模板: 久久一色本道亚洲| 国产精品手机在线观看你懂的| 又爽又大又黄a级毛片在线视频| 欧美日韩成人在线观看| 国产毛片片精品天天看视频| 色综合手机在线| 国产美女免费| 欧美精品一区在线看| 依依成人精品无v国产| 日本a∨在线观看| 色亚洲成人| 亚洲天堂自拍| 亚洲第一综合天堂另类专| 国产精品嫩草影院av| 亚洲无限乱码一二三四区| 国产一级在线播放| 成年人久久黄色网站| 免费看美女自慰的网站| 国产成人一区免费观看| 色视频国产| 无遮挡国产高潮视频免费观看| 原味小视频在线www国产| 青青草国产一区二区三区| 91色爱欧美精品www| 色综合综合网| 99福利视频导航| 亚洲男人天堂网址| 中日韩一区二区三区中文免费视频| 中文字幕无码av专区久久| 亚洲精品国偷自产在线91正片| 九色综合视频网| 欧美 亚洲 日韩 国产| 中文字幕在线一区二区在线| 国产一区在线观看无码| 国产女人在线视频| 亚洲毛片在线看| 久久精品电影| 亚洲欧美成人在线视频| 日本成人不卡视频| 福利片91| 丰满的熟女一区二区三区l| 午夜人性色福利无码视频在线观看| 国产成人做受免费视频| 天堂va亚洲va欧美va国产| 91丨九色丨首页在线播放| 国产性猛交XXXX免费看| 久久人搡人人玩人妻精品| 在线观看国产黄色| 欧美一区日韩一区中文字幕页| 亚洲欧美在线精品一区二区| 亚洲人成网18禁| 好久久免费视频高清| 日本AⅤ精品一区二区三区日| 国产一级二级在线观看| 亚洲福利片无码最新在线播放| 精品国产www| 欧美成人怡春院在线激情| 91视频99| 中文字幕欧美日韩高清| 呦女精品网站| 精品伊人久久久香线蕉 | 亚洲日韩国产精品综合在线观看| 激情六月丁香婷婷| 亚洲天堂免费在线视频| 国产精品第5页| 国产丝袜啪啪| 毛片网站观看| 免费A∨中文乱码专区| 99视频只有精品| 毛片网站观看| 久久综合伊人 六十路| 国产成人在线小视频| 亚洲第一成年网| 国产又色又刺激高潮免费看| 精品无码一区二区三区在线视频| 一级看片免费视频| 国产凹凸视频在线观看| 高清亚洲欧美在线看| 国产免费一级精品视频| 国产欧美日韩18| 丁香五月亚洲综合在线 | 999国产精品永久免费视频精品久久 |