什么是單片機?單片機設(shè)計需要考慮的3個重要問題!
單片機(Single-Chip Microcomputer)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計數(shù)器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的微型計算機系統(tǒng),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。從上世紀80年代,由當(dāng)時的4位、8位單片機,發(fā)展到現(xiàn)在的300M的高速單片機。
單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。相當(dāng)于一個微型的計算機,和計算機相比,單片機只缺少了I/O設(shè)備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時,學(xué)習(xí)使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇。
單片機的使用領(lǐng)域已十分廣泛,如智能儀表、實時工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。
從二十世紀九十年代開始,單片機技術(shù)就已經(jīng)發(fā)展起來,隨著時代的進步與科技的發(fā)展,目前該技術(shù)的實踐應(yīng)用日漸成熟,單片機被廣泛應(yīng)用于各個領(lǐng)域?,F(xiàn)如今,人們越來越重視單片機在智能電子技術(shù)方面的開發(fā)和應(yīng)用,單片機的發(fā)展進入到新的時期,無論是自動測量還是智能儀表的實踐,都能看到單片機技術(shù)的身影。當(dāng)前工業(yè)發(fā)展進程中,電子行業(yè)屬于新興產(chǎn)業(yè),工業(yè)生產(chǎn)中人們將電子信息技術(shù)成功運用,讓電子信息技術(shù)與單片機技術(shù)相融合,有效提高了單片機應(yīng)用效果。作為計算機技術(shù)中的一個分支,單片機技術(shù)在電子產(chǎn)品領(lǐng)域的應(yīng)用,豐富了電子產(chǎn)品的功能,也為智能化電子設(shè)備的開發(fā)和應(yīng)用提供了新的出路,實現(xiàn)了智能化電子設(shè)備的創(chuàng)新與發(fā)展。
單片機也被稱為單片微控器,屬于一種集成式電路芯片。在單片機中主要包含CPU、只讀存儲器ROM和隨機存儲器RAM等,多樣化數(shù)據(jù)采集與控制系統(tǒng)能夠讓單片機完成各項復(fù)雜的運算,無論是對運算符號進行控制,還是對系統(tǒng)下達運算指令都能通過單片機完成。 由此可見,單片機憑借著強大的數(shù)據(jù)處理技術(shù)和計算功能可以在智能電子設(shè)備中充分應(yīng)用。簡單地說,單片機就是一塊芯片,這塊芯片組成了一個系統(tǒng),通過集成電路技術(shù)的應(yīng)用,將數(shù)據(jù)運算與處理能力集成到芯片中,實現(xiàn)對數(shù)據(jù)的高速化處理。
單片機設(shè)計應(yīng)該考慮的3大步驟
總體規(guī)劃
軟件所要完成的任務(wù)已在總體設(shè)計時規(guī)定,在具體軟件設(shè)計時,要結(jié)合硬件結(jié)構(gòu),進一步明確軟件所承擔(dān)的一個個任務(wù)細節(jié),確定具體實施的方法,合理分配資源。
1程序設(shè)計技術(shù)
合理的軟件結(jié)構(gòu)是設(shè)計一個性能優(yōu)良的單片機應(yīng)用系統(tǒng)軟件的基礎(chǔ)。在程序設(shè)計中,應(yīng)培養(yǎng)結(jié)構(gòu)化程序設(shè)計風(fēng)格,各功能程序?qū)嵭心K化、子程序化。一般有以下兩種設(shè)計方法。
a.模塊程序設(shè)計
模塊程序設(shè)計是單片機應(yīng)用中常用的一種程序設(shè)計技術(shù)。它是把一個較長的程序分解為若干個功能相對獨立的較小的程序模塊,各個程序模塊分別設(shè)計、編程和調(diào)試,最后由各個調(diào)試好的模塊組成一個大的程序。
優(yōu)點是單個功能明確的程序模塊的設(shè)計和調(diào)試比較方便,容易完成,一個模塊可以為多個程序所共享。其缺點是各個模塊的連接有時有一定難度。
b.自頂向下的程序設(shè)計
自頂向下程序設(shè)計時,先從主程序開始設(shè)計,從屬程序或子程序用符號來代替。主程序編好后再編制各從屬程序和子程序,最后完成整個系統(tǒng)軟件的設(shè)計。
優(yōu)點是比較符合于人們的日常思維,設(shè)計、調(diào)試和連接同時按一個線索進行,程序錯誤可以較早的發(fā)現(xiàn)。缺點是上一級的程序錯誤將對整個程序產(chǎn)生影響,一處修改可能引起對整個程序的全面修改。
2程序設(shè)計
在選擇好軟件結(jié)構(gòu)和所采用的程序設(shè)計技術(shù)后,便可著手進行程序設(shè)計,將設(shè)計任務(wù)轉(zhuǎn)化為具體的程序。
a.建立數(shù)學(xué)模型
根據(jù)設(shè)計任務(wù),描述出各輸入變量和各輸出變量之間的數(shù)學(xué)關(guān)系,此過程即為建立數(shù)學(xué)模型。數(shù)學(xué)模型隨系統(tǒng)任務(wù)的不同而不同,其正確度是系統(tǒng)性能好壞的決定性因素之一。
b.繪制程序流程圖
通常在編寫程序之前先繪制程序流程圖,以提高軟件設(shè)計的總體效率。程序流程圖以簡明直觀的方式對任務(wù)進行描述,并很容易由此編寫出程序,故對初學(xué)者來說尤為適用。
在設(shè)計過程中,先畫出簡單的功能性流程圖(粗框圖),然后對功能流程圖進行細化和具體化,對存儲器、寄存器、標(biāo)志位等工作單元作具體的分配和說明,將功能流程圖中每一個粗框的操作轉(zhuǎn)變?yōu)榫唧w的存儲器單元、工作寄存器或I/O口的操作,從而給出詳細的程序流程圖(細框圖)。
c.程序的編制
在完成程序流程圖設(shè)計以后,便可以編寫程序。程序設(shè)計語言對程序設(shè)計的影響較大。匯編語言是最為常用的單片機程序語言,用匯編語言編寫程序代碼精簡,直接面向硬件電路進行設(shè)計,速度快,但進行大量數(shù)據(jù)運算時,編寫難度將大大增加,不易閱讀和調(diào)試。在有大量數(shù)據(jù)運算時可采用C語言(如MCS-51的C51)或PL/M語言。
編寫程序時,應(yīng)注意系統(tǒng)硬件資源的合理分配與使用,子程序的入/出口參數(shù)的設(shè)置與傳遞。采用合理的數(shù)據(jù)結(jié)構(gòu)、控制算法,以滿足系統(tǒng)要求的精度。
在存儲空間分配時,應(yīng)將使用頻率最高的數(shù)據(jù)緩沖器設(shè)在內(nèi)部RAM;標(biāo)志應(yīng)設(shè)置在片內(nèi)RAM位操作區(qū)(20H~2FH)中;指定用戶堆棧區(qū),棧區(qū)的大小應(yīng)留有余量;余下部分作為數(shù)據(jù)緩沖區(qū)。
在編寫程序過程中,根據(jù)流程圖逐條用符號指令來描述,即得匯編語言源程序。應(yīng)按MCS-51匯編語言的標(biāo)準(zhǔn)符號和格式書寫,在完成系統(tǒng)功能的同時應(yīng)注意保證設(shè)計的可靠性,如數(shù)字濾波、軟件陷阱、保護等。必要時可作若干功能性注釋,提高程序的可讀性。
3程序設(shè)計
各程序模塊編輯之后,需進行匯編或編譯、調(diào)試,當(dāng)滿足設(shè)計要求后,將各程序模塊按照軟件結(jié)構(gòu)設(shè)計的要求連接起來,即為軟件裝配,從而完成軟件設(shè)計。在軟件裝配時,應(yīng)注意軟件接口。
單片機應(yīng)用系統(tǒng)硬件設(shè)計應(yīng)該考慮哪些問題?
(1)存儲器擴展:容量需求,在選擇單片機時就考慮到單片機的內(nèi)部存儲器資源,如能滿足要求就不需要進行擴展,在必須擴展時注意存儲器的類型、容量和接口,一般盡量留有余地,并且盡可能減少芯片的數(shù)量。選擇合適的方法、ROM和RAM的形式,RAM是否要進行掉電保護等。
(2)I/O接口的擴展:單片機應(yīng)用系統(tǒng)在擴展I/O接口時應(yīng)從體積、價格、負載能力、功能等幾個方面考慮。應(yīng)根據(jù)外部需要擴展電路的數(shù)量和所選單片機的內(nèi)部資源(空閑地址線的數(shù)量)選擇合適的地址譯碼方法。
(3)輸入通道的設(shè)計:輸入通道設(shè)計包括開關(guān)量和模擬輸入通道的設(shè)計。開關(guān)量要考慮接口形式、電壓等級、隔離方式、擴展接口等。模擬量通道的設(shè)計要與信號檢測環(huán)節(jié)(傳感器、信號處理電路等)結(jié)合起來,應(yīng)根據(jù)系統(tǒng)對速度、精度和價格等要求來選擇,同時還需要和傳感器等設(shè)備的性能相匹配,要考慮傳感器類型、傳輸信號的形式(電流還是電壓)、線性化、補償、光電隔離、信號處理方式等,還應(yīng)考慮A/D轉(zhuǎn)換器的選擇(轉(zhuǎn)換精度、轉(zhuǎn)換速度、結(jié)構(gòu)、功耗等)及相關(guān)電路、擴展接口,有時還涉及軟件的設(shè)計。高精度的模數(shù)轉(zhuǎn)換器價格十分昂貴,因而應(yīng)盡量降低對A/D轉(zhuǎn)換器的要求,能用軟件實現(xiàn)的功能盡量用軟件來實現(xiàn)。
(4)輸出通道的設(shè)計:輸出通道設(shè)計包括開關(guān)量和模擬量輸出通道的設(shè)計。開關(guān)量要考慮功率、控制方式(繼電器、可控硅、三極管等)。模擬量輸出要考慮D/A轉(zhuǎn)換器的選擇(轉(zhuǎn)換精度、轉(zhuǎn)換速度、結(jié)構(gòu)、功耗等)、輸出信號的形式(電流還是電壓)、隔離方式、擴展接口等。
(5)人機界面的設(shè)計:人機界面的設(shè)計包括輸入鍵盤、開關(guān)、撥碼盤、啟/停操作、復(fù)位、顯示器、打印、指示、報警等。輸入鍵盤、開關(guān)、撥碼盤應(yīng)考慮類型、個數(shù)、參數(shù)及相關(guān)處理(如按鍵的去抖處理)。啟/停、復(fù)位操作要考慮方式(自動、手動)及其切換。顯示器要考慮類型(LED,LCD)、顯示信息的種類、倍數(shù)等。此外還要考慮各種人機界面的擴展接口。
(6)通信電路的設(shè)計:單片機應(yīng)用系統(tǒng)往往作為現(xiàn)場測控設(shè)備,常與上位機或同位機構(gòu)成測控網(wǎng)絡(luò),需要其有數(shù)據(jù)通信的能力,通常設(shè)計為RS-232C、RS-485、紅外收發(fā)等通信標(biāo)準(zhǔn)。
(7)印刷電路板的設(shè)計與制作:電路原理圖和印刷電路板的設(shè)計常采用專業(yè)設(shè)計軟件進行設(shè)計,如Protel,OrCAD等。設(shè)計印刷電路板需要有很多的技巧和經(jīng)驗,設(shè)計好印刷電路板圖后應(yīng)送到專業(yè)化制作廠家生產(chǎn),在生產(chǎn)出來的印刷電路板上安裝好元件,則完成硬件設(shè)計和制作。
(8)負載容限的考慮:單片機總線的負載能力是有限的。如MCS-51的P0口的負載能力為4mA,最多驅(qū)動8個TTL電路,P1~P3口的負載能力為2mA,最多驅(qū)動4個TTL電路。若外接負載較多,則應(yīng)采取總線驅(qū)動的方法提高系統(tǒng)的負載容限。常用驅(qū)動器有:單向驅(qū)動器74LS244,雙向驅(qū)動器74LS245等。
(9)信號邏輯電平兼容性的考慮:在所設(shè)計的電路中,可能兼有TTL和CMOS器件,也有非標(biāo)準(zhǔn)的信號電平,要設(shè)計相應(yīng)的電平兼容和轉(zhuǎn)換電路。當(dāng)有RS-232,RS-485接口時,還要實現(xiàn)電平兼容和轉(zhuǎn)換。常用的集成電路有MAX232,MAX485等。
(10)電源系統(tǒng)的配置:單片機應(yīng)用系統(tǒng)一定需要電源,要考慮電源的組數(shù)、輸出功率、抗干擾。要熟悉常用三端穩(wěn)壓器(78хх系列、79хх系列)、精密電源(AD580,MC1403,CJ313/336/385,W431)的應(yīng)用。
(11)抗干擾的實施:采取必要的抗干擾措施是保證單片機系統(tǒng)正常工作的重要環(huán)節(jié)。它包括芯片、器件選擇、去耦濾波、印刷電路板布線、通道隔離等。
單片機設(shè)計舉例
對于新手來說,學(xué)習(xí)制作單片機為核心的繼電器驅(qū)動板,可以鍛煉自己的知識應(yīng)用能力、動手能力等,作為一名電子愛好者,想了解這方面的技術(shù)并動手制作一塊繼電器驅(qū)動板:
1)首先,選擇單片機核心處理器,單片機的種類很多,有51單片機、PIC單片機、MSP430單片機、STM32單片機、AVR單片機以及飛思卡爾單片機等,最好選擇自己比較熟悉的單片機平臺,開發(fā)環(huán)境、軟件編程等較熟悉,使用起來更得心應(yīng)手,單片機選型需要注意的有以下幾點:內(nèi)存,flash容量的大小必須大于代碼量;速度,也就是時鐘頻率;外設(shè)需求,I/O口的數(shù)量,ADC、SPI、SCI、USB等;工作電壓等。
2)繼電器選型,繼電器的種類也非常多,有底座安裝接線的,也有焊接于印制板的,要是用于工程設(shè)計,取決于產(chǎn)品的結(jié)構(gòu)、負載電流、工作電壓等。
3)繼電器驅(qū)動電路,單片機I/O口的驅(qū)動電流很弱,無法直接驅(qū)動繼電器,需通過外圍電路增強驅(qū)動能力,一般使用光耦、三極管、場效應(yīng)管等,下圖為本人設(shè)計的繼電器驅(qū)動電路,使用光耦接單片機I/O口,隔離供電可以實現(xiàn)單片機和繼電器之間隔離,使用PNP三極管當(dāng)電子開關(guān)控制繼電器的正極電源,三極管的選型需根據(jù)繼電器的工作電壓和電流而定,對于阻值R2/R3的選擇,需根據(jù)三極管的IC電流、放大倍數(shù)β以及VCC的大小進行計算,使三極管開通時處于飽和狀態(tài)。
注意:繼電器旁的二極管D1不能少,D1的作用是反向續(xù)流,抑制浪涌。
通過以上的講解,是否對單片機設(shè)計有了大概的了解呢?在平時的學(xué)習(xí)中,還是需要多學(xué),多看,多練,相信你一定會成為高手的!
【更多關(guān)于單片機設(shè)計相關(guān)閱讀】
想學(xué)好單片機設(shè)計,這些最常見的難題你都要解決
Silicon Labs拓展ARM單片機市場,解決設(shè)計挑戰(zhàn)
用MSP430系列單片機設(shè)計便攜式醫(yī)用自動輸液器
pic單片機應(yīng)用實例,采用pic單片機設(shè)計多回路溫度控制系統(tǒng)
基于P87LPC767單片機設(shè)計的剩余電流保護器EMC設(shè)計
淺析基于單片機設(shè)計康復(fù)儀方法與應(yīng)用