狀態(tài)機(jī)在嵌入式系統(tǒng)中地使用方法_第1頁
狀態(tài)機(jī)在嵌入式系統(tǒng)中地使用方法_第2頁
狀態(tài)機(jī)在嵌入式系統(tǒng)中地使用方法_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、狀態(tài)機(jī)在嵌入式系統(tǒng)中的使用方法在嵌入式系統(tǒng)的應(yīng)用中,有很多關(guān)系到狀態(tài)機(jī)的運(yùn)用。那么他是如何來應(yīng)用的,怎么去理解。今天在此信盈達(dá)做一簡 單的介紹。首先,我們來看一下什么是狀態(tài)機(jī)?狀態(tài)機(jī)又稱有限狀態(tài)機(jī),(finite-state machine, FSM ),又稱有限狀態(tài)自動機(jī),簡稱狀態(tài)機(jī),是表示有限個狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動作等行為的數(shù)學(xué)模型。有限狀態(tài)自動機(jī)在很多不同領(lǐng)域中是 重要的,包括電子工程、語言學(xué)、計算機(jī)科學(xué)、哲學(xué)、生物學(xué)、數(shù)學(xué)和邏輯學(xué)。有限狀態(tài)機(jī)是在自動機(jī)理論和計算理論中研究的一類自動機(jī)。在計算機(jī)科學(xué)中,有限狀態(tài)機(jī)被廣泛用于建模應(yīng)用行為、硬件電路系統(tǒng)設(shè)計、軟件工程,編譯器、網(wǎng)絡(luò)

2、 協(xié)議、和計算與語言的研究。本次我們以DS18B20為例來講解狀態(tài)機(jī)在嵌入式系統(tǒng)中的使用方法。DS18B20是由達(dá)拉斯半導(dǎo)體生產(chǎn)的單總線數(shù)字式溫度傳感器。DS18B20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹 鋼封裝式,型號多種多樣,有 LTM8877 ,LTM8874等等。主要根據(jù)應(yīng)用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環(huán)測溫,鍋爐測溫,機(jī)房測溫,農(nóng)業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐 碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域。1 技術(shù)性能描述 、獨(dú)特

3、的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。 、測溫范圍55 'C+125 'C,固有測溫誤差(注意,不是分辨率)1 Co 、支持多點(diǎn)組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個,實現(xiàn)多點(diǎn)測溫,如果數(shù)量過多,會使供電電源電壓過低,從而造成信號傳輸?shù)牟环€(wěn)定。 、工作電源:3.05.5V/DC(可以數(shù)據(jù)線寄生電源) 、在使用中不需要任何外圍元件 、測量結(jié)果以912位數(shù)字量方式串行傳送 、不銹鋼保護(hù)管直徑6 、適用于DN1525, DN40DN250各種介質(zhì)工業(yè)管道和狹小空間設(shè)備測溫 、標(biāo)準(zhǔn)安裝螺紋

4、 M10X1,M12X1.5,G1/2 任選 、PVC電纜直接岀線或德式球型接線盒岀線,便于與其它電器設(shè)備連接。2 DS18B20和單片機(jī)的電路連接方法。DS18B20對外有3個引腳,1腳VCC (電源)2腳DQ (數(shù)據(jù)總線)3腳GND (地線)3 DS18B20的操作方法和操作時序。3.1 操作方法:步驟1 :初始化步驟2 : ROM操作指令初始化步驟3: DS18B20功能指令每一次DS18B20的操作都必須滿足以上步驟,若是缺少步驟或者順序混亂,器件將不會返回任何值。3.2 操作時序:初始化:通過單總線的所有操作處理都從一個初始化序列開始。初始化序列包括一個由控制器發(fā)出的復(fù)位脈沖和其后由

5、從機(jī)發(fā)出的存 在脈沖。存在脈沖讓總線控制器知道DS18B20在總線上已經(jīng)準(zhǔn)備好了。初始化步驟由復(fù)位脈沖和存在脈沖組成:時序如下:DS18B20的ROM操作指令如下:一旦總線控制器探測到一個存在脈沖,它就發(fā)出一條 ROM操作指令。如果總線上掛有多只18B20,這些指令將基于器件獨(dú)有的64位序列碼使得總線控制器選岀特定要進(jìn)行操作的器件。這些指令也可以讓總線控制器識別有多少只,什么型號的器件掛在總線上。ROM指令有5條,都是8位長度。總線控制器在發(fā)送一條18B20功能指令之前必須先發(fā)送一條ROM指令。由于我們所講述的系統(tǒng)只有一個18B20,所以用不到18B20的64位ROM碼。下述講解我們使用到的指

6、令。詳細(xì)指令請看18B20數(shù)據(jù)手冊。 忽略ROM指令(CCH):這條指令允許總線控制器不提供64位ROM碼就使用功能指令。功能指令:在DS18B20發(fā)送完ROM操作指令后,跟著可以發(fā)送一條DS18B20功能指令。這些命令允許總線控制器讀寫DS18B20暫存器,發(fā)起溫度轉(zhuǎn)換模式。 溫度轉(zhuǎn)換指令(44H ):這條命令用于啟動一次溫度轉(zhuǎn)換。溫度轉(zhuǎn)換指令被執(zhí)行,產(chǎn)生的溫度轉(zhuǎn)換結(jié)果以2字節(jié)的形式被存儲在高速暫存器中。而后DS18B20保持等待狀態(tài),等待控制器讀取數(shù)據(jù)。DS18B20處于轉(zhuǎn)換期間,將在總線上返回0,轉(zhuǎn)換完成,返回1。 讀暫存器指令(BEH):這條指令讀取暫存器中的內(nèi)容,從0地址開始讀取,直

7、到第 9個字節(jié)讀取完畢,如果不想讀完所有字節(jié),控制器可以在任何時間發(fā)岀復(fù)位命令來終止讀取。DS18B20讀寫時序圖:4 編程思路: 由于我們的系統(tǒng)只有一個 DS18B20,所以我們不需要對 DS18B20讀取ROM碼。編程思路如下:1、初始化 DS18B202、發(fā)送忽略ROM指令3、發(fā)送溫度轉(zhuǎn)換指令4、等待溫度轉(zhuǎn)換完成5、初始化DS18B206、發(fā)送忽略ROM指令7、發(fā)送讀取溫度指令&讀取溫度值從以上編程思路的分析,我們可以看出對DS18B20的操作可以分為以下幾種狀態(tài)來描述:狀態(tài)1:初始化狀態(tài)2:發(fā)送指令忽略ROM指令,發(fā)送溫度轉(zhuǎn)換指令狀態(tài)3:等待溫度轉(zhuǎn)換完成狀態(tài)4:初始化狀態(tài)5 :

8、發(fā)送忽略ROM指令,發(fā)送讀取溫度指令、讀取數(shù)據(jù)接下來我們分析以下幾個問題:1、單片機(jī)復(fù)位后應(yīng)狀態(tài)機(jī)處于什么狀態(tài)答:單片機(jī)復(fù)位后狀態(tài)機(jī)肯定應(yīng)該處于狀態(tài)1 了。2、各個狀態(tài)之間的轉(zhuǎn)換依據(jù)是什么答:狀態(tài)1到狀態(tài)2的轉(zhuǎn)換依據(jù)是DS18B20初始化成功并等待 DS18B20拉高數(shù)據(jù)線。狀態(tài)3到狀態(tài)4的轉(zhuǎn)換依據(jù)是溫度 裝換完成。狀態(tài)4到狀態(tài)5的轉(zhuǎn)換依據(jù)也是 DS18B20初始化成功并等待 DS18B20拉高數(shù)據(jù)線。從初始化的時序圖中,我 們可以看出,如果控制器從 DS18B20的數(shù)據(jù)總線上讀到低電平后又讀到了高電平。那么DS18B20初始化成功。從上面的溫度轉(zhuǎn)換指令的描述中,我們可以看岀,DS18B20溫

9、度轉(zhuǎn)換完成的標(biāo)志是數(shù)據(jù)總線上讀到了高電平。以上我們分析了 DS18B20的使用步驟,接下來我們用 c語言來描述一下這個過程。void TaskWendu (void )switch (FsmState )case STATE1 :If (InitDs18b20 () = SUCCEND )FsmState = STATE2 ;break ;case STATE2 :SendRom (SKIP_ROM );SendRom( CONVERT);FsmState = STATE3;break ;case STATE3 :if (ConvertSuccend )FsmState = STATE4 ;b

10、reak ;case STATE4 :if (InitDs18b20 () = SUCCEND )FsmState = STATE5 ;break ;case STATE5 :SendRom (SKIP_ROM );SendRom( READ_SCRATCHPAD );GetData ();FsmState = STATE1 ;break ;default :break ;5 使用狀態(tài)機(jī)編程的優(yōu)點(diǎn):從以上的分析過程,我們可以看出,使用狀態(tài)機(jī)比我們普通的流水賬式的程序更容易理解。思路也更加清晰。另外一 個重要的作用就是程序中沒有了延時,這樣就增加了CPU的利用率。這對我們單片機(jī)開發(fā)是非常有利的。實際上,狀態(tài)機(jī)在軟件編程中經(jīng)常使用。比如一個按鍵命令解析程序,就可以被看做狀態(tài)機(jī):本來在A狀態(tài)下,觸發(fā)一個按鍵就進(jìn)入到B狀態(tài),再觸發(fā)另外一個按鍵就進(jìn)入C狀態(tài),或者返回A狀態(tài)等。這就是最簡單的按鍵狀態(tài)機(jī)例子。但實際的按鍵解析程序會比這更復(fù)雜

溫馨提示

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

評論

0/150

提交評論