1. 程式人生 > >山東大學電子設計與飛思卡爾協會培訓1——51微控制器

山東大學電子設計與飛思卡爾協會培訓1——51微控制器

我理解的51微控制器
電子設計與飛思卡爾協會培訓1
作為功能強大的微型控制器,很多地方將之與CPU放在一起討論可能比較容易理解。
比如我們現在手邊恰好有一塊STC89C52RC型號的微控制器,我們該怎麼使用它呢?看說明書。這裡,我們一般叫——資料手冊。記得要認清楚你手裡那塊微控制器的具體型號,它會寫在你的微控制器表面(或許你需要用放大鏡仔細看看),因為不同型號微控制器的暫存器等內容是不一樣的。就好比STC89C52RC和AT89S52,大家對照一下資料手冊(群裡有),主要看看暫存器那裡,差別還是有的。
那麼什麼是暫存器呢?
暫存器是中央處理器內的組成部分。暫存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、資料和地址。在中央處理器的控制部件中,包含的暫存器有指令暫存器(IR)和程式計數器(PC)。
而我們一般會用到特殊功能暫存器來進行某些特定程式的編寫。這個會在後文提到。
強調一下:微控制器程式與硬體電路緊密相連,同一個程式放在不同型號的微控制器上效果可能完全不一樣。這也就是說微控制器程式的可移植性不好(值得一提的是,正是由於可移植性的問題,才有了後續的計算機行業的發展)。
如果大家寫的微控制器程式出了bug(語法沒問題,但是就是不實現自己想要的功能),首先要檢查是不是硬體電路哪裡沒連上,哪裡燒壞了。其次,仔細檢視微控制器IO口(引腳)與外圍電路(在51微控制器外面的其他電路)的連線,再看看自己的程式是不是跟這個電路不搭配?這樣一來基本就可以找出問題來了。
正是由於外圍電路十分重要,很多時候我們有必要仔細研究,於是我們需要藉助計算機進行輔助分析。這裡我們用到兩個軟體:Altium designer、Multisim。Altium designer是畫PCB(印刷電路板)的軟體。當用Altium designer畫好了PCB並且發到廠家印刷出來之後,我們就不用對焊錫進行超高難度的走錫等操作了,只需要進行直插與貼片的焊接即可。而且電路的可靠性大大提高。Multisim軟體是電路模擬,指的是用計算機模擬硬體電路測試我們的想法。他會提供大部分我們需要用到的晶片(如果你用Multisim時發現他沒有提供你要求的晶片,那麼說明你已經研究到很新的電路功能了)。我們不斷地使用Multisim進行模擬,一遍遍出錯。最終,我們發現某一些原件按照特定的連線方式連線起來就可以實現我們心中的想法,那麼Multisim的目的就達到了。這之後才是畫PCB,進行硬體電路製作。當然,如果你做的是高頻電路,畫PCB的時候還需要小心,裡面有許許多多要注意的地方,那就是另外的內容了。
假設我們做好了硬體電路的設計與製作,下面來完成軟體部分的工作。
微控制器的程式一般用C語言或者彙編來進行編寫。組合語言要求對微機原理與介面技術有一定的瞭解,不像C語言那樣簡單。我們重點還是說C語言。
一個微控制器的工程專案主要包含以下幾塊內容:
版權資訊
標頭檔案
巨集定義
子函式宣告
main函式
子函式定義(可新建.c檔案存放)
微控制器的C程式跟PC的C程式有一定的不同之處,區別主要是微控制器需要進行暫存器配置以及定義引腳。其中特殊功能暫存器定義方式為sfr,引腳的定義方式為sbit。這裡大家最好看一下我發到群裡的微控制器例程(這個例程只是針對我所使用的微控制器而言,大家一定要參照群裡的微控制器電路圖進行檢視)。
下面簡單說明一下微控制器程式。我將微控制器程式分為六塊內容:
1. 直接對IO口進行操作。其分為讀、寫兩種。寫IO的例子是點亮LED,使蜂鳴器響;讀IO的例子的按鍵程式。
2. 在對IO操作的基礎上配合暫存器進行編寫。這個以數碼管程式與液晶顯示器程式為例。
3. 中斷是控制器裡非常重要的一個概念。他指的是:假設你正在寫作業,突然手機響了。手機響就是一個外部中斷。假設你正在寫作業(作業怎麼那麼多),突然你餓了,這就是一個內部中斷。咱們寫微控制器程式主要用外部中斷。分為低電平觸發和下降沿觸發。低電平是讀某個IO口,是0那麼就觸發中斷。下降沿觸發是判斷某個IO口有從高電平變為低電平的過程,這個叫下降沿。例程裡面這兩種方式都有。
4. 定時器,就好像倒計時一樣。其本質是依賴晶振進行計數。我們給一個暫存器配上一個數,其上限是256(8個1),我們給他賦初值假設是156。那麼這個微控制器會自己不斷地加1 ,加1 ,一共加100次。當第101次,它再加就成了一個1後面八個0,超過了暫存器的八位數了。這個時候我們叫做“溢位”,此時微控制器會有所反應。當然,具體的暫存器配置需要看資料手冊的暫存器表。
5. 通訊方式有哪些呢?分為無線通訊和有線通訊。無線通訊應用較廣,以紅外通訊最為簡單,此外還有藍芽、ZigBee等。有線通訊有串列埠等。主要需要保證通訊過程出現意外狀況(比如說有一次通訊的內容在傳輸過程中丟失,該怎麼保證重新發一次等),這個推薦有興趣的同學瞭解一下上面所說的通訊協議的理論與原始碼。
6. 資料採集部分主要是AD和DA模組的使用。當然,大家可以自己買來晶片,並將之製作進自己的PCB中,也可以使用現成的模組。AD是模擬訊號轉變為數字訊號,DA反之。理論部分大家以後會學,心急的同學可以自己百度。這裡用法重點是學會用買來的AD模組,知道這個東西跟微控制器怎麼連線,知道怎麼編寫程式。另外,如果大家需要對高頻訊號進行分析處理,需要買特定的高速AD晶片哈。
51微控制器內容不算多,會進行IO操作可以說會了60%了;再學會了配置暫存器,學會寫中斷,那就會了80%;最後學會使用買來的其他感測器模組,比如超聲波、紅外對管等等,這樣就會了95%。但是學無止境,51在某種角度來看是非常了不起的,所以我不敢相信誰可以把51微控制器學到100%,或許他的發明人可以做到。但是我們後輩學子也實在沒必要100%,有95%足以儘可能應對遇到的一切問題也就夠了。