「現在都是什麼年代了,你還在學單片機?早就該學嵌入式系統了,Linux和FPGA了。什麼,你學的還是51單片機,這個單片機可能比你老爸年紀還大,還學它幹嘛?你這不是1949年參加Guo軍,1912年入宮做『大內總管』嗎?」。無意間聽到的這段對話,引出了我的一番思考,現在學單片機,尤其是8位的51單片機,真的是窮途末路了嗎?
低成本晶片的主戰場
當下的電子,嵌入式行業發展中,單片機的用量越來越大,應用領域越來越廣,小到20元左右的玩具,達到成百上千萬的醫療設備,無不在使用單片機。當然,廣闊的市場是一塊天生自帶誘人香味的披薩,越來越多的廠商追逐到這塊披薩的分配中去。與國外老牌的那幾家半導體公司(英飛凌,TI,NXP,Microchip,意法半導體)相比,國內廠商的成長更具有活力,目前世界上的半導體廠商中,有70%以上是根正苗紅的大陸企業。這些企業的產品為了加速研發周期,採用了兩種主流的方式:
購買現成的arm-cortex Mx核心,自己擴充外圍來設計單片機;使用專利到期的51單片機核心。與前幾年單片機廠商各自推出各自的核心不同,最近幾年的市場上的晶片內核架構正在逐漸收縮,主流的大廠除了保留自身研發的架構之外,其他採用的架構就只有兩種,即51和ARM-Cortex Mx。
ARM-Cortex Mx核心基本上是各大國際半導體巨頭的標配,TI,NXP,英飛凌,Microchip等公司多多少少都有幾款或者幾個系列的ARM Cortex M核心的晶片。而且現階段的RISC-V架構離商用普及還有一段路要走,無法做到和ARM的正面競爭,因此32位低中高端市場基本上全部被ARM佔據。
32位機以外的市場卻是另一番景象,早些年還有一些各大廠商自主研發的核心,如PIC,AVR,STM8等,但是現在再去看看,出一些日系韓系的單片機除外,大多小公司都有51內核的單片機。就連之前以穩定性著稱的AVR單片機,也隨著Atmel被收購的結局而收場,只用在一些arduino板卡上面。
51單片機的蛻變
此「51」並非彼「51」,總所周知,從1980年第一款INTEL MCS-8051單品就問世,到後來的AT89C51,AT89C52,「51」單片機除了內部的程序存儲器從EPROM發展成了FLASH之外,其餘的無論是時鐘系統,還是RAM容量,ROM容量,幾乎沒有任何改變。然而隨著STC(宏晶)推出了第一款帶串口ISP STC89C52之後,國產51單片機就走上了飛速發展之路,從最早的ISP,到後來的1T,到現在的多外設(如SPI,I2C,PWM等),性能越來越強大。
縱觀國產51單片機的發展,有3個最明顯的特點:
快速化,即克服了51單片機內核固有的12分頻缺點,提高了主頻,遠遠超出了之前的1M頻率。大容量化,即大大增加了容量,從最早的128位元組內存向外擴展,目前最大的數據存儲器有64K,而程序存儲器也擴展到了64K。集成化,即大大提高了51單片機的片上外設,早期的51單片機算得上外設的,可能只有兩個定時計數器,兩個串口,兩個中斷。而現在的增強型51單片機的外設真可謂琳琅滿目,如SPI,I2C,ADC等等,都已經作為了標配。
說了以上這麼多,增強型的51單片機目前在各行各業的優勢有以下幾點:
開發簡單,開發成本低;應付一些簡單需求足以;性能大大增加,價格大大降低;因此,目前為止,51單片機這一種8位機還是會且長期會在某些領域被廣泛應用,比如開關電源,充電器,電動玩具,個別消費類電子產品等。
如果現在有人問我,我要開始學習單片機,應該從那一塊入門,我依然會推薦他51單片機,並不是因為51單片機好上手(事實上Keil C51還不是標準的C語言,編程起來更加不順手),因為51單片機內部的結構非常簡單,非常適合你去學習某一塊晶片的內核。