单片机学习笔记

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

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、编写代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/872766.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java语言程序设计基础篇_编程练习题**17.21 (十六进制编辑器)

目录 题目:**17.21 (十六进制编辑器) 代码示例 结果展示 题目:**17.21 (十六进制编辑器) 编写一个 GUI 应用程序,让用户在文本域输入一个文件名,然后按回车键,在文本域显示它的十六进制表达形式。用户也可以修改十六…

分类预测|基于蜣螂优化极限梯度提升决策树的数据分类预测Matlab程序DBO-Xgboost 多特征输入单输出 含基础模型

分类预测|基于蜣螂优化极限梯度提升决策树的数据分类预测Matlab程序DBO-Xgboost 多特征输入单输出 含基础模型 文章目录 一、基本原理1. 数据准备2. XGBoost模型建立3. DBO优化XGBoost参数4. 模型训练5. 模型评估6. 结果分析与应用原理总结 二、实验结果三、核心代码四、代码获…

1-9 图像膨胀 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 kernel np.ones((3, 3), np.uint8) _, binary_image cv2.threshold(image, 127, 255, cv2.THRESH_BINARY) dilated_image cv2.dilate(binary_image, kernel, iterations1) 三、运行现象 四、完整代码 五、完整工程贴出 一、提前准备 …

scrapy 爬取微博(一)【最新超详细解析】:创建微博爬取工程

本项目属于个人学习记录,爬取的数据会于12小时内销毁,且不可用于商用。 1 初始化环境 首先我们需要有python环境,先安装一下python,然后配置环境变量,这边给出windows的配置: 我这边的安装目录是D:\pyt…

PHP轻量级高性能HTTP服务框架 - webman

摘要 webman 是一款基于 workerman 开发的高性能 HTTP 服务框架。webman 用于替代传统的 php-fpm 架构,提供超高性能可扩展的 HTTP 服务。你可以用 webman 开发网站,也可以开发 HTTP 接口或者微服务。 除此之外,webman 还支持自定义进程&am…

Django发送邮件

【图书介绍】《Django 5企业级Web应用开发实战(视频教学版)》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 Django 5框架Web应用开发_夏天又到了的博客-CSDN博客 本文学习怎么使用Django发送邮件。 尽管使用Python的smtplib模块发送电子邮件…

vant 动态查询下拉菜单(可用)

动态查询item项 <van-form submit"onSubmit" ref"formRef"><Title title"企业信息" title-line title-size"19" class"ml-[18px] mb-[18px]"></Title><van-cell-group inset class"py-[18px]&quo…

【JavaSE基础】Java 基础知识

Java 转义字符 Java 常用的转义字符 在控制台&#xff0c;输入 tab 键&#xff0c;可以实现命令补全 转义字符含义作用\t制表符一个制表位&#xff0c;实现对齐的功能\n &#xff1a;换行符\n换行符一个换行符\r回车符一个回车键 System.out.println(“韩顺平教育\r 北京”);&…

pod基础和镜像拉取策略

目录 pod概念 pod的分类 1.基础容器 pause 2.初始化容器 init 实验&#xff1a;定义初始化容器 init容器的作用 实验&#xff1a;如何在容器内部进行挂载 镜像拉取策略 pod概念 pod是k8s里面的最小单位&#xff0c;pod也是最小化运行容器的资源对象。容器是基于pod在k…

黑马点评10——用户签到-BitMap数据结构

文章目录 BitMap用法签到功能签到统计 BitMap用法 其实数据库完全可以实现签到功能 但签到数据比较大&#xff0c;借鉴签到卡的思想 布隆过滤器也是使用BitMap实现的. 签到功能 因为是当前用户的当天&#xff0c;所以保存需要的年月日不需要参数&#xff0c;可以直接获取。…

matter中的Fabric(网络结构)

什么是Fabric&#xff1f; Fabric可以被理解为一组相互信任的设备和控制器&#xff0c;它们共享一个共同的信任域。这意味着在同一个Fabric中的设备和控制器之间可以进行安全的通信&#xff0c;而无需额外的身份验证或安全检查。每个Fabric有一个唯一的标识&#xff0c;确保Fab…

Android调整第三方库PickerView宽高--回忆录

一、效果 // 时间选择implementation com.contrarywind:Android-PickerView:4.1.9 多年前&#xff0c;使用到事件选择器&#xff0c;但是PickerView默认宽度使满屏的&#xff0c;不太符合业务需求&#xff0c;当时为此花了许多时间&#xff0c;最终找到了解决方案&#xff0c;…

使用 Milvus 和 Streamlit 搭建多模态产品推荐系统

我们可以使用 Milvus 搭建多模态 RAG 应用&#xff0c;用于产品推荐系统。用户只需简单上传一张图片并输入文字描述&#xff0c;Google 的 MagicLens 多模态 Embedding 模型就会将图像和文本编码成一个多模态向量。然后&#xff0c;使用这个向量从 Milvus 向量数据库中找到最相…

JVM——Java虚拟机内存初识(面经篇之JVM内存)

网上说的太详细了,真不利于我的初识和记忆&#xff0c; 例如&#xff1a;堆区的young&#xff0c; old&#xff0c;讲了一大堆&#xff0c;结果&#xff0c;我连这些区域是干什么的都不知道&#xff0c;存储什么的都不知道&#xff0c; 害得是我自己总结&#xff1a; 堆&#x…

JavaWeb【day08】--(MySQL-Mybatis入门)

数据库开发-MySQL 1. 多表查询 1.1 概述 1.1.1 数据准备 SQL脚本&#xff1a; #建议&#xff1a;创建新的数据库 create database db04; use db04; ​ -- 部门表 create table tb_dept (id int unsigned primary key auto_increment comment 主键ID,name v…

各类AI工具编程能力测试对比

各类AI工具编程能力对比 现在各类AI工具火爆&#xff0c;擅长各类问题解决&#xff0c;闲来无事&#xff0c;验证下各类AI工具的编程能力如何。问题&#xff1a;c 实现杨辉三角&#xff0c;并main函数测试 kimi 对话窗口输入问题&#xff0c;得到了c的完整程序&#xff1a; …

通过redis-operator 来部署 Redis Cluster 集群

安装 Redis Operator 首先&#xff0c;需要安装 redis-operator。可以通过 Helm 或直接应用 YAML 文件来安装。 使用 Helm 安装&#xff1a; helm repo add ot-helm https://ot-container-kit.github.io/helm-charts/ helm install redis-operator ot-helm/redis-operator --…

B树和B+树

B树和B树是两种用于数据库和文件系统中的自平衡树数据结构&#xff0c;它们可以保持数据有序&#xff0c;同时支持快速的查找、插入和删除操作。下面是它们的基本介绍&#xff1a; B树&#xff08;B-Tree&#xff09; 定义&#xff1a;B树是一种平衡的多路搜索树&#xff0c;…

数据分析新星,DuckDB与Pandas处理大数据速度对比

大家好&#xff0c;Pandas库众所周知&#xff0c;适合数据分析新手入门&#xff0c;但在大数据面前却显得处理缓慢。相比之下&#xff0c;开源的DuckDB以其卓越的列式存储性能&#xff0c;在大数据处理上速度惊人&#xff0c;速度远超Pandas。而且&#xff0c;DuckDB配备了Pyth…

JS设计模式之“语言之魂” - 原型模式

前言 当我们学习JavaScript的时候&#xff0c;经常会听到原型&#xff08;prototype)、原型链&#xff08;prototype chain&#xff09;和原型模式&#xff08;prototype pattern&#xff09;这些概念&#xff0c;它们之间有什么关联呢&#xff1f;怎么样才能使用好原型模式呢…