单片机学习笔记

ops/2024/9/23 14:28:02/

一、单片机帝国的诞生与发展

1.1 单片机的基本概念

单片机是一种集成电路芯片,采用超大规模的集成电路把具有数据处理功能的中央处理器存储器、输入输出端口、外围电路和相关外设集成在一块硅片上构成一个小而完整的微型计算机系统。

 一般而言,单片机也称为MCU(微控制器),不是完成某一功能的芯片,是把一个计算机系统集成到一个芯片上。单片机就相当于小型计算机。和计算机相比,单片机缺少I/O 设备。

简单概括:一个芯片就成了一台计算机,它体积小,质量轻,价格便宜,学习成本低。

单片机,按用途去分,大体分为两种:通用型、专用型


通用型:用户可以根据自己的需求去选择单片机的外设,如以单片机芯片为核心,搭外围电路和相关外设,实现对应的功能。


专用型:主要就是针对某些特定的产品的功能去设计单片机单片机芯片的开发商和厂家去进行定制。

1.2  单片机的发展历史

1975 年,美国德州仪器公司(TI公司)推出了一款4位单片机:TMS-1000,可以理解为单片机的诞生。
1976 年,美国 Intel研制出 MCS-48 系列的8位单片机单片机进入新的阶段。MCS-48 系列单片内部集成8位 CPU,多个并行 I/0 口,8位定时器/计数器,小容量的 RAM 和ROM 等,但是没有串行通信接口,操作简单。
1980年,美国 INETL 公司在 MCS-48 系列的单片机基础上,推出 MCS-51系列单片机。相对于 MCS-48 系列,MCS-51 系列单片机内部增加了串行通信接口,定时器/计数器由8 位变为 16 位,扩大了 ROM 和 RAM 的容量。因为 MC5-51 单片机简单易用,性价比高,被称为“最经典的单片机"

二、单片机派系之间的明争暗斗

2.1 8位单片机的体系

1.MCS-51 系列单片机
MCS-51 系列单片机是美国 Intel 设计的单片机系列的总称,这一个系列包含很多品种,如基酬型(8031、8051、8751),增强型(8032、8052、8752),8051是最经典的产品,其他的型号都是在 8051 的基础上进行功能的增加与制除与修改得到的。一般而言,用 8051 去称呼MCS-51 系列单片机

  • 8031 单片机
  • 8051单片机  (8位CPU,片内振荡器,4kb字节ROM 128字节RAM  21个特殊功能寄存器 32个IO口、2个16位的定时器/计数器  5个中断源  2个优先级)
  • 8751 单片机

推出基础型单片机之后,Intel又推出增强型(8032、8052、8752),也就是52系列

  • 8032 单片机(8位CPU,片内振荡器,256字节RAM  21个特殊功能寄存器 32个IO口、3个16位的定时器/计数器  6个中断源  2个优先级)
  • 8052 单片机  (8位CPU,片内振荡器,8kb字节ROM  256字节RAM  21个特殊功能寄存器 32个IO口、3个16位的定时器/计数器  6个中断源  2个优先级)
  • 8752 单片机(8位CPU,片内振荡器,8kb字节EPROM  256字节RAM  21个特殊功能寄存器 32个IO口、3个16位的定时器/计数器  6个中断源  2个优先级)

2.AT89 系列单片机
20 世纪 80 年代中期,美国 Intel 公司开始研发高端 CPU,把 MCS-51 单片机的核心技术以专利转让或者技术交换,其中就包含美国的ATMEL公司。
ATMEL 把 Flash 和 8051 内核进行结合,推出帶有 FLASH 存储器的 AT89C5x/AT89S5x,AT89 系列单片机和 MCS-51系列的引脚、功能、指令系统都是完全兼容的。

  • AT89C5x 系列(AT89C51(基础型    )AT89C52(增强型)   不再生产   C 表示COMS)
  • AT89S5x系列

3.STC 系列单片机
 STC系列单片机是国内宏晶科技(STC公司)自主研发的,如STC89C5x、STC8955x,并且支持I5P 下载,使用简单方便。


4.AVR 系列单片机
AVR 单片机也是美国 ATMEL 公司研发出的增强型内置 Flash 的 RISC(精简指令集)高速8位单片机。AVR的单片机的可以广泛的应用在计算机外部设备,工业控制,仪表仪器,通讯设备,家用电器等相关领域。

2.2 C51 和 STM32 的关系


C51 是 20 世纪 70 年代的产物,结构简单,被广泛用于教学,因为其资源有限,引脚数目少,所以不能满足市场需求,就需要一款新的单片机
基于这样的市场需求,ARM 公司就推出了一款基于 ARMv7 架构的 32 位的 Cortex M3/M4 内校,ST公司(意法半导体)就基于这个内校推出一款32位的 MCU,也就是STM32。STM32由于开发简单(多种开发方式 寄存器开发、同件库开发),性价比高、资源丰富,所以目前而言是主流的 32 位的 MCU。

三、单片机帝国那些不得不说的秘密

3.1 嵌入式与单片机的区别

单片机是一种集成电路芯片,采用超大规模的集成电路把具有数据处理功能的中央处理器(CPU)、随机存储器 RAM、只读存储器 ROM、输入输出端口以及外围电路和相关外设集成在一块硅片上构成一个小而完整的微型计算机系统,广泛应用在工业控制领域。

  • 什么是嵌入式

国外定义:嵌入式都是指嵌入式系统,指的是“用于控制、监视或者辅助操作机器和设备的装置”。
国内定义:以应用为中心,以计算机技术为基础,适用于对体积、功耗、性能等方面有严格要求的计算机系统。

嵌入式特点
     硬件特点:
                    体积小,集成效率高
                    功耗低,抗干扰能力强
软件特点:
             一般软件都是采用C语言去开发(接近底层)

              一般软件是固化在ROM或者FLASH(掉电不丢失)

  • 两者之间的区别

总的来说,就是单片机是比较简单的系统,而嵌入式则侧重于比较复杂的系统

四、探寻单片机脑子里那点事

4.1、主流的ARM内核架构

(1)ARM的基本概念

ARM--是一家英国的一家公司,设计芯片的IP内核,授权其他的半导体公司,三星,TI 索尼 飞利浦 微软

ARM--- 功耗低、性能高的处理器

(2)ARM的内核架构

  • ARM以前的内核:ARM7  ARM9  ARM11(最经典)
  • ARM现在的内核:Cortex A  Cortex R  Cortex M

Cortex A 系列:面向高端智能产品  (手机 平板  搭载操作系统)

Cortex R系列:面向实时性要求高的产品(航空航天、汽车制动系统、硬盘)

Cortex M系列:面向成本敏感型产品(智能穿戴产品、平衡车、四轴飞行器)

五、浅谈单片机帝国的辉煌战绩


5.1 单片机的应用领域


单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器、存储器、输入输出端口和中断系统、定时器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的 300M 的高速单片机


随着科学技术的快速发展,单片机也被广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。

  • 工业控制

   例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统等。

  • 家用电器

    例如电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材等。

  • 医疗设备

    例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等。

  • 消费电子

    单片机也经常用在消费类电子产品上,比如智能手环、平衡车、扫地机器人等。

六、单片机集成开发环境的安装


6.1 集成开发环境的搭建


KEIL5 集成开发环境的安装
1.什么是 KEIL
KEIL 软件是德国的 keil 公司(被 ARM 公司收购),kei软件提供C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完成开发方案。通过集成开发环境(uVision)将这些部分组合在一起。KEIL 集编辑、编译、仿真等功能于一体。并且还包含软件的调试功能。
需要注意:keil 是收费软件,用于商业用途支持买正版!!!
注意事项:
1)安装 KEIL5 的路径不能存在中文,建议在某个盘新建一个文件夹 如 KEIL51)电脑用户名最好不要是中文,会导致程序编译过程中出现某些未知问题,如果电脑用户21名是中文,按照文档进行操作

七、浅谈单片机开发方式的种类与利弊


7.1 STM32 的开发方式


STM32 的开发方式大体分为两种:函数库开发+寄存器开发

  • 函数库开发

就是利用 ST 公司提供的 STM32 标准函数库,是 ST 公司针对 STM32 开发的一系列 API 接口,可以调用这些函数来配置 STM32的寄存器,开发人员不需要特别关注底层寄存器的操作,有利于快速开发和维护。
库是架设在寄存器和用户代码之间的代码,向下与寄存器相关,向上提供给用户相关接口
优点: 代码可读性好、代码容易维护、方便快速开发
缺点:代码运行效率相对于寄存器来说,大概低10%左右

  • 寄存器开发

STM32 的外设资源十分丰富,所以寄存器的数量增多和复杂度增大,并且要求开发人员需要掌握底层开发的相关知识。
优点:代码运行效率变高 代码量减少 程序运行占用的内存资源减少
缺点:程序开发效率降低  代码的可读性不好 代码不容易维护

八、如何优雅的创建一个固件库工程

8.1 创建工程


固件库利用 ST 公司提供的 STM32 标准函数库,是 ST 公司针对 STM32 开发的一系列 API 接口,可以调用这些函数来配置 STM32的寄存器,开发人员不需要特别关注底层寄存器的操作,有利于快速开发和维护。

九、浅谈单片机最小系统的组成

9.1 单片机的最小系统


1.单片机最小系统的组成
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器、存储器、输入输出端口和中断系统、定时器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统。


单片机最小系统,指的是用最少的元件组成的单片机可以正常工作的系统。对于单片机最小系统而言,需要复位电路、晶振电路、电源电路

2.单片机引脚的基本分类

电源引脚

晶振引脚

复位引脚

控制引脚

输入输出引脚

十、设置单片机的“”心脏“”之晶振电路

10.1 电源电路设计

电源电路可以利用电池供电,一般使用4节5号电池(5号电池每节1.2V),或者利用充电宝或者电脑的 USB 口进行供电,一般可以加上一个电源开关。
注意:AT89C52的供电电压范围:4.5V~5.5V

10.2 晶振电路设计

(1) 什么是晶振
晶振全称叫做品体振荡器,作用就是产生高度稳定的振荡频率,目的是给单片机提供时钟。晶振是一种机电器件,一般使用电损耗很小的石英品体,经过精密的切割打磨,并在石英晶体中镀上电极和引线。
这种元件具有机电效应,如果给晶体通电,就会产生机械力,反过来说,给晶体一个机械力,晶体会产生电。
(2) 晶振的频率
对于 51 单片机,常用的晶振频率是 11.0592MHZ或者 12MHZ
11.0592MHZ(一般用于串口通信,可以得到准确的波特率,如9600)12MHZ(可以得到精准的时时间,一般用到定时器或者延时STC系列常用)
对于 AT89C52 而言,时钟频率 0MHZ~24MHZ,晶振的频率决定单片机的运行速度,晶振频率越高,运行速度越快,稳定性降低,反之同理。
(3) 晶振电路组成
晶振电路一般由晶体振荡器(CRY)和电容(CAP)组成。和人类的心脏类似,单片机离开晶振电路无法正常工作,对于电容而言,一般选择15PF~33PF,常用 22PF、30PF 等。
注意:晶振电路在设计时要尽可能的靠近MCU,防止晶振起振失败或者品振收到干扰。

十一、让单片机得到“重生”之复位电路

11.1 复位电路设计


对于复位电路而言,是51单片机中非常重要的电路,目的就是让程序跑飞(程序运行时出现问题),让单片机进行复位,重新运行程序。
对于 51 单片机而言,想要复位,只要给 RST复位引脚持续 2us 以上的高电平即可
单片机在上电的时候进行复位,也可以设计一个复位按键,当按键按下的时候可以复位。

  • 开机复位

单片机电压小于1.5v,会被作为低电平信号(0v),大于1.5v会被作为高电平信号(5v)

  •     按键复位

十二、设计单片机的“躯干”之外围电路

12.1 外围电路设计

发光二极管是一种常用的发光器件,通过电子与空穴复合释放能量发光,它在照明领域应用广泛。 发光二极管可高效地将电能转化为光能,在现代社会具有广泛的用途,如照明、平板显示、医疗器件等。

十三、轻松实现KEIL与PROTEUS的联调

1.1 keil 和 proteus 仿真如何进行联调
在真正的电路设计,一般设计完电路之后不会直接进行硬件的制作,而是先采用仿真的形式去进行验证。

1、设计单片机的仿真电路

2、编写代码


http://www.ppmy.cn/ops/110754.html

相关文章

探索数据可视化的奥秘:Seaborn库的魔力

文章目录 探索数据可视化的奥秘:Seaborn库的魔力背景:为何选择Seaborn?Seaborn是什么?如何安装Seaborn?简单函数介绍与示例场景应用示例常见问题与解决方案总结 探索数据可视化的奥秘:Seaborn库的魔力 背景…

docker 复制容器

在 Docker 中复制容器本身并不是直接支持的操作,但你可以通过以下方法来实现类似的效果: 1.将已有的容器提交为镜像 2.以该镜像创建容器 3.开启容器,进入容器内部 一. 使用 Docker 镜像复制容器 首先,你可以将容器的状态保存…

基于Linux和C++实现的RabbitMQ风格消息队列:设计与实现

文章目录 0. 前言1. 需求分析① 核心部分② 核心API③ 交换机类型④ 持久化⑤ 网络通信⑥ 消息应答 2. 模块划分Ⅰ 服务端模块① 持久化数据管理中心模块② 虚拟机管理模块③ 交换机路由模块④ 消费者管理模块⑤ 信道管理模块⑥ 连接管理模块⑦ Broker Server模块 Ⅱ 客户端模块…

在Ubuntu 18.04上安装Nginx的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 介绍 Nginx 是世界上最流行的 Web 服务器之一,负责托管互联网上一些最大和最高流量的网站。在大多数情况下,它比…

HTTP 四、HttpClient的使用

一、简单介绍 1、简介 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著…

DisplayManagerService启动及主屏添加-Android13

// 以下代码是模拟DisplayManagerService在Android 13中启动并添加主屏的过程。 // 注意:这只是一个简化的代码示例,实际的系统服务可能包含复杂的逻辑和错误处理。 import android.hardware.display.DisplayManagerGlobal; import android.view.Displ…

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力…

R语言论文插图模板第9期—滑珠散点图

在之前的文章中,分享了R语言分组散点图的绘制模板: 特征渲染的散点图的绘制方法: 进一步,再来分享一下滑珠散点图的绘制方法。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋…