電氣工程師:單片機(jī)基本常識揭曉
零基礎(chǔ)一次通關(guān) vip套餐|成績單=優(yōu)惠券
單片機(jī)
單片機(jī)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計(jì)數(shù)器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。從上世紀(jì)80年代,由當(dāng)時的4位、8位單片機(jī),發(fā)展到現(xiàn)在的300M的高速單片機(jī)。
概述
單片微型計(jì)算機(jī)簡稱單片機(jī),是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的縮寫MCU表示單片機(jī),單片機(jī)又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計(jì)算機(jī)系統(tǒng)集成到一個芯片上。單片機(jī)由運(yùn)算器、控制器、存儲器、輸入輸出設(shè)備構(gòu)成,相當(dāng)于一個微型的計(jì)算機(jī)(最小系統(tǒng)),和計(jì)算機(jī)相比,單片機(jī)缺少了外圍設(shè)備等。概括的講:一塊芯片就成了一臺計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時,學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。它最早是被用在工業(yè)控制領(lǐng)域。
由于單片機(jī)在工業(yè)控制領(lǐng)域的廣泛應(yīng)用,單片機(jī)由僅有CPU的專用處理器芯片發(fā)展而來。最早的設(shè)計(jì)理念是通過將大量外圍設(shè)備和CPU集成在一個芯片中,使計(jì)算機(jī)系統(tǒng)更小,更容易集成進(jìn)復(fù)雜的而對體積要求嚴(yán)格的控制設(shè)備當(dāng)中。
INTEL的8080是最早按照這種思想設(shè)計(jì)出的處理器,當(dāng)時的單片機(jī)都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上發(fā)展出了MCS51系列單片機(jī)系統(tǒng)。因?yàn)楹唵慰煽慷阅懿诲e獲得了很大的好評。盡管2000年以后ARM已經(jīng)發(fā)展出了32位的主頻超過300M的高端單片機(jī),直到現(xiàn)在(?)基于8051的單片機(jī)還在廣泛的使用。在很多方面單片機(jī)比專用處理器更適合應(yīng)用于嵌入式系統(tǒng),因此它得到了廣泛的應(yīng)用。事實(shí)上單片機(jī)是世界上數(shù)量最多處理器,隨著單片機(jī)家族的發(fā)展壯大,單片機(jī)和專用處理器的發(fā)展便分道揚(yáng)鑣。
現(xiàn)代人類生活中所用的幾乎每件有電子器件的產(chǎn)品中都會集成有單片機(jī)。手機(jī)、電話、計(jì)算器、家用電器、電子玩具、掌上電腦以及鼠標(biāo)等電子產(chǎn)品中都含有單片機(jī)。 汽車上一般配備40多片單片機(jī),復(fù)雜的工業(yè)控制系統(tǒng)上甚至可能有數(shù)百片單片機(jī)在同時工作!單片機(jī)的數(shù)量遠(yuǎn)遠(yuǎn)超過PC機(jī)和其他計(jì)算機(jī)的總和。
應(yīng)用分類
單片機(jī)作為計(jì)算機(jī)發(fā)展的一個重要分支領(lǐng)域,根據(jù)發(fā)展情況,從不同角度單片機(jī)大致可以分為通用型/專用型、總線型/非總線型及工控型/家電型。
通用型與專用型
這是按單片機(jī)適用范圍來區(qū)分的。例如,80C51是通用型單片機(jī),它不是為某種專門用途設(shè)計(jì)的;專用型單片機(jī)是針對一類產(chǎn)品甚至某一個產(chǎn)品設(shè)計(jì)生產(chǎn)的,例如為了滿足電子體溫計(jì)的要求,在片內(nèi)集成ADC接口等功能的溫度測量控制電路。
線型
這是按單片機(jī)是否提供并行總線來區(qū)分的?偩型單片機(jī)普遍設(shè)置有并行地址總線、 數(shù)據(jù)總線、控制總線,這些引腳用以擴(kuò)展并行外圍器件都可通過串行口與單片機(jī)連接,另外,許多單片機(jī)已把所需要的外圍器件及外設(shè)接口集成一片內(nèi),因此在許多情況下可以不要并行擴(kuò)展總線,大大減省封裝成本和芯片體積,這類單片機(jī)稱為非總線型單片機(jī)。
控制型
這是按照單片機(jī)大致應(yīng)用的領(lǐng)域進(jìn)行區(qū)分的。一般而言,工控型尋址范圍大,運(yùn)算能力強(qiáng);用于家電的單片機(jī)多為專用型,通常是小封裝、低價(jià)格,外圍器件和外設(shè)接口集成度高。 顯然,上述分類并不是惟一的和嚴(yán)格的。例如,80C51類單片機(jī)既是通用型又是總線型,還可以作工控用。
發(fā)展歷史
單片機(jī)誕生于1971年,經(jīng)歷了SCM、MCU、SoC三大階段,早期的SCM單片機(jī)都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上發(fā)展出了MCS51系列MCU系統(tǒng);谶@一系統(tǒng)的單片機(jī)系統(tǒng)直到現(xiàn)在還在廣泛使用。隨著工業(yè)控制領(lǐng)域要求的提高,開始出現(xiàn)了16位單片機(jī),但因?yàn)樾詢r(jià)比不理想并未得到很廣泛的應(yīng)用。90年代后隨著消費(fèi)電子產(chǎn)品大發(fā)展,單片機(jī)技術(shù)得到了巨大提高。隨著INTEL i960系列特別是后來的ARM系列的廣泛應(yīng)用,32位單片機(jī)迅速取代16位單片機(jī)的高端地位,并且進(jìn)入主流市場。
而傳統(tǒng)的8位單片機(jī)的性能也得到了飛速提高,處理能力比起80年代提高了數(shù)百倍。高端的32位Soc單片機(jī)主頻已經(jīng)超過300MHz,性能直追90年代中期的專用處理器,而普通的型號出廠價(jià)格跌落至1美元,最高端的型號也只有10美元。
當(dāng)代單片機(jī)系統(tǒng)已經(jīng)不再只在裸機(jī)環(huán)境下開發(fā)和使用,大量專用的嵌入式操作系統(tǒng)被廣泛應(yīng)用在全系列的單片機(jī)上。而在作為掌上電腦和手機(jī)核心處理的高端單片機(jī)甚至可以直接使用專用的Windows和Linux操作系統(tǒng)。
主要階段
早期階段
SCM即單片微型計(jì)算機(jī)(Single Chip Microcomputer)階段,主要是尋求最佳的單片形態(tài)嵌入式系統(tǒng)的最佳體系結(jié)構(gòu)。“創(chuàng)新模式”獲得成功,奠定了SCM與通用計(jì)算機(jī)完全不同的發(fā)展道路。在開創(chuàng)嵌入式系統(tǒng)獨(dú)立發(fā)展道路上,Intel公司功不可沒。
中期發(fā)展
MCU即微控制器(Micro Controller Unit)階段,主要的技術(shù)發(fā)展方向是:不斷擴(kuò)展?jié)M足嵌入式應(yīng)用時,對象系統(tǒng)要求的各種外圍電路與接口電路,突顯其對象的智能化控制能力。它所涉及的領(lǐng)域都與對象系統(tǒng)相關(guān),因此,發(fā)展MCU的重任不可避免地落在電氣、電子技術(shù)廠家。從這一角度來看,Intel逐漸淡出MCU的發(fā)展也有其客觀因素。在發(fā)展MCU方面,最著名的廠家當(dāng)數(shù)Philips公司。
Philips公司以其在嵌入式應(yīng)用方面的巨大優(yōu)勢,將MCS-51從單片微型計(jì)算機(jī)迅速發(fā)展到微控制器。因此,當(dāng)我們回顧嵌入式系統(tǒng)發(fā)展道路時,不要忘記Intel和Philips的歷史功績。
當(dāng)前趨勢
SoC嵌入式系統(tǒng)(System on Chip)式的獨(dú)立發(fā)展之路,向MCU階段發(fā)展的重要因素,就是尋求應(yīng)用系統(tǒng)在芯片上的最大化解決,因此,專用單片機(jī)的發(fā)展自然形成了SoC化趨勢。隨著微電子技術(shù)、IC設(shè)計(jì)、EDA工具的發(fā)展,基于SoC的單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)會有較大的發(fā)展。因此,對單片機(jī)的理解可以從單片微型計(jì)算機(jī)、單片微控制器延伸到單片應(yīng)用系統(tǒng)。
早期發(fā)展
1971年intel公司研制出世界上第一個4位的微處理器;Intel公司的霍夫研制成功世界上第一塊4位微處理器芯片Intel 4004,標(biāo)志著第一代微處理器問世,微處理器和微機(jī)時代從此開始。因發(fā)明微處理器,霍夫被英國《經(jīng)濟(jì)學(xué)家》雜志列為“二戰(zhàn)以來最有影響力的7位科學(xué)家”之一。
1971年11月,Intel推出MCS-4微型計(jì)算機(jī)系統(tǒng)(包括4001 ROM芯片、4002 RAM芯片、4003移位寄存器芯片和4004微處理器)其中4004(下圖)包含2300個晶體管,尺寸規(guī)格為3mm×4mm,計(jì)算性能遠(yuǎn)遠(yuǎn)超過當(dāng)年的ENIAC,最初售價(jià)為200美元。
1972年4月,霍夫等人開發(fā)出第一個8位微處理器Intel 8008。由于8008采用的是P溝道MOS微處理器,因此仍屬第一代微處理器。
1973年intel公司研制出8位的微處理器8080;1973年8月,霍夫等人研制出8位微處理器Intel 8080,以N溝道MOS電路取代了P溝道,第二代微處理器就此誕生。
主頻2MHz的8080芯片運(yùn)算速度比8008快10倍,可存取64KB存儲器,使用了基于6微米技術(shù)的6000個晶體管,處理速度為0.64MIPS(Million Instructions Per Second )。
1975年4月,MITS發(fā)布第一個通用型Altair 8800,售價(jià)375美元,帶有1KB存儲器。這是世界上第一臺微型計(jì)算機(jī)。
1976年intel公司研制出MCS-48系列8位的單片機(jī),這也是單片機(jī)的問世。
Zilog公司于1976年開發(fā)的Z80微處理器,廣泛用于微型計(jì)算機(jī)和工業(yè)自動控制設(shè)備。當(dāng)時,Zilog、Motorola和Intel在微處理器領(lǐng)域三足鼎立。
20世紀(jì)80年代初,Intel公司在MCS-48系列單片機(jī)的基礎(chǔ)上,推出了MCS-51系列8位高檔單片機(jī)。MCS-51系列單片機(jī)無論是片內(nèi)RAM容量,I/O口功能,系統(tǒng)擴(kuò)展方面都有了很大的提高。
硬件特性
1、主流單片機(jī)包括CPU、4KB容量的ROM、128 B容量的RAM、 2個16位定時/計(jì)數(shù)器、4個8位并行口、全雙工串口行口、ADC/DAC、SPI、I2C、ISP、IAP。
2、系統(tǒng)結(jié)構(gòu)簡單,使用方便,實(shí)現(xiàn)模塊化;
3、單片機(jī)可靠性高,可工作到10^6 ~10^7小時無故障;
4、處理功能強(qiáng),速度快。
5、低電壓,低功耗,便于生產(chǎn)便攜式產(chǎn)品
6、控制功能強(qiáng)
7、環(huán)境適應(yīng)能力強(qiáng)。
基本結(jié)構(gòu)
1.運(yùn)算器
運(yùn)算器由運(yùn)算部件――算術(shù)邏輯單元(Arithmetic & Logical Unit,簡稱ALU)、累加器和寄存器等幾部分組成。ALU的作用是把傳來的數(shù)據(jù)進(jìn)行算術(shù)或邏輯運(yùn)算,輸入來源為兩個8位數(shù)據(jù),分別來自累加器和數(shù)據(jù)寄存器。ALU能完成對這兩個數(shù)據(jù)進(jìn)行加、減、與、或、比較大小等操作,最后將結(jié)果存入累加器。例如,兩個數(shù)6和7相加,在相加之前,操作數(shù)6放在累加器中,7放在數(shù)據(jù)寄存器中,當(dāng)執(zhí)行加法指令時,ALU即把兩個數(shù)相加并把結(jié)果13存入累加器,取代累加器原來的內(nèi)容6。
運(yùn)算器有兩個功能:
(1) 執(zhí)行各種算術(shù)運(yùn)算。
(2) 執(zhí)行各種邏輯運(yùn)算,并進(jìn)行邏輯測試,如零值測試或兩個值的比較。
運(yùn)算器所執(zhí)行全部操作都是由控制器發(fā)出的控制信號來指揮的,并且,一個算術(shù)操作產(chǎn)生一個運(yùn)算結(jié)果,一個邏輯操作產(chǎn)生一個判決。
2.控制器
控制器由程序計(jì)數(shù)器、指令寄存器、指令譯碼器、時序發(fā)生器和操作控制器等組成,是發(fā)布命令的“決策機(jī)構(gòu)”,即協(xié)調(diào)和指揮整個微機(jī)系統(tǒng)的操作。其主要功能有:
(1) 從內(nèi)存中取出一條指令,并指出下一條指令在內(nèi)存中的位置。
(2) 對指令進(jìn)行譯碼和測試,并產(chǎn)生相應(yīng)的操作控制信號,以便于執(zhí)行規(guī)定的動作。
(3) 指揮并控制CPU、內(nèi)存和輸入輸出設(shè)備之間數(shù)據(jù)流動的方向。
微處理器內(nèi)通過內(nèi)部總線把ALU、計(jì)數(shù)器、寄存器和控制部分互聯(lián),并通過外部總線與外部的存儲器、輸入輸出接口電路聯(lián)接。外部總線又稱為系統(tǒng)總線,分為數(shù)據(jù)總線DB、地址總線AB和控制總線CB。通過輸入輸出接口電路,實(shí)現(xiàn)與各種外圍設(shè)備連接。
3.主要寄存器
(1)累加器A
圖1-2 單片機(jī)組成框圖
累加器A是微處理器中使用最頻繁的寄存器。在算術(shù)和邏輯運(yùn)算時它有雙功能:運(yùn)算前,用于保存一個操作數(shù);運(yùn)算后,用于保存所得的和、差或邏輯運(yùn)算結(jié)果。
(2)數(shù)據(jù)寄存器DR
數(shù)據(jù)寄存器通過數(shù)據(jù)總線向存儲器和輸入/輸出設(shè)備送(寫)或取(讀)數(shù)據(jù)的暫存單元。它可以保存一條正在譯碼的指令,也可以保存正在送往存儲器中存儲的一個數(shù)據(jù)字節(jié)等等。
(3)指令寄存器IR和指令譯碼器ID
指令包括操作碼和操作數(shù)。
指令寄存器是用來保存當(dāng)前正在執(zhí)行的一條指令。當(dāng)執(zhí)行一條指令時,先把它從內(nèi)存中取到數(shù)據(jù)寄存器中,然后再傳送到指令寄存器。當(dāng)系統(tǒng)執(zhí)行給定的指令時,必須對操作碼進(jìn)行譯碼,以確定所要求的操作,指令譯碼器就是負(fù)責(zé)這項(xiàng)工作的。其中,指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。
(4)程序計(jì)數(shù)器PC
PC用于確定下一條指令的地址,以保證程序能夠連續(xù)地執(zhí)行下去,因此通常又被稱為指令地址計(jì)數(shù)器。在程序開始執(zhí)行前必須將程序的第一條指令的內(nèi)存單元地址(即程序的首地址)送入PC,使它總是指向下一條要執(zhí)行指令的地址。
(5)地址寄存器AR
地址寄存器用于保存當(dāng)前CPU所要訪問的內(nèi)存單元或I/O設(shè)備的地址。由于內(nèi)存與CPU之間存在著速度上的差異,所以必須使用地址寄存器來保持地址信息,直到內(nèi)存讀/寫操作完成為止。
顯然,當(dāng)CPU向存儲器存數(shù)據(jù)、CPU從內(nèi)存取數(shù)據(jù)和CPU從內(nèi)存讀出指令時,都要用到地址寄存器和數(shù)據(jù)寄存器。同樣,如果把外圍設(shè)備的地址作為內(nèi)存地址單元來看的話,那么當(dāng)CPU和外圍設(shè)備交換信息時,也需要用到地址寄存器和數(shù)據(jù)寄存器。
應(yīng)用范圍
單片機(jī)滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實(shí)時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械以及各種智能機(jī)械了。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。
單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域,大致可分如下幾個范疇:
智能儀器
單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于儀器儀表中,結(jié)合不同類型的傳感器,可實(shí)現(xiàn)諸如電壓、電流、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機(jī)控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強(qiáng)大。
例如精密的測量設(shè)備(電壓表、功率計(jì),示波器,各種分析儀)。
工業(yè)控制
單片機(jī)具有體積小、控制功能強(qiáng)、功耗低、環(huán)境適應(yīng)能力強(qiáng)、擴(kuò)展靈活和使用方便等優(yōu)點(diǎn),用單片機(jī)可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、通信系統(tǒng)、信號檢測系統(tǒng)、無線感知系統(tǒng)、測控系統(tǒng)、機(jī)器人等應(yīng)用控制系統(tǒng)。例如工廠流水線的智能化管理,電梯智能化控制、各種報(bào)警系統(tǒng),與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級控制系統(tǒng)等。
家用電器
家用電器廣泛采用了單片機(jī)控制,從電飯煲、洗衣機(jī)、電冰箱、空調(diào)機(jī)、彩電、其他音響視頻器材、再到電子秤量設(shè)備和白色家電等。
網(wǎng)絡(luò)和通信
現(xiàn)代的單片機(jī)普遍具備通信接口,可以很方便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信,為在計(jì)算機(jī)網(wǎng)絡(luò)和通信設(shè)備間的應(yīng)用提供了極好的物質(zhì)條件,通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制,從手機(jī),電話機(jī)、小型程控交換機(jī)、樓宇自動通信呼叫系統(tǒng)、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機(jī)等。
設(shè)備領(lǐng)域
單片機(jī)在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機(jī),各種分析儀,監(jiān)護(hù)儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。
模塊化系統(tǒng)
某些專用單片機(jī)設(shè)計(jì)用于實(shí)現(xiàn)特定功能,從而在各種電路中進(jìn)行模塊化應(yīng)用,而不要求使用人員了解其內(nèi)部結(jié)構(gòu)。如音樂集成單片機(jī),看似簡單的功能,微縮在純電子芯片中(有別于磁帶機(jī)的原理),就需要復(fù)雜的類似于計(jì)算機(jī)的原理。如:音樂信號以數(shù)字的形式存于存儲器中(類似于ROM),由微控制器讀出,轉(zhuǎn)化為模擬音樂電信號(類似于聲卡)。
在大型電路中,這種模塊化應(yīng)用極大地縮小了體積,簡化了電路,降低了損壞、錯誤率,也方便于更換。
汽車電子
單片機(jī)在汽車電子中的應(yīng)用非常廣泛,例如汽車中的發(fā)動機(jī)控制器,基于CAN總線的汽車發(fā)動機(jī)智能電子控制器、GPS導(dǎo)航系統(tǒng)、abs防抱死系統(tǒng)、制動系統(tǒng)、胎壓檢測等。
此外,單片機(jī)在工商、金融、科研、教育、電力、通信、物流和國防航空航天等領(lǐng)域都有著十分廣泛的用途。
學(xué)習(xí)方法
基礎(chǔ)理論
基礎(chǔ)理論知識包括模擬電路、數(shù)字電路和C語言知識。模擬電路和數(shù)字電路屬于抽象學(xué)科,要把它學(xué)好還得費(fèi)點(diǎn)精神。在你學(xué)習(xí)單片機(jī)之前,覺得模擬電路和數(shù)字電路基礎(chǔ)不好的話,不要急著學(xué)習(xí)單片機(jī),應(yīng)該先回顧所學(xué)過的模擬電路和數(shù)字電路知識,為學(xué)習(xí)單片機(jī)加強(qiáng)基礎(chǔ)。否則,你的單片機(jī)學(xué)習(xí)之路不僅會很艱難和漫長,還可能半途而廢。筆者始終認(rèn)為,扎實(shí)的電子技術(shù)基礎(chǔ)是學(xué)好單片機(jī)的關(guān)鍵,直接影響單片機(jī)學(xué)習(xí)入門的快慢。有些同學(xué)覺得單片機(jī)很難,越學(xué)越復(fù)雜,最后學(xué)不下去了。有的同學(xué)看書時似乎明白了,可是動起手來卻一塌糊涂,究其原因就是電子技術(shù)基礎(chǔ)沒有打好,首先被表面知識給困惑了。
單片機(jī)屬于數(shù)字電路,其概念、術(shù)語、硬件結(jié)構(gòu)和原理都源自數(shù)字電路,如果數(shù)字電路基礎(chǔ)扎實(shí),對復(fù)雜的單片機(jī)硬件結(jié)構(gòu)和原理就能容易理解,就能輕松地邁開學(xué)習(xí)的第一步,自信心也會樹立起來。相反,基礎(chǔ)不好,這個看不懂那個也弄不明白,越學(xué)問題越多,越學(xué)越?jīng)]有信心。如果你覺得單片機(jī)很難,那就應(yīng)該先放下單片機(jī)教材,去重溫?cái)?shù)字電路,搞清楚觸發(fā)器、寄存器、門電路、COMS電路、時序邏輯和時序圖、進(jìn)制轉(zhuǎn)換等理論知識。理解了這些知識之后再去看看單片機(jī)的結(jié)構(gòu)和原理,我想你會大徹大悟,信心倍增。
模擬電路是電子技術(shù)最基礎(chǔ)的學(xué)科,它讓你知道什么是電阻、電容、電感、二極管、三極管、場效應(yīng)管、放大器等等以及它們的工作原理和在電路中的作用,這是學(xué)習(xí)電子技術(shù)必須掌握的基礎(chǔ)知識。一般是先學(xué)習(xí)模擬電路再去學(xué)習(xí)數(shù)字電路。扎實(shí)的模擬電路基礎(chǔ)不僅讓你容易看懂別人設(shè)計(jì)的電路,而且讓你的設(shè)計(jì)的電路更可靠,提高產(chǎn)品質(zhì)量。
單片機(jī)的學(xué)習(xí)離不開編程,在所有的程序設(shè)計(jì)中C語言運(yùn)用的最為廣泛。C語言知識并不難,沒有任何編程基礎(chǔ)的人都可以學(xué),在我看來,初中生、高中生、中專生、大學(xué)生都能學(xué)會。當(dāng)然,數(shù)學(xué)基礎(chǔ)好、邏輯思維好的人學(xué)起來相對輕松一些。C語言需要掌握的知識就那么3個條件判斷語句、3個循環(huán)語句、3個跳轉(zhuǎn)語句和1個開關(guān)語句。別小看這10個語句,用他們組合形成的邏輯要多復(fù)雜有多復(fù)雜。學(xué)習(xí)時要一條語句一條語句的學(xué),學(xué)一條活用一條,全部學(xué)過用過這些關(guān)鍵語句后,相信你的C基礎(chǔ)建立了。
當(dāng)基礎(chǔ)打好以后,你會感覺到單片機(jī)不再難學(xué)了,而且越學(xué)越起勁。當(dāng)單片機(jī)乖乖的依照你的邏輯思維和算法去執(zhí)行指令,實(shí)現(xiàn)預(yù)期控制效果的時候,成就感會讓你信心十足、夜以續(xù)日、廢寢忘食的投入到單片機(jī)的世界里。可以這么說,扎實(shí)的電子技術(shù)基礎(chǔ)和C語言基礎(chǔ)能增強(qiáng)學(xué)習(xí)單片機(jī)信心,較快掌握單片機(jī)技術(shù)。
實(shí)驗(yàn)實(shí)踐
這是真正學(xué)習(xí)單片機(jī)的過程,既讓人興奮又讓人疲憊,既讓人無奈又讓人不服,既讓人孤獨(dú)又讓人充實(shí),既讓人氣憤又讓人欣慰,既有失落感又有成就感。其中的酸甜苦辣只有學(xué)過的人深有體會。思想上要有刻苦學(xué)習(xí)的決心,硬件上要有一套完整的學(xué)習(xí)開發(fā)工具,軟件上要注重理論和實(shí)踐相結(jié)合。
1.有刻苦學(xué)習(xí)的決心
首先,明確學(xué)習(xí)目的。先認(rèn)真回答兩個問題:我學(xué)單片機(jī)來做什么?需要多長時間把它學(xué)會?這是你學(xué)單片機(jī)的動力。沒有動力,我想你堅(jiān)持不了多久。其次,端正學(xué)習(xí)心態(tài)。單片機(jī)學(xué)習(xí)過程是枯燥乏味、孤獨(dú)寂寞的過程。要知道,學(xué)習(xí)知識沒有捷徑,只有循序漸進(jìn),腳踏實(shí)地,一步一個腳印,才能學(xué)到真功夫。再次,要多動腦勤動手。單片機(jī)的學(xué)習(xí)具有很強(qiáng)的實(shí)踐性,是一門很注重實(shí)際動手操作的技術(shù)學(xué)科。不動手實(shí)踐你是學(xué)不會單片機(jī)的。最后,虛心交流。在單片機(jī)學(xué)習(xí)過程中每個人都會遇到無數(shù)不能解決的問題,需要你向有經(jīng)驗(yàn)的過來人虛心求教,否則,一味的自己埋頭摸索會走許多彎路,浪費(fèi)很多時間。
2.有一套完整的學(xué)習(xí)開發(fā)工具
學(xué)習(xí)單片機(jī)是需要成本的。必須有一臺電腦、一塊單片機(jī)開發(fā)板(如果開發(fā)板不能直接下載程序代碼的話還得需要一個編程器)、一套視頻教程、一本單片機(jī)教材和一本C語言教材。電腦是用來編寫和編譯程序,并將程序代碼下載到單片機(jī)上;開發(fā)板用來運(yùn)行單片機(jī)程序,驗(yàn)證實(shí)際效果;視頻教程就是手把手教你單片機(jī)開發(fā)環(huán)境的使用、單片機(jī)編程和調(diào)試。對于單片機(jī)初學(xué)者來說,視頻教程必須看,要不然,哪怕把教材看了幾遍,還是不知道如何下手,尤其是院校里的單片機(jī)教材,學(xué)了之后,面對真正的單片機(jī)時可能還是束手無策;單片機(jī)教材和C語言教材是理論學(xué)習(xí)資料,備忘備查。不要為了節(jié)約成本不用開發(fā)板而光用Proteus軟件仿真調(diào)試,這和紙上談兵沒什么區(qū)別。
3. 要注重理論和實(shí)踐相結(jié)合
單片機(jī)C語言編程理論知識并不深奧,光看書不動手也能明白。但在實(shí)際編程的時候就沒那么簡單了。一個程序的形成不僅需要有C語言知識,更多需要融入你個人的編程思路和算法。編程思路和算法決定一個程序的優(yōu)劣,是單片機(jī)編程的大問題,只有在實(shí)際動手編寫的時候才會有深切的感悟。一個程序能否按照你的意愿正常運(yùn)行就要看你的思路和算法是否正確、合理。如果程序不正常則要反復(fù)調(diào)試(檢查、修改思路和算法),直到成功。這個過程耗時、費(fèi)腦、疲精神,意志不堅(jiān)強(qiáng)者往往被絆倒在這里半途而廢。
學(xué)習(xí)編寫程序應(yīng)該按照以下過程學(xué)習(xí),效果會更好。看到例程題目先試著構(gòu)思自己的編程思路,然后再看教材或視頻教程里的代碼,研究人家的編程思路,注意與自己思路的差異;接下來就照搬人家的思路親自動手編寫這個程序,領(lǐng)會其中每一條語句的作用;對有疑問的地方試著按照自己的思路修改程序,比較程序運(yùn)行效果,領(lǐng)會其中的奧妙。每一個例程都堅(jiān)持按照這個過程學(xué)習(xí),你很快會找到編程的感覺,取其精華去其糟粕,久而久之會形成你獨(dú)特的編程思想。當(dāng)然,剛開始,看別人的程序源代碼就像看天書一樣,只要硬著頭皮看,看到不懂的關(guān)鍵字和語句就翻書查閱、對照。只要能堅(jiān)持下來,學(xué)習(xí)收獲會事半功倍。在實(shí)踐過程中不僅要學(xué)會別人的例程,還要在別人的程序上改進(jìn)和拓展,讓程序產(chǎn)生更強(qiáng)大的功能。同時,還要懂得通過查閱芯片數(shù)據(jù)手冊(DATASHEET)里有關(guān)芯片命令和數(shù)據(jù)的讀寫時序來核對別人例程的可靠性,如果你覺得例程不可靠就把它修改過來,成為是你自己的程序。不僅如此,自己應(yīng)該經(jīng)常找些項(xiàng)目來做,以鞏固所學(xué)的知識和積累更多的經(jīng)驗(yàn)。
硬件設(shè)計(jì)
當(dāng)編寫自己的程序信手拈來、閱讀別人的程序能夠發(fā)現(xiàn)問題的時候,說明你的單片機(jī)編程水平相當(dāng)不錯了。接下來就應(yīng)該研究硬件了。硬件設(shè)計(jì)包括電路原理設(shè)計(jì)和PCB板設(shè)計(jì)。學(xué)習(xí)做硬件要比學(xué)習(xí)做軟件麻煩,成本更高,周期更長。但是,學(xué)習(xí)單片機(jī)的最終目的是做產(chǎn)品開發(fā)----軟件和硬件相結(jié)合形成完整的控制系統(tǒng)。所以,做硬件也是學(xué)習(xí)單片機(jī)技術(shù)的一個必學(xué)內(nèi)容。
電路原理設(shè)計(jì)涉及到各種芯片的應(yīng)用,而這些芯片外圍電路的設(shè)計(jì)、典型應(yīng)用電路和與單片機(jī)的連接等在芯片數(shù)據(jù)手冊(DATASHEET)都能找到答案,前提是要看得懂全英文的數(shù)據(jù)手冊。否則,照搬別人的設(shè)計(jì)永遠(yuǎn)落在別人的后面,你做的產(chǎn)品就沒有創(chuàng)意。電子技術(shù)領(lǐng)域的第一手資料(DATASHEET)都是英文,從第一手資料里你所獲得的知識可能是在教科書、網(wǎng)絡(luò)文檔和課外讀物等所沒有的知識。雖然有些資料也都是在DATASHEET的基礎(chǔ)上撰寫的,但內(nèi)容不全面,甚至存在翻譯上的遺漏和錯誤。當(dāng)然,閱讀DATASHEET需要具備一定的英文閱讀能力,這也是阻礙單片機(jī)學(xué)習(xí)者晉級的絆腳石。良好的英文閱讀能力能讓你在單片機(jī)技術(shù)知識的海洋里自由遨游。
做PCB板就比較簡單了。只要懂得使用Protel軟件或 AltiumDesigner軟件就沒問題了。但要想做的板子布局美觀、布線合理還得費(fèi)一番功夫了。
嫻熟的單片機(jī)C語言編程、會使用Protel軟件或 AltiumDesigner軟件設(shè)計(jì)PCB板和具備一定的英文閱讀能力,你就是一個遇強(qiáng)則強(qiáng)的單片機(jī)高手了。
抗干擾設(shè)計(jì)
在提高硬件系統(tǒng)抗干擾能力的同時,軟件抗干擾以其設(shè)計(jì)靈活、節(jié)省硬件資源、可靠性好越來越受到重視。下面以MCS-51單片機(jī)系統(tǒng)為例,對微機(jī)系統(tǒng)軟件抗干擾方法進(jìn)行研究。
抗干擾
在工程實(shí)踐中,軟件抗干擾研究的內(nèi)容主要是:一、消除模擬輸入信號的噪聲(如數(shù)字濾波技術(shù));二、程序運(yùn)行混亂時使程序重入正軌的方法。本文針對后者提出了幾種有效的軟件抗干擾方法。
指令冗余
CPU取指令過程是先取操作碼,再取操作數(shù)。當(dāng)PC受干擾出現(xiàn)錯誤,程序便脫離正常軌道“亂飛”,當(dāng)亂飛到某雙字節(jié)指令,若取指令時刻落在操作數(shù)上,誤將操作數(shù)當(dāng)做操作碼,程序?qū)⒊鲥e。若“飛” 到了三字節(jié)指令,出錯機(jī)率更大。
在關(guān)鍵地方人為插入一些單字節(jié)指令,或?qū)⒂行巫止?jié)指令重寫稱為指令冗余。通常是在雙字節(jié)指令和三字節(jié)指令后插入兩個字節(jié)以上的NOP。這樣即使亂飛程序飛到操作數(shù)上,由于空操作指令NOP的存在,避免了后面的指令被當(dāng)作操作數(shù)執(zhí)行,程序自動納入正軌。
此外,對系統(tǒng)流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執(zhí)行。
攔截技術(shù)
所謂攔截,是指將亂飛的程序引向指定位置,再進(jìn)行出錯處理。通常用軟件陷阱來攔截亂飛的程序。因此先要合理設(shè)計(jì)陷阱,其次要將陷阱安排在適當(dāng)?shù)奈恢谩?/P>
(1 )軟件陷阱的設(shè)計(jì)
當(dāng)亂飛程序進(jìn)入非程序區(qū),冗余指令便無法起作用。通過軟件陷阱,攔截亂飛程序,將其引向指定位置,再進(jìn)行出錯處理。軟件陷阱是指用來將捕獲的亂飛程序引向復(fù)位入口地址0000H的指令。通常在EPROM中非程序區(qū)填入以下指令作為軟件陷阱:
(2 ) 陷阱的安排
最后一條應(yīng)填入020000,當(dāng)亂飛程序落到此區(qū),即可自動入軌。在用戶程序區(qū)各模塊之間的空余單元也可填入陷阱指令。當(dāng)使用的中斷因干擾而開放時,在對應(yīng)的中斷服務(wù)程序中設(shè)置軟件陷阱,能及時捕獲錯誤的中斷。如某應(yīng)用系統(tǒng)雖未用到外部中斷1,外部中斷1的中斷服務(wù)程序可為如下形式:
NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障診斷程序與系統(tǒng)自恢復(fù)程序的設(shè)計(jì)可靠、 完善,用“LJMP 0000H”作返回指令可直接進(jìn)入故障診斷程序,盡早地處理故障并恢復(fù)程序的運(yùn)行。
考慮到程序存貯器的容量,軟件陷阱一般1K空間有2-3個就可以進(jìn)行有效攔截。
軟件“看門狗”技術(shù)
若失控的程序進(jìn)入“死循環(huán)”,通常采用“看門狗”技術(shù)使程序脫離“死循環(huán)”。通過不斷檢測程序循環(huán)運(yùn)行時間,若發(fā)現(xiàn)程序循環(huán)時間超過最大循環(huán)運(yùn)行時間,則認(rèn)為系統(tǒng)陷入“死循環(huán)”,需進(jìn)行出錯處理。
“看門狗”技術(shù)可由硬件實(shí)現(xiàn),也可由軟件實(shí)現(xiàn)。在工業(yè)應(yīng)用中,嚴(yán)重的干擾有時會破壞中斷方式控制字,關(guān)閉中斷。則系統(tǒng)無法定時“喂狗”,硬件看門狗電路失效。而軟件看門狗可有效地解決這類問題。
筆者在實(shí)際應(yīng)用中,采用環(huán)形中斷監(jiān)視系統(tǒng)。用定時器T0監(jiān)視定時器T1,用定時器T1監(jiān)視主程序,主程序監(jiān)視定時器T0。采用這種環(huán)形結(jié)構(gòu)的軟件“看門狗”具有良好的抗干擾性能,大大提高了系統(tǒng)可靠性。對于需經(jīng)常使用T1定時器進(jìn)行串口通訊的測控系統(tǒng),則定時器T1不能進(jìn)行中斷,可改由串口中斷進(jìn)行監(jiān)控(如果用的是MCS-52系列單片機(jī),也可用T2代替T1進(jìn)行監(jiān)視)。這種軟件“看門狗”監(jiān)視原理是:在主程序、T0中斷服務(wù)程序、T1中斷服務(wù)程序中各設(shè)一運(yùn)行觀測變量,假設(shè)為MWatch、T0Watch 、T1Watch,主程序每循環(huán)一次,MWatch加1,同樣T0、T1中斷服務(wù)程序執(zhí)行一次,T0Watch、 T1Watch加1。在T0中斷服務(wù)程序中通過檢測T1Watch的變化情況判定T1運(yùn)行是否正常,在T1中斷服務(wù)程序中檢測MWatch的變化情況判定主程序是否正常運(yùn)行,在主程序中通過檢測T0Watch的變化情況判別T0是否正常工作。若檢測到某觀測變量變化不正常,比如應(yīng)當(dāng)加1而未加1,則轉(zhuǎn)到出錯處理程序作排除故障處理。當(dāng)然,對主程序最大循環(huán)周期、定時器T0和T1定時周期應(yīng)予以全盤合理考慮。限于篇幅不贅述。
抗干擾技術(shù)
單片機(jī)系統(tǒng)因干擾復(fù)位或掉電后復(fù)位均屬非正常復(fù)位,應(yīng)進(jìn)行故障診斷并能自動恢復(fù)非正常復(fù)位前的狀態(tài)。
非正常復(fù)位的識別
程序的執(zhí)行總是從0000H開始,導(dǎo)致程序從 0000H開始執(zhí)行有四種可能:一、系統(tǒng)開機(jī)上電復(fù)位;二、軟件故障復(fù)位;三、看門狗超時未喂狗硬件復(fù)位; 四、任務(wù)正在執(zhí)行中掉電后來電復(fù)位。四種情況中除第一種情況外均屬非正常復(fù)位,需加以識別。
(1 )硬件復(fù)位與軟件復(fù)位的識別
此處硬件復(fù)位指開機(jī)復(fù)位與看門狗復(fù)位,硬件復(fù)位對寄存器有影響,如復(fù)位后PC=0000H, SP=07H,PSW=00H等。而軟件復(fù)位則對SP、SPW無影響。故對于微機(jī)測控系統(tǒng),當(dāng)程序正常運(yùn)行時,將SP設(shè)置地址大于07H,或者將PSW的第5位用戶標(biāo)志位在系統(tǒng)正常運(yùn)行時設(shè)為1。那么系統(tǒng)復(fù)位時只需檢測PSW.5標(biāo)志位或SP值便可判此是否硬件復(fù)位。
由于硬件復(fù)位時片內(nèi)RAM狀態(tài)是隨機(jī)的,而軟件復(fù)位片內(nèi)RAM則可保持復(fù)位前狀態(tài),因此可選取片內(nèi)某一個或兩個單元作為上電標(biāo)志。設(shè)40H用來做上電標(biāo)志,上電標(biāo)志字為78H,若系統(tǒng)復(fù)位后40H單元內(nèi)容不等于78H,則認(rèn)為是硬件復(fù)位,否則認(rèn)為是軟件復(fù)位,轉(zhuǎn)向出錯處理。若用兩個單元作上電標(biāo)志,則這種判別方法的可靠性更高。
(2 )開機(jī)復(fù)位與看門狗故障復(fù)位的識別
開機(jī)復(fù)位與看門狗故障復(fù)位因同屬硬件復(fù)位, 所以要想予以正確識別,一般要借助非易失性RAM或者EEROM。當(dāng)系統(tǒng)正常運(yùn)行時,設(shè)置一可掉電保護(hù)的觀測單元。當(dāng)系統(tǒng)正常運(yùn)行時,在定時喂狗的中斷服務(wù)程序中使該觀測單元保持正常值(設(shè)為 AAH),而在主程中將該單元清零,因觀測單元掉電可保護(hù),則開機(jī)時通過檢測該單元是否為正常值可判斷是否看門狗復(fù)位。
(3 )正常開機(jī)復(fù)位與非正常開機(jī)復(fù)位的識別
識別測控系統(tǒng)中因意外情況如系統(tǒng)掉電等情況引起的開機(jī)復(fù)位與正常開機(jī)復(fù)位,對于過程控制系統(tǒng)尤為重要。如某以時間為控制標(biāo)準(zhǔn)的測控系統(tǒng),完成一次測控任務(wù)需1小時。在已執(zhí)行測控50分鐘的情況下,系統(tǒng)電壓異常引起復(fù)位,此時若系統(tǒng)復(fù)位后又從頭開始進(jìn)行測控則會造成不必要的時間消耗。因此可通過一監(jiān)測單元對當(dāng)前系統(tǒng)的運(yùn)行狀態(tài)、系統(tǒng)時間予以監(jiān)控,將控制過程分解為若干步或若干時間段,每執(zhí)行完一步或每運(yùn)行一個時間段則對監(jiān)測單元置為關(guān)機(jī)允許值,不同的任務(wù)或任務(wù)的不同階段有不同的值,若系統(tǒng)正在進(jìn)行測控任務(wù)或正在執(zhí)某時間段,則將監(jiān)測單元置為非正常關(guān)機(jī)值。那么系統(tǒng)復(fù)位后可據(jù)此單元判系統(tǒng)原來的運(yùn)行狀態(tài),并跳到出錯處理程序中恢復(fù)系統(tǒng)原運(yùn)行狀態(tài)。
非正常復(fù)位后系統(tǒng)自恢復(fù)運(yùn)行的程序設(shè)計(jì)
對順序要求嚴(yán)格的一些過程控制系統(tǒng),系統(tǒng)非正常復(fù)位否,一般都要求從失控的那一個模塊或任務(wù)恢復(fù)運(yùn)行。所以測控系統(tǒng)要作好重要數(shù)據(jù)單元、參數(shù)的備份,如系統(tǒng)運(yùn)行狀態(tài)、系統(tǒng)的進(jìn)程值、當(dāng)前輸入、輸出的值,當(dāng)前時鐘值、觀測單元值等,這些數(shù)據(jù)既要定時備份,同時若有修改也應(yīng)立即予以備份。
當(dāng)在已判別出系統(tǒng)非正常復(fù)位的情況下,先要恢復(fù)一些必要的系統(tǒng)數(shù)據(jù),如顯示模塊的初始化、片外擴(kuò)展芯片的初始化等。其次再對測控系統(tǒng)的系統(tǒng)狀態(tài)、運(yùn)行參數(shù)等予以恢復(fù),包括顯示界面等的恢復(fù)。之后再把復(fù)位前的任務(wù)、參數(shù)、運(yùn)行時間等恢復(fù), 再進(jìn)入系統(tǒng)運(yùn)行狀態(tài)。
應(yīng)當(dāng)說明的是,真實(shí)地恢復(fù)系統(tǒng)的運(yùn)行狀態(tài)需 要極為細(xì)致地對系統(tǒng)的重要數(shù)據(jù)予以備份,并加以數(shù)據(jù)可靠性檢查,以保證恢復(fù)的數(shù)據(jù)的可靠性。
其次,對多任務(wù)、多進(jìn)程測控系統(tǒng),數(shù)據(jù)的恢復(fù)需考慮恢復(fù)的次序問題。
系統(tǒng)基本初始化是指對芯片、顯示、輸入輸出方式等進(jìn)行初始化,要注意輸入輸出的初始化不應(yīng)造成誤動作。而復(fù)位前任務(wù)的初始化是指任務(wù)的執(zhí)行狀態(tài)、運(yùn)行時間等。
對于軟件抗干擾的一些其它常用方法如數(shù)字濾波、RAM數(shù)據(jù)保護(hù)與糾錯等,限于篇幅,本文未作討論。在工程實(shí)踐中通常都是幾種抗干擾方法并用,互相補(bǔ)充 完善,才能取得較好的抗干擾效果。從根本上來說,硬件抗干擾是主動的,而軟件是抗干擾是被動的。細(xì)致周到地分析干擾源,硬件與軟件抗干擾相結(jié)合,完善系統(tǒng)監(jiān)控程序,設(shè)計(jì)一穩(wěn)定可靠的單片機(jī)系統(tǒng)是完全可行的。
電子技術(shù)中單片機(jī)的應(yīng)用
1、在家用電器領(lǐng)域的應(yīng)用
現(xiàn)在在家用電器的更新、市場開拓等方面,單片機(jī)的應(yīng)用越來越廣泛,比如電子玩具或者高級的電視游戲機(jī)中,會應(yīng)用單片機(jī)實(shí)現(xiàn)其控制功能;而洗衣機(jī)可以利用單片機(jī)識別衣服的種類與臟污程度,從而自動選擇洗滌強(qiáng)度與洗滌時間;在冰箱冷柜中采用單片機(jī)控制可以識別食物的種類與保鮮程度,實(shí)現(xiàn)冷藏溫度與冷藏時間的自動選擇;微波爐也可以通過單片機(jī)識別食物種類從而自動確定加熱溫度與加熱時間等等,這些家用電器在應(yīng)用單片機(jī)技術(shù)后,無論是性能還是功能,與傳統(tǒng)技術(shù)相比均有長足的進(jìn)步。
2、在醫(yī)用設(shè)備領(lǐng)域的應(yīng)用
現(xiàn)代醫(yī)療條件越來越發(fā)達(dá),人們對醫(yī)療滅菌消毒技術(shù)也越來越重視,但是一些偏遠(yuǎn)地區(qū)的小醫(yī)院、小診所其消毒滅菌設(shè)備還十分簡陋,無法有效的控制消毒質(zhì)量。隨著單片機(jī)技術(shù)的發(fā)展,其體積較小、功能強(qiáng)大、具有靈活的擴(kuò)展性、應(yīng)用方便的特點(diǎn)也越來越突出,因此在醫(yī)用呼吸機(jī)、分析儀與監(jiān)護(hù)儀、超聲診斷設(shè)備、病床呼叫系統(tǒng)等設(shè)備中得到了廣泛的應(yīng)用。
3、在工業(yè)控制領(lǐng)域的應(yīng)用
其實(shí)最早的單片機(jī)正是從工業(yè)領(lǐng)域開始興起的,至今其在工業(yè)控制領(lǐng)域的應(yīng)用仍然十分廣泛,利用單片機(jī)技術(shù)構(gòu)成多種多樣的數(shù)據(jù)采集系統(tǒng)與智能控制系統(tǒng),比如工廠流水線的智能化管理、智能化電梯、報(bào)警系統(tǒng)等等,均是通過單片機(jī)技術(shù)與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級控制系統(tǒng)。
4、在儀器儀表領(lǐng)域的應(yīng)用
上文中也談到單片機(jī)具備集成度高、體積小、較強(qiáng)的控制功能與擴(kuò)展的靈活性等特點(diǎn),并且處理速度快,具有較高的可靠性,所以在智能儀器儀表領(lǐng)域其應(yīng)用也十分廣泛。從某種程度而言,單片機(jī)帶動了傳統(tǒng)測量、控制儀器儀表技術(shù)的一項(xiàng)革命,通過單片機(jī)技術(shù)實(shí)現(xiàn)了儀器儀表技術(shù)的數(shù)字化、智能化、綜合化以及多功能化,與傳統(tǒng)的電子電路或者數(shù)字電路相比,其功能更強(qiáng)大,綜合性更突出。
基礎(chǔ)知識
本段僅針對硬件設(shè)計(jì)人員和軟件設(shè)計(jì)人員,為了便于對硬件的理解要有一定的匯編語言基礎(chǔ)。
總線
我們知道,一個電路總是由元器件通過電線連接而成的,在模擬電路中,連線并不成為一個問題,因?yàn)楦髌骷g一般是串行關(guān)系,各器件之間的連線并不很多,但計(jì)算機(jī)電路卻不一樣,它是以微處理器為核心,各器件都要與微處理器相連,各器件之間的工作必須相互協(xié)調(diào),所以需要的連線就很多了,如果仍如同模擬電路一樣,在各微處理器和各器件間單獨(dú)連線,則線的數(shù)量將多得驚人,所以在微處理機(jī)中引入了總線的概念,各個器件共同享用連線,所有器件的8根數(shù)據(jù)線全部接到8根公用的線上,即相當(dāng)于各個器件并聯(lián)起來,但僅這樣還不行,如果有兩個器件同時送出數(shù)據(jù),一個為0,一個為1,那么,接收方接收到的究竟是什么呢?這種情況是不允許的,所以要通過控制線進(jìn)行控制,使器件分時工作,任何時候只能有一個器件發(fā)送數(shù)據(jù)(可以有多個器件同時接收)。器件的數(shù)據(jù)線也就被稱為數(shù)據(jù)總線,器件所有的控制線被稱為控制總線。在單片機(jī)內(nèi)部或者外部存儲器及其它器件中有存儲單元,這些存儲單元要被分配地址,才能使用,分配地址當(dāng)然也是以電信號的形式給出的,由于存儲單元比較多,所以,用于地址分配的線也較多,這些線被稱為地址總線。
地址指令
這三者的本質(zhì)都是一樣的――數(shù)字,或者說都是一串‘0’和‘1’組成的序列。換言之,地址、指令也都是數(shù)據(jù)。指令:由單片機(jī)芯片的設(shè)計(jì)者規(guī)定的一種數(shù)字,它與我們常用的指令助記符有著嚴(yán)格的一一對應(yīng)關(guān)系,不可以由單片機(jī)的開發(fā)者更改。地址:是尋找單片機(jī)內(nèi)部、外部的存儲單元、輸入輸出口的依據(jù),內(nèi)部單元的地址值已由芯片設(shè)計(jì)者規(guī)定好,不可更改,外部的單元可以由單片機(jī)開發(fā)者自行決定,但有一些地址單元是一定要有的(詳見程序的執(zhí)行過程)。數(shù)據(jù):這是由微處理機(jī)處理的對象,在各種不同的應(yīng)用電路中各不相同,一般而言,被處理的數(shù)據(jù)可能有這么幾種情況:
1.地址(如MOV DPTR,1000H),即地址1000H送入DPTR。
2.方式字或控制字(如MOV TMOD,#3),3即是控制字。
3.常數(shù)(如MOV TH0,#10H)10H即定時常數(shù)。
4.實(shí)際輸出值(如P1口接彩燈,要燈全亮,則執(zhí)行指令:MOV P1,#0FFH,要燈全暗,則執(zhí)行指令:MOV P1,#00H)這里0FFH和00H都是實(shí)際輸出值。又如用于LED的字形碼,也是實(shí)際輸出的值。
理解了地址、指令的本質(zhì),就不難理解程序運(yùn)行過程中為什么會跑飛,會把數(shù)據(jù)當(dāng)成指令來執(zhí)行了。
功能
初學(xué)時往往對P0口、P2口和P3口的第二功能用法迷惑不解,認(rèn)為第二功能和原功能之間要有一個切換的過程,或者說要有一條指令,事實(shí)上,各端口的第二功能完全是自動的,不需要用指令來轉(zhuǎn)換。如P3.6、P3.7分別是WR、RD信號,當(dāng)微處理機(jī)外接RAM或有外部I/O口時,它們被用作第二功能,不能作為通用I/O口使用,只要一微處理機(jī)一執(zhí)行到MOVX指令,就會有相應(yīng)的信號從P3.6或P3.7送出,不需要事先用指令說明。事實(shí)上‘不能作為通用I/O口使用’也并不是‘不能’而是(使用者)‘不會’將其作為通用I/O口使用。你完全可以在指令中按排一條SETB P3.7的指令,并且當(dāng)單片機(jī)執(zhí)行到這條指令時,也會使P3.7變?yōu)楦唠娖,但使用者不會這么去做,因?yàn)檫@通常會導(dǎo)致系統(tǒng)的崩潰。
執(zhí)行過程
單片機(jī)在通電復(fù)位后8051內(nèi)的程序計(jì)數(shù)器(PC)中的值為‘0000’,所以程序總是從‘0000’單元開始執(zhí)行,也就是說:在系統(tǒng)的ROM中一定要存在‘0000’這個單元,并且在‘0000’單元中存放的一定是一條指令。
堆棧
堆棧是一個區(qū)域,是用來存放數(shù)據(jù)的,這個區(qū)域本身沒有任何特殊之處,就是內(nèi)部RAM的一部份,特殊的是它存放和取用數(shù)據(jù)的方式,即所謂的‘先進(jìn)后出,后進(jìn)先出’,并且堆棧有特殊的數(shù)據(jù)傳輸指令,即‘PUSH’和‘POP’,有一個特殊的專為其服務(wù)的單元,即堆棧指針SP,每當(dāng)執(zhí)一次PUSH指令時,SP就(在原來值的基礎(chǔ)上)自動加1,每當(dāng)執(zhí)行一次POP指令,SP就(在原來值的基礎(chǔ)上)自動減1。由于SP中的值可以用指令加以改變,所以只要在程序開始階段更改了SP的值,就可以把堆棧設(shè)置在規(guī)定的內(nèi)存單元中,如在程序開始時,用一條MOV SP,#5FH指令,就是把堆棧設(shè)置在從內(nèi)存單元60H開始的單元中。一般程序的開頭總有這么一條設(shè)置堆棧指針的指令,因?yàn)殚_機(jī)時,SP的初始值為07H,這樣就使堆棧從08H單元開始往后,而08H到1FH這個區(qū)域正是8031的第二、三、四工作寄存器區(qū),經(jīng)常要被使用,這會造成數(shù)據(jù)的混亂。不同作者編寫程序時,初始化堆棧指令也不完全相同,這是作者的習(xí)慣問題。當(dāng)設(shè)置好堆棧區(qū)后,并不意味著該區(qū)域成為一種專用內(nèi)存,它還是可以象普通內(nèi)存區(qū)域一樣使用,只是一般情況下編程者不會把它當(dāng)成普通內(nèi)存用了。
開發(fā)過程
這里所說的開發(fā)過程并不是一般書中所說的從任務(wù)分析開始,我們假設(shè)已設(shè)計(jì)并制作好硬件,下面就是編寫軟件的工作。在編寫軟件之前,首先要確定一些常數(shù)、地址,事實(shí)上這些常數(shù)、地址在設(shè)計(jì)階段已被直接或間接地確定下來了。如當(dāng)某器件的連線設(shè)計(jì)好后,其地址也就被確定了,當(dāng)器件的功能被確定下來后,其控制字也就被確定了。然后用文本編輯器(如EDIT、CCED等)編寫軟件,編寫好后,用編譯器對源程序文件編譯,查錯,直到?jīng)]有語法錯誤,除了極簡單的程序外,一般應(yīng)用仿真機(jī)對軟件進(jìn)行調(diào)試,直到程序運(yùn)行正確為止。運(yùn)行正確后,就可以寫片(將程序固化在EPROM中)。在源程序被編譯后,生成了擴(kuò)展名為HEX的目標(biāo)文件,一般編程器能夠識別這種格式的文件,只要將此文件調(diào)入即可寫片。在此,為使大家對整個過程有個認(rèn)識,舉一例說明:
單片機(jī)試驗(yàn)板
ORG 0000H
LJMP START
ORG 040H
START:
MOV SP,#5FH ;設(shè)堆棧
LOOP:
NOP
LJMP LOOP ;循環(huán)
END ;結(jié)束
單片指令
傳送操作
助記符代碼 說明
MOV A,Rn E8~EF寄存器A
MOV A,direct E5 direct 直接字節(jié)送A
MOV A,@Ri ER~E7 間接RAM送A
MOV A,#data 74 data立即數(shù)送A
MOV Rn,A F8~FF A送寄存器
MOV Rn,direct A8~AF direct 直接字節(jié)送寄存器
MOV Rn,#data 78~7F data立即數(shù)送寄存器
MOV direct,A F5 direct A送直接字節(jié)
MOV direct,Rn 88~8F direct 寄存器送直接字節(jié)
MOV direct1,direct2 85 direct1 direct2 直接字節(jié)送直接字節(jié)
MOV direct,@Ro 86~87 間接RAM送直接字節(jié)
MOV direct,#data 75 direct data立即數(shù)送直接字節(jié)
MOV @Ri,A F6~F7 A送間接RAM
MOV @Ri,direct 76~77 direct 直接字節(jié)送間接RAM
MOV @Ri,#data 76~77 data 立即數(shù)送間接RAM
MOV DPTR,#data16 90 data 15~8 16位常數(shù)送數(shù)據(jù)指針
data7~0
MOVC A,@A+DPTR 93 由((A)+(DPTR))尋址的程序存貯
器字節(jié)選A
MOVC A,@A+PC 83 由((A)+(PC));尋址的程序存貯器字節(jié)送A
MOVX A,@Ri E2~E3 送外部數(shù)據(jù)(8位地址)送A
MOVX A,@DPTR E0 送外部數(shù)據(jù)(16位地址)送A
MOVX @Ri,A F2~F3 A送外部數(shù)據(jù)(8位地址)
MOVX @DPTR,A F0 A送外部數(shù)據(jù)(16位地址)
PUSH direct C0 direct 直接字節(jié)進(jìn)棧,SP加1
POP direct D0 direct 直接字節(jié)退棧,SP減1
XCH A,Rn C8~CF 交換A和寄存器
XCH A,direct C5 direct 交換A和直接字節(jié)
XCH A,@Ri C6~C7 交換A和間接RAM
XCH A,@Ri D6~D7 交換A和間接RAM的低位
SWAP A C4
算術(shù)操作
(A的二個半字節(jié)交換)
ADD A,Rn 28~2F 寄存器加到A
ADD A,direct 25 direct 直接字節(jié)加到A
ADD A,@Ri 26~27 間接RAM加到A
ADD A,#data 24data立即數(shù)加到A
ADD A,Rn 38~3F 寄存器和進(jìn)位位加到A
ADD A,direct 35direct 直接字節(jié)和進(jìn)位位加到A
ADD A,@Ri 36~37 間接字節(jié)和進(jìn)位位加到A
ADD A,data 34 data立即數(shù)和進(jìn)位位加到A
ADD A,Rn 98~9F A減去寄存器和進(jìn)位位
ADD A,direct 95 direct A減去直接字節(jié)和進(jìn)位位
ADD A,@Ri 36~37 間接RAM和進(jìn)位位加到A
ADD A,data 34 data 立即數(shù)和進(jìn)位位加到A
SUBB A,Rn 98~9F A減去寄存器和進(jìn)位位
SUBB A,direct 95 direct A減去直接字節(jié)和進(jìn)位位
SUBB A,@Ri 96~97 A減去間接RAM和進(jìn)位位
SUBB A,#data 94 data A減去立即數(shù)和進(jìn)位位
INC A 04 A加1
INC Rn 08~0F 寄存器加1
INC direct 05 direct 直接字節(jié)加1
INC @Ri 06~07 間接RAM加1
DEC A 14 A減1
DEC Rn 18~1F 寄存器減1
DEC direct 15 direct 直接字節(jié)減1
DEC @Ri 16~17 間接RAM減1
INC DPTR A3 數(shù)據(jù)指針加1
MUL AB A4 A乘以B
DIV AB 84 A除以B
DA A D4 A的十進(jìn)制加法調(diào)整
邏輯操作
ANL A,Rn 58~5F 寄存器“與”到A
ANL A,direct 55 direct 直接字節(jié)“與”到A
ANL A,@Ri 56~57 間接RAm“與”到A
ANL A,#data 54 data立即數(shù)“與”到A
ANL direct A 52 direct A“與”到直接字節(jié)
ANL direct,#data 53 direct data立即數(shù)“與”到直接字節(jié)
ORL A,Rn 48~4F 寄存器“或”到A
ORL A,direct 45 direct 直接字節(jié)“或”到A
ORL A,@Ri 46~47 間接RAM“或”到A
ORL A,#data 44 data立即數(shù)“或”到A
ORL direct,A 42 direct A“或”到直接字節(jié)
ORL direct,#data 43 direct data立即數(shù)“或”到直接字節(jié)
XRL A,Rn 68~6F 寄存器“異或”到A
XRL A,direct 65 direct 直接字節(jié)“異或”到A
XRL A,@Ri 66~67 間接RAM“異或”到A
XRL A,#data 64 data立即數(shù)“異或”到A
XRL direct A 62 direct A“異或”到直接字節(jié)
XRL direct,#data 63 direct data立即數(shù)“異或”到直接字節(jié)
CLR A E4 清零
CPL A F4 A取反
RL A 23 A左環(huán)移
RLC A 33 A通過進(jìn)位左環(huán)移
RR A 03 A右環(huán)移
RRC A 13 A通過進(jìn)位右環(huán)移
程序轉(zhuǎn)移
ACALL addr 11 *1 addr(a7~a0) 絕對子程序調(diào)用
LCALL addr 16 12 addr(15~8) 長子程序調(diào)用
addr(7~0)
RET 22子程序調(diào)用返回
RETI addr 11 32 中斷調(diào)用返回
AJMP addr 11 △1 addr(a7~a6) 絕對轉(zhuǎn)移
LJMP addr 16 02addr(15~8) 長轉(zhuǎn)移
addr(7~0)
SJMP rel 80 rel 短轉(zhuǎn)移,相對轉(zhuǎn)移
JMP @A+DPTR 73 相對于DPTR間接轉(zhuǎn)移
JZ rel 60 rel A為零轉(zhuǎn)移
JNZ rel 70 rel A為零轉(zhuǎn)移
CJNE A,direct,rel B5 direct rel 直接字節(jié)與A比較,不等則轉(zhuǎn)移
CJNE A,#data,rel B4 data rel立即數(shù)與A比較,不等則轉(zhuǎn)移
CJNE A,Rn,#data,rel B8~BF data rel立即數(shù)與寄存器比較,不等則轉(zhuǎn)移
CJNE @Ri,#data,rel B6~B7 data rel立即數(shù)與間接RAM比較,不等則轉(zhuǎn)移
DJNZ Rn,rel D8~DF rel 寄存器減1,不為零則轉(zhuǎn)移
DJNZ direct,rel B5 direct rel 直接字節(jié)減1,不為零則轉(zhuǎn)移
NOP 00 空操作
布爾變量操作
CLR C C3 清零進(jìn)位
CLR bit C2 清零直接位
SETB C D3 置位進(jìn)位
SETB bit D2 置位直接位
CPL C B3 進(jìn)位取反
CPL bit B2 直接位取反
ANL C,bit 82 dit 直接數(shù)“與”到進(jìn)位
ANL C,/bit B0 直接位的反“與”到進(jìn)位
ORL C,bit 72 bit 直接位“或”到進(jìn)位
ORL C,/bit A0 bit 直接位的反“或”到進(jìn)位
MOV C,bit A2 bit 直接位送進(jìn)位
MOV bit,C 92 bit 進(jìn)位送直接位
JC rel 40 rel 進(jìn)位位為1轉(zhuǎn)移
JNC rel 50 rel 進(jìn)位位為0轉(zhuǎn)移
JB bit,rel 20 bit rel 直接位為1相對轉(zhuǎn)移
JNB bit,rel 30 bit rel 直接位為0相對轉(zhuǎn)移
JBC bit,rel 10 bit rel 直接位為1相對轉(zhuǎn)移,然后清零該位
單片機(jī)芯片
STC單片機(jī)
STC公司的單片機(jī)主要是基于8051內(nèi)核,是新一代增強(qiáng)型單片機(jī),指令代碼完全兼容傳統(tǒng)8051,速度快8~12倍,帶ADC,4路PWM,雙串口,有全球唯一ID號,加密性好,抗干擾強(qiáng).
PIC單片機(jī):
是MICROCHIP公司的產(chǎn)品,其突出的特點(diǎn)是體積小,功耗低,精簡指令集,抗干擾性好,可靠性高,有較強(qiáng)的模擬接口,代碼保密性好,大部分芯片有其兼容的FLASH程序存儲器的芯片.
EMC單片機(jī):
是中國臺灣義隆公司的產(chǎn)品,有很大一部分與PIC 8位單片機(jī)兼容,且相兼容產(chǎn)品的資源相對比PIC的多,價(jià)格便宜,有很多系列可選,但抗干擾較差.
ATMEL單片機(jī)(51單片機(jī)):
ATMEl公司的8位單片機(jī)有AT89、AT90兩個系列,AT89系列是8位Flash單片機(jī),與8051系列單片機(jī)相兼容,靜態(tài)時鐘模式;AT90系列單片機(jī)是增強(qiáng)RISC結(jié)構(gòu)、全靜態(tài)工作方式、內(nèi)載在線可編程Flash的單片機(jī),也叫AVR單片機(jī).
PHLIPIS 51LPC系列單片機(jī)(51單片機(jī)):
PHILIPS公司的單片機(jī)是基于80C51內(nèi)核的單片機(jī),嵌入了掉電檢測、模擬以及片內(nèi)RC振蕩器等功能,這使51LPC在高集成度、低成本、低功耗的應(yīng)用設(shè)計(jì)中可以滿足多方面的性能要求.
HOLTEK單片機(jī):
中國臺灣盛揚(yáng)半導(dǎo)體的單片機(jī),價(jià)格便宜,種類較多,但抗干擾較差,適用于消費(fèi)類產(chǎn)品.
TI公司單片機(jī)(51單片機(jī)):
德州儀器提供了TMS370和MSP430兩大系列通用單片機(jī).TMS370系列單片機(jī)是8位CMOS單片機(jī),具有多種存儲模式、多種外圍接口模式,適用于復(fù)雜的實(shí)時控制場合;MSP430系列單片機(jī)是一種超低功耗、功能集成度較高的16位低功耗單片機(jī),特別適用于要求功耗低的場合
松翰單片機(jī)(SONIX):
是中國臺灣松翰公司的單片,大多為8位機(jī),有一部分與PIC 8位單片機(jī)兼容,價(jià)格便宜,系統(tǒng)時鐘分頻可選項(xiàng)較多,有PMW ADC 內(nèi)振 內(nèi)部雜訊濾波。缺點(diǎn)RAM空間過小,抗干擾較好。
飛思卡爾單片機(jī)
飛思卡爾 8 位單片機(jī)系列主要包括 RS08 類、HCS08 類、HC08 類、HC08 汽車類、 HCS08 汽車類。
英飛凌單片機(jī)
英飛凌單片機(jī)的XC82x和XC83x單片機(jī)系列經(jīng)過專門設(shè)計(jì),可進(jìn)一步在各種工業(yè)領(lǐng)域內(nèi)降低系統(tǒng)成本,提高能效。
深聯(lián)華單片機(jī)(51單片機(jī))
深聯(lián)華公司的單片機(jī)主要是基于8051內(nèi)核,是新一代安全防逆向型單片機(jī),指令代碼完全兼容傳統(tǒng)8051,速度快8~12倍,帶有62 K FLASH ROM,內(nèi)置256字節(jié)RAM和集成外置1024字節(jié)RAM,白噪聲密碼-沒有規(guī)律可循,每顆芯片都有自己的密碼,同樣的密碼不可重用。
三星單片機(jī)
三星單片機(jī)有KS51和KS57系列4位單片機(jī),KS86和KS88系列8位單片機(jī),KS17系列16位單片機(jī)和KS32系列32位單片機(jī),三星還為ARM公司生產(chǎn)ARM單片機(jī),常見的S344b0等.三星單片機(jī)為OTP型ISP在片編程功能.
SST 單片機(jī)
美國SST公司推出的SST89系列單片機(jī)為標(biāo)準(zhǔn)的51系列單片機(jī),包括SST89E/V52RD2, SST89E/V54RD2,SST89E/V58RD2,SST89E/V554RC,SST89E/V564RD等.它與8052系列單片機(jī)兼容.提供系統(tǒng)在線編程(ISP功能).內(nèi)部flash擦寫次數(shù)1萬次以上,程序保存時間可達(dá)100年.
還有很多優(yōu)秀的單片機(jī)生產(chǎn)企業(yè)這里沒有收集,每個企業(yè)都有自己的特點(diǎn),大家根據(jù)需要選擇單片機(jī),在完全實(shí)現(xiàn)功能的前提下追求低價(jià)位,當(dāng)然并不是這樣最好,實(shí)際中選擇單片機(jī)跟開發(fā)者的應(yīng)用習(xí)慣和開發(fā)經(jīng)驗(yàn)是密不可分的.
攻擊技術(shù)
攻擊單片機(jī)主要有四種技術(shù),分別是:
(1)軟件攻擊
該技術(shù)通常使用處理器通信接口并利用協(xié)議、加密算法或這些算法中的安全漏洞來進(jìn)行攻擊。軟件攻擊取得成功的一個典型事例是對早期ATMEL AT89C 系列單片機(jī)的攻擊。攻擊者利用了該系列單片機(jī)擦除操作時序設(shè)計(jì)上的漏洞,使用自編程序在擦除加密鎖定位后,停止下一步擦除片內(nèi)程序存儲器數(shù)據(jù)的操作,從而使加過密的單片機(jī)變成沒加密的單片機(jī),然后利用編程器讀出片內(nèi)程序。
(2) 電子探測攻擊
該技術(shù)通常以高時間分辨率來監(jiān)控處理器在正常操作時所有電源和接口連接的模擬特性,并通過監(jiān)控它的電磁輻射特性來實(shí)施攻擊。因?yàn)閱纹瑱C(jī)是一個活動的電子器件,當(dāng)它執(zhí)行不同的指令時,對應(yīng)的電源功率消耗也相應(yīng)變化。這樣通過使用特殊的電子測量儀器和數(shù)學(xué)統(tǒng)計(jì)方法分析和檢測這些變化,即可獲取單片機(jī)中的特定關(guān)鍵信息。
(3)過錯產(chǎn)生技術(shù)
該技術(shù)使用異常工作條件來使處理器出錯,然后提供額外的訪問來進(jìn)行攻擊。使用最廣泛的過錯產(chǎn)生攻擊手段包括電壓沖擊和時鐘沖擊。低電壓和高電壓攻擊可用來禁止保護(hù)電路工作或強(qiáng)制處理器執(zhí)行錯誤操作。時鐘瞬態(tài)跳變也許會復(fù)位保護(hù)電路而不會破壞受保護(hù)信息。電源和時鐘瞬態(tài)跳變可以在某些處理器中影響單條指令的解碼和執(zhí)行。
(4)探針技術(shù)
該技術(shù)是直接暴露芯片內(nèi)部連線,然后觀察、操控、干擾單片機(jī)以達(dá)到攻擊目的。為了方便起見,人們將以上四種攻擊技術(shù)分成兩類,一類是侵入型攻擊(物理攻擊),這類攻擊需要破壞封裝,然后借助半導(dǎo)體測試設(shè)備、顯微鏡和微定位器,在專門的實(shí)驗(yàn)室花上幾小時甚至幾周時間才能完成。所有的微探針技術(shù)都屬于侵入型攻擊。另外三種方法屬于非侵入型攻擊,被攻擊的單片機(jī)不會被物理損壞。在某些場合非侵入型攻擊是特別危險(xiǎn)的,但是因?yàn)榉乔秩胄凸羲柙O(shè)備通常可以自制和升級,因此非常廉價(jià)。
大部分非侵入型攻擊需要攻擊者具備良好的處理器知識和軟件知識。與之相反,侵入型的探針攻擊則不需要太多的初始知識,而且通?捎靡徽紫嗨频募夹g(shù)對付寬范圍的產(chǎn)品。
加密方法
科研成果保護(hù)是每一個科研人員最關(guān)心的事情,加密方法有軟件加密,硬件加密,軟硬件綜合加密,時間加密,錯誤引導(dǎo)加密,專利保護(hù)等措施有矛就有盾,有盾就有矛,有矛有盾,才促進(jìn)矛盾質(zhì)量水平的提高。加密只講盾,現(xiàn)先講一個軟件加密:利用MCS-51 中A5 指令加密,其實(shí)世界上所有資料,包括英文資料都沒有講這條指令,其實(shí)這是很好的加密指令。A5 功能是二字節(jié)空操作指令。加密方法:在A5 后加一個二字節(jié)或三字節(jié)操作碼,因?yàn)樗蟹磪R編軟件都不會反匯編A5 指令,造成正常程序反匯編亂套,執(zhí)行程序無問題仿制者就不能改變你的源程序。
硬件加密:8031/8052單片機(jī)就是8031/8052掩模產(chǎn)品中的不合格產(chǎn)品,內(nèi)部有ROM,可以把8031/8052 當(dāng)8751/8752 來用,再擴(kuò)展外部程序器,然后調(diào)用8031 內(nèi)部子程序。當(dāng)然你所選的同批8031芯片的首地址及所需用的中斷入口均應(yīng)轉(zhuǎn)到外部程序區(qū)。
硬件加密
用高電壓或激光燒斷某條引腳,使其讀不到內(nèi)部程序,用高電壓會造成一些器件損壞重要RAM 數(shù)據(jù)采用電池(大電容,街機(jī)采用的辦法)保護(hù),拔出芯片數(shù)據(jù)失去機(jī)器不能起動,或能初始化,但不能運(yùn)行。
用真假方法加密
擦除芯片標(biāo)識
把8X52單片機(jī),標(biāo)成8X51 單片機(jī),并用到后128B的RAM 等方法,把AT90S8252 當(dāng)AT89C52,初始化后程序段中并用到EEPROM 內(nèi)容,你再去聯(lián)想吧!
用激光(或絲印)打上其它標(biāo)識如有的單片機(jī)引腳兼容,有的又不是同一種單片機(jī),可張冠李戴,只能意會了,這要求你知識面廣一點(diǎn) 。
用最新出廠編號的單片機(jī),如2000 年后的AT89C 就難解密,或新的單片機(jī)品種,如AVR 單片機(jī)。
DIP封裝改成PLCC,TQFP,SOIC,BGA等封裝,如果量大可以做定制ASIC,或軟封裝,用不需外晶振的單片機(jī)工作(如AVR 單片機(jī)中的AT90S1200),使用更復(fù)雜的單片機(jī),F(xiàn)PGA+AVR+SRAM=AT40K系列。
硬件加密與軟件加密只是為敘說方便而分開來講,其實(shí)它們是分不開的,互相支撐,互相依存的軟件加密:其目的是不讓人讀懂你的程序,不能修改程序,你可以………….....
利用單片機(jī)未公開,未被利用的標(biāo)志位或單元,作為軟件標(biāo)志位,如8031/8051有一個用戶標(biāo)志位,PSW.1 位,是可以利用的程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址處加二字節(jié)或三字節(jié)操作碼,在無程序的空單元也加上程序機(jī)器碼,最好要加巧妙一點(diǎn)用大容量芯片,用市場上仿真器不能仿真的芯片,如內(nèi)部程序?yàn)?4KB 或大于64KB 的器件,如:AVR 單片機(jī)中ATmega103 的Flash 程序存儲器為128KBAT89S8252/AT89S53中有EEPROM,關(guān)鍵數(shù)據(jù)存放在EEPROM 中,或程序初始化時把密碼寫到EEPROM 中,程序執(zhí)行時再查密碼正確與否,盡量不讓人家讀懂程序。關(guān)于單片機(jī)加密,講到這里,就算拋磚引玉。
單片機(jī)故障的排除
1單片機(jī)正常工作的三個條件
單片機(jī)工作的三個條件分別是電源、時鐘晶振、復(fù)位。當(dāng)單片機(jī)不能正常工作時,我們首先就要檢查這三個條件,用電壓表或者萬用表檢測他的電源和接地腳,檢測兩個引腳之間的電壓是不是5V左右;對于時鐘晶體振蕩有沒有正常工作,我們最好用示波器進(jìn)行檢測,看能否檢測到相應(yīng)頻率的正弦波脈沖;復(fù)位檢測比較簡單,單片機(jī)的復(fù)位電平一般是高電平復(fù)位,單片機(jī)在接通電源的時候一般復(fù)位引腳上會出現(xiàn)5V左右的高電平,另外在按下復(fù)位按鍵時,復(fù)位引腳上也會出現(xiàn)高電平,用一般的電壓表或者萬用表都可以進(jìn)行檢測。
2單片機(jī)內(nèi)部是否正常工作的檢測
單片機(jī)內(nèi)部有沒有正常工作,我們主要是通過寫入程序的方式來進(jìn)行檢測和排查。這個檢測需要有“燒入”代碼的硬件和軟件才行,檢測的原理就是通過“燒入”代碼的硬件和軟件,將一段帶有檢測功能的正常代碼“燒入”到單片機(jī)。檢查兩個方面:第一就是能不能將目標(biāo)代碼正常寫入單片機(jī),不能正常寫入單片機(jī)時,說明單片機(jī)已經(jīng)損壞,需要更換同型號的單片機(jī);第二就是目標(biāo)代碼可以正常寫入單片機(jī),寫入后的效果是不是就是程序設(shè)定的功能,如果是說明單片機(jī)正常。
單片機(jī)在更換時,我們最好采用同型號的單片機(jī),然后寫入公司給予的目標(biāo)代碼,單片機(jī)的價(jià)格目前一般比較便宜,零售價(jià)格大概也就5元左右。
最新資訊
- 2025年注冊電氣工程師基礎(chǔ)考試內(nèi)容及考試方式2024-12-27
- 2025年怎么考取電氣工程師2024-12-27
- 2025年巖土工程師考幾門2024-12-25
- 2025年電氣工程師證怎么考取需要什么條件2024-12-19
- 2025年注冊電氣工程師基礎(chǔ)考試內(nèi)容2024-12-19
- 合格的電氣工程師需要具備什么 就業(yè)方向有哪些2024-12-17
- 注冊電氣工程師難考嗎 考試難度分析2024-12-15
- 2025年初級電氣工程師證怎么考2024-12-14
- 電氣工程師是干什么的 就業(yè)前景怎么樣2024-12-12
- 2025年電氣工程師證怎么考取2024-12-12