首页 > 资讯 > 科技 > 正文
2024-04-30 08:11

科普史上最强单片机,看完我跪了!

MCU是Unit的缩写。 中文称为微控制器,俗称单片机。 它适当降低了CPU的频率和规格,并集成了存储器、计数器、USB、A/D转换、UART、PLC、DMA甚至LCD等外围接口。 将驱动电路集成在单个芯片上,形成芯片级计算机,可以为不同的应用提供不同的控制组合,如手机、PC外设、遥控器、汽车电子、工业步进电机、机器人手臂控制等。 ,都可以看到MCU的身影。

微控制器发展简史

微控制器的历史并不长,但发展非常迅速。 它的生产和发展一般与微处理器(CPU)的生产和发展同步。 自1971年美国英特尔公司首次推出4位微处理器以来,其发展至今大致可分为五个阶段。 下面介绍一下Intel公司的微控制器的发展情况。

1971~1976

微控制器发展的初级阶段。 1971年11月,Intel首先设计了Intel 4004,这是一款集成度为2000个晶体管/芯片的4位微处理器,配备了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容量增大,寻址范围可达64KB。 有些芯片还带有A/D转换接口。

1983年~20世纪80年代末

16 位微控制器级。 1983年,Intel推出高性能16位微控制器MCS-96系列。 由于采用了最新的制造技术,芯片集成度高达12万个晶体管/芯片。

20世纪90年代

微控制器在集成度、功能、速度、可靠性和应用领域等各个方面都在向更高水平发展。

单片机的分类及应用

MCU按照存储器类型可以分为两种类型:不带片内ROM的MCU和带片上ROM的MCU。 对于没有片上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中比较常见,因此可以用来实现时钟、定时以及其他相关功能。

另一种类型是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信号; 这种类型的接口可以工作在模式或从模式。 通俗的说法是,取决于谁提供时钟信号。 提供时钟的一侧是 ,相反的一侧是 。

UART( ):是最基本的异步传输接口。 它只有两条信号线:Rx 和 Tx。 基本数据格式为:起始位 + 数据位(7 位/8 位)+ 位(偶数、奇数或无)+ 停止位(1~2 位)。 一位数据所占用的时间称为波特率。

对于大多数MCU来说,数据的长度、数据的校验方式(奇校验、偶校验或无校验)、停止位(Stop Bit)的长度以及波特率都可以通过程序编程灵活设置。 当然。 此类接口最常用的方法是与PC机的串口进行通信。

I2C接口:I2C是I2C开发的数据传输协议。 它还使用 2 个信号来实现:SDAT(串行数据输入和输出)和 SCLK(串行时钟)。 它最大的好处是可以将多个设备连接到这条总线上,并通过地址进行识别和访问; I2C总线的最大好处之一是可以非常方便地通过IO口使用软件来实现,并且其传输数据速率完全由SCLK控制。 控制时可以快也可以慢,不像UART接口对速度有严格的要求。

(看门狗定时器):也是大多数MCU的基本配置(部分4位MCU可能没有此功能)。 大多数单片机只能允许程序复位而不能关闭它(有些是在程序烧入时设置的,如PIC系列单片机),而有些单片机则采用特定的方法来确定是否打开,如KS57系列。 只要程序访问该寄存器,就会自动开启,并且无法再次关闭。 。 一般来说,复位时间可以通过程序设定。 最基本的应用是为因意外故障而崩溃的MCU提供自恢复能力。

学习微控制器的技巧

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

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

要了解一款MCU,首先需要了解它的ROM空间、RAM空间、IO口数量、定时器数量及计时方式、提供的外围功能模块()、中断源、工作电压和功耗等。

了解了这些MCU之后,下一步就是将所选MCU的功能与实际项目开发所需的功能进行比较,明确当前项目中需要哪些资源,哪些资源没有使用。

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

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

明确了单片机的相关功能后,就可以开始编程了。

对于初学者或者第一次使用该MCU的设计者来说,可能会遇到很多不清楚MCU功能的情况。 对于此类问题,有两种解决方法。 一是编写专门的验证程序,了解资料中描述的功能; 其他的可以暂时忽略。 在单片机程序设计中,按照自己目前的理解来编写,留待调试时修改和完善。 前一种方法适合时间比较宽松的项目和初学者,而后一种方法适合有一定单片机开发经验的人或者项目工期比较紧张的情况。

不要花特别的时间来理解命令系统。 指令系统只是逻辑描述的符号。 编程时只能根据自己的逻辑和程序的逻辑要求检查相关指令。 随着编程的进展,你会对指令系统越来越熟悉,甚至可以在不知不觉中记住它。

单片机编程

MCU程序编写和PC程序编写有很大区别。 虽然基于C的MCU开发工具越来越流行,但对于拥有高效程序代码且喜欢使用汇编的设计者来说,汇编语言仍然是最简单、最高效的编程语言。

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

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

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

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

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

中断设置:对于项目中需要使用的所有中断源,都应该打开它们,并设置中断的触发条件。 对于不使用的冗余中断,必须将其关闭。

其他功能模块的初始化:对于需要使用的MCU的所有外围功能模块,必须根据项目应用的要求进行相应的设置。 例如,对于UART通信,需要设置波特率、数据长度、验证方法和停止位。 长度等,对于Timer来说,它的时钟源、分频器、Data等都要设置。

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

主程序循环体:大多数MCU都是长时间连续运行的,所以它们的主程序体基本上都是循环设计的。 对于多种工作模式的应用,可能存在多个环路。 实体,并通过状态标志相互转换。 对于程序主体来说,一般安排以下模块:

计算程序:计算程序一般比较耗时,所以我们坚决反对在任何中断中处理它们,特别是乘法和除法运算。

显示传输方案:主要针对外接LED、LCD的应用。

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

微型计算机的含义是什么_微型计算机中io设备是指_微型计算机中io设备的含义是

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

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

例如,对于低速、低功耗的MCU(Fosc=)应用,考虑到此类项目是手持设备且使用普通LCD显示屏,对按键响应和显示响应要求实时性较高,所以这应该是一般采用定时中断来处理按钮动作和数据显示; 对于高速MCU,如Fosc > 1MHz的应用,由于此时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、盈光科技微控制器:台湾,主要提供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。 应用领域:工业控制、智能制造、智慧生活、物联网。