單片機的介紹
又稱 單片微控制器,它不是完成某一個邏輯功能的晶片,而是把一個計算機系統集成到一個晶片上。概括的講:一塊晶片就成了一台計算機。它的體積小、質量輕、價格便宜、為學習、套用和開發提供了便利條件。同時,學習使用 單片機了解計算機原理與結構的最佳選擇。
可以說,二十世紀跨越了三個“電”的時代,即電氣時代、電子時代和現已進入的電腦時代。不過,這種電腦,通常是指個人計算機,簡稱PC機。它由 主機、鍵盤、顯示器等組成(如圖1所示)。還有一類計算機,大多數人卻不怎么熟悉。這種計算機就是把智慧型賦予各種機械的 單片機(亦稱微控制器,如圖2所示)。顧名思義,這種計算機的 最小系統只用了一片積體電路,即可進行簡單運算和控制。因為它體積小,通常都藏在被控機械的“肚子”里。它在整個裝置中,起著有如人類頭腦的作用,它出了毛病,整個裝置就癱瘓了。現在,這種 單片機的使用領域已十分廣泛,如智慧型儀表、實時工控、通訊設備、導航系統、家用電器等。各種產品一旦用上了 單片機,就能起到使產品升級換代的功效,常在
產品名稱前冠以形容詞——“智慧型型”,如智慧型型洗衣機等。現在有些工廠的技術人員或其它業餘電子開發者搞出來的某些產品,不是電路太複雜,就是功能太簡單且極易被仿製。究其原因,可能就卡在產品未使用單片機或其它 可程式邏輯器件上。
目前 單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。飛彈的導航裝置,飛機上各種儀表的控制,計算機的網路通訊與數據傳輸,工業自動化過程的實時控制和數據處理,廣泛使用的各種智慧型IC卡,民用豪華轎車的安全保障系統,錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開 單片機。更不用說自動控制領域的機器人、智慧型儀表、醫療器械了。因此, 單片機的學習、開發與套用將造就一批計算機套用與智慧型化控制的科學家、工程師
單片機的套用領域
單片機廣泛套用於儀器儀表、家用電器、醫用設備、航空航天、專用設備的智慧型化管理及過程控制等領域,大致可分如下幾個範疇:
1.在 智慧型儀器 儀表上的套用
單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優點,廣泛套用於儀器儀表中,結合不同類型的感測器,可實現諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。採用 單片機控制使得儀器儀表 數位化、智慧型化、微型化,且功能比起採用電子或數字電路更加強大。例如精密的測量設備(功率計,示波器,各種分析儀)。
2.在工業控制中的套用
用 單片機可以構成形式多樣的 控制系統、 數據採集系統。
3.在家用電器中的套用
可以這樣說,現在的家用電器基本上都採用了 單片機控制,從電飯褒、洗衣機、電冰櫃、空調機、彩電、其他音響視頻器材、再到電子秤量設備,五花八門,無所不在。
4.在計算機網路和通信領域中的套用
現代的 單片機普遍具備 通信接口,可以很方便地與計算機進行數據通信,為在計算機網路和通信設備間的套用提供了極好的物質條件,現在的通信設備基本上都實現了單片機智慧型控制,從手機,電話機、小型 程控交換機、樓宇自動通信呼叫系統、列車無線通信、再到日常工作中隨處可見的行動電話,集群移動通信,無線電對講機等。
5.單片機在醫用設備領域中的套用
單片機在醫用設備中的用途亦相當廣泛,例如醫用呼吸機,各種分析儀,監護儀,超聲診斷設備及病床呼叫系統等等。
6.在各種大型電器中的模組化套用
某些專用 單片機設計用於實現特定功能,從而在各種電路中進行模組化套用,而不要求使用人員了解其內部結構。如音樂集成 單片機,看似簡單的功能,微縮在純電子晶片中(有別於 磁帶機的原理),就需要複雜的類似於計算機的原理。如:音樂信號以數字的形式存於 存儲器中(類似於ROM),由微控制器讀出,轉化為模擬音樂電信號(類似於音效卡)。
在大型電路中,這種模組化套用極大地縮小了體積,簡化了電路,降低了損壞、錯誤率,也方便於更換。
7.單片機在汽車設備領域中的套用
單片機在汽車電子中的套用非常廣泛,例如汽車中的發動機控制器,基於CAN匯流排的汽車發動機智慧型 電子控制器,GPS導航系統,abs防抱死系統,制動系統等等。
此外,單片機在工商,金融,科研、教育,國防航空航天等領域都有著十分廣泛的用途。
單片機歷史
單片機誕生於20世紀70年代末,經歷了SCM、MCU、SoC三大階段。
SCM階段
SCM即 單片微型計算機(Single Chip Microcomputer)主要是尋求最佳的單片形態 嵌入式系統的最佳體系結構。“創新模式”獲得成功,奠定了SCM與 通用計算機完全不同的發展道路。在開創 嵌入式系統獨立發展道路上,Intel公司功不可沒。
MCU階段
MCU即微控制器(Micro Controller Unit)主要的技術發展方向是:不斷擴展滿足嵌入式套用時,對象系統要求的各種外圍電路與接口電路,突顯其對象的智慧型化控制能力。它所涉及的領域都與對象系統相關,因此,發展MCU的重任不可避免地落在電氣、電子技術廠家。從這一角度來看,Intel逐漸淡出MCU的發展也有其客觀因素。在發展MCU方面,最著名的廠家當數Philips公司。
Philips公司以其在嵌入式套用方面的巨大優勢,將MCS-51從 單片微型計算機迅速發展到微控制器。因此,當我們回顧 嵌入式系統發展道路時,不要忘記Intel和Philips的歷史功績。
SoC階段
單片機是 嵌入式系統的獨立發展之路,向MCU階段發展的重要因素,就是尋求套用系統在晶片上的最大化解決;因此,專用單片機的發展自然形成了SoC化趨勢。隨著 微電子技術、IC設計、EDA工具的發展,基於SoC的單片機套用系統設計會有較大的發展。因此,對 單片機的理解可以從 單片微型計算機、 單片微控制器延伸到單片套用系統。
學習套用六大重要部分
單片機學習套用的六大重要部分
匯流排
我們知道,一個電路總是由元器件通過電線連線而成的,在 模擬電路中,連線並不成為一個問題,因為各器件間一般是串列關係,各器件之間的連線並不很多,但計算機電路卻不一樣,它是以 微處理器為核心,各器件都要與微處理器相連,各器件之間的工作必須相互協調,所以需要的連線就很多了,如果仍如同模擬電路一樣,在各微處理器和各器件間單獨連線,則線的數量將多得驚人,所以在微處理機中引入了匯流排的概念,各個器件共同享用連線,所有器件的8根數據線全部接到8根公用的線上,即相當於各個器件並聯起來,但僅這樣還不行,如果有兩個器件同時送出數據,一個為0,一個為1,那么,接收方接收到的究竟是什麼呢?這種情況是不允許的,所以要通過控制線進行控制,使器件分時工作,任何時候只能有一個器件傳送數據(可以有多個器件同時接收)。器件的數據線也就被稱為 數據匯流排,器件所有的控制線被稱為 控制匯流排。在 單片機內部或者外部 存儲器及其它器件中有 存儲單元,這些存儲單元要被分配地址,才能使用,分配地址當然也是以電信號的形式給出的,由於存儲單元比較多,所以,用於地址分配的線也較多,這些線被稱為 地址匯流排。
數據、地址、指令
之所以將這三者放在一起,是因為這三者的本質都是一樣的——數字,或者說都是一串‘0’和‘1’組成的序列。換言之,地址、指令也都是數據。指令:由 單片機晶片的設計者規定的一種數字,它與我們常用的 指令助記符有著嚴格的一一對應關係,不可以由單片機的開發者更改。地址:是尋找 單片機內部、外部的 存儲單元、輸入輸出口的依據,內部單元的地址值已由晶片設計者規定好,不可更改,外部的單元可以由單片機開發者自行決定,但有一些地址單元是一定要有的(詳見程式的執行過程)。數據:這是由微處理機處理的對象,在各種不同的套用電路中各不相同,一般而言,被處理的數據可能有這么幾種情況:
1?地址(如MOV DPTR,1000H),即地址1000H送入DPTR。
2?方式字或控制字(如MOV TMOD,#3),3即是控制字。
3?常數(如MOV TH0,#10H)10H即定時常數。
4?實際輸出值(如P1口接彩燈,要燈全亮,則執行指令:MOV P1,#0FFH,要燈全暗,則執行指令:MOV P1,#00H)這裡0FFH和00H都是實際輸出值。又如用於LED的 字形碼,也是實際輸出的值。
理解了地址、指令的本質,就不難理解程式運行過程中為什麼會跑飛,會把數據當成指令來執行了。
P0口、P2口和P3的第二功能用法
初學時往往對P0口、P2口和P3口的第二功能用法迷惑不解,認為第二功能和原功能之間要有一個切換的過程,或者說要有一條指令,事實上,各連線埠的第二功能完全是自動的,不需要用指令來轉換。如P3.6、P3.7分別是WR、RD信號,當微片理機外接RAM或有外部I/O口時,它們被用作第二功能,不能作為通用I/O口使用,只要一微處理機一執行到MOVX指令,就會有相應的信號從P3.6或P3.7送出,不需要事先用指令說明。事實上‘不能作為通用I/O口使用’也並不是‘不能’而是(使用者)‘不會’將其作為通用I/O口使用。你完全可以在指令中按排一條SETB P3.7的指令,並且當 單片機執行到這條指令時,也會使P3.7變為高電平,但使用者不會這么去做,因為這通常會導致系統的崩潰。
程式的執行過程
單片機在通電復位後8051內的 程式計數器(PC)中的值為‘0000’,所以程式總是從‘0000’單元開始執行,也就是說:在系統的ROM中一定要存在‘0000’這個單元,並且在‘0000’單元中存放的一定是一條指令。
堆疊
堆疊是一個區域,是用來存放數據的,這個區域本身沒有任何特殊之處,就是內部RAM的一部份,特殊的是它存放和取用數據的方式,即所謂的‘先進後出,後進先出’,並且堆疊有特殊的數據傳輸指令,即‘PUSH’和‘POP’,有一個特殊的專為其服務的單元,即 堆疊指針SP,每當執一次 PUSH指令時,SP就(在原來值的基礎上)自動加1,每當執行一次POP指令,SP就(在原來值的基礎上)自動減1。由於SP中的值可以用指令加以改變,所以只要在程式開始階段更改了SP的值,就可以把堆疊設定在規定的記憶體單元中,如在程式開始時,用一條MOV SP,#5FH指令,就是把堆疊設定在從記憶體單元60H開始的單元中。一般程式的開頭總有這么一條設定 堆疊指針的指令,因為開機時,SP的初始值為07H,這樣就使堆疊從08H單元開始往後,而08H到1FH這個區域正是8031的第二、三、四工作暫存器區,經常要被使用,這會造成數據的混亂。不同作者編寫程式時,初始化 堆疊指令也不完全相同,這是作者的習慣問題。當設定好堆疊區後,並不意味著該區域成為一種專用記憶體,它還是可以象普通記憶體區域一樣使用,只是一般情況下編程者不會把它當成普通記憶體用了。
單片機的開發過程
這裡所說的開發過程並不是一般書中所說的從任務分析開始,我們假設已設計並製作好硬體,下面就是編寫軟體的工作。在編寫軟體之前,首先要確定一些常數、地址,事實上這些常數、地址在設計階段已被直接或間接地確定下來了。如當某器件的連線設計好後,其地址也就被確定了,當器件的功能被確定下來後,其控制字也就被確定了。然後用 文本編輯器(如EDIT、CCED等)編寫軟體,編寫好後,用 編譯器對 源程式檔案編譯,查錯,直到沒有語法錯誤,除了極簡單的程式外,一般套用仿真機對軟體進行調試,直到程式運行正確為止。運行正確後,就可以寫片(將程式固化在EPROM中)。在 源程式被編譯後,生成了擴展名為HEX的 目標檔案,一般 編程器能夠識別這種格式的檔案,只要將此檔案調入即可寫片。
單機片發展趨勢
目前市場上單片機可以說是百花齊放,百家爭鳴的時期,世界上各大晶片製造公司都推出了自己的單片機,從8位、16位到32位,數不勝數,應有盡有,有與主流C51系列兼容的,也有不兼容的,但它們各具特色,互成互補,為單片機的套用提供廣闊的天地。
縱觀單片機的發展過程,可以預示單片機的發展趨勢,大致可以分為:
一、低功耗CHMOS化
MCS-51系列的8031推出時的功耗達630mW,而現在的單片機普遍都在100mW左右,隨著對單片機的功耗要求越來越低,現在的各個單片機製造商基本都採用了CMOS(互補金屬氧化物半導體工藝)。像80-C51就採用了HMOS(即高密度金屬氧化物半導體工藝)和CHMOS(互補高密度金屬氧化物半導體工藝)。CMOS雖然功耗較低,但由於其物理特徵決定其工作速度不夠高,而CHMOS則具備了高速和低功耗的特點,這些特徵,更適合於在要求低功耗像電池供電的套用場合。所以這種工藝將是今後一段時期單片機發展的主要途徑。
二、微型單片化
現在常規的單片機普遍都是將中央處理器(CPU)、隨機存取數據存儲(RAM)、唯讀程式存儲器(ROM)、並行和串列通信接口,中斷系統、定時電路、時鐘電路集成在一塊單一的晶片上,增強型的單片機集成,例如A/D轉換器、PMW(脈寬調製電路)、WDT(看門狗)、有些單片機將LCD(液晶)驅動電路都集成在單一的晶片上,這樣單片機包含的單元電路就更多,功能就越強大。甚至單片機廠商還可以根據用戶的要求量身定做,製造出具有自己特色的單片機晶片。
此外,現在的產品普遍要求體積小、重量輕,這就要求單片機除了功能強和功耗低外,還要求其體積要小。現在的許多單片機都具有多種封裝形式,其中SMD(表面封裝)越來越受歡迎,使得由單片機構成的系統正朝微型化方向發展。
三、主流與多品種共存
現在雖然單片機的品種繁多,各具特色,但仍以80C51為核心的單片機占主流,兼容其結構和指令系統的有PHILIPS公司的產品,ATMEL公司的產品和中國台灣的Winbond系列單片機。所以C8051為核心的單片機占據了半壁江山。而Microchip公司的PIC精簡指令集(RISC)也有著強勁的發展勢頭,中國台灣的HOLTEK公司近年的單片機產量與日俱增,與其低價質優的優勢,占據一定的市場分額。此外還有MOTOROLA公司的產品,日本幾大公司的專用單片機。在一定的時期內,這種情形將得以延續,將不存在某個單片機一統天下的壟斷局面,走的是依存互補,相輔相成、共同發展的道路。