51單片機實現(xiàn)狀態(tài)機資料

上傳人:愛****1 文檔編號:248078457 上傳時間:2024-10-22 格式:PPT 頁數(shù):38 大?。?64.50KB
收藏 版權(quán)申訴 舉報 下載
51單片機實現(xiàn)狀態(tài)機資料_第1頁
第1頁 / 共38頁
51單片機實現(xiàn)狀態(tài)機資料_第2頁
第2頁 / 共38頁
51單片機實現(xiàn)狀態(tài)機資料_第3頁
第3頁 / 共38頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《51單片機實現(xiàn)狀態(tài)機資料》由會員分享,可在線閱讀,更多相關(guān)《51單片機實現(xiàn)狀態(tài)機資料(38頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,電子工業(yè)出版社所有,*,單片機技術(shù)基礎(chǔ)教程與實踐,第9章 51單片機實現(xiàn)狀態(tài)機,9.1 有限狀態(tài)機,有限狀態(tài)機FSM與流程圖很相像,具有一組依據(jù)肯定路徑排列的狀態(tài),依據(jù)于狀態(tài)中的大事和動作,一個狀態(tài)可以轉(zhuǎn)移到其他狀態(tài)。,狀態(tài)是時間中的一個點,例如,當你等火車的時候,你在等待狀態(tài)。一種狀態(tài)在一個狀態(tài)機中,只能消失一次。,大事是某時發(fā)生的事情,例如火車到達,火車運行。,動作是當大事消失時,實現(xiàn)的任務(wù),例如,火車到達后,上車,轉(zhuǎn)移是兩個狀態(tài)之間的聯(lián)系,可以從一個狀態(tài)移動到另外一個狀態(tài)。,狀態(tài)圖就是對一個事物在某個

2、大事發(fā)生后從一個源狀態(tài)到另外一個目的狀態(tài)轉(zhuǎn)移的圖形描述。,狀態(tài)圖中,使用圓圈表示狀態(tài),圓圈中的文字或數(shù)字表示該狀態(tài)的名字或是編碼,狀態(tài)轉(zhuǎn)移方向用箭頭表示,在箭頭旁寫的文字是轉(zhuǎn)移條件。對于梅里狀態(tài)圖,在箭頭旁用“輸入/輸出”的格式表示轉(zhuǎn)移條件與滿足該轉(zhuǎn)移條件下的輸出;而對于摩爾狀態(tài)機,常將輸出放在狀態(tài)圓圈中。,由圖可知,當k=0時,狀態(tài)從a0轉(zhuǎn)移到a1,假設(shè)是k0=1,從狀態(tài)a1轉(zhuǎn)移到a2,等等,假設(shè)是reset=0,則無論在什么狀態(tài),都將轉(zhuǎn)移到a0狀態(tài)。,一個狀態(tài)機描述需要五個要素:狀態(tài)、輸入、輸出、狀態(tài)轉(zhuǎn)移函數(shù)、輸出函數(shù)。,假設(shè)在一個狀態(tài)中包含著另一個狀態(tài)序列,則稱該狀態(tài)為復(fù)合狀態(tài)。,狀態(tài)機

3、就是能夠依據(jù)狀態(tài)轉(zhuǎn)移條件進展狀態(tài)轉(zhuǎn)換和輸出狀態(tài)活動的自動機。狀態(tài)機可以使用數(shù)字電路實現(xiàn),或是單片機通過軟件編程實現(xiàn)。,假設(shè)狀態(tài)數(shù)量有限、輸入數(shù)量有限、輸出數(shù)量有限,則稱為有限狀態(tài)機FSM。,在數(shù)字電路中,有兩類根本的電路,它們是組合電路和時序電路,它們之間的區(qū)分是組合電路的構(gòu)造中沒有反響、輸入值直接打算輸出值,而時序電路的構(gòu)造中具有反響,其輸出由狀態(tài)和輸入打算。狀態(tài)機是時序電路的一種。,9.1.1 時鐘同步有限狀態(tài)機,假設(shè)一個時序電路中的觸發(fā)器都使用同一個時鐘信號,則稱為同步狀態(tài)機,1.構(gòu)造,時鐘同步狀態(tài)機的構(gòu)造如下圖。,其中次態(tài)規(guī)律由現(xiàn)態(tài)和輸入形成。狀態(tài)記憶是n個觸發(fā)器,用于記憶2n狀態(tài)。輸

4、出規(guī)律由現(xiàn)在狀態(tài)和輸入形成。,在時鐘的上升沿或是下降沿取決于觸發(fā)器構(gòu)造,觸發(fā)器在次態(tài)規(guī)律的掌握下動作。,2.輸出規(guī)律,假設(shè)一個時序電路的輸出與現(xiàn)在狀態(tài)和輸入都有關(guān),則稱為梅里狀態(tài)機,就是說,在某狀態(tài)下,滿足某輸入條件的輸出就是梅里輸出。值得留意的是梅里狀態(tài)機的輸入變化直接引起輸出的變化,而不是等到下一個狀態(tài)到來時輸出才變化。就是梅里狀態(tài)機。,與輸入無關(guān),輸出只與狀態(tài)有關(guān)的狀態(tài)機,稱為摩爾狀態(tài)機,所以摩爾狀態(tài)機的輸出與狀態(tài)變化同步。摩爾狀態(tài)機是使用廣泛的狀態(tài)機,如下圖。,3.狀態(tài)編碼,具有n個狀態(tài)變量的狀態(tài)機具有2n個狀態(tài)。究竟一個狀態(tài)用什么樣的二進制數(shù)表示,就是狀態(tài)編碼問題。狀態(tài)與它的編碼之間

5、不是唯一關(guān)系。最簡潔的狀態(tài)編碼就是承受自然二進制整數(shù)挨次來表示狀態(tài),這樣的編碼雖然簡潔,但是最終的電路未必是最簡潔的。假設(shè)要得到最簡潔的結(jié)果,最好把各種編碼都試一試,但是太累人,一般狀況下承受閱歷編碼方法。,在狀態(tài)編碼時應(yīng)當考慮的一些因素:,1選擇初始狀態(tài)的編碼與狀態(tài)機的復(fù)位狀態(tài)一樣,這樣就會使狀態(tài)機復(fù)位時就回到狀態(tài)機的初始狀態(tài)。,2每一次狀態(tài)變化,應(yīng)當使發(fā)生的狀態(tài)變量最少。,3假設(shè)有未使用的狀態(tài),則盡量選擇可以到達簡化規(guī)律設(shè)計的狀態(tài)編碼。設(shè)計中應(yīng)當保證從未使用狀態(tài)肯定可以進入初始狀態(tài)。,4.主從狀態(tài)機,一個大的狀態(tài)機設(shè)計是特別簡單的,一般狀況下,最好將大的狀態(tài)機分解成小狀態(tài)機的集合。一般劃分

6、的原則是依據(jù)功能劃分,主要輸入、輸出和掌握算法由主狀態(tài)機完成,而幫助的、在主狀態(tài)機掌握下的算法由子狀態(tài)機完成,就是說主狀態(tài)機完成頂層算法,子狀態(tài)機完成底層算法。,最常見的劃分就是將計數(shù)器作為子狀態(tài)機,這時,主狀態(tài)機只要發(fā)出啟動信號,而等待計數(shù)器返回的計數(shù)完成信號。雖然主狀態(tài)機增加了啟動計數(shù)器的輸出信號和來自計數(shù)器的計數(shù)完成信號,但是該計數(shù)器就可以為主狀態(tài)機節(jié)省n1個狀態(tài)。,主從狀態(tài)機的一般構(gòu)造如下圖。,5.狀態(tài)轉(zhuǎn)移條件,狀態(tài)轉(zhuǎn)移的條件和輸入的信號數(shù)有關(guān),n個輸入信號,將有2n個轉(zhuǎn)移條件,這些條件之間應(yīng)當是互斥的,只能有一個轉(zhuǎn)移條件有效。也就是只能轉(zhuǎn)移到另外一個狀態(tài),而不是一個以上的狀態(tài)。,在狀

7、態(tài)機設(shè)計過程中,對于狀態(tài)轉(zhuǎn)移的條件是簡潔給出的,但是使多個狀態(tài)轉(zhuǎn)移條件滿足互斥條件確是比較難的,由于這需要更深刻的考慮狀態(tài)、轉(zhuǎn)移條件之間的關(guān)系。,一個狀態(tài)只向另外一個狀態(tài)轉(zhuǎn)移的狀態(tài)機是最簡潔的狀態(tài)機,由于只有一個狀態(tài)轉(zhuǎn)移條件。,有些狀態(tài)圖只給出本狀態(tài)向外狀態(tài)的轉(zhuǎn)移條件,而向自己轉(zhuǎn)移的條件未給出,這種狀況可以理解為只要不向外狀態(tài)轉(zhuǎn)移就保持在本狀態(tài)不動。,6.狀態(tài)機的輸入信號,狀態(tài)機的輸入信號往往使是按鍵信號,既然是按鍵信號,則按下去的時間長短是隨機的,可能是一個或幾個時鐘脈沖的時間,假設(shè)狀態(tài)機的狀態(tài)轉(zhuǎn)移是在某輸入信號的作用之下連續(xù)轉(zhuǎn)移,例如,在狀態(tài)1,當按鍵第一次為0時,轉(zhuǎn)移到狀態(tài)2,其次次為0

8、時轉(zhuǎn)移到狀態(tài)1,則會由于按鍵始終保持在0,引起狀態(tài)不斷的轉(zhuǎn)換,不能實現(xiàn)每按一次按鍵,轉(zhuǎn)換一次狀態(tài)的目的。,解決的方法是設(shè)計邊沿微分電路,使按鍵按下時,只在下降沿輸出一個時鐘周期的低電平,保證只有一個狀態(tài)轉(zhuǎn)移。,7.上電狀態(tài)機初始化,在狀態(tài)機上電時,無論為何種輸入條件,都應(yīng)當進入到一個確定的狀態(tài),該狀態(tài)稱為上電初始狀態(tài)。有些狀態(tài)機可以在上電時,自動進入上電初始狀態(tài),有些狀態(tài)機則不能,需要復(fù)位信號的幫助才能進入上電初始狀態(tài)。,9.1.2狀態(tài)圖,狀態(tài)圖是用于小型、中型狀態(tài)機設(shè)計的一種方法,該方法的特點是簡潔。,狀態(tài)圖中的狀態(tài)轉(zhuǎn)移是用一根弧線表示的,所以不管有多少輸入變量,也只能有一個轉(zhuǎn)移條件表達式,

9、應(yīng)當使現(xiàn)在狀態(tài)到全部次態(tài)的轉(zhuǎn)移條件互斥,也就是說只能轉(zhuǎn)移到一個次態(tài)。,另外需要說明的是用于掌握器的狀態(tài)機大局部都是摩爾狀態(tài)機,就是說這些狀態(tài)機的輸出僅僅與狀態(tài)有關(guān)。,例題9-1 設(shè)計一個挨次開關(guān)裝置,該開關(guān)裝置在按鍵k第一次按下時,三盞燈x、y和z同時點亮,當k 再次按下時,x燈馬上熄滅;y燈15s后熄滅,在y燈熄滅后18s后,z燈熄滅。,轉(zhuǎn)移條件,說明,狀態(tài),說明,輸出,說明,k,輸入按鍵,z0,三燈都滅,t15,15秒定時起動,td15,15秒定時到信號,z1,三燈都亮,t18,18秒定時起動,td18,18秒定時到信號,z2,三燈都亮,x,x燈,z3,x燈滅,其他亮,y,y燈,z4,x、

10、y燈滅,z燈亮,z,z燈,例題9-2 試設(shè)計一個交通信號燈掌握器,該交通燈的紅、黃、綠燈亮滅挨次是如下:,轉(zhuǎn)移條件,說明,狀態(tài),說明,輸出,說明,td10,10秒定時到信號,a0,南北綠、東西紅,t10,10秒定時起動,td5,8秒定時到信號,a1,南北綠閃,東西紅,t8,8秒定時起動,td3,3秒定時到信號,a2,南北黃、東西紅,t3,3秒定時起動,a3,南北紅、東西綠,n1,南北紅燈,a4,南北紅、東西綠閃,n2,南北黃燈,a5,南北紅、東西黃,n3,南北綠燈,d1,東西紅燈,d2,東西黃燈,d3,東西綠燈,9.2.1 C語言描述狀態(tài)機的語句,int state=S0;/初始狀態(tài),whil

11、e(1)/無限循環(huán),switch(state),case S0:,If(T0轉(zhuǎn)移條件滿足)狀態(tài)轉(zhuǎn)移到滿足T0條件的次態(tài);操作;,If(T1轉(zhuǎn)移條件滿足)狀態(tài)轉(zhuǎn)移到滿足T1條件的次態(tài);操作;,If(TN轉(zhuǎn)移條件滿足)狀態(tài)轉(zhuǎn)移到滿足TN條件的次態(tài);操作;,break;,case S1:,/插入S1的操作;,/插入離開S1的轉(zhuǎn)移;,break;,case SN:,/插入SN的操作;,/插入離開SN的轉(zhuǎn)移;,break;,通常將表示狀態(tài)轉(zhuǎn)移的一系列通常將表示狀態(tài)轉(zhuǎn)移的多個if語句寫成if-else語句,這樣可以使轉(zhuǎn)移條件形成互斥。,固然也可以直接使用if 語句描寫狀態(tài)機,例如:,if(state=S0

12、),if(T0轉(zhuǎn)移條件滿足),狀態(tài)轉(zhuǎn)移到滿足T0條件的次態(tài);操作;,else,if(T1轉(zhuǎn)移條件滿足),狀態(tài)轉(zhuǎn)移到滿足T1條件的次態(tài);操作;,else,if(TN轉(zhuǎn)移條件滿足),狀態(tài)轉(zhuǎn)移到滿足TN條件的次態(tài);操作;,if(state=S1),/插入離開該狀態(tài)的條件語句,/插入要轉(zhuǎn)移的次態(tài),/插入S1狀態(tài)的操作語句,if(state=SN),/插入離開該狀態(tài)的條件語句,/插入要轉(zhuǎn)移的次態(tài),/插入SN狀態(tài)的操作語句,9.2.2 描述狀態(tài)機的完整C程序格式,#include,數(shù)碼管的譯碼表格,設(shè)置定時器的定時變量,設(shè)置狀態(tài)變量,設(shè)置其他全局變量,主程序:,局部變量初始化,定時器初始化語句,中斷允許語

13、句,主程序無限循環(huán)中:,1輸入信號處理語句,獲得全部的輸入信號狀態(tài),2狀態(tài)機描述語句,主要是描述狀態(tài)轉(zhuǎn)移、轉(zhuǎn)移條件、定時變量清零等,該狀態(tài)下的輸出語句,顯示該狀態(tài)的發(fā)光二極管不是必需的,用于調(diào)試,3顯示處理語句,將定時數(shù)據(jù)送到數(shù)碼管顯示不是必需的,用于調(diào)試,4其他語句,5假設(shè)是在狀態(tài)描述語句中沒有描述輸出,可單獨將各個狀態(tài)下的輸出描述,定時器中斷效勞程序中:,設(shè)置靜態(tài)局部變量,依據(jù)定時器工作模式確定是否設(shè)置初值,假設(shè)是需要準確定時,選擇不需要預(yù)置初值的工作方式2,每中斷一次就增加數(shù)值的語句,獲得確定的中斷時間例如1s。,依據(jù)確定的中斷時間,增加定時變量,9.3 例如程序,在狀態(tài)機描述中,除了直

14、接描述狀態(tài)機的語句外,還需要按鍵鈕輸入語句、定時器描述等語句,本節(jié)通過例如對按鍵、定時等的C描述賜予介紹。,例如程序1 按鍵處理程序。,P3口全部連接按鍵,P0口連接的數(shù)碼管顯示按鍵的值,程序中變量kk是按鍵的值,不同的按鍵按下,數(shù)碼管顯示不同的值。,變量,說明,變量,說明,nn,延遲時間循環(huán)變量,kk,按鍵值,table,共陽數(shù)碼管譯碼表,源程序如下:,#include“AT89X51.h“,unsigned int code table=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;,unsigned int kk=

15、0 x08;,void main,unsigned int nn;,while(1),P3=0 xff;/P3口連接8個按鍵作為輸入,if(P3|0 x00)!=0 xff)/假設(shè)有按鍵按下,for(nn=0;nn1000;nn+);/延時,if(P3|0 x00)!=0 xff)/按鍵還在按下狀態(tài),switch(P3),case 0 xfe:/P3_0=0,fe=1111 1110,kk=0;break;,case 0 xfd:/P3_1=0,fd=1111 1101,kk=1;break;,case 0 xfb:/P3_2=0,fb=1111 1011,kk=2;break;,case 0

16、 xf7:/P3_3=0 f7=1111 0111,kk=3;break;,case 0 xef:/P3_4=0,ef=1110 1111,kk=4;break;,case 0 xdf:/P3_5=0,df=1101 1111,kk=5;break;,case 0 xbf:/P3_6=0,bf=1011 1111,kk=6;break;,case 0 x7f:/P3_7=0 7f=0111 1111,kk=7;break;,default:kk=8;,while(P3!=0 xff);/假設(shè)按鍵還在按下時,則停留在此,等待按鍵抬起,P0=tablekk;/將鍵值送到P0口連接的數(shù)碼管顯示,例如程序2 按鍵掌握秒計數(shù)定時器0工作在方式1。,P3口引腳連接按鍵,按鍵按下后,P0口連接的數(shù)碼管顯示按鍵號,P1口循環(huán)顯示0按鍵號之間的值,P2_0連接的LED燈亮1s,滅1s。如下程序承受定時器0,方式1工作,由于預(yù)裝初值需要時間,所以不是準確計數(shù)。,變量,說明,變量,說明,nn,主函數(shù)內(nèi)延遲時間循環(huán)變量,kk,按鍵值,t0,隨定時器中斷次數(shù)遞增變量,nn,局部靜態(tài)變量,隨定時器中斷次數(shù)增加,t

展開閱讀全文
溫馨提示:
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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!