當前位置:首頁 > 百科知識 > 電子工程 > 正文

單片機 又名:MCU

  從上世紀80年代,由當時的4位、8位單片機,發(fā)展到現在的300M的高速單片機。

概述

  單片微型計算機簡稱單片機,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的縮寫MCU表示單片機,它最早是被用在工業(yè)控制領域。由于單片機在工業(yè)控制領域的廣泛應用,為使更多的業(yè)內人士、學生、愛好者,產品開發(fā)人員掌握單片機這門技術,于是產生單片機開發(fā)板,比較有名的例如電子人DZR-01A單片機開發(fā)板。單片機由芯片內僅有CPU的專用處理器發(fā)展而來。最早的設計理念是通過將大量外圍設備和CPU集成在一個芯片中,使計算機系統更小,更容易集成進復雜的而對體積要求嚴格的控制設備當中。INTEL的Z80是最早按照這種思想設計出的處理器,從此以后,單片機和專用處理器的發(fā)展便分道揚鑣。

  早期的單片機都是8位或4位的。其中最成功的是INTEL的8031,因為簡單可靠而性能不錯獲得了很大的好評。此后在8031上發(fā)展出了MCS51系列單片機系統?;谶@一系統的單片機系統直到現在還在廣泛使用。隨著工業(yè)控制領域要求的提高,開始出現了16位單片機,但因為性價比不理想并未得到很廣泛的應用。90年代后隨著消費電子產品大發(fā)展,單片機技術得到了巨大提高。隨著INTEL i960系列特別是后來的ARM系列的廣泛應用,32位單片機迅速取代16位單片機的高端地位,并且進入主流市場。而傳統的8位單片機的性能也得到了飛速提高,處理能力比起80年代提高了數百倍。目前,高端的32位單片機主頻已經超過300MHz,性能直追90年代中期的專用處理器,而普通的型號出廠價格跌落至1美元,最高端的型號也只有10美元。當代單片機系統已經不再只在裸機環(huán)境下開發(fā)和使用,大量專用的嵌入式操作系統被廣泛應用在全系列的單片機上。而在作為掌上電腦和手機核心處理的高端單片機甚至可以直接使用專用的Windows和Linux操作系統。

  單片機比專用處理器更適合應用于嵌入式系統,因此它得到了最多的應用。事實上單片機是世界上數量最多的計算機?,F代人類生活中所用的幾乎每件電子和機械產品中都會集成有單片機。手機、電話、計算器、家用電器、電子玩具、掌上電腦以及鼠標等電腦配件中都配有1-2部單片機。而個人電腦中也會有為數不少的單片機在工作。汽車上一般配備40多部單片機,復雜的工業(yè)控制系統上甚至可能有數百臺單片機在同時工作!單片機的數量不僅遠超過PC機和其他計算的總和,甚至比人類的數量還要多。

  單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統集成到一個芯片上。相當于一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發(fā)提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。

  單片機內部也用和電腦功能類似的模塊,比如CPU,內存,并行總線,還有和硬盤作用相同的存儲器件,不同的是它的這些部件性能都相對我們的家用電腦弱很多,不過價錢也是低的,一般不超過10元即可,用它來做一些控制電器一類不是很復雜的工作足矣了。我們現在用的全自動滾筒洗衣機、排煙罩、VCD等等的家電里面都可以看到它的身影,它主要是作為控制部分的核心部件。

  它是一種在線式實時控制計算機,在線式就是現場控制,需要的是有較強的抗干擾能力,較低的成本,這也是和離線式計算機的(比如家用PC)的主要區(qū)別。

  單片機是靠程序運行的,并且可以修改。通過不同的程序實現不同的功能,尤其是特殊的獨特的一些功能,這是別的器件需要費很大力氣才能做到的,有些則是花大力氣也很難做到的。一個不是很復雜的功能要是用美國50年代開發(fā)的74系列,或者60年代的CD4000系列這些純硬件來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國70年代成功投放市場的系列單片機,結果就會有天壤之別!只因為單片機的通過你編寫的程序可以實現高智能,高效率,以及高可靠性!

  由于單片機對成本是敏感的,所以目前占統治地位的軟件還是最低級匯編語言,它是除了二進制機器碼以上最低級的語言了,既然這么低級為什么還要用呢?很多高級的語言已經達到了可視化編程的水平為什么不用呢?原因很簡單,就是單片機沒有家用計算機那樣的CPU,也沒有像硬盤那樣的海量存儲設備。一個可視化高級語言編寫的小程序里面即使只有一個按鈕,也會達到幾十K的尺寸!對于家用PC的硬盤來講沒什么,可是對于單片機來講是不能接受的。單片機在硬件資源方面的利用率必須很高才行,所以匯編雖然原始卻還是在大量使用。一樣的道理,如果把巨型計算機上的操作系統和應用軟件拿到家用PC上來運行,家用PC的也是承受不了的。

  可以說,二十世紀跨越了三個“電”的時代,即電氣時代、電子時代和現已進入的電腦時代。不過,這種電腦,通常是指個人計算機,簡稱PC機。它由主機、鍵盤、顯示器等組成。還有一類計算機,大多數人卻不怎么熟悉。這種計算機就是把智能賦予各種機械的單片機(亦稱微控制器)。顧名思義,這種計算機的最小系統只用了一片集成電路,即可進行簡單運算和控制。因為它體積小,通常都藏在被控機械的“肚子”里。它在整個裝置中,起著有如人類頭腦的作用,它出了毛病,整個裝置就癱瘓了?,F在,這種單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統、家用電器等。各種產品一旦用上了單片機,就能起到使產品升級換代的功效,常在產品名稱前冠以形容詞——“智能型”,如智能型洗衣機等?,F在有些工廠的技術人員或其它業(yè)余電子開發(fā)者搞出來的某些產品,不是電路太復雜,就是功能太簡單且極易被仿制。究其原因,可能就卡在產品未使用單片機或其它可編程邏輯器件上。

分類

  單片機作為計算機發(fā)展的一個重要領域,應用一個較科學的分類方法。根據目前發(fā)展情況,從不同角度單片機大致可以分為通用型/專用型、總線型/非總線型及工控型/家電型。

 ?。?) 通用型/專用型 這是按單片機適用范圍來區(qū)分的。例如,80C51是通用型單片機,它不是為某種專用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC接口等功能的溫度測量控制電路。

 ?。?) 總線型/非總線型 這是按單片機是否提供并行總線來區(qū)分的??偩€型單片機普遍設置有并行地址總線、 數據總線、控制總線,這些引腳用以擴展并行外圍器件都可通過串行口與單片機連接,另外,許多單片機已把所需要的外圍器件及外設接口集成一片內,因此在許多情況下可以不要并行擴展總線,大大減省封裝成本和芯片體積,這類單片機稱為非總線型單片機。

 ?。?) 控制型/家電型 這是按照單片機大致應用的領域進行區(qū)分的。一般而言,工控型尋址范圍大,運算 能力強;用于家電的單片機多為專用型,通常是小封裝、低價格,外圍器件和外設接口集成度高。 顯然,上述分類并不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是總線型,還可以作工控用。

  工作過程

  單片機自動完成賦予它的任務的過程,也就是單片機執(zhí)行程序的過程,即一條條執(zhí)行的指令的過程,所謂指令就是把要求單片機執(zhí)行的各種操作用的命令的形式寫下來,這是在設計人員賦予它的指令系統所決定的,一條指令對應著一種基本操作;單片機所能執(zhí)行的全部指令,就是該單片機的指令系統,不同種類的單片機,其指令系統亦不同。為使單片機能自動完成某一特定任務,必須把要解決的問題編成一系列指令(這些指令必須是選定單片機能識別和執(zhí)行的指令),這一系列指令的集合就成為程序,程序需要預先存放在具有存儲功能的部件——存儲器中。存儲器由許多存儲單元(最小的存儲單位)組成,就像大樓房有許多房間組成一樣,指令就存放在這些單元里,單元里的指令取出并執(zhí)行就像大樓房的每個房間的被分配到了唯一一個房間號一樣,每一個存儲單元也必須被分配到唯一的地址號,該地址號稱為存儲單元的地址,這樣只要知道了存儲單元的地址,就可以找到這個存儲單元,其中存儲的指令就可以被取出,然后再被執(zhí)行。

  程序通常是順序執(zhí)行的,所以程序中的指令也是一條條順序存放的,單片機在執(zhí)行程序時要能把這些指令一條條取出并加以執(zhí)行,必須有一個部件能追蹤指令所在的地址,這一部件就是程序計數器PC(包含在CPU中),在開始執(zhí)行程序時,給PC賦以程序中第一條指令所在的地址,然后取得每一條要執(zhí)行的命令,PC之中的內容就會自動增加,增加量由本條指令長度決定,可能是1、2或3,以指向下一條指令的起始地址,保證指令順序執(zhí)行。

歷史

  單片機誕生于1971年,經歷了SCM、MCU、SoC三大階段。

  單片機的基本結構

  單片機由運算器、控制器、存儲器、輸入輸出設備構成。

  起初模型

  1.SCM即單片微型計算機(Single Chip Microcomputer)階段,主要是尋求最佳的單片形態(tài)嵌入式系統的最佳體系結構。“創(chuàng)新模式”獲得成功,奠定了SCM與通用計算機完全不同的發(fā)展道路。在開創(chuàng)嵌入式系統獨立發(fā)展道路上,Intel公司功不可沒。

  2.MCU即微控制器(Micro Controller Unit)階段,主要的技術發(fā)展方向是:不斷擴展?jié)M足嵌入式應用時,對象系統要求的各種外圍電路與接口電路,突顯其對象的智能化控制能力。它所涉及的領域都與對象系統相關,因此,發(fā)展MCU的重任不可避免地落在電氣、電子技術廠家。從這一角度來看,Intel逐漸淡出MCU的發(fā)展也有其客觀因素。在發(fā)展MCU方面,最著名的廠家當數Philips公司。

  Philips公司以其在嵌入式應用方面的巨大優(yōu)勢,將MCS-51從單片微型計算機迅速發(fā)展到微控制器。因此,當我們回顧嵌入式系統發(fā)展道路時,不要忘記Intel和Philips的歷史功績。

  嵌入式系統

  單片機是嵌入式系統的獨立發(fā)展之路,向MCU階段發(fā)展的重要因素,就是尋求應用系統在芯片上的最大化解決;因此,專用單片機的發(fā)展自然形成了SoC化趨勢。隨著微電子技術、IC設計、EDA工具的發(fā)展,基于SoC的單片機應用系統設計會有較大的發(fā)展。因此,對單片機的理解可以從單片微型計算機、單片微控制器延伸到單片應用系統。

  單片機發(fā)展史

  1971年intel公司研制出世界上第一個4位的微處理器;Intel公司的霍夫研制成功世界上第一塊4位微處理器芯片Intel 4004,標志著第一代微處理器問世,微處理器和微機時代從此開始。因發(fā)明微處理器,霍夫被英國《經濟學家》雜志列為“二戰(zhàn)以來最有影響力的7位科學家”之一。

  1971年11月,Intel推出MCS-4微型計算機系統(包括4001 ROM芯片、4002 RAM芯片、4003移位寄存器芯片和4004微處理器 )其中4004(下圖)包含2300個晶體管,尺寸規(guī)格為3mm×4mm,計算性能遠遠超過當年的ENIAC,最初售價為200美元。

  1972年4月,霍夫等人開發(fā)出第一個8位微處理器Intel 8008。由于8008采用的是P溝道MOS微處理器,因此仍屬第一代微處理器。

  1973年intel公司研制出8位的微處理器8080;1973年8月,霍夫等人研制出8位微處理器Intel 8080,以N溝道MOS電路取代了P溝道,第二代微處理器就此誕生。

  主頻2MHz的8080芯片運算速度比8008快10倍,可存取64KB存儲器,使用了基于6微米技術的6000個晶體管,處理速度為0.64MIPS(Million Instructions Per Second )。

  1975年4月,MITS發(fā)布第一個通用型Altair 8800,售價375美元,帶有1KB存儲器。這是世界上第一臺微型計算機。

  1976年intel公司研制出MCS-48系列8位的單片機,這也是單片機的問世。

  Zilog公司于1976年開發(fā)的Z80微處理器,廣泛用于微型計算機和工業(yè)自動控制設備。當時,Zilog、Motorola和Intel在微處理器領域三足鼎立。

  20世紀80年代初,Intel公司在MCS-48系列單片機的基礎上,推出了MCS-51系列8位高檔單片機。MCS-51系列單片機無論是片內RAM容量,I/O口功能,系統擴展方面都有了很大的提高。

  硬件特性

  1、單片機集成度高。單片機包括CPU、4KB容量的ROM(8031 無)、128 B容量的RAM、 2個16位定時/計數器、4個8位并行口、全雙工串口行口。

  2、系統結構簡單,使用方便,實現模塊化;

  3、單片機可靠性高,可工作到10^6 ~10^7小時無故障;

  4、處理功能強,速度快。

  5、低電壓,低功耗,便于生產便攜式產品

  6、控制功能強

開發(fā)

  單片機開發(fā)是指使用微控制器(單片機)進行電子系統設計和開發(fā)的過程。單片機是一種集成了處理器核心、存儲器及輸入/輸出接口的小型計算機,常用于嵌入式系統中,對實時操作和交互進行控制。以下是單片機開發(fā)的一些關鍵步驟和考慮因素:

  1、選擇合適的單片機:

  根據項目需求,選擇具有合適性能、功耗、成本、外設接口及軟件支持的單片機。

  常見的單片機有8051、AVR、PIC、MSP430、ARM Cortex系列等。

  2、學習和設置開發(fā)環(huán)境:

  安裝單片機對應的集成開發(fā)環(huán)境(IDE),如Keil、IAR、Atmel Studio、MPLAB X等。

  配置編譯器、鏈接器、調試器等工具。

  3、硬件設計:

  設計單片機外圍電路,包括電源電路、復位電路、時鐘電路及與外設的接口電路。

  使用原理圖設計軟件(如Altium Designer、Eagle)繪制電路圖。

  制作或購買開發(fā)板用于原型開發(fā)。

  4、軟件編程:

  使用C、C++或匯編語言編寫單片機程序。

  實現初始化代碼、主循環(huán)、中斷服務程序等。

  編寫驅動程序以控制外設,如LED、按鍵、傳感器、 通信 模塊等。

  5、調試與測試:

  使用調試器進行單步執(zhí)行、斷點設置、變量監(jiān)視等。

  使用示波器、邏輯分析儀等工具監(jiān)測硬件信號。

  進行功能測試、性能測試及穩(wěn)定性測試。

  6、固件燒寫與部署:

  將編譯后的固件燒錄到單片機中。

  配置啟動參數,確保單片機能夠正確啟動并運行。

  7、文檔與維護:

  編寫開發(fā)文檔,包括硬件設計說明、軟件架構、接口協議等。

  提供用戶手冊或API文檔,方便后續(xù)開發(fā)或維護。

  8、持續(xù)學習與更新:

  跟蹤單片機技術的最新發(fā)展,學習新的編程技巧和算法。

  參與社區(qū)交流,分享經驗并尋求幫助。

  在進行單片機開發(fā)時,還需要注意以下幾點:

  功耗管理:優(yōu)化代碼以降低功耗,特別是在便攜式設備中。

  安全性:確保程序安全,防止惡意攻擊或數據泄露。

  可維護性:編寫清晰、可讀的代碼,方便后續(xù)維護和升級。

  成本控制:在滿足性能需求的前提下,盡量降低硬件和軟件成本。

應用

  目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網絡通訊與數據傳輸,工業(yè)自動化過程的實時控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統,錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領域的機器人、智能儀表、醫(yī)療器械以及各種智能機械了。因此,單片機的學習、開發(fā)與應用將造就一批計算機應用與智能化控制的科學家、工程師。

  單片機廣泛應用于儀器儀表、家用電器、醫(yī)用設備、航空航天、專用設備的智能化管理及過程控制等領域,大致可分如下幾個范疇:

  1.在智能儀器儀表上的應用

  單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優(yōu)點,廣泛應用于儀器儀表中,結合不同類型的傳感器,可實現諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機控制使得儀器儀表數字化、智能化、微型化,且功能比起采用電子或數字電路更加強大。例如精密的測量設備(功率計,示波器,各種分析儀)。

  2.在工業(yè)控制中的應用

  用單片機可以構成形式多樣的控制系統、數據采集系統。例如工廠流水線的智能化管理,電梯智能化控制、各種報警系統,與計算機聯網構成二級控制系統等。

  3.在家用電器中的應用

  可以這樣說,現在的家用電器基本上都采用了單片機控制,從電飯煲、洗衣機、電冰箱、空調機、彩電、其他音響視頻器材、再到電子秤量設備,五花八門,無所不在。

  4.在計算機網絡和通信領域中的應用

  現代的單片機普遍具備通信接口,可以很方便地與計算機進行數據通信,為在計算機網絡和通信設備間的應用提供了極好的物質條件,現在的通信設備基本上都實現了單片機智能控制,從手機,電話機、小型程控交換機、樓宇自動通信呼叫系統、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機等。

  5.單片機在醫(yī)用設備領域中的應用

  單片機在醫(yī)用設備中的用途亦相當廣泛,例如醫(yī)用呼吸機,各種分析儀,監(jiān)護儀,超聲診斷設備及病床呼叫系統等等。

  6.在各種大型電器中的模塊化應用

  某些專用單片機設計用于實現特定功能,從而在各種電路中進行模塊化應用,而不要求使用人員了解其內部結構。如音樂集成單片機,看似簡單的功能,微縮在純電子芯片中(有別于磁帶機的原理),就需要復雜的類似于計算機的原理。如:音樂信號以數字的形式存于存儲器中(類似于ROM),由微控制器讀出,轉化為模擬音樂電信號(類似于聲卡)。

  在大型電路中,這種模塊化應用極大地縮小了體積,簡化了電路,降低了損壞、錯誤率,也方便于更換。

  7.單片機在汽車設備領域中的應用

  單片機在汽車電子中的應用非常廣泛,例如汽車中的發(fā)動機控制器,基于CAN總線的汽車發(fā)動機智能電子控制器,GPS導航系統,abs防抱死系統,制動系統等等。

  此外,單片機在工商,金融,科研、教育,國防航空航天等領域都有著十分廣泛的用途。

單片機軟件抗干擾方法

  在提高硬件系統抗干擾能力的同時,軟件抗干擾以其設計靈活、節(jié)省硬件資源、可靠性好越來越受到重視。下面以MCS-51單片機系統為例,對微機系統軟件抗干擾方法進行研究。

  1 軟件抗干擾方法的研究

  在工程實踐中,軟件抗干擾研究的內容主要是:一、消除模擬輸入信號的噪聲(如數字濾波技術);二、程序運行混亂時使程序重入正軌的方法。本文針對后者提出了幾種有效的軟件抗干擾方法。

  1.1 指令冗余

  CPU取指令過程是先取操作碼,再取操作數。當PC受干擾出現錯誤,程序便脫離正常軌道“亂飛”,當亂飛到某雙字節(jié)指令,若取指令時刻落在操作數上,誤將操作數當作操作碼,程序將出錯。若“飛” 到了三字節(jié)指令,出錯機率更大。

  在關鍵地方人為插入一些單字節(jié)指令,或將有效單字節(jié)指令重寫稱為指令冗余。通常是在雙字節(jié)指令和三字節(jié)指令后插入兩個字節(jié)以上的NOP。這樣即使亂飛程序飛到操作數上,由于空操作指令NOP的存在,避免了后面的指令被當作操作數執(zhí)行,程序自動納入正軌。

  此外,對系統流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執(zhí)行。

  1.2 攔截技術

  所謂攔截,是指將亂飛的程序引向指定位置,再進行出錯處理。通常用軟件陷阱來攔截亂飛的程序。因此先要合理設計陷阱,其次要將陷阱安排在適當的位置。

 ?。? )軟件陷阱的設計

  當亂飛程序進入非程序區(qū),冗余指令便無法起作用。通過軟件陷阱,攔截亂飛程序,將其引向指定位置,再進行出錯處理。軟件陷阱是指用來將捕獲的亂飛程序引向復位入口地址0000H的指令。通常在EPROM中非程序區(qū)填入以下指令作為軟件陷阱:

  NOPNOPLJMP 0000H其機器碼為0000020000。

  (2 ) 陷阱的安排

  通常在程序中未使用的EPROM空間填0000020000。最后一條應填入020000,當亂飛程序落到此區(qū),即可自動入軌。在用戶程序區(qū)各模塊之間的空余單元也可填入陷阱指令。當使用的中斷因干擾而開放時,在對應的中斷服務程序中設置軟件陷阱,能及時捕獲錯誤的中斷。如某應用系統雖未用到外部中斷1,外部中斷1的中斷服務程序可為如下形式:

  NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障診斷程序與系統自恢復程序的設計可靠、 完善,用“LJMP 0000H”作返回指令可直接進入故障診斷程序,盡早地處理故障并恢復程序的運行。

  考慮到程序存貯器的容量,軟件陷阱一般1K空間有2-3個就可以進行有效攔截。

  1.3軟件“看門狗”技術

  若失控的程序進入“死循環(huán)”,通常采用“看門狗”技術使程序脫離“死循環(huán)”。通過不斷檢測程序循環(huán)運行時間,若發(fā)現程序循環(huán)時間超過最大循環(huán)運行時間,則認為系統陷入“死循環(huán)”,需進行出錯處理。

  “看門狗”技術可由硬件實現,也可由軟件實現。在工業(yè)應用中,嚴重的干擾有時會破壞中斷方式控制字,關閉中斷。則系統無法定時“喂狗”,硬件看門狗電路失效。而軟件看門狗可有效地解決這類問題。

  筆者在實際應用中,采用環(huán)形中斷監(jiān)視系統。用定時器T0監(jiān)視定時器T1,用定時器T1監(jiān)視主程序,主程序監(jiān)視定時器T0。采用這種環(huán)形結構的軟件“看門狗”具有良好的抗干擾性能,大大提高了系統可靠性。對于需經常使用T1定時器進行串口通訊的測控系統,則定時器T1不能進行中斷,可改由串口中斷進行監(jiān)控(如果用的是MCS-52系列單片機,也可用T2代替T1進行監(jiān)視)。這種軟件“看門狗”監(jiān)視原理是:在主程序、T0中斷服務程序、T1中斷服務程序中各設一運行觀測變量,假設為MWatch、T0Watch 、T1Watch,主程序每循環(huán)一次,MWatch加1,同樣T0、T1中斷服務程序執(zhí)行一次,T0Watch、 T1Watch加1。在T0中斷服務程序中通過檢測T1Watch的變化情況判定T1運行是否正常,在T1中斷服務程序中檢測MWatch的變化情況判定主程序是否正常運行,在主程序中通過檢測T0Watch的變化情況判別T0是否正常工作。若檢測到某觀測變量變化不正常,比如應當加1而未加1,則轉到出錯處理程序作排除故障處理。當然,對主程序最大循環(huán)周期、定時器T0和T1定時周期應予以全盤合理考慮。限于篇幅不贅述。

  2 、系統故障處理、自恢復程序的設計

  單片機系統因干擾復位或掉電后復位均屬非正常復位,應進行故障診斷并能自動恢復非正常復位前的狀態(tài)。

  2.1 非正常復位的識別

  程序的執(zhí)行總是從0000H開始,導致程序從 0000H開始執(zhí)行有四種可能:一、系統開機上電復位;二、軟件故障復位;三、看門狗超時未喂狗硬件復位; 四、任務正在執(zhí)行中掉電后來電復位。四種情況中除第一種情況外均屬非正常復位,需加以識別。

 ?。? )硬件復位與軟件復位的識別#p#分頁標題#e#

  此處硬件復位指開機復位與看門狗復位,硬件復位對寄存器有影響,如復位后PC=0000H, SP=07H,PSW=00H等。而軟件復位則對SP、SPW無影響。故對于微機測控系統,當程序正常運行時,將SP設置地址大于07H,或者將PSW的第5位用戶標志位在系統正常運行時設為1。那么系統復位時只需檢測PSW.5標志位或SP值便可判此是否硬件復位。

  由于硬件復位時片內RAM狀態(tài)是隨機的,而軟件復位片內RAM則可保持復位前狀態(tài),因此可選取片內某一個或兩個單元作為上電標志。設40H用來做上電標志,上電標志字為78H,若系統復位后40H單元內容不等于78H,則認為是硬件復位,否則認為是軟件復位,轉向出錯處理。若用兩個單元作上電標志,則這種判別方法的可靠性更高。

 ?。? )開機復位與看門狗故障復位的識別

  開機復位與看門狗故障復位因同屬硬件復位, 所以要想予以正確識別,一般要借助非易失性RAM或者EEROM。當系統正常運行時,設置一可掉電保護的觀測單元。當系統正常運行時,在定時喂狗的中斷服務程序中使該觀測單元保持正常值(設為 AAH),而在主程中將該單元清零,因觀測單元掉電可保護,則開機時通過檢測該單元是否為正常值可判斷是否看門狗復位。

 ?。? )正常開機復位與非正常開機復位的識別

  識別測控系統中因意外情況如系統掉電等情況引起的開機復位與正常開機復位,對于過程控制系統尤為重要。如某以時間為控制標準的測控系統,完成一次測控任務需1小時。在已執(zhí)行測控50分鐘的情況下,系統電壓異常引起復位,此時若系統復位后又從頭開始進行測控則會造成不必要的時間消耗。因此可通過一監(jiān)測單元對當前系統的運行狀態(tài)、系統時間予以監(jiān)控,將控制過程分解為若干步或若干時間段,每執(zhí)行完一步或每運行一個時間段則對監(jiān)測單元置為關機允許值,不同的任務或任務的不同階段有不同的值,若系統正在進行測控任務或正在執(zhí)某時間段,則將監(jiān)測單元置為非正常關機值。那么系統復位后可據此單元判系統原來的運行狀態(tài),并跳到出錯處理程序中恢復系統原運行狀態(tài)。

  2.2 非正常復位后系統自恢復運行的程序設計

  對順序要求嚴格的一些過程控制系統,系統非正常復位否,一般都要求從失控的那一個模塊或任務恢復運行。所以測控系統要作好重要數據單元、參數的備份,如系統運行狀態(tài)、系統的進程值、當前輸入、輸出的值,當前時鐘值、觀測單元值等,這些數據既要定時備份,同時若有修改也應立即予以備份。

  當在已判別出系統非正常復位的情況下,先要恢復一些必要的系統數據,如顯示模塊的初始化、片外擴展芯片的初始化等。其次再對測控系統的系統狀態(tài)、運行參數等予以恢復,包括顯示界面等的恢復。之后再把復位前的任務、參數、運行時間等恢復, 再進入系統運行狀態(tài)。

  應當說明的是,真實地恢復系統的運行狀態(tài)需 要極為細致地對系統的重要數據予以備份,并加以數據可靠性檢查,以保證恢復的數據的可靠性。

  其次,對多任務、多進程測控系統,數據的恢復需考慮恢復的次序問題。

  系統基本初始化是指對芯片、顯示、輸入輸出方式等進行初始化,要注意輸入輸出的初始化不應造成誤動作。而復位前任務的初始化是指任務的執(zhí)行狀態(tài)、運行時間等。

  對于軟件抗干擾的一些其它常用方法如數字濾波、RAM數據保護與糾錯等,限于篇幅,本文未作討論。在工程實踐中通常都是幾種抗干擾方法并用,互相補充 完善,才能取得較好的抗干擾效果。從根本上來說,硬件抗干擾是主動的,而軟件是抗干擾是被動的。細致周到地分析干擾源,硬件與軟件抗干擾相結合,完善系統監(jiān)控程序,設計一穩(wěn)定可靠的單片機系統是完全可行的。

學習應用的六大重要部分

  一、總線

  我們知道,一個電路總是由元器件通過電線連接而成的,在模擬電路中,連線并不成為一個問題,因為各器件間一般是串行關系,各器件之間的連線并不很多,但計算機電路卻不一樣,它是以微處理器為核心,各器件都要與微處理器相連,各器件之間的工作必須相互協調,所以需要的連線就很多了,如果仍如同模擬電路一樣,在各微處理器和各器件間單獨連線,則線的數量將多得驚人,所以在微處理機中引入了總線的概念,各個器件共同享用連線,所有器件的8根數據線全部接到8根公用的線上,即相當于各個器件并聯起來,但僅這樣還不行,如果有兩個器件同時送出數據,一個為0,一個為1,那么,接收方接收到的究竟是什么呢?這種情況是不允許的,所以要通過控制線進行控制,使器件分時工作,任何時候只能有一個器件發(fā)送數據(可以有多個器件同時接收)。器件的數據線也就被稱為數據總線,器件所有的控制線被稱為控制總線。在單片機內部或者外部存儲器及其它器件中有存儲單元,這些存儲單元要被分配地址,才能使用,分配地址當然也是以電信號的形式給出的,由于存儲單元比較多,所以,用于地址分配的線也較多,這些線被稱為地址總線。

  二、數據、地址、指令

  之所以將這三者放在一起,是因為這三者的本質都是一樣的——數字,或者說都是一串‘0"和‘1"組成的序列。換言之,地址、指令也都是數據。指令:由單片機芯片的設計者規(guī)定的一種數字,它與我們常用的指令助記符有著嚴格的一一對應關系,不可以由單片機的開發(fā)者更改。地址:是尋找單片機內部、外部的存儲單元、輸入輸出口的依據,內部單元的地址值已由芯片設計者規(guī)定好,不可更改,外部的單元可以由單片機開發(fā)者自行決定,但有一些地址單元是一定要有的(詳見程序的執(zhí)行過程)。數據:這是由微處理機處理的對象,在各種不同的應用電路中各不相同,一般而言,被處理的數據可能有這么幾種情況:

  1.地址(如MOV DPTR,1000H),即地址1000H送入DPTR。

  2.方式字或控制字(如MOV TMOD,#3),3即是控制字。

  3.常數(如MOV TH0,#10H)10H即定時常數。

  4.實際輸出值(如P1口接彩燈,要燈全亮,則執(zhí)行指令:MOV P1,#0FFH,要燈全暗,則執(zhí)行指令:MOV P1,#00H)這里0FFH和00H都是實際輸出值。又如用于LED的字形碼,也是實際輸出的值。

  理解了地址、指令的本質,就不難理解程序運行過程中為什么會跑飛,會把數據當成指令來執(zhí)行了。

  三、P0/P2/P3第二功能

  初學時往往對P0口、P2口和P3口的第二功能用法迷惑不解,認為第二功能和原功能之間要有一個切換的過程,或者說要有一條指令,事實上,各端口的第二功能完全是自動的,不需要用指令來轉換。如P3.6、P3.7分別是WR、RD信號,當微處理機外接RAM或有外部I/O口時,它們被用作第二功能,不能作為通用I/O口使用,只要一微處理機一執(zhí)行到MOVX指令,就會有相應的信號從P3.6或P3.7送出,不需要事先用指令說明。事實上‘不能作為通用I/O口使用"也并不是‘不能"而是(使用者)‘不會"將其作為通用I/O口使用。你完全可以在指令中按排一條SETB P3.7的指令,并且當單片機執(zhí)行到這條指令時,也會使P3.7變?yōu)楦唠娖?,但使用者不會這么去做,因為這通常會導致系統的崩潰。

  四、程序的執(zhí)行過程

  單片機在通電復位后8051內的程序計數器(PC)中的值為‘0000",所以程序總是從‘0000"單元開始執(zhí)行,也就是說:在系統的ROM中一定要存在‘0000"這個單元,并且在‘0000"單元中存放的一定是一條指令。

  五、堆棧

  堆棧是一個區(qū)域,是用來存放數據的,這個區(qū)域本身沒有任何特殊之處,就是內部RAM的一部份,特殊的是它存放和取用數據的方式,即所謂的‘先進后出,后進先出",并且堆棧有特殊的數據傳輸指令,即‘PUSH"和‘POP",有一個特殊的專為其服務的單元,即堆棧指針SP,每當執(zhí)一次PUSH指令時,SP就(在原來值的基礎上)自動減2,每當執(zhí)行一次POP指令,SP就(在原來值的基礎上)自動加2。由于SP中的值可以用指令加以改變,所以只要在程序開始階段更改了SP的值,就可以把堆棧設置在規(guī)定的內存單元中,如在程序開始時,用一條MOV SP,#5FH指令,就是把堆棧設置在從內存單元60H開始的單元中。一般程序的開頭總有這么一條設置堆棧指針的指令,因為開機時,SP的初始值為07H,這樣就使堆棧從08H單元開始往后,而08H到1FH這個區(qū)域正是8031的第二、三、四工作寄存器區(qū),經常要被使用,這會造成數據的混亂。不同作者編寫程序時,初始化堆棧指令也不完全相同,這是作者的習慣問題。當設置好堆棧區(qū)后,并不意味著該區(qū)域成為一種專用內存,它還是可以象普通內存區(qū)域一樣使用,只是一般情況下編程者不會把它當成普通內存用了。

常用單片機芯片簡介

  STC單片機

  STC公司的單片機主要是基于8051內核,是新一代增強型單片機,指令代碼完全兼容傳統8051,速度快8~12倍,帶ADC,4路PWM,雙串口,有全球唯一ID號,加密性好,抗干擾強。

  PIC單片機:

  是MICROCHIP公司的產品,其突出的特點是體積小,功耗低,精簡指令集,抗干擾性好,可靠性高,有較強的模擬接口,代碼保密性好,大部分芯片有其兼容的FLASH程序存儲器的芯片。

  EMC單片機:

  是臺灣義隆公司的產品,有很大一部分與PIC 8位單片機兼容,且相兼容產品的資源相對比PIC的多,價格便宜,有很多系列可選,但抗干擾較差。

  ATMEL單片機(51單片機):

  ATMEl公司的8位單片機有AT89、AT90兩個系列,AT89系列是8位Flash單片機,與8051系列單片機相兼容,靜態(tài)時鐘模式;AT90系列單片機是增強RISC結構、全靜態(tài)工作方式、內載在線可編程Flash的單片機,也叫AVR單片機。

  PHLIPIS 51LPC系列單片機(51單片機):

  PHILIPS公司的單片機是基于80C51內核的單片機,嵌入了掉電檢測、模擬以及片內RC振蕩器等功能,這使51LPC在高集成度、低成本、低功耗的應用設計中可以滿足多方面的性能要求。

  HOLTEK單片機:

  臺灣盛揚半導體的單片機,價格便宜,種類較多,但抗干擾較差,適用于消費類產品。

  TI公司單片機(51單片機):

  德州儀器提供了TMS370和MSP430兩大系列通用單片機.TMS370系列單片機是8位CMOS單片機,具有多種存儲模式、多種外圍接口模式,適用于復雜的實時控制場合;MSP430系列單片機是一種超低功耗、功能集成度較高的16位低功耗單片機,特別適用于要求功耗低的場合

  松翰單片機(SONIX):

  是臺灣松翰公司的單片,大多為8位機,有一部分與PIC 8位單片機兼容,價格便宜,系統時鐘分頻可選項較多,有PMW ADC 內振 內部雜訊濾波。缺點RAM空間過小,抗干擾較好。

單片機技術的開發(fā)

  單片機在電子技術中的開發(fā),主要包括CPU開發(fā)、程序開發(fā)、 存儲器開發(fā)、計算機開發(fā)及C語言程序開發(fā),同時得到開發(fā)能夠保證單片機在十分復雜的計算機與控制環(huán)境中可以正常有序的進行,這就需要相關人員采取一定的措施,下文是筆者的一些簡單介紹:

  (1)CPU開發(fā)。開發(fā)單片機中的CPU總線寬度,能夠有效完善單片機信息處理功能緩慢的問題,提高信息處理效率與速度,開發(fā)改進中央處理器的實際結構,能夠做到同時運行2-3個CPU,從而大大提高單片機的整體性能。 

  (2)程序開發(fā)。嵌入式系統的合理應用得到了大力推廣,對程序進行開發(fā)時要求能夠自動執(zhí)行各種指令,這樣可以快速準確地采集外部數據,提高單片機的應用效率。

 ?。?)存儲器開發(fā)。單片機的發(fā)展應著眼于內存,加強對基于傳統內存讀寫功能的新內存的探索,使其既能實現靜態(tài)讀寫又能實現動態(tài)讀寫,從而顯著提高存儲性能。 

  (4)計算機開發(fā)。進一步優(yōu)化和開發(fā)單機片應激即分析,并應用計算機系統,通過連接通信數據,實現數據傳遞。 

  (5)C語言程序開發(fā)。優(yōu)化開發(fā)C語言能夠保證單片機在十分復雜的計算機與控制環(huán)境中,可以正常有序的進行,促使其實現廣泛全面的應用。

單片機和plc的區(qū)別

  單片機和PLC(可編程邏輯控制器)在多個方面存在顯著的區(qū)別,這些區(qū)別主要體現在適用范圍、編程方式、運算速度、通信方式、成本、結構、原理及開發(fā)難易度等方面。以下是對這些區(qū)別的詳細分析:

1. 適用范圍

  單片機:通常用于小型嵌入式系統,如智能家電、汽車電子、醫(yī)療器械、航空航天等領域。單片機因其體積小、功耗低、易于編程等特點,被廣泛應用于各種需要智能化控制的設備中。

  PLC:主要用于工業(yè)自動化控制系統,如機械生產、石油、化工等工業(yè)領域。PLC因其高可靠性、抗干擾能力強等特點,成為工業(yè)控制領域的核心設備。

2. 編程方式

  單片機:編程語言通常使用高級編程語言如C語言或匯編語言,這些語言提供了豐富的編程功能和靈活的編程方式。

  PLC:編程語言則多種多樣,包括梯形圖語言、指令表語言、功能模塊圖語言、結構化文本語言等。這些圖形化或文本化的編程語言使得PLC的編程更加直觀易懂,尤其適合工業(yè)控制領域的工程師使用。

3. 運算速度

  單片機:需要處理更多的實時數據采集和處理任務,因此在某些情況下可能需要較高的運算速度。

  PLC:通常需要完成復雜的邏輯控制任務,因此PLC通常具有更高的運算速度和更高的穩(wěn)定性。

4. 通信方式

  單片機:通常需要與其他傳感器或執(zhí)行器進行通信,以實現數據的采集和控制指令的傳輸。

  PLC:則需要與其他PLC或PC進行通信,以實現整個自動化系統的協調和控制。

5. 成本

  單片機:開發(fā)成本低,但開發(fā)起來可能相對麻煩一些。單片機本身的價格較為低廉,適合用于成本敏感的應用場景。

  PLC:開發(fā)成本相對較高,但開發(fā)周期短、見效快、可靠性高。PLC因其高可靠性和穩(wěn)定性,在工業(yè)控制領域得到了廣泛應用。

6. 結構與原理

  單片機:是一種集成電路芯片,采用超大規(guī)模集成電路技術將具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能集成到一塊硅片上構成的一個小而完善的微型計算機系統。

  PLC:是建立在單片機之上的產品,但PLC的設計更加專注于工業(yè)自動化控制領域。PLC內部包含有微處理器等核心部件,通過執(zhí)行內部存儲的程序來實現邏輯控制、順序控制、定時、計數與算術操作等功能。

7. 開發(fā)難易度

  單片機:由于單片機的編程和維護相對復雜,需要具備一定的電子技術和計算機編程知識。

  PLC:則因其編程簡單、使用方便等特點,降低了工業(yè)控制領域的開發(fā)門檻。PLC的編程軟件正朝標準化方向邁進,使得工程師能夠更加方便地進行開發(fā)和調試工作。

  綜上所述,單片機和PLC在適用范圍、編程方式、運算速度、通信方式、成本、結構、原理及開發(fā)難易度等方面存在顯著差異。這些差異使得單片機和PLC在各自的應用領域中都發(fā)揮著不可替代的作用。


內容來自百科網