单片机科普-单片机解密(史上最强单片机科普)

单片机发展简史
单片机涌现的历史并不长,但发展十分迅猛。 它的发生与发展和微处置器(CPU)的发生与发展大体同步,自1971年美国英特尔公司首先推出4位微处置器以来,它的发展到目前为止大致可分为5个阶段。下面以英特尔公司的单片机发展为代表加以介绍。
1971年~1976年
单片机发展的初级阶段。 1971年11月英特尔公司首先设计出集成度为2000只晶体管/片的4位微处置器英特尔4004,并配有RAM、 ROM和移位存放器, 构成了第一台MCS—4微处置器, 而后又推出了8位微处置器英特尔8008, 以及其它各公司相继推出的8位微处置器。
1976年~1980年
低性能单片机阶段。 以1976年英特尔公司推出的MCS—48系列为代表, 采取将8位CPU、 8位并行I/O接口、8位定时/计数器、RAM和ROM等集成于一块半导体芯片上的单片构造, 虽然其寻址规模有限(不大于4 KB), 也没有串行I/O, RAM、 ROM容量小, 中止体系也较简略, 但功效可满足一般工业掌握和智能化仪器、仪表等的须要。
1980年~1983年
高性能单片机阶段。 这一阶段推出的高性能8位单片机广泛带有串行口,有多级中止处置体系, 多个16位定时器/计数器。片内RAM、 ROM的容量加大,且寻址规模可达64 KB,个别片内还带有A/D转换接口。
1983年~80年代末
16位单片机阶段。 1983年英特尔公司又推出了高性能的16位单片机MCS-96系列,由于其采取了最新的制作工艺, 使芯片集成度高达12万只晶体管/片。
1990年代
单片机在集成度、功效、速度、可靠性、运用范畴等全方位向更高程度发展。
单片机的分类及运用
MCU按其存储器类型可分为无片内ROM型和带片内ROM型两种。对于无片内ROM型的芯片,必需外接EPROM能力运用(典范为8031);带片内ROM型的芯片又分为片内EPROM型(典范芯片为87C51)、MASK片内掩模ROM型(典范芯片为8051)、片内Flash型(典范芯片为89C51)等类型。
按用处可分为通用型和专用型;依据数据总线的宽度和一次可处置的数据字节长度可分为8、16、32位MCU。
目前,国内MCU运用市场最普遍的是花费电子范畴,其次是工业范畴、和汽车电子市场。花费电子包含家用电器、电视、游戏机和音视频体系等。工业范畴包含智能家居、主动化、医疗运用及新能源生成与分配等。汽车范畴包含汽车动力总成和安全掌握体系等。
单片机的根本功效
对于绝大多数MCU,下列功效是最广泛也是最根本的,针对不同的MCU,其描写的方法可能会有差别,但实质上是根本雷同的:
TImer(定时器):TImer的种类虽然比拟多,但可归纳为两大类:一类是固定时光间隔的TImer,即其定时的时光是由体系设定的,用户程序不可掌握,体系只供给几种固定的时光间隔给用户程序进行选择,如32Hz,16Hz,8Hz等,此类TImer在4位MCU中比拟常见,因此可以用来实现时钟、计时等相干的功效。
另一类则是Programmable Timer(可编程定时器),顾名思义,该类Timer的定时时光是可以由用户的程序来掌握的,掌握的方法包含:时钟源的选择、分频数(Prescale)选择及预制数的设定等,有的MCU三者都同时具备,而有的则可能是其中的一种或两种。此类Timer运用非常灵巧,实际的应用也千变万化,其中最常见的一种运用就是用其实现PWM输出。
由于时钟源可以自由选择,因此,此类Timer一般均与Event Counter(事件计数器)合在一起。
IO口:任何MCU都具有必定数目的IO口,没有IO口,MCU就失去了与外部沟通的渠道。依据IO口的可配置情形,可以分为如下几种类型:
纯输入或纯输出口:此类IO口有MCU硬件设计决议,只能是输入或输出,不可用软件来进行实时的设定。
直接读写IO口:如MCS-51的IO口就属于此类IO口。当履行读IO口指令时,就是输入口;当履行写IO口指令则主动为输出口。
程序编程设定输入输出方向的:此类IO口的输入或输出由程序依据实际的须要来进行设定,运用比拟灵巧,可以实现一些总线级的运用,如I2C总线,各种LCD、LED Driver的掌握总线等。
对于IO口的应用,主要的一点必需牢记的是:对于输入口,必需有明白的电平信号,确保不能浮空(可以通过增长上拉或下拉电阻来实现);而对于输出口,其输出的状况电平必需斟酌其外部的衔接情形,应保证在Standby或静态状况下不存在拉电流或灌电流。
外部中止:外部中止也是绝大多数MCU所具有的根本功效,一般用于信号的实时触发,数据采样和状况的检测,中止的方法由上升沿、降低沿触发和电平触发几种。外部中止一般通过输入口来实现,若为IO口,则只有设为输入时其中止功效才会开启;若为输出口,则外部中止功效将主动关闭(ATMEL的ATiny系列存在一些例外,输出口时也能触发中止功效)。外部中止的运用如下:
外部触发信号的检测:一种是基于实时性的请求,比如可控硅的掌握,突发性信号的检测等,而另一种情形则是省电的须要。
信号频率的测量,为了保证信号不被遗漏,外部中止是最幻想的选择。
数据的解码:在遥控运用范畴,为了下降设计的成本,经常须要采取软件的方法来对各种编码数据进行解码,如Manchester和PWM编码的解码。
按键的检测和体系的唤醒:对于进入Sleep状况的MCU,一般须要通过外部中止来进行唤醒,最根本的情势则是按键,通过按键的动作来发生电平的变更。
通信接口:MCU所供给的通信接口一般包含SPI接口,UART,I2C接口等,其分离描写如下:
SPI接口:此类接口是绝大多数MCU都供给的一种最资源网根本通信方法,其数据传输采取同步时钟来掌握,信号包含:SDI(串行数据输入)、SDO(串行数据输出)、SCLK(串行时钟)及Ready信号;有些情形下则可能没有Ready信号;此类接口可以工作在Master方法或Slave方法下,通俗说法就是看谁供给时钟信号,供给时钟的一方为Master,相反的一方则为Slaver。


UART(Universal Asynchronous Receive Transmit):属于最根本的一种异步传输接口,其信号线只有Rx和Tx两条,根本的数据格局为:Start Bit + Data Bit(7-bits/8-bits) + Parity Bit(Even, Odd or None) + Stop Bit(1~2Bit)。一位数据所占的时光称为Baud Rate(波特率)。


对于大多数的MCU来讲,数据为的长度、数据校验方法(奇校验、偶校验或无校验)、停滞位(Stop Bit)的长度及Baud Rate是可以通进程序编程进行灵巧设定。此类接口最常用的方法就是与PC机的串口进行数据通信。


I2C接口:I2C是由Philips开发的一种数据传输协定,同样采取2根信号来实现:SDAT(串行数据输入输出)和SCLK(串行时钟)。其最大的利益是可以在此总线上挂接多个装备,通过地址来进行辨认和拜访;I2C总线的一个最大的利益就是非常便利用软件通过IO口来实现,其传输的数据速率完整由SCLK来掌握,可快可慢,不像UART接口,有严厉的速率请求。


Watchdog(看门狗定时器):Watchdog也是绝大多数MCU的一种根本配置(一些4位MCU可能没有此功效),大多数的MCU的Watchdog只能许可程序对其进行复位而不能对其关闭(有的是在程序烧入时来设定的,如Microchip PIC系列MCU),而有的MCU则是通过特定的方法来决议其是否打开,如Samsung的KS57系列,只要程序拜访了Watchdog存放器,就主动开启且不能再被关闭。一般而言watchdog的复位时光是可以程序来设定的。Watchdog的最根本的运用是为MCU因为意外的故障而导致逝世机供给了一种自我恢复的才能。


单片机的学习窍门


任何一款MCU,其根本原理和功效都是大同小异,所不同的只是其外围功效模块的配置及数目、指令体系等。


对于指令体系,虽然情势上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功效和寻址方法根本上是相似的。


要懂得一款MCU,首先须要知道就是其ROM空间、RAM空间、IO口数目、定时器数目和定时方法、所供给的外围功效模块(Peripheral Circuit)、中止源、工作电压及功耗等等。


懂得这些MCU Features后,接下来第一步就是将所选MCU的功效与实际项目开发的请求的功效进行比较,明白哪些资源是目前所须要的,哪些是本项目所用不到的。


对于项目中须要用到的而所选MCU不供给的功效,则须要认真谛解MCU的相干资料,以求用间接的办法来实现,例如,所开发的项目须要与PC机COM口进行通信,而所选的MCU不供给UART口,则可以斟酌用外部中止的方法来实现。


对于项目开发须要用到的资源,则须要对其Manua*进行认真的懂得和浏览,而对于不须要的功效模块则可以疏忽或阅读即可。对于MCU学习来讲,运用才是症结,也是最重要的目标。


明白了MCU的相干功效后,接下来就可以开端编程了。


对于初学者或初次应用此款MCU的设计者来说,可能会遇到很多对MCU的功效描写不明白的处所,对于此类问题,可以通过两种办法来解决,一种是编写特殊的验证程序来懂得资料所述的功效;另一种则可以暂时疏忽,单片机程序设计中则依照自己目前的懂得来编写,留到调试时去修正和完美。前一种办法实用于时光较宽松的项目和初学者,而后一种办法则合适于具有必定单片机开发经验的人或项目进度较紧急的情形。


指令体系千万不要特殊花时光去懂得。指令体系只是一种逻辑描写的符号,只有在编程时依据自己的逻辑和程序的逻辑请求来查看相干的指令即可,而且随着编程的进行,对指令体系也会越来越熟练,甚至可以不自觉地记忆下来。


单片机的程序编写


MCU的程序的编写与PC下的程序的编写存在很大的差别,虽然现在基于C的MCU开发工具越来越风行,但对于一个高效的程序代码和爱好应用汇编的设计者来讲,汇编语言仍然是最简练、最有效的编程语言。


对于MCU的程序编写,其根本的框架可以说是大体一致的,一般分为初始化部分(这是MCU程序设计与PC最大的不同),主程序循环体和中止处置程序三大部分,其分离解释如下:


初始化:对于所有的MCU程序的设计来讲,降生化是最根本也是最主要的一步,一般包含如下内容:


屏蔽所有中止并初始化堆栈指针:初始化部分一般不愿望有任何中止产生。


消除体系的RAM区域和显示Memory:虽然有时可能没有完整的必要,但从可靠性及一致性的角度动身,特殊是对于防止意外的毛病,还是建议养成良好的编程习惯。


IO口的初始化:依据项目标运用的请求,设定相干IO口的输入输出方法,对与输入口,须要设定其上拉或下拉电阻;对于输出口,则必需设定其降生的电平输出,以防涌现不必要的毛病。


中止的设置:对于所有项目须要用到的中止源,应当给予开启并设定中止的触发条件,而对于不应用的过剩的中止,则必需给予关闭。


其他功效模块的初始化:对于所有须要用到的MCU的外围功效模块,必需按项目标运用的请求进行相应的设置,如UART的通信,须要设定Baud Rate,数据长度,校验方法和Stop Bit的长度等,而对于Programmer Timer,则必需设置其时钟源,分频数及Reload Data等。


参数的降生化:完成了MCU的硬件和资源的降生化后,接下来就是对程序中应用到的一些变量和数据的初始化设置,这一部分的初始化须要依据具体的项目及程序的总体支配来设计。对于一些用EEPROM来保留项目预制数的运用来讲,建议在初始化时将相干的数据拷贝到MCU的RAM,以进步程序对数据的拜访速度,同时下降体系的功耗(原则上,拜访外部EEPROM都会增长电源的功耗)。


主程序循环体:大多数MCU是属于长时光不间断运行的,因此其主程序体根本上都是以循环的方法来设计,对于存在多种工作模式的运用来讲,则可能存在多个循环体,相互之间通过状况标记来进行转换。对于主程序体,一般情形下重要支配如下的模块:


盘算程序:盘算程序一般比拟耗时,因此坚决反对放在任何中止中处置,特殊是乘除法运算。


显示传输程序:重要针对存在外部LED、LCD Driver的运用。


中止处置程序:中止程序重要用于处置实时性请求较高的义务和事件,如,外部突发性信号的检测,按键的检测和处置,定时计数,LED显示扫资源网描等。


一般情形下,中止程序应尽可能保证代码的简练和短小,对于不须要实时去处置的功效,可以在中止中设置触发的标记,然后由主程序来履行具体的事务――这一点非常主要,特殊是对于低功耗、低速的MCU来讲,必需保证所有中止的及时响应。


对于不同义务体的支配,不同的MCU其处置的办法也有所不同。


例如,对于低速、低功耗的MCU(Fosc=32768Hz)运用,斟酌到此类项目均为手持式装备和采取普通的LCD显示,对按键的反响和显示的反响请求实时性较高,应此一般采取定时中止的方法来处置按键的动作和数据的显示;而对于高速的MCU,如Fosc》1MHz的运用,由于此时MCU有足够的时光来履行主程序循环体,因此可以只在相应的中止中设置各种触发标记,并将所有的义务放在主程序体中来履行。


在MCU的程序设计中,还须要特殊注意的一点就是:要防止在中止和主程序体中同时拜访或设置同一个变量或数据的情形。有效的预防办法是,将此类数据的处置支配在一个模块中,通过断定触发资源网标记来决议是否履行该数据的相干操作;而在其他的程序体中(重要是中止),对须要进行该数据的处置的处所只设置触发的标记。――这可以保证数据的履行是可预知和唯一的。


全球主流单片机制作商


欧美地域


1、Freescale+NXP(飞思卡尔+恩智浦):荷兰,重要供给16位、32位MCU。运用规模:汽车电子、LED和普通照明、医疗保健、多媒体融会、家电和电动工具、楼宇主动化技巧电机掌握、电源和功率转换器、能源和智能电网、主动化、盘算机与通讯基本设施。


2、Microchip+Atmel(微芯科技+爱特梅尔):美国,重要供给16位、32位MCU。运用规模:汽车电子、工业用、电机掌握、汽车、楼宇主动化、家用电器、家庭娱乐、工业主动化、照明、物联网、智能能源、移动电子装备、盘算机外设。


3、Cypress+Spansion(赛普拉斯+飞索半导体):美国,重要供给8位、16位、32位MCU。运用规模:汽车电子、家用电器、医疗、花费类电子、通讯与电信、工业、无线。


4、ADI(亚德诺半导体):美国,重要供给8位、16位、32位MCU。运用规模:航空航天与国防、汽车运用 、楼宇技巧 、通讯 、花费电子 、能源 、医疗保健 、仪器仪表和测量 、电机、工业主动化 、安防。


5、Infineon(英飞凌):德国,重要供给16位、32位MCU。运用规模:汽车电子、花费电子、工程、商用和农用车辆、数据处置、电动交通、工业运用、医疗装备、移动装备、电机掌握与驱动、电源、面向摩托车电动自行车与小型电动车、智能电网、照明、太阳能体系解决计划、风能体系解决计划。


6、ST Microelectronics(意法半导体):意大利/法国,重要供给32位MCU。运用规模:LED和普通照明、交通运输、医疗保健、多媒体融会、家电和电动工具、楼宇主动化技巧电机掌握、电源和功率转换器、能源和智能电网、主动化、盘算机与通讯基本设施。


7、Qualcomm(高通):美国,重要供给16位,32位MCU。运用规模:智能手机、平板电脑、无线调制解调器。


8、Texas Instruments(德州仪器):美国,重要供给16位、32位MCU。运用规模:汽车电子、花费电子、医疗装备、移动装备、通讯。


9、Maxim(美信):美国,重要供给32位MCU。运用规模:汽车电子、花费电子、工业运用、安防。


日韩地域


1、Renesas(瑞萨):日本,重要供给16位、32位MCU。运用规模:电脑及外设、花费类电子、健康医疗电子、汽车电子、工业、通讯。


2、Toshiba(东芝):日本,重要供给16位、32位MCU。运用规模:汽车电子、工业用、电机掌握、无线通讯、移动电话、电脑与周边装备、影像及音视频、花费类(家电)、LED照明、安全、电源管理、娱乐装备。


3、Fujitsu(富士通):日本,重要供给32位MCU。运用规模:汽车、医疗、机械,家电。


4、Samsung Electronics(三星电子):韩国,重要供给16位、32位MCU。运用规模:汽车电子、工业用、电机掌握、汽车、楼宇主动化、家用电器、家庭娱乐、工业主动化、照明、物联网、智能能源、移动电子装备、盘算机外设。


台湾地域


1、宏晶科技:台湾,重要供给32位MCU。运用规模:通讯、工业掌握、信息家电、语音。


2、盛群半导体:台湾,重要供给8位、32位MCU。运用规模:花费电子、LED照明等。


3、凌阳科技:台湾,重要供给8位、16位MCU。运用规模:家庭影音。


4、中颖电子:台湾,重要供给4位、8位MCU。运用规模:充电器、移动电源、家电、工业掌握。


5、松翰科技:台湾,重要供给8位、32位MCU。运用规模:摇控器、智能型充电器、大小体系、电子秤、耳温枪、血压计、胎压计、各类量测及健康器材。


6、华邦电子:台湾,重要供给8位、16位MCU。运用规模:车用电子、工业电子、网络、盘算机、花费电子、物联网。


7、十速科技:台湾,重要供给4位、8位、51位MCU。运用规模:遥控器、小家电。


8、佑华微电子:台湾,重要供给4位、8位MCU。运用规模:录音集成电路产品、花费电子、家用产品。


9、应广科技单片机:台湾,重要供给4位、8位MCU。运用规模:机械、主动化、家电、机器人。


10、义隆电子:台湾,重要供给8位、16位MCU。运用规模:花费电子、电脑、智能手机。


大陆地域


1、希格玛微电子:重要供给32位MCU,运用规模:电信、制作、能源、交通、电力等。


2、珠海欧比特:重要供给32位MCU,运用规模:航空航天:星箭站船、飞翔器;高端工控:嵌入式盘算机;舰船掌握、工业掌握、电力装备、环境监控。


3、兆易创新:重要供给32位MCU,运用规模:工业主动化、人机界面、电机掌握、安防监控、智能家居、物联网。


4、晟矽微电子:重要供给8位、32位MCU,运用规模:小家电、花费类电子、遥控器、鼠标、锂电池、数码产品、汽车电子、医疗仪器及计量、玩具、工业掌握、智能家居及安防等范畴。


5、芯海科技:重要供给16、32位MCU,运用规模:仪器仪表、物联网、花费电子、家电、汽车电子。


6、联华集成电路:重要供给8位、16位MCU,运用规模:花费电子、白色家电、工业掌握、通讯装备、汽车电子、盘算机。


7、珠海建荣:重要供给8位MCU,运用规模:家用电器 、移动电源。


8、炬芯科技:重要供给8位至32位MCU,运用规模:平板电脑、智能家居、多媒体、蓝牙、wifi音频。


9、爱思科微电子:重要供给8位、16位MCU,运用规模:花费类芯片、通信类芯片、信息类芯片、家电。


10、华芯微电子:重要供给8位、4位MCU,运用规模:卫星吸收器、手机充电器、万年历、多合一遥控器。


11、上海贝岭(华大半导体控股):重要供给8位、16位、32位MCU,运用规模:盘算机周边、HDTV、电源管理、小家电、数字家电。


12、海尔集成电路:重要供给14位、15位、16位MCU,运用规模:花费电子、汽车电子、工业、智能仪表。


13、北京君正:重要供给32位MCU,运用规模:可穿戴式装备、物联网、智能家电、汽车、费类电子、平板电脑。


14、中微半导体:重要供给8位MCU,运用规模:智能家电、汽车电子、安防监控、LED照明及景观、智能玩具、智能家居、花费类电子。


15、神州龙芯集成电路:重要供给32位MCU,运用规模:电力监控、智能电网、工业数字掌握、物联网、智能家居、数据监控。


16、紫光微电子:重要供给8位、16位MCU,运用规模:智能家电。


17、时期民芯:重要供给32位MCU,运用规模:汽车导航、交通监控、渔船监管、电力电信网络。


18、华润矽科微电子(华润微旗下公司):重要供给8位、16位MCU,运用规模:花费电子、工业掌握、家电。


19、国芯科技:重要供给32位MCU,运用规模:信息安全范畴 、办公主动化范畴、通信网络范畴、 信息安全范畴。


20、中天微:重要供给32位MCU,运用规模:智能手机、数字电视、机顶盒、汽车电子、GPS、电子浏览器、打印机。


21、华润微电子:重要供给8位、16位MCU,运用规模:家电,花费类电子、工业主动化掌握的通用掌握电路。


22、中颖电子:重要供给4位、8位、16位、32位MCU,运用规模:家电、电机。


23、灵动微电子:重要供给32位,运用规模:电机掌握、蓝牙掌握、高清显示、无线充、无人机、微型打印机、智能标签、电子烟、LED点阵屏等。


24、新唐科技:重要供给8位MCU,运用规模:照明、物联网等。


25、东软载波:重要供给8位、32位MCU,运用规模:家电、智能家居、仪器仪表、液晶面板掌握器、工业掌握等。


26、贝特莱:重要供给32位MCU,运用规模:智能家居、工业掌握以及花费类产品范畴。


27、笙泉科技:重要供给8位MCU,运用规模:车用、教导、工控、医疗等中小型显示面板。


28、航顺芯片:重要供给8位、32位MCU,运用规模:汽车、物联网等。


29、复旦微电子:重要供给16位、32位MCU,运用规模:智能电表、智能门锁等。


30、华大半导体:重要供给8位、16位、32位MCU,运用规模:工业掌握、智能制作、智慧生涯及物联网等。

相关