《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 電子元件 > 業(yè)界動(dòng)態(tài) > 不可或缺的MCU

不可或缺的MCU

2020-12-03
來(lái)源:芯路芯語(yǔ)
關(guān)鍵詞: MCU 單片機(jī)

  MCU是Microcontroller Unit 的簡(jiǎn)稱,,中文叫微控制器,,俗稱單片機(jī),,是把CPU的頻率與規(guī)格做適當(dāng)縮減,并將內(nèi)存,、計(jì)數(shù)器、USB,、A/D轉(zhuǎn)換,、UART、PLC,、DMA等周邊接口,,甚至LCD驅(qū)動(dòng)電路都整合在單一芯片上,形成芯片級(jí)的計(jì)算機(jī),,為不同的應(yīng)用場(chǎng)合做不同組合控制,,諸如手機(jī)、PC外圍,、遙控器,,至汽車電子、工業(yè)上的步進(jìn)馬達(dá),、機(jī)器手臂的控制等,,都可見到MCU的身影。

  0 1

  單片機(jī)發(fā)展簡(jiǎn)史

  單片機(jī)出現(xiàn)的歷史并不長(zhǎng),,但發(fā)展十分迅猛,。它的產(chǎn)生與發(fā)展和微處理器(CPU)的產(chǎn)生與發(fā)展大體同步,,自1971年美國(guó)英特爾公司首先推出4位微處理器以來(lái),它的發(fā)展到目前為止大致可分為5個(gè)階段,。下面以英特爾公司的單片機(jī)發(fā)展為代表加以介紹,。

  1971年~1976年

  單片機(jī)發(fā)展的初級(jí)階段。1971年11月英特爾公司首先設(shè)計(jì)出集成度為2000只晶體管/片的4位微處理器英特爾4004,,并配有RAM,、 ROM和移位寄存器, 構(gòu)成了第一臺(tái)MCS—4微處理器,, 而后又推出了8位微處理器英特爾8008,, 以及其它各公司相繼推出的8位微處理器。

  1976年~1980年

  低性能單片機(jī)階段,。以1976年英特爾公司推出的MCS—48系列為代表,, 采用將8位CPU、 8位并行I/O接口,、8位定時(shí)/計(jì)數(shù)器,、RAM和ROM等集成于一塊半導(dǎo)體芯片上的單片結(jié)構(gòu), 雖然其尋址范圍有限(不大于4 KB),, 也沒有串行I/O,, RAM、 ROM容量小,, 中斷系統(tǒng)也較簡(jiǎn)單,, 但功能可滿足一般工業(yè)控制和智能化儀器、儀表等的需要,。

  1980年~1983年

  高性能單片機(jī)階段,。這一階段推出的高性能8位單片機(jī)普遍帶有串行口,有多級(jí)中斷處理系統(tǒng),, 多個(gè)16位定時(shí)器/計(jì)數(shù)器,。片內(nèi)RAM、 ROM的容量加大,,且尋址范圍可達(dá)64 KB,,個(gè)別片內(nèi)還帶有A/D轉(zhuǎn)換接口。

  1983年~80年代末

  16位單片機(jī)階段,。1983年英特爾公司又推出了高性能的16位單片機(jī)MCS-96系列,,由于其采用了最新的制造工藝, 使芯片集成度高達(dá)12萬(wàn)只晶體管/片,。

  1990年代

  單片機(jī)在集成度,、功能、速度、可靠性,、應(yīng)用領(lǐng)域等全方位向更高水平發(fā)展,。

  0 2

  單片機(jī)的分類及應(yīng)用

  MCU按其存儲(chǔ)器類型可分為無(wú)片內(nèi)ROM型和帶片內(nèi)ROM型兩種。對(duì)于無(wú)片內(nèi)ROM型的芯片,,必須外接EPROM才能應(yīng)用(典型為8031),;帶片內(nèi)ROM型的芯片又分為片內(nèi)EPROM型(典型芯片為87C51)、MASK片內(nèi)掩模ROM型(典型芯片為8051),、片內(nèi)Flash型(典型芯片為89C51)等類型,。

  按用途可分為通用型和專用型;根據(jù)數(shù)據(jù)總線的寬度和一次可處理的數(shù)據(jù)字節(jié)長(zhǎng)度可分為8,、16,、32位MCU,。

  目前,,國(guó)內(nèi)MCU應(yīng)用市場(chǎng)最廣泛的是消費(fèi)電子領(lǐng)域,其次是工業(yè)領(lǐng)域,、和汽車電子市場(chǎng),。消費(fèi)電子包括家用電器、電視,、游戲機(jī)和音視頻系統(tǒng)等,。工業(yè)領(lǐng)域包括智能家居、自動(dòng)化,、醫(yī)療應(yīng)用及新能源生成與分配等,。汽車領(lǐng)域包括汽車動(dòng)力總成和安全控制系統(tǒng)等。

  0 3

  單片機(jī)的基本功能

  對(duì)于絕大多數(shù)MCU,,下列功能是最普遍也是最基本的,,針對(duì)不同的MCU,其描述的方式可能會(huì)有區(qū)別,,但本質(zhì)上是基本相同的:

  1,、TImer(定時(shí)器):TImer的種類雖然比較多,但可歸納為兩大類:一類是固定時(shí)間間隔的TImer,,即其定時(shí)的時(shí)間是由系統(tǒng)設(shè)定的,,用戶程序不可控制,系統(tǒng)只提供幾種固定的時(shí)間間隔給用戶程序進(jìn)行選擇,,如32Hz,,16Hz,8Hz等,,此類TImer在4位MCU中比較常見,,因此可以用來(lái)實(shí)現(xiàn)時(shí)鐘、計(jì)時(shí)等相關(guān)的功能,。

  另一類則是Programmable Timer(可編程定時(shí)器),,顧名思義,,該類Timer的定時(shí)時(shí)間是可以由用戶的程序來(lái)控制的,控制的方式包括:時(shí)鐘源的選擇,、分頻數(shù)(Prescale)選擇及預(yù)制數(shù)的設(shè)定等,,有的MCU三者都同時(shí)具備,而有的則可能是其中的一種或兩種,。此類Timer應(yīng)用非常靈活,,實(shí)際的使用也千變?nèi)f化,其中最常見的一種應(yīng)用就是用其實(shí)現(xiàn)PWM輸出,。

  由于時(shí)鐘源可以自由選擇,,因此,此類Timer一般均與Event Counter(事件計(jì)數(shù)器)合在一起,。

  2,、IO口:任何MCU都具有一定數(shù)量的IO口,沒有IO口,,MCU就失去了與外部溝通的渠道,。根據(jù)IO口的可配置情況,可以分為如下幾種類型:

  純輸入或純輸出口:此類IO口由MCU硬件設(shè)計(jì)決定,,只能是輸入或輸出,,不可用軟件來(lái)進(jìn)行實(shí)時(shí)的設(shè)定。

  直接讀寫IO口:如MCS-51的IO口就屬于此類IO口,。當(dāng)執(zhí)行讀IO口指令時(shí),,就是輸入口;當(dāng)執(zhí)行寫IO口指令則自動(dòng)為輸出口,。

  程序編程設(shè)定輸入輸出方向的:此類IO口的輸入或輸出由程序根據(jù)實(shí)際的需要來(lái)進(jìn)行設(shè)定,,應(yīng)用比較靈活,可以實(shí)現(xiàn)一些總線級(jí)的應(yīng)用,,如I2C總線,,各種LCD、LED Driver的控制總線等,。

  對(duì)于IO口的使用,,重要的一點(diǎn)必須牢記的是:對(duì)于輸入口,必須有明確的電平信號(hào),,確保不能浮空(可以通過(guò)增加上拉或下拉電阻來(lái)實(shí)現(xiàn)),;而對(duì)于輸出口,其輸出的狀態(tài)電平必須考慮其外部的連接情況,,應(yīng)保證在Standby或靜態(tài)狀態(tài)下不存在拉電流或灌電流,。

  3、外部中斷:外部中斷也是絕大多數(shù)MCU所具有的基本功能,一般用于信號(hào)的實(shí)時(shí)觸發(fā),,數(shù)據(jù)采樣和狀態(tài)的檢測(cè),,中斷的方式由上升沿、下降沿觸發(fā)和電平觸發(fā)幾種,。外部中斷一般通過(guò)輸入口來(lái)實(shí)現(xiàn),,若為IO口,則只有設(shè)為輸入時(shí)其中斷功能才會(huì)開啟,;若為輸出口,,則外部中斷功能將自動(dòng)關(guān)閉(ATMEL的ATiny系列存在一些例外,輸出口時(shí)也能觸發(fā)中斷功能),。外部中斷的應(yīng)用如下:

  外部觸發(fā)信號(hào)的檢測(cè):一種是基于實(shí)時(shí)性的要求,,比如可控硅的控制,突發(fā)性信號(hào)的檢測(cè)等,,而另一種情況則是省電的需要,。

  信號(hào)頻率的測(cè)量:為了保證信號(hào)不被遺漏,外部中斷是最理想的選擇,。

  數(shù)據(jù)的解碼:在遙控應(yīng)用領(lǐng)域,,為了降低設(shè)計(jì)的成本,,經(jīng)常需要采用軟件的方式來(lái)對(duì)各種編碼數(shù)據(jù)進(jìn)行解碼,,如Manchester和PWM編碼的解碼。

  按鍵的檢測(cè)和系統(tǒng)的喚醒:對(duì)于進(jìn)入Sleep狀態(tài)的MCU,,一般需要通過(guò)外部中斷來(lái)進(jìn)行喚醒,,最基本的形式則是按鍵,通過(guò)按鍵的動(dòng)作來(lái)產(chǎn)生電平的變化,。

  4,、通訊接口:MCU所提供的通訊接口一般包括SPI接口,UART,,I2C接口等,,其分別描述如下:

  SPI接口:此類接口是絕大多數(shù)MCU都提供的一種最基本通訊方式,其數(shù)據(jù)傳輸采用同步時(shí)鐘來(lái)控制,,信號(hào)包括:SDI(串行數(shù)據(jù)輸入),、SDO(串行數(shù)據(jù)輸出)、SCLK(串行時(shí)鐘)及Ready信號(hào),;有些情況下則可能沒有Ready信號(hào),;此類接口可以工作在Master方式或Slave方式下,通俗說(shuō)法就是看誰(shuí)提供時(shí)鐘信號(hào),,提供時(shí)鐘的一方為Master,,相反的一方則為Slaver。

  UART(Universal Asynchronous Receive Transmit):屬于最基本的一種異步傳輸接口,其信號(hào)線只有Rx和Tx兩條,,基本的數(shù)據(jù)格式為:Start Bit + Data Bit(7-bits/8-bits) + Parity Bit(Even,, Odd or None) + Stop Bit(1~2Bit)。一位數(shù)據(jù)所占的時(shí)間稱為Baud Rate(波特率),。

  對(duì)于大多數(shù)的MCU來(lái)講,,數(shù)據(jù)位的長(zhǎng)度、數(shù)據(jù)校驗(yàn)方式(奇校驗(yàn),、偶校驗(yàn)或無(wú)校驗(yàn)),、停止位(Stop Bit)的長(zhǎng)度及Baud Rate是可以通過(guò)程序編程進(jìn)行靈活設(shè)定。此類接口最常用的方式就是與PC機(jī)的串口進(jìn)行數(shù)據(jù)通訊,。

  I2C接口:I2C是由Philips開發(fā)的一種數(shù)據(jù)傳輸協(xié)議,,同樣采用2根信號(hào)來(lái)實(shí)現(xiàn):SDAT(串行數(shù)據(jù)輸入輸出)和SCLK(串行時(shí)鐘)。其最大的好處是可以在此總線上掛接多個(gè)設(shè)備,,通過(guò)地址來(lái)進(jìn)行識(shí)別和訪問(wèn),;I2C總線的一個(gè)最大的好處就是非常方便用軟件通過(guò)IO口來(lái)實(shí)現(xiàn),其傳輸?shù)臄?shù)據(jù)速率完全由SCLK來(lái)控制,,可快可慢,,不像UART接口,有嚴(yán)格的速率要求,。

  5,、Watchdog(看門狗定時(shí)器):Watchdog也是絕大多數(shù)MCU的一種基本配置(一些4位MCU可能沒有此功能),大多數(shù)的MCU的Watchdog只能允許程序?qū)ζ溥M(jìn)行復(fù)位而不能對(duì)其關(guān)閉(有的是在程序燒入時(shí)來(lái)設(shè)定的,,如Microchip PIC系列MCU),,而有的MCU則是通過(guò)特定的方式來(lái)決定其是否打開,如Samsung的KS57系列,,只要程序訪問(wèn)了Watchdog寄存器,,就自動(dòng)開啟且不能再被關(guān)閉。一般而言watchdog的復(fù)位時(shí)間是可以程序來(lái)設(shè)定的,。Watchdog的最基本的應(yīng)用是為MCU因?yàn)橐馔獾墓收隙鴮?dǎo)致死機(jī)提供了一種自我恢復(fù)的能力,。

  0 4

  全球主流單片機(jī)制造商

  (排名不分先后,,整理為主流廠商,,如有缺少請(qǐng)?jiān)谠u(píng)論區(qū)補(bǔ)充)

  歐美地區(qū)

  1、Freescale+NXP(飛思卡爾+恩智浦):荷蘭,,主要提供16位,、32位MCU。應(yīng)用范圍:汽車電子,、LED和普通照明,、醫(yī)療保健,、多媒體融合、家電和電動(dòng)工具,、樓宇自動(dòng)化技術(shù)電機(jī)控制,、電源和功率轉(zhuǎn)換器、能源和智能電網(wǎng),、自動(dòng)化,、計(jì)算機(jī)與通信基礎(chǔ)設(shè)施。

  2,、Microchip+Atmel(微芯科技+愛特梅爾):美國(guó),,主要提供16位、32位MCU,。應(yīng)用范圍:汽車電子,、工業(yè)用、電機(jī)控制,、汽車,、樓宇自動(dòng)化、家用電器,、家庭娛樂(lè),、工業(yè)自動(dòng)化、照明,、物聯(lián)網(wǎng),、智能能源、移動(dòng)電子設(shè)備,、計(jì)算機(jī)外設(shè),。

  3,、Cypress+Spansion(賽普拉斯+飛索半導(dǎo)體):美國(guó),,主要提供8位、16位,、32位MCU,。應(yīng)用范圍:汽車電子、家用電器,、醫(yī)療,、消費(fèi)類電子、通信與電信,、工業(yè),、無(wú)線。

  4,、ADI(亞德諾半導(dǎo)體):美國(guó),,主要提供8位,、16位、32位MCU,。應(yīng)用范圍:航空航天與國(guó)防,、汽車應(yīng)用 、樓宇技術(shù) ,、通信 ,、消費(fèi)電子 、能源 ,、醫(yī)療保健 ,、儀器儀表和測(cè)量 、電機(jī),、工業(yè)自動(dòng)化 ,、安防。

  5,、Infineon(英飛凌):德國(guó),,主要提供16位、32位MCU,。應(yīng)用范圍:汽車電子,、消費(fèi)電子、工程,、商用和農(nóng)用車輛,、數(shù)據(jù)處理、電動(dòng)交通,、工業(yè)應(yīng)用,、醫(yī)療設(shè)備、移動(dòng)設(shè)備,、電機(jī)控制與驅(qū)動(dòng),、電源、面向摩托車電動(dòng)自行車與小型電動(dòng)車,、智能電網(wǎng),、照明、太陽(yáng)能系統(tǒng)解決方案,、風(fēng)能系統(tǒng)解決方案,。

  6、ST Microelectronics(意法半導(dǎo)體):意大利/法國(guó),,主要提供32位MCU,。應(yīng)用范圍:LED和普通照明、交通運(yùn)輸,、醫(yī)療保健,、多媒體融合,、家電和電動(dòng)工具、樓宇自動(dòng)化技術(shù)電機(jī)控制,、電源和功率轉(zhuǎn)換器,、能源和智能電網(wǎng)、自動(dòng)化,、計(jì)算機(jī)與通信基礎(chǔ)設(shè)施,。

  7、Qualcomm(高通):美國(guó),,主要提供16位,,32位MCU。應(yīng)用范圍:智能手機(jī),、平板電腦,、無(wú)線調(diào)制解調(diào)器。

  8,、Texas Instruments(德州儀器):美國(guó),,主要提供16位、32位MCU,。應(yīng)用范圍:汽車電子,、消費(fèi)電子、醫(yī)療設(shè)備,、移動(dòng)設(shè)備,、通信。

  9,、Maxim(美信):美國(guó),,主要提供32位MCU。應(yīng)用范圍:汽車電子,、消費(fèi)電子,、工業(yè)應(yīng)用、安防,。

  日韓地區(qū)

  1,、Renesas(瑞薩):日本,主要提供16位,、32位MCU。應(yīng)用范圍:電腦及外設(shè),、消費(fèi)類電子,、健康醫(yī)療電子、汽車電子,、工業(yè),、通信,。

  2、Toshiba(東芝):日本,,主要提供16位,、32位MCU。應(yīng)用范圍:汽車電子,、工業(yè)用,、電機(jī)控制、無(wú)線通信,、移動(dòng)電話,、電腦與周邊設(shè)備、影像及音視頻,、消費(fèi)類(家電),、LED照明、安全,、電源管理,、娛樂(lè)設(shè)備。

  3,、Fujitsu(富士通):日本,,主要提供32位MCU。應(yīng)用范圍:汽車,、醫(yī)療,、機(jī)械,家電,。

  4,、Samsung Electronics(三星電子):韓國(guó),主要提供16位,、32位MCU,。應(yīng)用范圍:汽車電子、工業(yè)用,、電機(jī)控制,、汽車、樓宇自動(dòng)化,、家用電器,、家庭娛樂(lè)、工業(yè)自動(dòng)化,、照明,、物聯(lián)網(wǎng)、智能能源,、移動(dòng)電子設(shè)備,、計(jì)算機(jī)外設(shè),。

  中國(guó)地區(qū)

  ▍中國(guó)大陸地區(qū)

  1、希格瑪微電子:主要提供32位MCU,,應(yīng)用范圍:電信,、制造、能源,、交通,、電力等。

  2,、珠海歐比特:主要提供32位MCU,,應(yīng)用范圍:航空航天:星箭站船、飛行器,;高端工控:嵌入式計(jì)算機(jī),;艦船控制、工業(yè)控制,、電力設(shè)備,、環(huán)境監(jiān)控。

  3,、兆易創(chuàng)新:主要提供32位MCU,,應(yīng)用范圍:工業(yè)自動(dòng)化、人機(jī)界面,、電機(jī)控制,、安防監(jiān)控、智能家居,、物聯(lián)網(wǎng),。

  4、晟矽微電子:主要提供8位,、32位MCU,,應(yīng)用范圍:小家電、消費(fèi)類電子,、遙控器,、鼠標(biāo)、鋰電池,、數(shù)碼產(chǎn)品,、汽車電子、醫(yī)療儀器及計(jì)量,、玩具,、工業(yè)控制、智能家居及安防等領(lǐng)域,。

  5,、芯海科技:主要提供16,、32位MCU,,應(yīng)用范圍:儀器儀表、物聯(lián)網(wǎng),、消費(fèi)電子,、家電、汽車電子,。

  6,、聯(lián)華集成電路:主要提供8位、16位MCU,,應(yīng)用范圍:消費(fèi)電子,、白色家電、工業(yè)控制,、通信設(shè)備,、汽車電子、計(jì)算機(jī),。

  7,、珠海建榮:主要提供8位MCU,應(yīng)用范圍:家用電器 ,、移動(dòng)電源,。

  8、炬芯科技:主要提供8位至32位MCU,,應(yīng)用范圍:平板電腦,、智能家居、多媒體,、藍(lán)牙,、wifi音頻。

  9,、愛思科微電子:主要提供8位,、16位MCU,應(yīng)用范圍:消費(fèi)類芯片,、通訊類芯片,、信息類芯片、家電,。

  10,、華芯微電子:主要提供8位、4位MCU,應(yīng)用范圍:衛(wèi)星接收器,、手機(jī)充電器,、萬(wàn)年歷、多合一遙控器,。

  11,、上海貝嶺(華大半導(dǎo)體控股):主要提供8位、16位,、32位MCU,,應(yīng)用范圍:計(jì)算機(jī)周邊、HDTV,、電源管理,、小家電、數(shù)字家電,。

  12,、海爾集成電路:主要提供14位、15位,、16位MCU,,應(yīng)用范圍:消費(fèi)電子、汽車電子,、工業(yè),、智能儀表。

  13,、北京君正:主要提供32位MCU,,應(yīng)用范圍:可穿戴式設(shè)備、物聯(lián)網(wǎng),、智能家電,、汽車、消費(fèi)類電子,、平板電腦,。

  14、中微半導(dǎo)體:主要提供8位MCU,,應(yīng)用范圍:智能家電,、汽車電子、安防監(jiān)控,、LED照明及景觀,、智能玩具、智能家居,、消費(fèi)類電子,。

  15、神州龍芯集成電路:主要提供32位MCU,應(yīng)用范圍:電力監(jiān)控,、智能電網(wǎng),、工業(yè)數(shù)字控制、物聯(lián)網(wǎng),、智能家居,、數(shù)據(jù)監(jiān)控,。

  16,、紫光微電子:主要提供8位、16位MCU,,應(yīng)用范圍:智能家電,。

  17、時(shí)代民芯:主要提供32位MCU,,應(yīng)用范圍:汽車導(dǎo)航,、交通監(jiān)控、漁船監(jiān)管,、電力電信網(wǎng)絡(luò),。

  18、華潤(rùn)矽科微電子(華潤(rùn)微旗下公司):主要提供8位,、16位MCU,,應(yīng)用范圍:消費(fèi)電子、工業(yè)控制,、家電,。

  19、國(guó)芯科技:主要提供32位MCU,,應(yīng)用范圍:信息安全領(lǐng)域 ,、辦公自動(dòng)化領(lǐng)域、通訊網(wǎng)絡(luò)領(lǐng)域,、 信息安全領(lǐng)域,。

  20、中天微:主要提供32位MCU,,應(yīng)用范圍:智能手機(jī),、數(shù)字電視、機(jī)頂盒,、汽車電子,、GPS、電子閱讀器,、打印機(jī),。

  21、華潤(rùn)微電子:主要提供8位、16位MCU,,應(yīng)用范圍:家電,,消費(fèi)類電子、工業(yè)自動(dòng)化控制的通用控制電路,。

  22,、中穎電子:主要提供4位、8位,、16位,、32位MCU,應(yīng)用范圍:家電,、電機(jī),。

  23、靈動(dòng)微電子:主要提供32位,,應(yīng)用范圍:電機(jī)控制,、藍(lán)牙控制、高清顯示,、無(wú)線充,、無(wú)人機(jī)、微型打印機(jī),、智能標(biāo)簽,、電子煙、LED點(diǎn)陣屏等,。

  24,、新唐科技:主要提供8位MCU,應(yīng)用范圍:照明,、物聯(lián)網(wǎng)等,。

  25、東軟載波:主要提供8位,、32位MCU,,應(yīng)用范圍:家電、智能家居,、儀器儀表,、液晶面板控制器、工業(yè)控制等,。

  26,、貝特萊:主要提供32位MCU,應(yīng)用范圍:智能家居,、工業(yè)控制以及消費(fèi)類產(chǎn)品領(lǐng)域,。

  27,、笙泉科技:主要提供8位MCU,應(yīng)用范圍:車用,、教育,、工控、醫(yī)療等中小型顯示面板,。

  28,、航順芯片:主要提供8位、32位MCU,,應(yīng)用范圍:汽車,、物聯(lián)網(wǎng)等。

  29,、復(fù)旦微電子:主要提供16位,、32位MCU,應(yīng)用范圍:智能電表,、智能門鎖等。

  30,、華大半導(dǎo)體:主要提供8位,、16位、32位MCU,,應(yīng)用范圍:工業(yè)控制,、智能制造、智慧生活及物聯(lián)網(wǎng)等,。

  ▍中國(guó)臺(tái)灣地區(qū)

  1,、宏晶科技:主要提供32位MCU。應(yīng)用范圍:通信,、工業(yè)控制,、信息家電、語(yǔ)音,。

  2,、盛群半導(dǎo)體:主要提供8位、32位MCU,。應(yīng)用范圍:消費(fèi)電子,、LED照明等。

  3,、凌陽(yáng)科技:主要提供8位,、16位MCU。應(yīng)用范圍:家庭影音,。

  4,、中穎電子:主要提供4位,、8位MCU。應(yīng)用范圍:充電器,、移動(dòng)電源,、家電、工業(yè)控制,。

  5,、松翰科技:主要提供8位、32位MCU,。應(yīng)用范圍:搖控器,、智能型充電器、大小系統(tǒng),、電子秤,、耳溫槍、血壓計(jì),、胎壓計(jì),、各類量測(cè)及健康器材。

  6,、華邦電子:主要提供8位,、16位MCU。應(yīng)用范圍:車用電子,、工業(yè)電子,、網(wǎng)絡(luò)、計(jì)算機(jī),、消費(fèi)電子,、物聯(lián)網(wǎng)。

  7,、十速科技:主要提供4位,、8位、51位MCU,。應(yīng)用范圍:遙控器,、小家電。

  8,、佑華微電子:主要提供4位,、8位MCU。應(yīng)用范圍:錄音集成電路產(chǎn)品,、消費(fèi)電子,、家用產(chǎn)品。

  9,、應(yīng)廣科技單片機(jī):主要提供4位,、8位MCU,。應(yīng)用范圍:機(jī)械、自動(dòng)化,、家電,、機(jī)器人。

  10,、義隆電子:主要提供8位,、16位MCU。應(yīng)用范圍:消費(fèi)電子,、電腦,、智能手機(jī)。

  0 5

  單片機(jī)的學(xué)習(xí)竅門

  任何一款MCU,,其基本原理和功能都是大同小異,,所不同的只是其外圍功能模塊的配置及數(shù)量、指令系統(tǒng)等,。

  對(duì)于指令系統(tǒng),,雖然形式上看似千差萬(wàn)別,但實(shí)際上只是符號(hào)的不同,,其所代表的含義,、所要完成的功能和尋址方式基本上是類似的。

  要了解一款MCU,,首先需要知道就是其ROM空間、RAM空間,、IO口數(shù)量,、定時(shí)器數(shù)量和定時(shí)方式、所提供的外圍功能模塊(Peripheral Circuit),、中斷源,、工作電壓及功耗等等。

  了解這些MCU Features后,,接下來(lái)第一步就是將所選MCU的功能與實(shí)際項(xiàng)目開發(fā)的要求的功能進(jìn)行對(duì)比,,明確哪些資源是目前所需要的,哪些是本項(xiàng)目所用不到的,。

  對(duì)于項(xiàng)目中需要用到的而所選MCU不提供的功能,,則需要認(rèn)真理解MCU的相關(guān)資料,以求用間接的方法來(lái)實(shí)現(xiàn),,例如,,所開發(fā)的項(xiàng)目需要與PC機(jī)COM口進(jìn)行通訊,而所選的MCU不提供UART口,,則可以考慮用外部中斷的方式來(lái)實(shí)現(xiàn),。

  對(duì)于項(xiàng)目開發(fā)需要用到的資源,,則需要對(duì)其Manua*進(jìn)行認(rèn)真的理解和閱讀,而對(duì)于不需要的功能模塊則可以忽略或?yàn)g覽即可,。對(duì)于MCU學(xué)習(xí)來(lái)講,,應(yīng)用才是關(guān)鍵,也是最主要的目的,。

  明確了MCU的相關(guān)功能后,,接下來(lái)就可以開始編程了。

  對(duì)于初學(xué)者或初次使用此款MCU的設(shè)計(jì)者來(lái)說(shuō),,可能會(huì)遇到很多對(duì)MCU的功能描述不明確的地方,,對(duì)于此類問(wèn)題,可以通過(guò)兩種方法來(lái)解決,,一種是編寫特別的驗(yàn)證程序來(lái)理解資料所述的功能,;另一種則可以暫時(shí)忽略,單片機(jī)程序設(shè)計(jì)中則按照自己目前的理解來(lái)編寫,,留到調(diào)試時(shí)去修改和完善,。前一種方法適用于時(shí)間較寬松的項(xiàng)目和初學(xué)者,而后一種方法則適合于具有一定單片機(jī)開發(fā)經(jīng)驗(yàn)的人或項(xiàng)目進(jìn)度較緊迫的情況,。

  指令系統(tǒng)千萬(wàn)不要特別花時(shí)間去理解,。指令系統(tǒng)只是一種邏輯描述的符號(hào),只有在編程時(shí)根據(jù)自己的邏輯和程序的邏輯要求來(lái)查看相關(guān)的指令即可,,而且隨著編程的進(jìn)行,,對(duì)指令系統(tǒng)也會(huì)越來(lái)越熟練,甚至可以不自覺地記憶下來(lái),。

  0 6

  單片機(jī)的程序編寫

  MCU的程序的編寫與PC下的程序的編寫存在很大的區(qū)別,,雖然現(xiàn)在基于C的MCU開發(fā)工具越來(lái)越流行,但對(duì)于一個(gè)高效的程序代碼和喜歡使用匯編的設(shè)計(jì)者來(lái)講,,匯編語(yǔ)言仍然是最簡(jiǎn)潔,、最有效的編程語(yǔ)言。

  對(duì)于MCU的程序編寫,,其基本的框架可以說(shuō)是大體一致的,,一般分為初始化部分(這是MCU程序設(shè)計(jì)與PC最大的不同),主程序循環(huán)體和中斷處理程序三大部分,,其分別說(shuō)明如下:

  1,、初始化:對(duì)于所有的MCU程序的設(shè)計(jì)來(lái)講,初始化是最基本也是最重要的一步,,一般包括如下內(nèi)容:

  屏蔽所有中斷并初始化堆棧指針:初始化部分一般不希望有任何中斷發(fā)生,。

  清除系統(tǒng)的RAM區(qū)域和顯示Memory:雖然有時(shí)可能沒有完全的必要,但從可靠性及一致性的角度出發(fā),,特別是對(duì)于防止意外的錯(cuò)誤,,還是建議養(yǎng)成良好的編程習(xí)慣,。

  IO口的初始化:根據(jù)項(xiàng)目的應(yīng)用的要求,設(shè)定相關(guān)IO口的輸入輸出方式,,對(duì)于輸入口,,需要設(shè)定其上拉或下拉電阻;對(duì)于輸出口,,則必須設(shè)定其初始的電平輸出,,以防出現(xiàn)不必要的錯(cuò)誤。

  中斷的設(shè)置:對(duì)于所有項(xiàng)目需要用到的中斷源,,應(yīng)該給予開啟并設(shè)定中斷的觸發(fā)條件,,而對(duì)于不使用的多余的中斷,則必須給予關(guān)閉,。

  其他功能模塊的初始化:對(duì)于所有需要用到的MCU的外圍功能模塊,,必須按項(xiàng)目的應(yīng)用的要求進(jìn)行相應(yīng)的設(shè)置,如UART的通訊,,需要設(shè)定Baud Rate,,數(shù)據(jù)長(zhǎng)度,校驗(yàn)方式和Stop Bit的長(zhǎng)度等,,而對(duì)于Programmer Timer,,則必須設(shè)置其時(shí)鐘源,分頻數(shù)及Reload Data等,。

  參數(shù)的初始化:完成了MCU的硬件和資源的初始化后,,接下來(lái)就是對(duì)程序中使用到的一些變量和數(shù)據(jù)的初始化設(shè)置,這一部分的初始化需要根據(jù)具體的項(xiàng)目及程序的總體安排來(lái)設(shè)計(jì),。對(duì)于一些用EEPROM來(lái)保存項(xiàng)目預(yù)制數(shù)的應(yīng)用來(lái)講,,建議在初始化時(shí)將相關(guān)的數(shù)據(jù)拷貝到MCU的RAM,以提高程序?qū)?shù)據(jù)的訪問(wèn)速度,,同時(shí)降低系統(tǒng)的功耗(原則上,訪問(wèn)外部EEPROM都會(huì)增加電源的功耗),。

  2,、主程序循環(huán)體:大多數(shù)MCU是屬于長(zhǎng)時(shí)間不間斷運(yùn)行的,因此其主程序體基本上都是以循環(huán)的方式來(lái)設(shè)計(jì),,對(duì)于存在多種工作模式的應(yīng)用來(lái)講,,則可能存在多個(gè)循環(huán)體,相互之間通過(guò)狀態(tài)標(biāo)志來(lái)進(jìn)行轉(zhuǎn)換,。對(duì)于主程序體,,一般情況下主要安排如下的模塊:

  計(jì)算程序:計(jì)算程序一般比較耗時(shí),因此堅(jiān)決反對(duì)放在任何中斷中處理,,特別是乘除法運(yùn)算,。

  實(shí)時(shí)性要求不高或沒有實(shí)時(shí)性要求的處理程序,;

  顯示傳輸程序:主要針對(duì)存在外部LED、LCD Driver的應(yīng)用,。

  3,、中斷處理程序:中斷程序主要用于處理實(shí)時(shí)性要求較高的任務(wù)和事件,如,,外部突發(fā)性信號(hào)的檢測(cè),,按鍵的檢測(cè)和處理,定時(shí)計(jì)數(shù),,LED顯示掃描等,。

  一般情況下,中斷程序應(yīng)盡可能保證代碼的簡(jiǎn)潔和短小,,對(duì)于不需要實(shí)時(shí)去處理的功能,,可以在中斷中設(shè)置觸發(fā)的標(biāo)志,然后由主程序來(lái)執(zhí)行具體的事務(wù)――這一點(diǎn)非常重要,,特別是對(duì)于低功耗,、低速的MCU來(lái)講,必須保證所有中斷的及時(shí)響應(yīng),。

  4,、對(duì)于不同任務(wù)體的安排,不同的MCU其處理的方法也有所不同:

  例如,,對(duì)于低速,、低功耗的MCU(Fosc=32768Hz)應(yīng)用,考慮到此類項(xiàng)目均為手持式設(shè)備和采用普通的LCD顯示,,對(duì)按鍵的反應(yīng)和顯示的反應(yīng)要求實(shí)時(shí)性較高,,因此一般采用定時(shí)中斷的方式來(lái)處理按鍵的動(dòng)作和數(shù)據(jù)的顯示;而對(duì)于高速的MCU,,如Fosc》1MHz的應(yīng)用,,由于此時(shí)MCU有足夠的時(shí)間來(lái)執(zhí)行主程序循環(huán)體,因此可以只在相應(yīng)的中斷中設(shè)置各種觸發(fā)標(biāo)志,,并將所有的任務(wù)放在主程序體中來(lái)執(zhí)行,。

  5、在MCU的程序設(shè)計(jì)中,,還需要特別注意的一點(diǎn)就是:

  要防止在中斷和主程序體中同時(shí)訪問(wèn)或設(shè)置同一個(gè)變量或數(shù)據(jù)的情況,。有效的預(yù)防方法是,將此類數(shù)據(jù)的處理安排在一個(gè)模塊中,,通過(guò)判斷觸發(fā)標(biāo)志來(lái)決定是否執(zhí)行該數(shù)據(jù)的相關(guān)操作,;而在其他的程序體中(主要是中斷),對(duì)需要進(jìn)行該數(shù)據(jù)的處理的地方只設(shè)置觸發(fā)的標(biāo)志。――這可以保證數(shù)據(jù)的執(zhí)行是可預(yù)知和唯一的,。

  0 7

  工程師對(duì)單片機(jī)編程的總結(jié)

  1,、要養(yǎng)成總結(jié)的好習(xí)慣,總結(jié)不僅是對(duì)自己學(xué)習(xí)的一個(gè)總結(jié),,還是對(duì)學(xué)習(xí)過(guò)程的一個(gè)回顧與加深,,還可避免第二次犯錯(cuò)。

  2,、編寫程序之前先要有一個(gè)對(duì)該項(xiàng)目熟悉的了解,,做到心中有數(shù),列一個(gè)大致框架,。仔細(xì)推敲該怎么布局,,怎樣布局最合理,該步驟很重要,。要分析先做哪個(gè)模塊,,具體到該模塊的具體步驟,各個(gè)函數(shù)怎么命名,,與其他模塊的銜接等,。最好拿張紙記下重要過(guò)程。

  3,、對(duì)于c語(yǔ)言的模塊化編程,,要先分好各個(gè)模塊,一個(gè)模塊一個(gè)模塊的編程,,確定一個(gè)順序,,按順序來(lái),該模塊成功之后再編寫下一個(gè),。對(duì)于頭文件,,當(dāng)該模塊編寫好之后再編寫該模塊的頭文件。

  4,、出現(xiàn)警告不要忽視,,說(shuō)明該程序一定有不合理之處,要弄清其來(lái)源,,找到解決辦法,。找來(lái)源時(shí)要有針對(duì)性,可上網(wǎng)搜一下該方面的資料,,或向別人請(qǐng)教。例如,,居然把另一個(gè)工程內(nèi)的main函數(shù)加入了這個(gè)工程,。還有居然函數(shù)命名重復(fù)。還有根據(jù)實(shí)驗(yàn)現(xiàn)象分析原因,層層遞進(jìn),。還有端口定義時(shí)居然選錯(cuò)了接口,。有時(shí),實(shí)在解決不了就休息一下,,在想也挺好的,。再簡(jiǎn)單的地方也要注意一下,都有可能出錯(cuò),。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]