單片機簡介
單片機主要由運算器、控制器和寄存器三大部分構成。其中,運算器由算術邏輯單元(ALU)、累加器、寄存器等構成,首先累加器和寄存器向ALU輸入兩個8位源數據,其次ALU完成源數據的邏輯運算,最后將運算結果存入寄存器中;控制器由程序計數器、指令寄存器、指令譯碼器、時序發生器和操作控制器等構成,是一個下達命令的“組織”,用于協調整個系統各部分之間的運作;寄存器主要有累加器A、數據寄存器DR、指令寄存器IR、指令譯碼器ID、程序計數器PC、地址寄存器AR等。
在微處理器內部運算器、控制器、寄存器之間是相互連接的,由控制器向各部分發布操作命令,運算器接到命令后進行相應運算,并將運算后結果存入相應的寄存器中。
單片機的基本工作原理
單片機自動完成賦予它的任務的過程,也就是單片機執行程序的過程,即一條條執行的指令的過程,所謂指令就是把要求單片機執行的各種操作用的命令的形式寫下來,這是在設計人員賦予它的指令系統所決定的,一條指令對應著一種基本操作;單片機所能執行的全部指令,就是該單片機的指令系統,不同種類的單片機,其指令系統亦不同。
為使單片機能自動完成某一特定任務,必須把要解決的問題編成一系列指令(這些指令必須是選定單片機能識別和執行的指令),這一系列指令的集合就成為程序,程序需要預先存放在具有存儲功能的部件——存儲器中。存儲器由許多存儲單元(最小的存儲單位)組成,就像大樓房有許多房間組成一樣,指令就存放在這些單元里,單元里的指令取出并執行就像大樓房的每個房間的被分配到了唯一一個房間號一樣,每一個存儲單元也必須被分配到唯一的地址號,該地址號稱為存儲單元的地址,這樣只要知道了存儲單元的地址,就可以找到這個存儲單元,其中存儲的指令就可以被取出,然后再被執行。
程序通常是順序執行的,所以程序中的指令也是一條條順序存放的,單片機在執行程序時要能把這些指令一條條取出并加以執行,必須有一個部件能追蹤指令所在的地址,這一部件就是程序計數器PC(包含在CPU中),在開始執行程序時,給PC賦以程序中第一條指令所在的地址,然后取得每一條要執行的命令,PC在中的內容就會自動增加,增加量由本條指令長度決定,可能是1、2或3,以指向下一條指令的起始地址,保證指令順序執行。
單片機要學習的內容
第一步:數字I/O的應用
在大多數的單片機實驗中,跑馬燈實驗正是數字I/O的典型應用,也是跑馬燈的實驗被安排第一個的原因。通過將單片機的I/O引腳位進行置位或清零來點亮或關閉LED燈,雖然簡單,但是這就是數字電路中的邏輯功能。數學I/O應用的實驗還有按鍵實驗,當按下某鍵時,某LED燈被點亮。數字I/O實驗教會我們單片機的編程思想,必須首先對單片機的相應寄存器進行配置,以初始化I/O引腳,這樣才能使該引腳具備數字輸入與輸出功能。 單片機的一個內置或外置功能的使用,就是對該功能相關的寄存器進行設置,初始化,而這便是單片機編程的特點。少則4、5個函數搞定,多則十幾行程序,要有耐心,別怕麻煩,所有的單片機都是這樣。
第二步:RS232串口通訊
單片機都有UART接口,這個簡單、古老的通訊方式可以與我們PC機的RS232接口直接連接通訊,當然,因為它們兩者電平邏輯不同,必須要使用一個RS232電平轉換芯片才能與PC機連接,例如Max232芯片。
UART接口的使用是非常重要的,通過這個接口,我們可以使單片機與PC機之間交換信息,“接口”概念的學習也便由此引入。使用UART接口也會學習到目前最為簡單與常用的通信協議等知識。我們也可以通過PC機的串口調試軟件來監視到單片機實驗板的數據,想一想,這會是一個多么神奇的事情啊~~
第三步:定時器的使用
學會定時器的使用,就可以利用單片機來實現典型的時序邏輯電路。時序邏輯電路的應用是最強大、最廣泛的。例如,在工業的控制中,我們讓某個開關每隔1秒鐘打開與關閉一次。這個方案可以通過普通的數字集成電路實現,也可以通過PLC來實現,也可以通過CPLD或FPGA來實現,但是只有單片機的實現是最簡單,成本也是最經濟的。定時器是單片機內部資源里最為重要的一個,更是邏輯與時間控制實現的基礎。
第四步:中斷
在單片機軟件設計架構中,一段程序循環執行是其一個特點,也是一個弊端。每個操作指令的執行都需要一定的執行時間,如果程序沒有執行到該指令,則該指令的動作就不會觸發,這樣就會忽略許多快速發生的事件,例如方波頻率檢測的上升沿。針對在單片機程序正常運行時能夠對外部事件立即做出響應而設計了中斷功能。當中斷功能執行時,單片機優先處理中斷程序,當中斷處理完成后,再回到單片機的正常程序執行中。中斷的機理是比較容易理解的,但是什么時候打開中斷,什么時候關閉、屏蔽中斷,需要如何配置才能使能中斷的某些功能,中斷里要執行哪些程序,這些程序的要滿足哪些要求就需要花些時間去理解與實踐了。中斷學會后,就可以編寫復雜結構功能的程序,可以一邊閃著小LED燈,一邊掃描著按鍵,一邊發送著數據,也可以干著多個事情……打個比喻,中斷功能可以使單片機吃著碗里的,看著鍋里的。根據傳說中的8020定律,如果您掌握了上面提到的這四步,那么,您已經學會了80%的內容了。
第五步:I2C、SPI通訊接口
單片機系統畢竟資源有限,而利用I2C、SPI通訊接口進行擴展外設是最常用的方法,也是非常重要的方法。這兩個通訊接口都是串行通訊接口,典型的基礎實驗就是I2C的EEPROM實驗與SPI的SD卡讀寫實驗。
第六步:比較,捕捉,PWM功能
比較,捕捉與PWM功能可以使單片機更加適合電機控制,信號檢測,實現電機速度與步長的調節。PWM波現在又是LED調光的主要手段。這里已經初步接觸了數字電路里的模擬電路部分。
第七步:A/D模數采集
單片機目前基本都自帶多通道A/D模數轉換器,通過這些A/D轉換器可以單片機獲取模擬量,用于檢測電壓、電流等信號。學習時要分清模擬地與數字地,參考電壓,采樣時間,轉換速率,轉換誤差等重要概念。這一步學會了數字電路控制模擬電路部分,而最簡單的A/D模數轉換器就是電壓表實驗。
第八步:學習USB接口、TCP/IP協議、工業總線
目前主流的通訊協議為USB協——下位機與上位機高速通訊接口;TCP/IP——萬能的互聯網使用的通訊協議;工業總線——諸如Modbus,CANOpen等工業控制各個模塊之間通訊的協議。這些都會應用在未來的項目里,集成入單片機里的固件,并且也是當前產品開發的一個發展方向。
學習單片機的心得體會
首先,學習單片機要有必須的基礎:電子技術方面要有數字電路和模擬電路等方面的理論基礎,個性是數字電路;編程語言要求匯編語言或C語言。要想成為單片機高手,推薦初學者首先學習匯編語言,學的差不多的時候,轉入C語言學習。盡管匯編語言屬于低級語言,編程效率低,但是較C語言具有目標代碼簡短,占用內存少,執行速度快等優點,更重要的是能使初學者盡快熟悉單片機的內部結構,并能對其進行精確的控制。匯編語言在單片機教材里面都會涉及,不需要單獨購買教材和學習。C語言是一門學問,有很多專業書籍來講解,并且對我們今后的編程生涯有絕對的好處,因此要深入學習,千萬不要自以為看了某某的視頻教程就以為掌握了C語言,那只是C語言的一部分。在那里給大家推薦一本單片機C語言程序設計參考書,馬忠梅等著,北京航空航天大學出版社出版的《單片機的C語言應用程序設計》,要求C語言基礎。如果沒學過C語言,推薦學習清華大學譚浩強編寫的C語言程序設計,這本書寫的不錯,通俗易懂。
其次,是單片機教材選取。單片機是一門十分重視實踐的技術,不能總是看書,但要學習它首先應看書,對單片機引腳、內部結構、寄存器和原理有必須地了解和感官認識,它的是怎樣工作的,能干些什么?剛開始時,也許你看不明白,但這并不要緊,因為你還缺乏實踐經驗。此刻單片機應用廣泛,因此各個廠家分別推出了自己的單片機,按內部結構體系派系分:51系列、PIC系列、AVR系列、摩托羅拉等等……我們沒必要每樣都學!因為他們的編程方法和調試過程以及內部指令結構有必須的相似,只要學精通一款就OK了!尤其是用C語言編程,就幾乎不用分什么派系,但是我們要選取一款有代表性的知識范圍廣,并且入門容易,書籍多。一般來說,MCS-51系列單片機已經得到廣泛的普及和應用,市場上它的資料也比較多,用的人也很多。給大家推薦一些參考書,學習時只需要一本就足夠拉。書名:《新編MCS-51單片機應用設計》,哈爾濱工業大學出版,作者:張毅剛;書名:《單片機原理及應用》,高等教育出版社,作者:張毅剛等;書名:《單片機高級教程:應用與設計》,北京航空航天大學出版社,作者:何立民。相關教材還有很多,在這不一一列舉。
然后,是開發工具和開發環境的選取。選取一塊適宜的學習板,對于初學者來說一般無力理解,如果經濟條件允許、本人又對單片機很感興趣、有從事相關工作意向的話,鼓勵大家購買。隨便說一句,學習板功能要求太全,具有流水燈、數碼管、獨立鍵盤、矩陣鍵盤、AD或DA、液晶、蜂鳴器等就差不多啦,畢竟,功能齊全的價格比較高。仿真器對單片機初學者來說既是那么耳熟,同時又有些陌生,這主要是因為市場上傳統的仿真器價格都在千元以上,對經濟不是十分寬裕的人來說是不小的開支。同時仿真器是用來提高調試程序效率的,也不是非需不可的,如果你沒有仿真器,遇到程序出錯的時候,只好苦思冥想,反復燒寫調試。隨便推薦一下,學林電子的51tracer仿真器,有興趣的朋友可關注一下。有了單片機教程板以后,先看下指導說明書,熟悉一下學習板,開卷有益。以后就得靠自己多練習了,將學習板與電腦連接好,先學會開發軟件的使用,然后從最簡單的流水燈實驗做起,按照你自己的意愿控制流水燈,當你完成時,你會發現這是多么愜意的事情。太好玩了,你會覺得這不是在學習,而是在玩,當你發現,單片機能夠按照你編寫的程序工作時,你會覺得十分興奮,比做什么事情都開心,這樣你會慢慢迷上單片機,真的。不少網站上說搞
定某個實驗,就恭維的告訴你一聲”恭喜你,學會了”自己學會了單片機,這有點可笑,這只能說明你算過關了,對單片機有了必須了解和會使用它了。但是單片機能完成的功能太多了,尤其是對外圍器件的控制,綜合起來能設計出許多意想不到的產品。因此除了入門外,精通可千萬別輕易說出口。
最后,在熟練掌握和應用后,那能夠說對于單片機方面的硬件你已經入門了,剩下的就是自己練習設計電路,不斷的積累經驗。最終,自己完全設計具有個人風格的電路,產品,這樣你就是單片機高手拉。只要過了第一關,后面的路就好走多了,萬事開頭難,大家可能都聽過。時下多家電子類的報刊雜志如:《電子制作》《無線電》《電子報》《電子世界》都開設了詳細的單片機教程專欄,對于想學習單片機的朋友來說幫忙很大,能夠說此刻的單片機教程環境是最好的,有網絡,有書籍,有報刊雜志,還有視頻教程,元件的采購方面也十分充足,相關的器材又多有便宜。如果每一天能抽出兩小時的時間去學習,快的一個月,慢的三個月就入門拉。
經驗總結
(1)學習單片機沒有捷徑,別指望兩三天就學會,要堅持不懈,重在積累。
(2)別崇拜高手,別相信天才,大部分人都不是天才(相信你也不是)!
(3)單片機是一門應用性和實踐性很強的學科,要多動手,多做實驗。
(4)要學會參考別人的程序,減少自己琢磨的時間,迅速提高自己的編程潛力。
(5)碰到問題能夠借助網絡來搜尋答案和對自己有幫忙的問題,能夠大大減少你的開發時間。
(6)要多交一些朋友,多交流。技術是靠不斷的積累和交流才會進步的,封閉自守只會更加落后。
-
單片機
+關注
關注
6037文章
44558瀏覽量
635233
發布評論請先 登錄
相關推薦
評論