<ruby id="66w77"><video id="66w77"></video></ruby>
<ruby id="66w77"><option id="66w77"><thead id="66w77"></thead></option></ruby>
  • <ruby id="66w77"><table id="66w77"></table></ruby>

  • <ruby id="66w77"><table id="66w77"></table></ruby>
    <strong id="66w77"></strong>
    單片機
    來(lái)源:作者:日期:2015-02-09 16:14:49點(diǎn)擊:24270次
    單片機(Microcontrollers)是一種集成電路芯片,是采用超大規模集成電路技術(shù)把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時(shí)器/計數器等功能(可能還包括顯示驅動(dòng)電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個(gè)小而完善的微型計算機系統,在工業(yè)控制領(lǐng)域廣泛應用。從上世紀80年代,由當時(shí)的4位、8位單片機,發(fā)展到現在的300M的高速單片機。
    中文名
    單片機
    外文名
    Microcontrollers
    類(lèi)    別
    電路芯片
    種    類(lèi)
    3種
     
     

    1簡(jiǎn)介

    單片機又稱(chēng)單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計算機系統集成到一個(gè)芯片上。相當于一個(gè)微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習、應用和開(kāi)發(fā)提供了便利條件。同時(shí),學(xué)習使用單片機是了解計算機原理與結構的最佳選擇。
    單片機的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設備、導航系統、家用電器等。各種產(chǎn)品一旦用上了單片機,就能起到使產(chǎn)品升級換代的功效,常在產(chǎn)品名稱(chēng)前冠以形容詞——“智能型”,如智能型洗衣機等 。
     

    2應用分類(lèi)

    單片機(Microcontrollers)作為計算機發(fā)展的一個(gè)重要分支領(lǐng)域,根據發(fā)展情況,從不同角度,單片機大致可以分為通用型/專(zhuān)用型、總線(xiàn)型/非總線(xiàn)型及工控型/家電型。

    通用型

    這是按單片機(Microcontrollers)適用范圍來(lái)區分的。例如,80C51式通用型單片機,它不是為某種專(zhuān)門(mén)用途設計的;專(zhuān)用型單片機是針對一類(lèi)產(chǎn)品甚至某一個(gè)產(chǎn)品設計生產(chǎn)的,例如為了滿(mǎn)足電子體溫計的要求,在片內集成ADC接口等功能的溫度測量控制電路。

    總線(xiàn)型

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

    控制型

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

    3發(fā)展歷史

    單片機(Microcontrollers)誕生于1971年,經(jīng)歷了SCM、MCU、SoC三大階段,早期的SCM單片機都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上發(fā)展出了MCS51系列MCU系統?;谶@一系統的單片機系統直到現在還在廣泛使用。隨著(zhù)工業(yè)控制領(lǐng)域要求的提高,開(kāi)始出現了16位單片機,但因為性?xún)r(jià)比不理想并未得到很廣泛的應用。90年代后隨著(zhù)消費電子產(chǎn)品大發(fā)展,單片機技術(shù)得到了巨大提高。隨著(zhù)INTEL i960系列特別是后來(lái)的ARM系列的廣泛應用,32位單片機迅速取代16位單片機的高端地位,并且進(jìn)入主流市場(chǎng)。
    而傳統的8位單片機的性能也得到了飛速提高,處理能力比起80年代提高了數百倍。高端的32位Soc單片機主頻已經(jīng)超過(guò)300MHz,性能直追90年代中期的專(zhuān)用處理器,而普通的型號出廠(chǎng)價(jià)格跌落至1美元,最高端的型號也只有10美元。
    當代單片機系統已經(jīng)不再只在裸機環(huán)境下開(kāi)發(fā)和使用,大量專(zhuān)用的嵌入式操作系統被廣泛應用在全系列的單片機上。而在作為掌上電腦和手機核心處理的高端單片機甚至可以直接使用專(zhuān)用的Windows和Linux操作系統。

    主要階段

    早期階段
    SCM即單片微型計算機(Microcontrollers)階段,主要是尋求最佳的單片形態(tài)嵌入式系統的最佳體系結構。“創(chuàng )新模式”獲得成功,奠定了SCM與通用計算機完全不同的發(fā)展道路。在開(kāi)創(chuàng )嵌入式系統獨立發(fā)展道路上,Intel公司功不可沒(méi)。
    中期發(fā)展
    MCU即微控制器(Micro Controller Unit)階段,主要的技術(shù)發(fā)展方向是:不斷擴展滿(mǎn)足嵌入式應用時(shí),對象系統要求的各種外圍電路與接口電路,突顯其對象的智能化控制能力。它所涉及的領(lǐng)域都與對象系統相關(guān),因此,發(fā)展MCU的重任不可避免地落在電氣、電子技術(shù)廠(chǎng)家。從這一角度來(lái)看,Intel逐漸淡出MCU的發(fā)展也有其客觀(guān)因素。在發(fā)展MCU方面,最著(zhù)名的廠(chǎng)家當數Philips公司。
    Philips公司以其在嵌入式應用方面的巨大優(yōu)勢,將MCS-51從單片微型計算機迅速發(fā)展到微控制器。因此,當我們回顧嵌入式系統發(fā)展道路時(shí),不要忘記Intel和Philips的歷史功績(jì)。
    當前趨勢
    SoC嵌入式系統(System on Chip)式的獨立發(fā)展之路,向MCU階段發(fā)展的重要因素,就是尋求應用系統在芯片上的最大化解決,因此,專(zhuān)用單片機的發(fā)展自然形成了SoC化趨勢。隨著(zhù)微電子技術(shù)、IC設計、EDA工具的發(fā)展,基于SoC的單片機應用系統設計會(huì )有較大的發(fā)展。因此,對單片機的理解可以從單片微型計算機、單片微控制器延伸到單片應用系統。

    早期發(fā)展

    1971年intel公司研制出世界上第一個(gè)4位的微處理器;Intel公司的霍夫研制成功世界上第一塊4位微處理器芯片Intel 4004,標志著(zhù)第一代微處理器問(wèn)世,微處理器和微機時(shí)代從此開(kāi)始。因發(fā)明微處理器,霍夫被英國《經(jīng)濟學(xué)家》雜志列為“二戰以來(lái)最有影響力的7位科學(xué)家”之一。
    1971年11月,Intel推出MCS-4微型計算機系統(包括4001 ROM芯片、4002 RAM芯片、4003移位寄存器芯片和4004微處理器)其中4004(下圖)包含2300個(gè)晶體管,尺寸規格為3mm×4mm,計算性能遠遠超過(guò)當年的ENIAC,最初售價(jià)為200美元。
    1972年4月,霍夫等人開(kāi)發(fā)出第一個(gè)8位微處理器Intel 8008。由于8008采用的是P溝道MOS微處理器,因此仍屬第一代微處理器。
    1973年intel公司研制出8位的微處理器8080;1973年8月,霍夫等人研制出8位微處理器Intel 8080,以N溝道MOS電路取代了P溝道,第二代微處理器就此誕生。
    主頻2MHz的8080芯片運算速度比8008快10倍,可存取64KB存儲器,使用了基于6微米技術(shù)的6000個(gè)晶體管,處理速度為0.64MIPS(Million Instructions Per Second )。
    1975年4月,MITS發(fā)布第一個(gè)通用型Altair 8800,售價(jià)375美元,帶有1KB存儲器。這是世界上第一臺微型計算機。
    1976年intel公司研制出MCS-48系列8位的單片機,這也是單片機的問(wèn)世。
    Zilog公司于1976年開(kāi)發(fā)的Z80微處理器,廣泛用于微型計算機和工業(yè)自動(dòng)控制設備。當時(shí),Zilog、Motorola和Intel在微處理器領(lǐng)域三足鼎立。
    20世紀80年代初,Intel公司在MCS-48系列單片機的基礎上,推出了MCS-51系列8位高檔單片機。MCS-51系列單片機無(wú)論是片內RAM容量,I/O口功能,系統擴展方面都有了很大的提高。
     

    4硬件特性

    1、主流單片機包括CPU、4KB容量的RAM、128 KB容量的ROM、 2個(gè)16位定時(shí)/計數器、4個(gè)8位并行口、全雙工串口行口、ADC/DAC、SPI、I2C、ISP、IAP。
    2、系統結構簡(jiǎn)單,使用方便,實(shí)現模塊化;
    3、單片機可靠性高,可工作到10^6 ~10^7小時(shí)無(wú)故障;
    4、處理功能強,速度快。
    5、低電壓,低功耗,便于生產(chǎn)便攜式產(chǎn)品
    6、控制功能強
    7、環(huán)境適應能力強。
     

    5基本結構

    運算器

    運算器由運算部件——算術(shù)邏輯單元(Arithmetic & Logical Unit,簡(jiǎn)稱(chēng)ALU)、累加器和寄存器等幾部分組成。ALU的作用是把傳來(lái)的數據進(jìn)行算術(shù)或邏輯運算,輸入來(lái)源為兩個(gè)8位數據,分別來(lái)自累加器和數據寄存器。ALU能完成對這兩個(gè)數據進(jìn)行加、減、與、或、比較大小等操作,最后將結果存入累加器。例如,兩個(gè)數6和7相加,在相加之前,操作數6放在累加器中,7放在數據寄存器中,當執行加法指令時(shí),ALU即把兩個(gè)數相加并把結果13存入累加器,取代累加器原來(lái)的內容6。
    運算器有兩個(gè)功能:
    (1) 執行各種算術(shù)運算。
    (2) 執行各種邏輯運算,并進(jìn)行邏輯測試,如零值測試或兩個(gè)值的比較。
    運算器所執行全部操作都是由控制器發(fā)出的控制信號來(lái)指揮的,并且,一個(gè)算術(shù)操作產(chǎn)生一個(gè)運算結果,一個(gè)邏輯操作產(chǎn)生一個(gè)判決。

    控制器

    控制器由程序計數器、指令寄存器、指令譯碼器、時(shí)序發(fā)生器和操作控制器等組成,是發(fā)布命令的“決策機構”,即協(xié)調和指揮整個(gè)微機系統的操作。其主要功能有:
    (1) 從內存中取出一條指令,并指出下一條指令在內存中的位置。
    (2) 對指令進(jìn)行譯碼和測試,并產(chǎn)生相應的操作控制信號,以便于執行規定的動(dòng)作。
    (3) 指揮并控制CPU、內存和輸入輸出設備之間數據流動(dòng)的方向。
    微處理器內通過(guò)內部總線(xiàn)把ALU、計數器、寄存器和控制部分互聯(lián),并通過(guò)外部總線(xiàn)與外部的存儲器、輸入輸出接口電路聯(lián)接。外部總線(xiàn)又稱(chēng)為系統總線(xiàn),分為數據總線(xiàn)DB、地址總線(xiàn)AB和控制總線(xiàn)CB。通過(guò)輸入輸出接口電路,實(shí)現與各種外圍設備連接。

    主要寄存器

    (1)累加器A
    圖1-2 單片機組成框圖
    累加器A是微處理器中使用最頻繁的寄存器。在算術(shù)和邏輯運算時(shí)它有雙功能:運算前,用于保存一個(gè)操作數;運算后,用于保存所得的和、差或邏輯運算結果。
    (2)數據寄存器DR
    數據寄存器通過(guò)數據總線(xiàn)向存儲器和輸入/輸出設備送(寫(xiě))或?。ㄗx)數據的暫存單元。它可以保存一條正在譯碼的指令,也可以保存正在送往存儲器中存儲的一個(gè)數據字節等等。
    (3)指令寄存器IR和指令譯碼器ID
    指令包括操作碼和操作數。
    指令寄存器是用來(lái)保存當前正在執行的一條指令。當執行一條指令時(shí),先把它從內存中取到數據寄存器中,然后再傳送到指令寄存器。當系統執行給定的指令時(shí),必須對操作碼進(jìn)行譯碼,以確定所要求的操作,指令譯碼器就是負責這項工作的。其中,指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。
    (4)程序計數器PC
    PC用于確定下一條指令的地址,以保證程序能夠連續地執行下去,因此通常又被稱(chēng)為指令地址計數器。在程序開(kāi)始執行前必須將程序的第一條指令的內存單元地址(即程序的首地址)送入PC,使它總是指向下一條要執行指令的地址。
    (5)地址寄存器AR
    地址寄存器用于保存當前CPU所要訪(fǎng)問(wèn)的內存單元或I/O設備的地址。由于內存與CPU之間存在著(zhù)速度上的差異,所以必須使用地址寄存器來(lái)保持地址信息,直到內存讀/寫(xiě)操作完成為止。
    顯然,當CPU向存儲器存數據、CPU從內存取數據和CPU從內存讀出指令時(shí),都要用到地址寄存器和數據寄存器。同樣,如果把外圍設備的地址作為內存地址單元來(lái)看的話(huà),那么當CPU和外圍設備交換信息時(shí),也需要用到地址寄存器和數據寄存器。[2]
     

    6應用范圍

    單片機滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒(méi)有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡(luò )通訊與數據傳輸,工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車(chē)的安全保障系統,錄像機、攝像機、全自動(dòng)洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開(kāi)單片機。更不用說(shuō)自動(dòng)控制領(lǐng)域的機器人、智能儀表、醫療器械以及各種智能機械了。因此,單片機的學(xué)習、開(kāi)發(fā)與應用將造就一批計算機應用與智能化控制的科學(xué)家、工程師。
    單片機廣泛應用于儀器儀表、家用電器、醫用設備、航空航天、專(zhuān)用設備的智能化管理及過(guò)程控制等領(lǐng)域,大致可分如下幾個(gè)范疇:

    智能儀器

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

    工業(yè)控制

    單片機具有體積小、控制功能強、功耗低、環(huán)境適應能力強、擴展靈活和使用方便等優(yōu)點(diǎn),用單片機可以構成形式多樣的控制系統、數據采集系統、通信系統、信號檢測系統、無(wú)線(xiàn)感知系統、測控系統、機器人等應用控制系統。例如工廠(chǎng)流水線(xiàn)的智能化管理,電梯智能化控制、各種報警系統,與計算機聯(lián)網(wǎng)構成二級控制系統等。

    家用電器

    家用電器廣泛采用了單片機控制,從電飯煲、洗衣機、電冰箱、空調機、彩電、其他音響視頻器材、再到電子秤量設備和白色家電等。

    網(wǎng)絡(luò )和通信

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

    設備領(lǐng)域

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

    模塊化系統

    某些專(zhuān)用單片機設計用于實(shí)現特定功能,從而在各種電路中進(jìn)行模塊化應用,而不要求使用人員了解其內部結構。如音樂(lè )集成單片機,看似簡(jiǎn)單的功能,微縮在純電子芯片中(有別于磁帶機的原理),就需要復雜的類(lèi)似于計算機的原理。如:音樂(lè )信號以數字的形式存于存儲器中(類(lèi)似于ROM),由微控制器讀出,轉化為模擬音樂(lè )電信號(類(lèi)似于聲卡)。
    在大型電路中,這種模塊化應用極大地縮小了體積,簡(jiǎn)化了電路,降低了損壞、錯誤率,也方便于更換。

    汽車(chē)電子

    單片機在汽車(chē)電子中的應用非常廣泛,例如汽車(chē)中的發(fā)動(dòng)機控制器,基于CAN總線(xiàn)的汽車(chē)發(fā)動(dòng)機智能電子控制器、GPS導航系統、abs防抱死系統、制動(dòng)系統、胎壓檢測等。
    此外,單片機在工商、金融、科研、教育、電力、通信、物流和國防航空航天等領(lǐng)域都有著(zhù)十分廣泛的用途。
     

    7學(xué)習方法

    基礎理論

    基礎理論知識包括模擬電路、數字電路和C語(yǔ)言知識。模擬電路和數字電路屬于抽象學(xué)科,要把它學(xué)好還得費點(diǎn)精神。在你學(xué)習單片機之前,覺(jué)得模擬電路和數字電路基礎不好的話(huà),不要急著(zhù)學(xué)習單片機,應該先回顧所學(xué)過(guò)的模擬電路和數字電路知識,為學(xué)習單片機加強基礎。否則,你的單片機學(xué)習之路不僅會(huì )很艱難和漫長(cháng),還可能半途而廢。筆者始終認為,扎實(shí)的電子技術(shù)基礎是學(xué)好單片機的關(guān)鍵,直接影響單片機學(xué)習入門(mén)的快慢。有些同學(xué)覺(jué)得單片機很難,越學(xué)越復雜,最后學(xué)不下去了。有的同學(xué)看書(shū)時(shí)似乎明白了,可是動(dòng)起手來(lái)卻一塌糊涂,究其原因就是電子技術(shù)基礎沒(méi)有打好,首先被表面知識給困惑了。
    單片機屬于數字電路,其概念、術(shù)語(yǔ)、硬件結構和原理都源自數字電路,如果數字電路基礎扎實(shí),對復雜的單片機硬件結構和原理就能容易理解,就能輕松地邁開(kāi)學(xué)習的第一步,自信心也會(huì )樹(shù)立起來(lái)。相反,基礎不好,這個(gè)看不懂那個(gè)也弄不明白,越學(xué)問(wèn)題越多,越學(xué)越?jīng)]有信心。如果你覺(jué)得單片機很難,那就應該先放下單片機教材,去重溫數字電路,搞清楚觸發(fā)器、寄存器、門(mén)電路、COMS電路、時(shí)序邏輯和時(shí)序圖、進(jìn)制轉換等理論知識。理解了這些知識之后再去看看單片機的結構和原理,我想你會(huì )大徹大悟,信心倍增。
    模擬電路是電子技術(shù)最基礎的學(xué)科,它讓你知道什么是電阻、電容、電感、二極管、三極管、場(chǎng)效應管、放大器等等以及它們的工作原理和在電路中的作用,這是學(xué)習電子技術(shù)必須掌握的基礎知識。一般是先學(xué)習模擬電路再去學(xué)習數字電路。扎實(shí)的模擬電路基礎不僅讓你容易看懂別人設計的電路,而且讓你的設計的電路更可靠,提高產(chǎn)品質(zhì)量。
    單片機的學(xué)習離不開(kāi)編程,在所有的程序設計中C語(yǔ)言運用的最為廣泛。C語(yǔ)言知識并不難,沒(méi)有任何編程基礎的人都可以學(xué),在我看來(lái),初中生、高中生、中專(zhuān)生、大學(xué)生都能學(xué)會(huì )。當然,數學(xué)基礎好、邏輯思維好的人學(xué)起來(lái)相對輕松一些。C語(yǔ)言需要掌握的知識就那么3個(gè)條件判斷語(yǔ)句、3個(gè)循環(huán)語(yǔ)句、3個(gè)跳轉語(yǔ)句和1個(gè)開(kāi)關(guān)語(yǔ)句。別小看這10個(gè)語(yǔ)句,用他們組合形成的邏輯要多復雜有多復雜。學(xué)習時(shí)要一條語(yǔ)句一條語(yǔ)句的學(xué),學(xué)一條活用一條,全部學(xué)過(guò)用過(guò)這些關(guān)鍵語(yǔ)句后,相信你的C基礎建立了。
    當基礎打好以后,你會(huì )感覺(jué)到單片機不再難學(xué)了,而且越學(xué)越起勁。當單片機乖乖的依照你的邏輯思維和算法去執行指令,實(shí)現預期控制效果的時(shí)候,成就感會(huì )讓你信心十足、夜以續日、廢寢忘食的投入到單片機的世界里??梢赃@么說(shuō),扎實(shí)的電子技術(shù)基礎和C語(yǔ)言基礎能增強學(xué)習單片機信心,較快掌握單片機技術(shù)。

    實(shí)驗實(shí)踐

    這是真正學(xué)習單片機的過(guò)程,既讓人興奮又讓人疲憊,既讓人無(wú)奈又讓人不服,既讓人孤獨又讓人充實(shí),既讓人氣憤又讓人欣慰,既有失落感又有成就感。其中的酸甜苦辣只有學(xué)過(guò)的人深有體會(huì )。思想上要有刻苦學(xué)習的決心,硬件上要有一套完整的學(xué)習開(kāi)發(fā)工具,軟件上要注重理論和實(shí)踐相結合。
    1.有刻苦學(xué)習的決心
    首先,明確學(xué)習目的。先認真回答兩個(gè)問(wèn)題:我學(xué)單片機來(lái)做什么?需要多長(cháng)時(shí)間把它學(xué)會(huì )?這是你學(xué)單片機的動(dòng)力。沒(méi)有動(dòng)力,我想你堅持不了多久。其次,端正學(xué)習心態(tài)。單片機學(xué)習過(guò)程是枯燥乏味、孤獨寂寞的過(guò)程。要知道,學(xué)習知識沒(méi)有捷徑,只有循序漸進(jìn),腳踏實(shí)地,一步一個(gè)腳印,才能學(xué)到真功夫。再次,要多動(dòng)腦勤動(dòng)手。單片機的學(xué)習具有很強的實(shí)踐性,是一門(mén)很注重實(shí)際動(dòng)手操作的技術(shù)學(xué)科。不動(dòng)手實(shí)踐你是學(xué)不會(huì )單片機的。最后,虛心交流。在單片機學(xué)習過(guò)程中每個(gè)人都會(huì )遇到無(wú)數不能解決的問(wèn)題,需要你向有經(jīng)驗的過(guò)來(lái)人虛心求教,否則,一味的自己埋頭摸索會(huì )走許多彎路,浪費很多時(shí)間。
    2.有一套完整的學(xué)習開(kāi)發(fā)工具
    學(xué)習單片機是需要成本的。必須有一臺電腦、一塊單片機開(kāi)發(fā)板(如果開(kāi)發(fā)板不能直接下載程序代碼的話(huà)還得需要一個(gè)編程器)、一套視頻教程、一本單片機教材和一本C語(yǔ)言教材。電腦是用來(lái)編寫(xiě)和編譯程序,并將程序代碼下載到單片機上;開(kāi)發(fā)板用來(lái)運行單片機程序,驗證實(shí)際效果;視頻教程就是手把手教你單片機開(kāi)發(fā)環(huán)境的使用、單片機編程和調試。對于單片機初學(xué)者來(lái)說(shuō),視頻教程必須看,要不然,哪怕把教材看了幾遍,還是不知道如何下手,尤其是院校里的單片機教材,學(xué)了之后,面對真正的單片機時(shí)可能還是束手無(wú)策;單片機教材和C語(yǔ)言教材是理論學(xué)習資料,備忘備查。不要為了節約成本不用開(kāi)發(fā)板而光用Proteus軟件仿真調試,這和紙上談兵沒(méi)什么區別。
    3. 要注重理論和實(shí)踐相結合
    單片機C語(yǔ)言編程理論知識并不深奧,光看書(shū)不動(dòng)手也能明白。但在實(shí)際編程的時(shí)候就沒(méi)那么簡(jiǎn)單了。一個(gè)程序的形成不僅需要有C語(yǔ)言知識,更多需要融入你個(gè)人的編程思路和算法。編程思路和算法決定一個(gè)程序的優(yōu)劣,是單片機編程的大問(wèn)題,只有在實(shí)際動(dòng)手編寫(xiě)的時(shí)候才會(huì )有深切的感悟。一個(gè)程序能否按照你的意愿正常運行就要看你的思路和算法是否正確、合理。如果程序不正常則要反復調試(檢查、修改思路和算法),直到成功。這個(gè)過(guò)程耗時(shí)、費腦、疲精神,意志不堅強者往往被絆倒在這里半途而廢。
    學(xué)習編寫(xiě)程序應該按照以下過(guò)程學(xué)習,效果會(huì )更好??吹嚼填}目先試著(zhù)構思自己的編程思路,然后再看教材或視頻教程里的代碼,研究人家的編程思路,注意與自己思路的差異;接下來(lái)就照搬人家的思路親自動(dòng)手編寫(xiě)這個(gè)程序,領(lǐng)會(huì )其中每一條語(yǔ)句的作用;對有疑問(wèn)的地方試著(zhù)按照自己的思路修改程序,比較程序運行效果,領(lǐng)會(huì )其中的奧妙。每一個(gè)例程都堅持按照這個(gè)過(guò)程學(xué)習,你很快會(huì )找到編程的感覺(jué),取其精華去其糟粕,久而久之會(huì )形成你獨特的編程思想。當然,剛開(kāi)始,看別人的程序源代碼就像看天書(shū)一樣,只要硬著(zhù)頭皮看,看到不懂的關(guān)鍵字和語(yǔ)句就翻書(shū)查閱、對照。只要能堅持下來(lái),學(xué)習收獲會(huì )事半功倍。在實(shí)踐過(guò)程中不僅要學(xué)會(huì )別人的例程,還要在別人的程序上改進(jìn)和拓展,讓程序產(chǎn)生更強大的功能。同時(shí),還要懂得通過(guò)查閱芯片數據手冊(DATASHEET)里有關(guān)芯片命令和數據的讀寫(xiě)時(shí)序來(lái)核對別人例程的可靠性,如果你覺(jué)得例程不可靠就把它修改過(guò)來(lái),成為是你自己的程序。不僅如此,自己應該經(jīng)常找些項目來(lái)做,以鞏固所學(xué)的知識和積累更多的經(jīng)驗。

    硬件設計

    當編寫(xiě)自己的程序信手拈來(lái)、閱讀別人的程序能夠發(fā)現問(wèn)題的時(shí)候,說(shuō)明你的單片機編程水平相當不錯了。接下來(lái)就應該研究硬件了。硬件設計包括電路原理設計和PCB板設計。學(xué)習做硬件要比學(xué)習做軟件麻煩,成本更高,周期更長(cháng)。但是,學(xué)習單片機的最終目的是做產(chǎn)品開(kāi)發(fā)----軟件和硬件相結合形成完整的控制系統。所以,做硬件也是學(xué)習單片機技術(shù)的一個(gè)必學(xué)內容。
    電路原理設計涉及到各種芯片的應用,而這些芯片外圍電路的設計、典型應用電路和與單片機的連接等在芯片數據手冊(DATASHEET)都能找到答案,前提是要看得懂全英文的數據手冊。否則,照搬別人的設計永遠落在別人的后面,你做的產(chǎn)品就沒(méi)有創(chuàng )意。電子技術(shù)領(lǐng)域的第一手資料(DATASHEET)都是英文,從第一手資料里你所獲得的知識可能是在教科書(shū)、網(wǎng)絡(luò )文檔和課外讀物等所沒(méi)有的知識。雖然有些資料也都是在DATASHEET的基礎上撰寫(xiě)的,但內容不全面,甚至存在翻譯上的遺漏和錯誤。當然,閱讀DATASHEET需要具備一定的英文閱讀能力,這也是阻礙單片機學(xué)習者晉級的絆腳石。良好的英文閱讀能力能讓你在單片機技術(shù)知識的海洋里自由遨游。
    做PCB板就比較簡(jiǎn)單了。只要懂得使用Protel軟件或 AltiumDesigner軟件就沒(méi)問(wèn)題了。但要想做的板子布局美觀(guān)、布線(xiàn)合理還得費一番功夫了。
    嫻熟的單片機C語(yǔ)言編程、會(huì )使用Protel軟件或 AltiumDesigner軟件設計PCB板和具備一定的英文閱讀能力,你就是一個(gè)遇強則強的單片機高手了。 

    抗干擾設計

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

    抗干擾

    在工程實(shí)踐中,軟件抗干擾研究的內容主要是:一、消除模擬輸入信號的噪聲(如數字濾波技術(shù));二、程序運行混亂時(shí)使程序重入正軌的方法。本文針對后者提出了幾種有效的軟件抗干擾方法。
    指令冗余
    CPU取指令過(guò)程是先取操作碼,再取操作數。當PC受干擾出現錯誤,程序便脫離正常軌道“亂飛”,當亂飛到某雙字節指令,若取指令時(shí)刻落在操作數上,誤將操作數當做操作碼,程序將出錯。若“飛” 到了三字節指令,出錯機率更大。
    在關(guān)鍵地方人為插入一些單字節指令,或將有效單字節指令重寫(xiě)稱(chēng)為指令冗余。通常是在雙字節指令和三字節指令后插入兩個(gè)字節以上的NOP。這樣即使亂飛程序飛到操作數上,由于空操作指令NOP的存在,避免了后面的指令被當作操作數執行,程序自動(dòng)納入正軌。
    此外,對系統流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執行。
    攔截技術(shù)
    所謂攔截,是指將亂飛的程序引向指定位置,再進(jìn)行出錯處理。通常用軟件陷阱來(lái)攔截亂飛的程序。因此先要合理設計陷阱,其次要將陷阱安排在適當的位置。
    (1 )軟件陷阱的設計
    當亂飛程序進(jìn)入非程序區,冗余指令便無(wú)法起作用。通過(guò)軟件陷阱,攔截亂飛程序,將其引向指定位置,再進(jìn)行出錯處理。軟件陷阱是指用來(lái)將捕獲的亂飛程序引向復位入口地址0000H的指令。通常在EPROM中非程序區填入以下指令作為軟件陷阱:
    (2 ) 陷阱的安排
    最后一條應填入020000,當亂飛程序落到此區,即可自動(dòng)入軌。在用戶(hù)程序區各模塊之間的空余單元也可填入陷阱指令。當使用的中斷因干擾而開(kāi)放時(shí),在對應的中斷服務(wù)程序中設置軟件陷阱,能及時(shí)捕獲錯誤的中斷。如某應用系統雖未用到外部中斷1,外部中斷1的中斷服務(wù)程序可為如下形式:
    NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障診斷程序與系統自恢復程序的設計可靠、 完善,用“LJMP 0000H”作返回指令可直接進(jìn)入故障診斷程序,盡早地處理故障并恢復程序的運行。
    考慮到程序存貯器的容量,軟件陷阱一般1K空間有2-3個(gè)就可以進(jìn)行有效攔截。
    軟件“看門(mén)狗”技術(shù)
    若失控的程序進(jìn)入“死循環(huán)”,通常采用“看門(mén)狗”技術(shù)使程序脫離“死循環(huán)”。通過(guò)不斷檢測程序循環(huán)運行時(shí)間,若發(fā)現程序循環(huán)時(shí)間超過(guò)最大循環(huán)運行時(shí)間,則認為系統陷入“死循環(huán)”,需進(jìn)行出錯處理。
    “看門(mén)狗”技術(shù)可由硬件實(shí)現,也可由軟件實(shí)現。在工業(yè)應用中,嚴重的干擾有時(shí)會(huì )破壞中斷方式控制字,關(guān)閉中斷。則系統無(wú)法定時(shí)“喂狗”,硬件看門(mén)狗電路失效。而軟件看門(mén)狗可有效地解決這類(lèi)問(wèn)題。
    筆者在實(shí)際應用中,采用環(huán)形中斷監視系統。用定時(shí)器T0監視定時(shí)器T1,用定時(shí)器T1監視主程序,主程序監視定時(shí)器T0。采用這種環(huán)形結構的軟件“看門(mén)狗”具有良好的抗干擾性能,大大提高了系統可靠性。對于需經(jīng)常使用T1定時(shí)器進(jìn)行串口通訊的測控系統,則定時(shí)器T1不能進(jìn)行中斷,可改由串口中斷進(jìn)行監控(如果用的是MCS-52系列單片機,也可用T2代替T1進(jìn)行監視)。這種軟件“看門(mén)狗”監視原理是:在主程序、T0中斷服務(wù)程序、T1中斷服務(wù)程序中各設一運行觀(guān)測變量,假設為MWatch、T0Watch 、T1Watch,主程序每循環(huán)一次,MWatch加1,同樣T0、T1中斷服務(wù)程序執行一次,T0Watch、 T1Watch加1。在T0中斷服務(wù)程序中通過(guò)檢測T1Watch的變化情況判定T1運行是否正常,在T1中斷服務(wù)程序中檢測MWatch的變化情況判定主程序是否正常運行,在主程序中通過(guò)檢測T0Watch的變化情況判別T0是否正常工作。若檢測到某觀(guān)測變量變化不正常,比如應當加1而未加1,則轉到出錯處理程序作排除故障處理。當然,對主程序最大循環(huán)周期、定時(shí)器T0和T1定時(shí)周期應予以全盤(pán)合理考慮。限于篇幅不贅述。

    抗干擾技術(shù)

    單片機系統因干擾復位或掉電后復位均屬非正常復位,應進(jìn)行故障診斷并能自動(dòng)恢復非正常復位前的狀態(tài)。
    非正常復位的識別
    程序的執行總是從0000H開(kāi)始,導致程序從 0000H開(kāi)始執行有四種可能:一、系統開(kāi)機上電復位;二、軟件故障復位;三、看門(mén)狗超時(shí)未喂狗硬件復位; 四、任務(wù)正在執行中掉電后來(lái)電復位。四種情況中除第一種情況外均屬非正常復位,需加以識別。
    (1 )硬件復位與軟件復位的識別
    此處硬件復位指開(kāi)機復位與看門(mén)狗復位,硬件復位對寄存器有影響,如復位后PC=0000H, SP=07H,PSW=00H等。而軟件復位則對SP、SPW無(wú)影響。故對于微機測控系統,當程序正常運行時(shí),將SP設置地址大于07H,或者將PSW的第5位用戶(hù)標志位在系統正常運行時(shí)設為1。那么系統復位時(shí)只需檢測PSW.5標志位或SP值便可判此是否硬件復位。
    由于硬件復位時(shí)片內RAM狀態(tài)是隨機的,而軟件復位片內RAM則可保持復位前狀態(tài),因此可選取片內某一個(gè)或兩個(gè)單元作為上電標志。設40H用來(lái)做上電標志,上電標志字為78H,若系統復位后40H單元內容不等于78H,則認為是硬件復位,否則認為是軟件復位,轉向出錯處理。若用兩個(gè)單元作上電標志,則這種判別方法的可靠性更高。
    (2 )開(kāi)機復位與看門(mén)狗故障復位的識別
    開(kāi)機復位與看門(mén)狗故障復位因同屬硬件復位, 所以要想予以正確識別,一般要借助非易失性RAM或者EEROM。當系統正常運行時(shí),設置一可掉電保護的觀(guān)測單元。當系統正常運行時(shí),在定時(shí)喂狗的中斷服務(wù)程序中使該觀(guān)測單元保持正常值(設為 AAH),而在主程中將該單元清零,因觀(guān)測單元掉電可保護,則開(kāi)機時(shí)通過(guò)檢測該單元是否為正常值可判斷是否看門(mén)狗復位。
    (3 )正常開(kāi)機復位與非正常開(kāi)機復位的識別
    識別測控系統中因意外情況如系統掉電等情況引起的開(kāi)機復位與正常開(kāi)機復位,對于過(guò)程控制系統尤為重要。如某以時(shí)間為控制標準的測控系統,完成一次測控任務(wù)需1小時(shí)。在已執行測控50分鐘的情況下,系統電壓異常引起復位,此時(shí)若系統復位后又從頭開(kāi)始進(jìn)行測控則會(huì )造成不必要的時(shí)間消耗。因此可通過(guò)一監測單元對當前系統的運行狀態(tài)、系統時(shí)間予以監控,將控制過(guò)程分解為若干步或若干時(shí)間段,每執行完一步或每運行一個(gè)時(shí)間段則對監測單元置為關(guān)機允許值,不同的任務(wù)或任務(wù)的不同階段有不同的值,若系統正在進(jìn)行測控任務(wù)或正在執某時(shí)間段,則將監測單元置為非正常關(guān)機值。那么系統復位后可據此單元判系統原來(lái)的運行狀態(tài),并跳到出錯處理程序中恢復系統原運行狀態(tài)。
    非正常復位后系統自恢復運行的程序設計
    對順序要求嚴格的一些過(guò)程控制系統,系統非正常復位否,一般都要求從失控的那一個(gè)模塊或任務(wù)恢復運行。所以測控系統要作好重要數據單元、參數的備份,如系統運行狀態(tài)、系統的進(jìn)程值、當前輸入、輸出的值,當前時(shí)鐘值、觀(guān)測單元值等,這些數據既要定時(shí)備份,同時(shí)若有修改也應立即予以備份。
    當在已判別出系統非正常復位的情況下,先要恢復一些必要的系統數據,如顯示模塊的初始化、片外擴展芯片的初始化等。其次再對測控系統的系統狀態(tài)、運行參數等予以恢復,包括顯示界面等的恢復。之后再把復位前的任務(wù)、參數、運行時(shí)間
    92视频在线精品国自产拍_乱色熟女综合一区二区_国产精品毛片久久久久久久_久天啪天天久久99久孕妇
    <ruby id="66w77"><video id="66w77"></video></ruby>
    <ruby id="66w77"><option id="66w77"><thead id="66w77"></thead></option></ruby>
  • <ruby id="66w77"><table id="66w77"></table></ruby>

  • <ruby id="66w77"><table id="66w77"></table></ruby>
    <strong id="66w77"></strong>