单片机是微控制器单元的缩写。在中文里,它是一个微控制器,俗称单片机。它适当降低了CPU的频率和规格,将存储器、计数器、USB、A/D转换、UART、PLC、DMA甚至LCD驱动电路等外设接口集成在一个芯片上,形成一个芯片级计算机,可以控制不同应用的不同组合,如手机、PC外设、遥控器等,以适应汽车电子和工业
单片机发展历史
单片机的历史并不长,但发展很快。它的出现和发展大致与微处理器同步。自1971年美国英特尔公司首次推出4位微处理器以来,其发展至今大致可分为五个阶段。以下是基于英特尔单片机发展的介绍。
从1971年到1976年
单片机发展的初级阶段。1971年11月,英特尔公司首先设计了集成2000个晶体管/芯片的4位微处理器Intel 4004,并配备了RAM、ROM和移位寄存器,构成了第一个MCS-4微处理器,随后又推出了8位微处理器Intel 8008和其他公司相继推出的8位微处理器。
从1976年到1980年
低性能单片机级。Intel公司1976年推出的Mcs-48系列就是代表。它采用单片结构,将8位中央处理器、8位并行输入输出接口、8位定时器/计数器、随机存储器和只读存储器集成在一个半导体芯片上。虽然其寻址范围有限(不超过4 KB),没有串行I/O,RAM和ROM容量小,中断系统简单,但其功能可以满足一般工业控制和智能仪器的要求。
从1980年到1983年
高性能单片机平台。现阶段推出的高性能8位单片机,有一个串口,一个多级中断处理系统,多个16位定时器/计数器。增加了片上RAM和ROM的容量,寻址范围可达64 KB。一些片上系统也有模数转换接口。
从1983年到80年代末
16位单片机级。1983年,英特尔推出了高性能16位单片机MCS-96系列。由于其最新的制造技术,芯片集成度达到了12万个晶体管/芯片。
1990年代
单片机在集成度、功能、速度、可靠性、应用领域等各个方面都发展到了更高的水平。
单片机的分类及应用
单片机根据其内存类型可以分为两种:无片上ROM型和片上ROM型。对于没有片上ROM的芯片,必须外接EPROM才能应用(一般是8031);带片上ROM的芯片分为片上EPROM(典型芯片为87C51)、MASK片上mask ROM(典型芯片为8051)和片上Flash(典型芯片为89C51)。
按用途可分为一般型和特殊型;根据数据总线的宽度和一次可以处理的数据字节长度,可以分为8位、16位和32位单片机。
目前,中国应用最广泛的单片机市场是消费电子领域,其次是工业领域和汽车电子市场。消费类电子产品包括家用电器、电视、游戏机和音视频系统。工业领域包括智能家居、自动化、医疗应用和新能源发电和配电。汽车领域包括汽车动力总成和安全控制系统等。
单片机制造商
欧美地区
1.飞思卡尔+恩智浦:荷兰主要提供16位和32位MCU。应用范围:汽车电子、LED与通用照明、医疗保健、多媒体融合、家电与电动工具、楼宇自动化技术电机控制、电源与电源变换器、能源与智能电网、自动化、计算机与通信基础设施。
2.微芯片+Atmel(微芯片技术+Love Termel):美国主要提供16位和32位MCU。应用范围:汽车电子、工业用、电机控制、汽车、楼宇自动化、家用电器、家庭娱乐、工业自动化、照明、物联网、智能能源、移动电子设备及计算机外设。
3.Cypress+Spansion:美国主要提供8位、16位、32位单片机。应用范围:汽车电子、家用电器、医疗、消费电子、通信与电信、工业与无线。
4.ADI(亚多半导体):美国主要提供8位、16位、32位MCU。适用范围:航空空航天与国防、汽车应用、建筑技术、通信、消费电子、能源、医疗、仪器仪表与测量、电机、工业自动化与安全。
英飞凌:德国主要提供16位和32位单片机。应用范围:汽车电子、消费电子、工程、商用车和农用车、数据处理、电力运输、工业应用、医疗设备、移动设备、电机控制和驱动、电源、面向摩托车的电动自行车和小型电动汽车、智能电网、照明、太阳能系统解决方案、风能系统解决方案。
6.ST微电子(ST Microelectronics):意大利/法国,主要提供32位单片机。应用范围:LED与通用照明、交通运输、医疗保健、多媒体融合、家电与电动工具、楼宇自动化技术电机控制、供电与电源变换器、能源与智能电网、自动化、计算机与通信基础设施。
7.高通:美国主要提供16位和32位MCU。应用范围:智能手机、平板电脑、无线调制解调器。
8.德州仪器:美国主要提供16位和32位单片机。应用:汽车电子,消费电子,医疗设备,移动设备,通信。
9.马克西姆:美国主要提供32位单片机。应用范围:汽车电子、消费电子、工业应用、安全。
日本和韩国
1.Renesas:日本主要提供16位和32位单片机。应用:计算机及外围设备、消费电子、医疗保健电子、汽车电子、工业、通信。
2.东芝:日本主要提供16位和32位MCU。应用范围:汽车电子、工业用、电机控制、无线通信、手机、计算机及外围设备、视频、音视频、消费类(家用电器)、LED照明、安全、电源管理、娱乐设备。
3.富士通:日本主要提供32位单片机。适用范围:汽车、医疗、机械、家电。
4.三星电子:韩国主要提供16位和32位MCU。应用范围:汽车电子、工业用、电机控制、汽车、楼宇自动化、家用电器、家庭娱乐、工业自动化、照明、物联网、智能能源、移动电子设备及计算机外设。
台湾地区
1.宏景科技:台湾省主要提供32位单片机。应用范围:通信、工业控制、信息家电、语音。
2.盛群半导体:台湾省主要提供8位和32位单片机。应用范围:消费电子、LED照明等。
3.Sunplus技术:台湾主要提供8位和16位单片机。适用范围:家庭影音。
4.中影电子:台湾主要提供4位和8位单片机。应用范围:充电器、移动电源、家用电器、工业控制。
5.松汉科技:台湾主要提供8位和32位单片机。适用范围:遥控器、智能充电器、大小系统、电子秤、耳温表、血压计、胎压计、各种测量保健设备。
6.Winbond电子:台湾主要提供8位和16位单片机。应用范围:汽车电子、工业电子、网络、计算机、消费电子、物联网。
7.十速技术:台湾主要提供4位、8位、51位MCU。适用范围:遥控器、小家电。
8.华友微电子:台湾主要提供4位和8位单片机。适用范围:录音集成电路产品、消费电子和家用产品。
9.英光科技单片机:台湾省主要提供4位和8位单片机。应用范围:机械、自动化、家电、机器人。
10.艺龙电子:台湾省主要提供8位和16位单片机。应用范围:消费电子、电脑、智能手机。
大陆地区
1.西格玛微电子:主要提供32位单片机,应用领域包括电信、制造、能源、交通、电力等。
2.珠海Obit:主要提供32位单片机,应用范围:航空空航天:星舰站舰、飞机;高端工业控制:嵌入式计算机;船舶控制、工业控制、动力设备、环境监测。
3.赵一创新:主要提供32位单片机,应用范围包括工业自动化、人机界面、电机控制、安防监控、智能家居、物联网。
4.嵊泗微电子:主要提供8位和32位MCU,应用范围包括小家电、消费类电子、遥控器、鼠标、锂电池、数码产品、汽车电子、医疗仪器及测量、玩具、工业控制、智能家居、安防。
5.新海科技:主要提供16位、32位单片机,应用范围包括仪器仪表、物联网、消费电子、家电、汽车电子。
6.联华集成电路:主要提供8位和16位单片机,应用领域包括消费电子、白色家电、工业控制、通信设备、汽车电子、计算机等。
7.珠海荣剑:主要提供8位单片机,应用范围是家用电器和移动电源。
8.Torch核心技术:主要提供8位到32位单片机,应用范围为平板电脑、智能家居、多媒体、蓝牙、wifi音频。
9.Ai思科微电子:主要提供8位和16位MCU,应用范围包括消费类芯片、通信芯片、信息芯片、家电等。
10.华信微电子:主要提供8位和4位单片机,应用范围是卫星接收机、手机充电器、万年历、一体机遥控器。
11.上海贝灵(华大半导体控股):主要提供8位、16位、32位MCU,应用包括电脑外设、高清电视、电源管理、小家电、高清多媒体。
12.海尔集成电路:主要提供14位、15位、16位MCU,应用范围包括消费电子、汽车电子、工业、智能仪器等。
13.北京郑钧:主要提供32位单片机,应用领域包括可穿戴设备、物联网、智能家电、汽车、消费类电子、平板电脑。
14.微半导体:主要提供8位MCU,应用领域包括智能家电、汽车电子、安防监控、LED照明与景观、智能玩具、智能家居、消费电子。
15.神舟龙芯集成电路:主要提供32位单片机,应用范围包括电力监控、智能电网、工业数字控制、物联网、智能家居、数据监控。
16.紫光微电子:主要提供8位和16位单片机,应用范围是智能家电。
17.时代民信:主要提供32位单片机,应用范围包括汽车导航、交通监控、渔船监管、电力电信网。
18.Cr Sike微电子(Cr微电子的子公司):主要提供8位和16位MCU,应用范围包括消费电子、工业控制、家电等。
19.国鑫科技:主要提供32位单片机,应用范围包括信息安全、办公自动化、通信网络、信息安全。
20.中天威:主要提供32位单片机,应用范围包括智能手机、数字电视、机顶盒、汽车电子、GPS、电子阅读器、打印机。
21.Cr微电子:主要提供8位、16位单片机,应用范围为家电、消费电子、工业自动化控制的通用控制电路。
22.中影电子:主要提供4位、8位、16位、32位MCU,应用范围包括家电、电机。
23.智能微电子:主要提供32位,应用范围包括电机控制、蓝牙控制、高清显示、无线充电、无人机、微型打印机、智能标签、电子烟、LED点阵屏等。
24.新塘科技:主要提供8位单片机,应用范围是照明和物联网。
25.东软开利:主要提供8位和32位单片机,应用范围包括家电、智能家居、仪器仪表、LCD面板控制器、工业控制等。
26.Bettler:主要提供32位单片机,应用范围包括智能家居、工业控制、消费类产品。
27.圣泉科技:主要提供8位单片机,应用范围为汽车、教育、工业控制、医疗等中小型显示屏。
28.航顺芯片:主要提供8位和32位单片机,应用范围是汽车和物联网。
29.复旦微电子:主要提供16位和32位单片机,应用范围包括智能电表和智能门锁。
30.华大半导体:主要提供8位、16位、32位MCU,应用领域包括工业控制、智能制造、智能生活、物联网。
任何一个单片机的基本原理和功能都是相似的,唯一不同的是其外围功能模块、指令系统等的配置和数量。
对于指令系统来说,虽然看起来形式差别很大,但实际上只是符号不同,意义、功能、寻址方式基本相似。所以对于任何一个单片机来说,都要从以下几个方面去理解和掌握。
单片机的特点
要了解一个单片机,首先要知道的是它的ROM空房间,RAM空房间,IO口数量,定时器数量和定时方式,提供的外设电路,中断源,工作电压和功耗等。
在了解了这些单片机特性之后,接下来就是将所选单片机的功能与实际项目开发所需要的功能进行对比,明确目前需要哪些资源,本项目不使用哪些资源。
对于项目中需要但不是由所选单片机提供的功能,需要仔细了解单片机的相关数据,才能通过间接方法实现。比如开发的项目需要与PC的COM端口通信,而选择的单片机不提供UART端口,可以通过外部中断来实现。
对于项目开发所需的资源,需要仔细理解和阅读Manua *,不必要的功能模块可以忽略或浏览。对于单片机学习来说,应用是关键,也是主要目的。
定义好单片机的相关功能后,就可以开始编程了。
对于初次使用这款单片机的初学者或设计师来说,可能会有很多对单片机功能描述不清的地方。对于这样的问题,有两种方法可以解决。一种是编写专门的验证程序,了解数据中描述的功能;另一个可以暂时忽略,单片机程序是根据其目前的理解编写的,调试时修改完善。前者适合时间短、初学者的项目,后者适合有一定单片机开发经验的人或进度紧迫的项目。
指令系统千万不要花时间去理解。指令系统只是逻辑描述的符号。只有在编程的时候,你才能根据自己的逻辑和程序的逻辑要求去检查相关的指令,随着编程的进行,你会越来越精通指令系统,甚至会不自觉的去背。
单片机基本功能
对于绝大多数单片机来说,以下功能是最常见和最基本的。不同的MCU可能有不同的描述,但本质上基本相同:
TImer:虽然TImer有很多种,但是可以分为两类:一类是固定时间间隔的TiMer,即计时时间由系统设定,用户程序无法控制。系统只提供几个固定的时间间隔供用户程序选择,如32Hz、16Hz、8Hz等。这种定时器在4位单片机中比较常见,因此可以用来实现时钟、定时等相关功能。
另一种是可编程定时器。顾名思义,这种定时器的计时时间可以由用户的程序控制。控制方法包括:时钟源的选择、预分频器的选择和预制数的设置等。有的MCU同时拥有这三个,有的可能是其中的一两个。这种定时器的应用非常灵活,实际使用是千变万化的。最常见的应用之一就是用它来实现PWM输出。
由于时钟源可以自由选择,这种定时器通常与事件计数器相结合。
IO端口:任何单片机都有一定数量的IO端口。没有IO端口,单片机就会失去与外界的通信通道。根据io端口的可配置条件,可分为以下几种类型:
纯输入或纯输出端口:这种IO端口由单片机硬件设计决定,只能输入或输出,不能通过软件实时设置。
直接读写IO端口:比如MCS-51的IO端口就属于这种类型的IO端口。执行读IO端口指令时,是输入端口;当执行写IO端口指令时,会自动成为输出端口。
设置输入输出方向的编程:这类IO端口的输入或输出由程序根据实际需要进行设置,应用灵活,可以实现一些总线级的应用,如I2C总线、各种液晶显示器的控制总线、LED驱动器等。
对于IO端口的使用,重要的是要记住,对于输入端口,必须有一个清晰的电平信号,保证它不能浮动空(可以通过增加上拉或下拉电阻来实现);至于输出端口,其输出的状态电平必须考虑其外部连接,并且要保证在待机或静态状态下没有拉电流或吸电流。
外部中断:外部中断也是大多数单片机的基本功能,一般用于信号的实时触发、数据采样和状态检测。中断模式由上升沿、下降沿和电平触发。外部中断一般通过输入端口实现。如果是IO口,只有设置为输入时才会开启其中断功能。如果是输出端口,外部中断功能会自动关闭(ATMEL的ATiny系列有一些例外,中断功能也可以在输出端口触发)。外部中断的应用如下:
外部触发信号检测:一种是基于实时性要求,如晶闸管控制、突发信号检测等。,而另一个是省电的需要。
对于信号频率的测量,为了保证信号不被遗漏,外部中断是最好的选择。
数据解码:在遥控应用领域,为了降低设计成本,往往需要使用软件对各种编码数据进行解码,如曼彻斯特、PWM编码等。
按键检测和系统唤醒:对于进入睡眠状态的单片机,一般需要通过外部中断唤醒,最基本的形式是按键,通过按键的动作来改变级别。
通信接口:单片机提供的通信接口一般包括SPI接口、UART和I2C接口,描述如下:
SPI接口:这种接口是大多数单片机提供的最基本的通信方式,其数据传输由同步时钟控制。信号包括串行数据输入、串行数据输出、SCLK和就绪信号;在某些情况下,可能没有就绪信号;这种接口可以在主模式或从模式下工作。说谁提供时钟信号很流行。提供时钟的是主,对面的是从。
Uart(通用异步接收发送)是最基本的异步传输接口之一,只有两条信号线,Rx和Tx,基本数据格式为:起始位+数据位(7位/8位)+奇偶位(偶数、奇数或无)+停止位(1 ~ 2位)。一位数据占用的时间称为波特率。
对于大多数单片机来说,数据的长度、数据校验方式(奇数校验、偶数校验或不校验)、停止位的长度和波特率可以通过编程灵活设置。这种接口最常见的方式是与PC的串口通信。
I2C接口:I2C是飞利浦开发的数据传输协议,也是通过两个信号实现的:SDAT(串行数据输入输出)和SCLK(串行时钟)。它最大的优点是可以将多个设备连接到该总线上,并且可以通过地址来识别和访问它们。I2C总线最大的优点之一就是通过IO口用软件实现非常方便。它的数据传输速率完全由SCLK控制,可以快也可以慢。与UART接口不同,它有严格的速率要求。
看门狗:看门狗也是大多数单片机的基本配置(有些4位单片机可能没有这个功能),大多数单片机只能允许程序复位而不能关闭(有些是程序烧录时设置的,比如微芯片PIC系列单片机)。而有些MCU以特定的方式决定是否开启,比如三星的KS57系列,只要程序访问看门狗寄存器,它就自动开启,不能关闭。一般来说,看门狗的复位时间是可以编程的。看门狗最基本的应用是为单片机提供一种因意外故障而崩溃的自恢复能力。
单片机程序的编译
单片机编程和PC编程差别很大。虽然基于C的单片机开发工具越来越普及,但是对于一个高效的程序代码和喜欢使用汇编的设计师来说,汇编语言仍然是最简单有效的编程语言。对于单片机编程来说,其基本框架可以说是大体一致的,一般分为初始化部分(这是单片机编程与PC最大的区别)、主程序循环体和中断处理程序,分别描述如下:
初始化:对于所有单片机程序的设计来说,出生是最基本也是最重要的一步,一般包括以下内容:
屏蔽所有中断并初始化堆栈指针:初始化部分通常不希望发生任何中断。
清除系统的RAM区,显示Memory:虽然有时候可能不完全需要,但是从可靠性和一致性的角度,特别是为了防止意外错误,建议养成良好的编程习惯。
io端口初始化:根据项目的应用需求,设置相关IO端口的输入输出模式,设置输入端口的上拉或下拉电阻;对于输出端口,需要设置其输出电平,防止不必要的错误。
中断设置:项目需要的所有中断源都要打开,中断要设置触发条件,不必要的中断必须关闭。
其他功能模块的初始化:对于需要使用的单片机的所有外围功能模块,必须根据项目的应用要求进行相应的设置,如UART通信、设置波特率、数据长度、校验方法、Stop Bit长度等。,而对于程序员定时器,设置其时钟源、分频数和重载数据等。
参数的生成:完成单片机硬件和资源的生成后,下一步是初始化程序中使用的一些变量和数据。这部分的初始化需要根据具体项目和程序的总体安排来设计。对于一些使用EEPROM保存项目预制数的应用,建议在初始化时将相关数据复制到单片机的RAM中,以提高程序对数据的访问速度,降低系统功耗(原则上访问外部EEPROM会增加电源的功耗)。
主程序循环体:大多数MCU长时间连续运行,所以它们的主程序体基本上是循环设计的。对于具有多种工作模式的应用程序,可能有多个循环体,可以通过状态标志进行转换。对于主程序体,一般安排以下模块:
计算程序:计算程序一般比较耗时,所以坚决反对任何中断,尤其是乘法和除法。
显示传输程序:主要针对带外置LED和液晶驱动器的应用。
中断处理程序:中断处理程序主要用于处理实时性要求较高的任务和事件,如外部突发信号检测、按键检测处理、计时计数、LED显示扫描等。
一般来说,中断程序应该尽可能保持代码简洁明了。对于不需要实时处理的功能,可以在中断中设置触发标志,然后主程序可以执行特定的事务——这一点非常重要,尤其是对于低功耗、低速度的MCU,所有中断都必须及时响应。
不同的单片机对不同的任务体有不同的处理方法。
比如对于低速低功耗的MCU(Fosc=32768Hz)应用,考虑到这些项目都是手持设备,采用普通的LCD显示,对按键和显示的响应要求实时性高,所以一般采用定时中断的方式来处理按键动作和数据显示;对于高速单片机,比如Fosc《1MHz》应用,由于单片机有足够的时间执行主程序循环体,各种触发标志只能在相应的中断中设置,所有任务都可以在主程序体中执行。
在单片机的编程中,还需要特别注意防止在中断和主程序体中同时访问或设置相同的变量或数据。一种有效的防范方法是将这类数据的处理安排在一个模块中,通过判断触发标志来决定是否执行该数据的相关操作;但是在其他程序中(主要是中断),只对需要处理数据的地方设置触发标志。-这可以确保数据的执行是可预测的和唯一的。
声明:以上资料来自互联网,由Core Era独家编辑整理。转载时请注明出处。
1.《cpu制造商 3分钟看懂MCU(附全球53家制造商名单)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《cpu制造商 3分钟看懂MCU(附全球53家制造商名单)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/1535652.html