MCU是Unit的缩写,中文称为微控制器,俗称单片机。 驱动电路全部集成在一块芯片上,形成芯片级计算机,可针对不同的应用场合进行不同的组合控制,如手机、PC外设、遥控器、汽车电子、工业步进电机、机器人手臂等控制等,可以看MCU的图。
微控制器发展简史
单片机的历史并不长,但发展却非常迅速。 它的生产和发展与微处理器(CPU)大致同步。 自1971年美国英特尔公司首次推出4位微处理器以来,其发展至今大致可分为五个阶段。 以下是Intel单片机发展的代表性介绍。
1971~1976
单片机发展的初级阶段。 1971年11月,Intel公司首先设计了4位微处理器Intel 4004,集成度为2000个晶体管/芯片,并配备了RAM、ROM和移位寄存器,构成了第一个MCS-4微处理器,随后又推出了8位微处理器。微处理器Intel 8008推出,各公司相继推出其他8位微处理器。
1976年~1980年
低性能MCU阶段。 以Intel公司1976年推出的MCS-48系列为代表,采用在一块半导体芯片上集成8位CPU、8位并行I/O接口、8位定时器/计数器、RAM和ROM的单片结构。它的寻址范围有限(不大于4 KB),没有串行I/O,RAM和ROM的容量较小,中断系统比较简单,但其功能可以满足一般工业控制和智能仪器仪表。
1980~1983
高性能微控制器阶段。 现阶段推出的高性能8位单片机一般都具有串口、多级中断处理系统以及多个16位定时器/计数器。 片内RAM和ROM容量加大,寻址范围可达64KB,个别芯片还带有A/D转换接口。
1983年~20世纪80年代末
16 位 MCU 级。 1983年,Intel公司推出高性能16位单芯片MCS-96系列。 由于采用了最新的制造技术,芯片集成度高达12万个晶体管/芯片。
20世纪90年代
单片机在集成度、功能、速度、可靠性、应用领域等各方面都在向更高水平发展。
单片机的分类及应用
根据其存储器类型,MCU可分为不带片内ROM和带片内ROM两种类型。 对于没有片上ROM的芯片,必须外接EPROM(一般为8031); 带有片上ROM的芯片又分为片上EPROM(典型芯片为87C51)、MASK片上掩膜ROM(典型芯片为87C51)、片上Flash型(典型芯片为89C51)等类型。
按用途可分为通用型和专用型; 根据数据总线的宽度和一次可以处理的数据字节的长度,可以分为8位、16位和32位MCU。
目前国内MCU应用市场应用最广泛的是消费电子领域,其次是工业领域和汽车电子市场。 消费电子产品包括家用电器、电视、游戏机、音频和视频系统等。 工业领域包括智能家居、自动化、医疗应用以及新能源发电和配电。 汽车领域包括汽车动力总成、安全控制系统等。
单片机的基本功能
对于大多数MCU来说,以下功能是最常见和基本的。 对于不同的MCU,描述可能有所不同,但本质上基本相同:
TImer(定时器):虽然TImer的种类很多,但可以分为两类:一类是固定时间间隔的TImer,即它的定时由系统设定,用户程序无法控制。 系统只提供了几种固定的时间间隔供用户程序选择,如32Hz、16Hz、8Hz等。这种TImer在4位MCU中比较常见,因此可以用来实现相关功能如时钟和计时。
另一种类型是Timer(可编程定时器)。 顾名思义,该类Timer的计时时间可以由用户的程序来控制。 控制方式包括:时钟源的选择、分频()和预制数的选择。有的MCU同时具备这三者,而有的MCU则可能只有其中一两个。 这种Timer的应用非常灵活,实际的使用也是千变万化。 最常见的应用之一是用它来实现PWM输出。
由于时钟源可以自由选择,因此此类Timer一般与Event(事件计数器)结合使用。
IO口:任何MCU都有一定数量的IO口。 没有IO口,MCU就失去了与外界的通信通道。 根据IO口的配置,可分为以下几种:
纯输入或纯输出口:此类IO口由MCU硬件设计决定,只能输入或输出,不能用软件进行实时设置。
直接读写IO口:例如MCS-51的IO口就属于此类IO口。 执行读IO口指令时,为输入口; 当执行写IO端口指令时,它自动成为输出端口。
程序编程设置输入输出方向:该类IO口的输入或输出由程序根据实际需要设置,应用比较灵活,可以实现一些总线级的应用,如I2C总线、各种LCD、LED控制总线等
对于IO口的使用,一定要牢记一点:对于输入口,必须有一个清晰的电平信号,保证不能悬空(可以通过加上拉或上拉来实现)下拉电阻); 对于输出端口楼宇自控系统需不需要电源,其输出状态电平必须考虑其外部连接,应保证在或静态状态下没有电流源或灌电流。
外部中断:外部中断也是大多数MCU的基本功能。 一般用于信号的实时触发、数据采样和状态检测。 中断有多种类型:上升沿、下降沿触发、电平触发。 外部中断一般通过输入端口来实现。 如果是IO口,只有设置为输入时才会启用中断功能; 如果是输出口,则外部中断功能会自动关闭(ATMEL的ATiny系列有部分例外,输出口也可以触发中断功能)。 外部中断的应用如下:
外部触发信号的检测:一是基于实时性要求,如可控硅的控制、突发信号的检测等,二是出于省电的需要。
对于信号频率的测量,为了保证不漏掉信号,外部中断是理想的选择。
数据解码:在远程控制应用领域,为了降低设计成本,往往需要使用软件对各种编码数据进行解码,例如采用PWM编码进行解码。
按键检测和系统唤醒:对于进入Sleep状态的MCU,一般需要通过外部中断来唤醒。 最基本的形式是按键,通过按键的动作产生电平变化。
通信接口:MCU提供的通信接口一般包括SPI接口、UART、I2C接口等,分别介绍如下:
SPI接口:此类接口是大多数MCU提供的最基本的通信方式。 其数据传输由同步时钟控制。 信号包括:SDI(串行数据输入)、SDO(串行数据输出)、SCLK(串行时钟)和Ready信号; 某些情况下,可能没有Ready信号; 这类接口可以工作在Mode或Slave模式,通俗的说法就是看谁提供时钟信号,提供时钟的一方是,对方是。
UART( ):属于最基本的异步传输接口。 它的信号线只有Rx和Tx。 基本数据格式为:起始位 + 数据位(7 位/8 位)+ 位(偶数、奇数或无)+ 停止位(1~2 位)。 一位数据所花费的时间称为Baud Rate(波特率)。
对于大多数MCU来说,数据的长度、数据的校验方式(奇校验、偶校验或无校验)、停止位(Stop Bit)的长度以及波特率都可以通过编程灵活设置。 当然。 此类接口最常用的方式是与PC机的串口进行通信。
I2C接口:I2C是公司开发的数据传输协议,也是由两个信号实现:SDAT(串行数据输入输出)和SCLK(串行时钟)。 它最大的优点是这条总线上可以连接多个设备,可以通过地址来识别和访问; I2C总线最大的好处之一就是可以非常方便地使用软件通过IO口来实现,而且它的传输数据速率完全由SCLK来控制,可以快也可以慢,不像UART接口,对速度有严格的要求。
(看门狗定时器):也是大多数MCU的基本配置(有些4位MCU可能没有这个功能),大多数MCU只能允许程序复位它而不能关闭它(有些是在程序被烧入,如PIC系列单片机),而有些单片机通过特定的方法来决定是否打开,如KS57系列,只要程序访问寄存器,就会自动打开,无法再次关闭。 一般来说,复位时间可以通过程序设定。 MCU最基本的应用是为MCU因意外故障而崩溃时提供自恢复能力。
单片机学习技巧
对于任何一个MCU来说,其基本原理和功能都是相似的,唯一的区别是其外围功能模块、指令系统等的配置和数量。
对于指令系统来说,虽然形式看起来有很大不同,但实际上只是符号的不同,它们所代表的含义、要完成的功能、寻址方法基本相似。
要了解一款MCU,首先需要了解它的ROM空间、RAM空间、IO口数量、定时器数量及计时方式、外围功能模块()、中断源、工作电压和功耗等。
了解了这些MCU之后,下一步就是将所选MCU的功能与实际项目开发所需的功能进行比较,明确当前项目中需要哪些资源,哪些资源没有使用。
对于项目中需要用到但所选MCU不提供的功能,需要仔细了解MCU的相关信息,才能间接实现。 例如,开发的项目需要与PC机的COM口进行通信。 如果所选MCU不提供UART口,可以通过外部中断的方式实现。
对于项目开发所需的资源,需要仔细理解和阅读Manua*,忽略或浏览不必要的功能模块。 对于单片机的学习来说,应用是关键,也是主要目的。
明确了单片机的相关功能后,下一步就是开始编程了。
对于初学者或者第一次使用这款MCU的设计者来说,可能会遇到很多MCU功能描述不清楚的地方。 对于此类问题,有两种解决方法。 一是编写专门的验证程序来了解数据中描述的功能; 另一个可以暂时忽略,单片机编程按照你目前的理解来写,留待调试时修改和完善。 前一种方法适合时间比较宽松的项目和初学者,而后一种方法适合有一定单片机开发经验的人或者项目进度比较紧急的时候。
命令系统一定不用专门花时间去理解。 指令系统只是逻辑描述的符号。 编程时只需根据自己的逻辑和程序的逻辑要求检查相关指令即可。 随着编程的进步,你对指令系统会越来越熟练。 不知不觉就记住了。
单片机编程
MCU程序的编程和PC程序的编程有很大的区别。 尽管基于C的MCU开发工具越来越流行,但对于高效的程序代码和喜欢使用汇编的设计者来说,汇编语言仍然是最简洁、高效的编程语言。
对于单片机编程来说,其基本框架可以说是大致相同的,一般分为三个部分:初始化部分(这是单片机编程与PC编程最大的区别)、主程序循环体和中断处理程序,分别是解释如下:
初始化:对于所有单片机程序的设计来说,诞生是最基本也是最重要的一步,一般包括以下几个部分:
屏蔽所有中断并初始化堆栈指针:初始化部分一般不希望发生任何中断。
清除系统的RAM区域和显示:虽然有时可能不是完全必要,但从可靠性和一致性的角度,特别是防止意外错误,建议养成良好的编程习惯。
IO口初始化:根据项目的应用需求,设置相关IO口的输入输出模式。 对于输入口,需要设置其上拉或下拉电阻; 对于输出端口,必须设置其出生级别输出,防止出现不必要的错误。
中断设置:对于工程中需要使用的所有中断源,应将其打开并设置中断的触发条件,而对于不使用的冗余中断,则必须将其关闭。
其他功能模块的初始化:对于需要使用的MCU的所有外围功能模块,必须根据项目的应用需求进行相应的设置,如UART通信、波特率、数据长度、校验方式和停止等需要设置 Bit 的长度等,而对于 Timer 则必须设置其时钟源、分频和 Data 等。
参数化:单片机硬件和资源完成后,下一步就是初始化程序中用到的一些变量和数据。 这部分的初始化需要根据具体项目以及程序的整体安排来设计。 。 对于一些用于保存工程预制数据的应用,建议在初始化时将相关数据复制到MCU的RAM中,以提高程序对数据的访问速度,降低系统功耗(原则上,接入外部会增加功耗)。
主程序循环体:大多数MCU都是长时间连续运行的,所以主程序体基本都是循环设计的。 对于多种工作模式的应用,可能存在多个循环体,并通过状态标志相互切换。 对于主程序体来说,一般安排以下模块:
计算程序:计算程序一般比较耗时,因此坚决反对任何中断处理,特别是乘法和除法运算。
显示传输程序:主要针对外接LED和LCD的应用。
中断处理程序:中断程序主要用于处理实时性要求较高的任务和事件,如外部突发信号的检测、按键的检测与处理、定时计数、LED显示扫描等。
一般来说,中断程序应使代码尽可能简洁和短小。 对于不需要实时处理的功能,可以在中断中设置触发标志,然后主程序就会执行具体的事务——这一点非常重要。 特别是对于低功耗、低速的MCU,需要保证对所有中断的及时响应。
对于不同任务体的安排,不同的MCU有不同的处理方式。
例如,对于低速、低功耗的MCU(Fosc=)应用,考虑到此类项目均为手持设备且使用普通LCD显示屏,对按钮和显示的响应要求较高的实时性。 定时中断用于处理按钮动作和数据显示; 而对于高速MCU,比如Fosc>1MHz的应用,由于此时MCU有足够的时间执行主程序循环体,所以只能在相应的中断中设置各种触发标志,并把所有的任务在主程序体中执行。
在MCU的程序设计中,还有一点需要特别注意,就是防止在中断和主程序体中同时访问或设置相同的变量或数据。 有效的预防方法是将此类数据的处理安排在一个模块中,通过判断触发标志来决定是否执行该数据的相关操作; 而在其他程序体(主要是中断)中,需要处理的数据处理处只设置触发标志。 - 这确保了数据的执行是可预测的和唯一的。
全球主流MCU厂商
欧洲和美洲
1.+NXP(飞思卡尔+NXP):荷兰,主要提供16位和32位MCU。 应用:汽车电子、LED 和普通照明、医疗保健、多媒体融合、家用电器和电动工具、楼宇自动化技术电机控制、电源和电源转换器、能源和智能电网、自动化、计算机和通信基础设施。
2.+Atmel( +Atmel):美国,主要提供16位和32位MCU。 应用领域:汽车电子、工业、电机控制、汽车、楼宇自动化、家用电器、家庭娱乐、工业自动化、照明、物联网、智能能源、移动电子、计算机外设。
3.+(+ ):美国,主要提供8位、16位、32位MCU。 应用:汽车电子、家用电器、医疗、消费电子、通信和电信、工业、无线。
4、ADI(阿诺半导体):美国主要提供8位、16位、32位MCU。 应用:航空航天和国防、汽车应用、建筑技术、通信、消费电子产品、能源、医疗保健、仪器仪表和测量、电动机、工业自动化、安全。
5.(英飞凌):德国,主要提供16位和32位MCU。 应用:汽车电子、消费电子、工程、商用和农用车辆、数据处理、电动汽车、工业应用、医疗设备、移动设备、电机控制和驱动、电源、电动自行车和摩托车小型电动车、智能电网、照明、太阳能系统解决方案、风能系统解决方案。
6. ST(意法半导体):意大利/法国,主要提供32位MCU。 应用:LED 和普通照明、交通、医疗保健、多媒体融合、家用电器和电动工具、楼宇自动化技术电机控制、电源和电源转换器、能源和智能电网、自动化、计算机和通信基础设施。
7.(高通):美国主要提供16位和32位MCU。 应用:智能手机、平板电脑、无线调制解调器。
8、德州(Texas ):美国主要提供16位和32位MCU。 应用领域:汽车电子、消费电子、医疗设备、移动设备、通讯。
9、美信(Maxim):美国主要提供32位MCU。 应用领域:汽车电子、消费电子、工业应用、安防。
日本、韩国
1.(瑞萨):日本主要提供16位和32位MCU。 应用领域:计算机及周边设备、消费电子、医疗保健电子、汽车电子、工业、通讯。
2.(东芝):日本主要提供16位和32位MCU。 应用领域:汽车电子、工业、电机控制、无线通讯、手机、电脑及周边设备、视频音视频、消费类(家电)、LED照明、安防、电源管理、娱乐设备。
3.(富士通):日本主要提供32位MCU。 应用范围:汽车、医疗、机械、家电。
4.(三星电子):韩国主要提供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.盈光科技MCU:台湾,主要提供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,应用范围包括工业控制、智能制造、智能生活和物联网等。