是MCU微控制器单元的缩写,中文叫微控制器,俗称MCU。就是适当降低CPU的频率和规格,将存储器、计数器、USB、A/D转换、UART、PLC、DMA,甚至LCD驱动电路等外设接口集成在一个芯片上,形成芯片级计算机,可以控制不同应用的不同组合,从手机、PC外设、遥控器到汽车电子、工业。

单片机发展简史

单片机的历史不长,但发展很快。它的产生和发展大致与微处理器(CPU)同步。自1971年英特尔公司首次推出4位微处理器以来,其发展至今大致可分为五个阶段。下面介绍一下Intel的单片机的发展。

1971 ~1976

单片机发展的初级阶段。1971年11月,Intel公司首先设计出每芯片集成2000个晶体管的4位微处理器Intel 4004,配以RAM、ROM和移位寄存器组成第一个MCS-4微处理器,随后推出8位微处理器Intel 8008,以及其他公司陆续推出的8位微处理器。

1976 ~1980

低性能单片机级。以Intel公司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位MCU级。1983年,英特尔推出了MCS-96系列高性能16位单片微型计算机。由于其最新的制造技术,芯片集成度达到了120,000个晶体管/芯片。

在1990年代

单片机在集成度、功能、速度、可靠性、应用领域等各个方向都向更高的水平发展。

单片机的分类及应用

单片机按其存储器类型可分为不带片内ROM和带片内ROM两种。对于没有片上ROM的芯片,应用前必须连接外部EPROM(一般为8031);片上ROM类型的芯片可分为片上EPROM型(典型芯片为87C51)、掩膜片上ROM型(典型芯片为8051)和片上Flash型(典型芯片为89C51)。

按用途可分为一般型和特殊型;根据数据总线的宽度和一次能处理的数据字节的长度,可分为8位、16位和32位MCU。

目前,国内MCU应用市场最广泛的是消费电子领域,其次是工业领域和汽车电子市场。电子消费包括家用电器、电视、游戏机、影音系统等。工业领域包括智能家居、自动化、医疗应用和新能源发电和配电。汽车领域包括汽车动力总成和安全控制系统等。

MCU的基本功能

对于绝大多数的单片机来说,下面这些功能是最常见最基本的。对于不同的MCU,描述方法可能不同,但本质基本相同:

定时器:虽然定时器有很多种,但大致可以分为两类:一类是固定时间间隔的定时器,即其计时时间由系统设定,用户程序无法控制。系统只提供几个固定的时间间隔供用户程序选择,如32Hz、16Hz、8Hz等。这种定时器在4位单片机中比较常见,可以用来实现时钟、定时等相关功能。

另一种是可编程定时器。顾名思义,这个定时器的定时可以通过用户的程序来控制。控制方法包括时钟源的选择、预分频的选择和预置数的设置等。有些MCU同时具备这三种特性,而有些则可能是其中的一种或两种。这种定时器的应用非常灵活,实际用途千变万化。最常见的应用之一就是用它来实现PWM输出。

由于可以自由选择时钟源,这种定时器通常与事件计数器相结合。

IO端口:任何MCU都有一定数量的IO端口。没有IO端口,MCU就失去了与外界通信的通道。根据IO口的可配置情况,可以分为以下几种:

纯输入或纯输出口:这种IO口是由MCU硬件设计决定的,只能输入或输出,不能通过软件实时设置。

直接读写IO口:如MCS-51的IO口就属于这种IO口。执行读取IO口的指令时,为输入口;当执行写IO端口指令时,它将自动成为输出端口。

编程设置输入输出方向:这类IO口的输入或输出由程序根据实际需要设置,应用灵活,可以实现一些总线级的应用,如I2C总线、各种LCD和LED驱动控制总线等。

对于IO口的使用,一定要记住:对于输入口,一定要有明确的电平信号,保证不能浮空(可以通过增加上拉或下拉电阻来实现);对于输出端口,其输出的状态电平必须考虑其外部连接,要保证待机或静态时没有拉电流或吸电流。

外部中断:外部中断也是大多数单片机的基本功能,一般用于信号的实时触发、数据采样和状态检测。中断模式由上升沿、下降沿和电平触发触发。外部中断一般通过输入端口实现。如果是IO口,其中断功能只有设置为输入时才会开启。如果是输出口,外部中断功能会自动关闭(ATMEL的ATiny系列有一些例外,使用输出口时也可以触发中断功能)。外部中断的应用如下:

外部触发信号的检测:一是基于实时性的要求,比如可控硅的控制,突发信号的检测,二是省电的需要。

在测量频率时,为了保证信号不被遗漏,外部中断是最理想的选择。

数据解码:在遥控应用领域,为了降低设计成本,往往需要使用软件对各种编码数据进行解码,如曼彻斯特和PWM编码。

按键检测和系统唤醒:一般进入睡眠状态的MCU需要通过外部中断唤醒,最基本的形式是按键,通过按键的动作产生电平的变化。

通信接口:单片机提供的通信接口一般有SPI接口、UART、I2C接口等。,分别描述如下:

SPI接口:这种接口是大多数单片机提供的最基本的通信方式,其数据传输受同步时钟控制。信号包括SDI(串行数据输入)、SDO(串行数据输出)、SCLK(串行时钟)和就绪信号;在某些情况下,可能没有就绪信号;这种接口可以在主模式或从模式下工作。通俗点说,就是看谁提供时钟信号。提供时钟的是主设备,另一个是从设备。

UART(通用异步接收发送):属于最基本的异步传输接口,信号线只有Rx和Tx。基本数据格式为:起始位数据位(7位/8位)奇偶校验位(偶数、奇数或无)停止位(1 ~ 2位)。一位数据占用的时间称为波特率。

对于大多数MCU,数据长度、数据校验模式(奇数校验、偶数校验或无校验)、停止位长度和波特率可以通过编程灵活设置。这种接口最常见的方式是与PC机的串口进行数据通信。

接口:I2C是飞利浦公司开发的数据传输协议。它也由两个信号实现:SDAT(串行数据输入和输出)和SCLK(串行时钟)。它最大的优点是可以在这条总线上连接多个设备,并且可以通过地址来识别和访问它们。I2C总线最大的一个优点就是通过IO口用软件实现非常方便。I2C总线传输的数据速率完全由SCLK控制,可快可慢。与UART接口不同,I2C总线有严格的速度要求。

看门狗(看门狗定时器):看门狗也是大部分MCU的基本配置(有些4位MCU可能没有这个功能)。大多数MCU的看门狗只能允许程序复位它,而不能关闭它(有些是在程序烧入时设置的,比如Microchip PIC系列MCU)。而有些MCU则以特定的方式决定是否开启,比如三星的KS57系列。只要程序访问看门狗寄存器,就会自动开启,不能再关闭。一般来说,看门狗的复位时间可以通过程序设置。Watchdog最基本的应用是为MCU提供因意外故障而崩溃的自我恢复能力。

单片机的学习技巧

任何MCU的基本原理和功能都是相似的。唯一不同的是其外围功能模块的配置、数量和指令系统。

对于指令系统来说,虽然看起来形式不同,但实际上只是符号不同而已。它们的含义、要完成的功能和寻址方式基本相似。

要了解一个MCU,首先需要知道它的ROM空室、RAM空室、IO口数量、定时器数量和定时方式、提供的外围电路、中断源、工作电压和功耗等。

了解了这些MCU的特性之后,接下来就是将所选MCU的功能与实际项目开发所需要的功能进行对比,明确目前需要哪些资源,哪些资源在本项目中没有用到。

对于项目中需要用到但所选MCU没有提供的功能,需要仔细了解MCU的相关信息,以便用间接的方法实现。例如,如果开发的项目需要与PC的COM口通信,而选用的MCU没有提供UART口,可以通过外部中断来实现。

对于项目开发所需的资源,需要仔细理解和阅读其手册,不必要的功能模块可以忽略或浏览。对于单片机学习来说,应用是关键,也是主要目的。

定义好MCU的相关功能后,就可以开始编程了。

对于初学者或者第一次使用这款单片机的设计师来说,可能会有很多对单片机功能的模糊描述。对于这样的问题,有两种方法可以解决。一种是编写专门的验证程序,理解数据中描述的功能;另一个可以暂时忽略,单片机程序设计按其目前的理解写,留待调试时修改完善。前一种方法适合时间比较宽松的项目和初学者,后一种方法适合有一定单片机开发经验的人或者项目进度比较紧迫的时候。

千万不要花特别的时间去理解说明书。指令系统只是一个逻辑描述的符号。编程时只能根据自己的逻辑和程序的逻辑要求去查相关指令。而且随着编程的进展,你会对指令系统越来越熟练,甚至不自觉的背下来。

单片机编程

单片机的编程和PC机的编程有很大的不同。虽然基于C的单片机开发工具越来越流行,但是对于一个高效的程序代码和喜欢用汇编的设计人员来说,汇编语言仍然是最简洁有效的编程语言。

对于单片机的编程,其基本框架可以说是大体一致的,一般分为三个部分:初始化部分(这是单片机编程与PC最大的区别)、主程序循环体和中断处理程序,解释如下:

初始化:对于所有单片机程序的设计来说,外化是最基本也是最重要的一步,一般包括以下内容:

屏蔽所有中断,初始化堆栈指针:初始化部分一般不希望有任何中断。

清空系统的RAM区域和显示内存:虽然有时候可能不完全需要,但是从可靠性和一致性的角度,特别是为了防止意外错误,建议养成良好的编程习惯。

IO口初始化:根据项目的应用需求,设置相关IO口的输入输出模式,设置输入口的上拉或下拉电阻;对于输出端口,需要设置其原始电平输出,以防止不必要的错误。

中断设置:打开项目需要的所有中断源,设置中断的触发条件,不使用的不必要中断必须关闭。

其他功能模块的初始化:所有需要使用的MCU外围功能模块都必须根据项目的应用需求进行设置,如UART通信、波特率、数据长度、校验模式、停止位长度等。,而对于编程器定时器,必须设置其时钟源、分频数和重载数据。

参数外化:MCU的硬件和资源外化后,下一步就是初始化程序中用到的一些变量和数据。这部分的初始化需要根据具体项目和程序的整体安排来设计。对于一些使用EEPROM保存预设项目数的应用,建议在初始化时将相关数据复制到MCU的RAM中,以提高程序对数据的访问速度,降低系统功耗(原则上访问外部EEPROM会增加电源功耗)。

主程序循环:大多数单片机都是长时间连续运行的,所以它的主程序基本上是以循环的方式设计的。对于有多种工作模式的应用,可能会有多个循环体,通过状态标志进行转换。对于主程序体,通常主要安排以下模块:

计算程序:计算程序一般比较耗时,所以坚决反对任何中断,尤其是乘除法。

传输程序:主要用于带外置LED和LCD驱动器的应用。

中断处理程序:中断程序主要用于处理实时性要求高的任务和事件,如外部突发信号检测、按键检测与处理、定时计数、LED显示屏扫描等。

一般来说,中断程序应该保持代码尽可能的简洁。对于不需要实时处理的功能,可以在中断中设置触发标志,然后由主程序执行具体的事务——这一点非常重要,尤其是对于低功耗低速的MCU,必须保证所有中断的及时响应。

对于不同任务体的安排,不同MCU的处理方式也不同。

比如对于低速低功耗MCU(Fosc=32768Hz)的应用,考虑到这些项目都是手持设备和普通的LCD显示器,对按键和显示器的响应要求实时性很高。因此,一般采用定时中断来处理按键动作和数据显示。对于高速MCU,如Fosc》1MHz的应用,由于此时MCU有足够的时间执行主程序循环,所以各种触发标志只能在相应的中断中设置,所有任务都可以在主程序中执行。

在单片机的编程中,还需要特别注意防止在中断和主程序体中同时访问或设置同一个变量或数据。有效的防范方法是将此类数据的处理安排在一个模块中,通过判断触发标志来决定是否执行数据的相关操作;在其他程序中(主要是中断),只对需要处理数据的地方设置触发标志。――这可以确保数据的执行是可预测的和唯一的。

全球主流MCU制造商

欧美地区

1.飞思卡尔恩智浦(Freescale NXP):荷兰,主要提供16位和32位MCU。应用:汽车电子、LED和普通照明、医疗保健、多媒体融合、家用电器和电动工具、建筑自动化技术的电机控制、电源和功率转换器、能源和智能电网、自动化、计算机和通信基础设施。

2.微芯片Atmel(微芯片技术爱特梅尔):美国,主要提供16位和32位MCU。应用领域:汽车电子、工业应用、电机控制、汽车、楼宇自动化、家用电器、家庭娱乐、工业自动化、照明、物联网、智能能源、移动电子设备、计算机外设。

3.Cypress Spansion:美国,主要提供8位、16位、32位MCU。应用:汽车电子、家用电器、医疗、消费电子、通讯和电信、工业、无线。

4.ADI(雅德诺半导体):美国,主要提供8位、16位、32位MCU。应用:航空空航空航天和国防、汽车应用、建筑技术、通信、消费电子、能源、医疗保健、仪器仪表和测量、电机、工业自动化、安全。

5.英飞凌(Infineon):德国,主要提供16位和32位MCU。应用领域:汽车电子、消费电子、工程、商用车和农用车、数据处理、电动交通、工业应用、医疗设备、移动设备、电机控制和驱动、电源、电动自行车和摩托车用小型电动汽车、智能电网、照明、太阳能系统解决方案、风能系统解决方案。

6.ST微电子(ST Microelectronics):意大利/法国,主要提供32位MCU。应用:LED和普通照明、交通、医疗保健、多媒体融合、家用电器和电动工具、建筑自动化技术的电机控制、电源和功率转换器、能源和智能电网、自动化、计算机和通信基础设施。

7.高通:美国,主要提供16位和32位MCU。应用:智能手机,平板电脑,无线调制解调器。

8.德州仪器:美国,主要提供16位和32位MCU。应用:汽车电子,消费电子,医疗设备,移动设备,通信。

9.美心(Maxim):美国,主要提供32位MCU。应用:汽车电子,消费电子,工业应用,安全。

日本和韩国

1.瑞萨(Renesas):日本主要提供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。应用:记录IC产品,消费电子,家用产品。

9.英光科技的单片机:台湾省,主要提供4位和8位MCU。应用:机械、自动化、家用电器、机器人。

10.埃隆电子:台湾省,主要提供8位和16位MCU。应用:消费电子,电脑,智能手机。

大陆地区

1.适马微电子:主要提供32位MCU,应用范围:电信、制造、能源、交通、电力等。

2.珠海Obit:主要提供32位MCU,应用范围为:航空空航天:星箭站船舶、飞机;高端工业控制:嵌入式计算机;船舶控制、工业控制、电力设备、环境监测。

3.赵一创新:主要提供32位MCU,应用范围:工业自动化、人机界面、电机控制、安防监控、智能家居、物联网。

4.嵊泗微电子:主要提供8位和32位MCU,应用范围:小家电、消费电子、遥控器、鼠标、锂电池、数码产品、汽车电子、医疗仪器与测量、玩具、工业控制、智能家居、安防等领域。

5.新海科技:主要提供16位和32位MCU,应用范围:仪器仪表、物联网、消费电子、家电、汽车电子。

6.联华IC:主要提供8位和16位MCU,应用范围:消费电子、白色家电、工业控制、通讯设备、汽车电子、计算机。

7.珠海荣剑:主要提供8位MCU,应用范围是家用电器和移动电源。

8.聚鑫科技:主要提供8位到32位MCU,应用范围:平板电脑、智能家居、多媒体、蓝牙、wifi音响。

9.爱思科微电子:主要提供8位和16位MCU,应用范围:消费芯片、通讯芯片、信息芯片、家用电器。

10.华信微电子:主要提供8位和4位MCU,应用范围:卫星接收机、手机充电器、万年历、一体机遥控器。

11.上海贝岭(华大半导体控股):主要提供8位、16位、32位MCU,应用范围:电脑外设、高清电视、电源管理、小家电、高清多媒体。

12.海尔IC:主要提供14位、15位、16位MCU,应用范围为消费电子、汽车电子、工业、智能仪器。

13.北京郑钧:主要提供32位MCU,应用范围:可穿戴设备、物联网、智能家电、汽车、消费电子、平板电脑。

14.微半导体:主要提供8位MCU,应用范围:智能家电、汽车电子、安防监控、LED照明及景观、智能玩具、智能家居、消费电子。

15.神舟龙芯IC:主要提供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,应用范围:工业控制、智能制造、智能生活、物联网等。

﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

声明:内容整理自网络,仅供学习交流。如涉及作品版权问题,请及时联系我们。谢谢大家!

*相关建议*

单片机实用工具大全,牛逼,工程师必备!

初级工程师如何学习单片机?

单片机产品开发流程,按此来做是正确的!

四旋翼DIY高大上!用STM32单片机处理四旋翼无人机的飞行控制

学好单片机必须了解的八个电路设计。

更多关于单片机的信息,请添加发烧友助手。

加入“发烧友单片机”交流群。

剧终

1.添加Elecfans0为好友,进入电子行业交流大群。

嵌入式软件|可编程逻辑|C语言|linux|单片机|LabVIEW|微机原理|RF/无线|PCB设计|IC设计|电源设计|模拟技术|机器人|测试与测量|Java|AR/VR|前端开发|大数据|python|LabVIEW|STM32|FPGA|四轴算法|BLDC|PCB设计

2.添加Lwangzi312为好友,进入电子工业城市交流群。

39591|北京26276|上海24794|广州15554| Xi安11854|成都10678|杭州10600|苏州10141|南京9735|武汉9204|东莞7960|天津6610|重庆6319|合肥5096|长沙4832

发表评论

后才能评论