单片机学习笔记

news2024/9/21 3:21:12

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

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.coloradmin.cn/o/2111753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目7-音乐播放器7(测试报告)

1.项目背景 音乐播放器采用前后端分离的方法来实现,基于SSM框架构建,同时使用了数据库来存储相关的数据,同时将其部署到云服务器上。 用户可以轻松注册登录,浏览丰富的音乐库,搜索喜欢的歌曲。系统支持多种音频格式播…

44. 数字序列中某一位的数字

comments: true difficulty: 中等 edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9844.%20%E6%95%B0%E5%AD%97%E5%BA%8F%E5%88%97%E4%B8%AD%E6%9F%90%E4%B8%80%E4%BD%8D%E7%9A%84%E6%95%B0%E5%AD%97/README.md 面试题 44. 数字序列中某…

超越传统:Reflection 70B如何革新AI语言处理

Reflection 70B:AI语言模型的新里程碑🚀 AI领域迎来了革命性的变革,HyperWrite公司推出的开源AI大模型Reflection 70B,以其卓越的性能在多个基准测试中超越了GPT-4o和Llama 3.1。这款基于Meta的Llama 3.1 70B Instruct构建的模型…

electron 客户端 windows linux(麒麟V10)多系统离线打包 最新版 <二>

这节主要讲解以下 linux系统(国产麒麟)下,electron如何配置打包。 第一, 下载二进制包 和windows的一样,还是下载二进制包。只不过是linux版本的,千万不要下错了。 地址:CNPM Binaries Mirro…

大型视觉语言模型的有效性评估

原文地址:https://arxiv.org/abs/2403.04306 摘要:大型视觉语言模型(LVLM)的出现代表了通用人工智能的探索取得了显着的进步。然而,该模型在专业和一般任务中的有效性值得进一步研究。本文致力于评估流行的 LVLM 分别在…

Leetcode面试经典150题-210.课程表II

这个题是图的问题,因为图的拓扑排序在实际应用中有非常多的用途图,所以最近考的越来越多 解法都在代码里,不懂就留言或者私信 看这个题之前一定要好好看看207题我写的题解,也许207看懂了的话,210只是一个coding问题了…

集成电路学习:什么是RTC实时时钟

一、RTC:实时时钟 RTC,即实时时钟(Real-Time Clock),是一种能够在设备中持续运行并准确记录时间的电子组件。它广泛应用于计算机、手机、嵌入式系统、智能家居设备等多种场合,为这些设备提供精确的时间基准…

利用 Redis 实现延迟队列(点赞场景)

🌈点赞场景在前段时间有很多人都在争论,我也看了一些视频和文档,最后觉得b站技术的这篇写得很好 【点个赞吧】 - B站千亿级点赞系统服务架构设计 - 哔哩哔哩 🌈所以我也尝试用 Redis 的延迟队列来写一个点赞处理的 demo&#xff0…

iOS——通知协议代理

通知 概要 观察者和被观察者都无需知晓对方,只需要通过标记在NSNotificationCenter中找到监听该通知所对应的类,从而调用该类的方法。并且在NSNotificationCenter中,观察者可以只订阅某一特定的通知,并对其做出相应操作&#xf…

《论多源数据集成及应用》写作框架,软考高级系统架构设计师

论文真题 在如今信息爆炸的时代,企业、组织和个人面临着大量的数据。这些数据来自不同的渠道和资源,包括传感器、社交媒体、销售记录等,它们各自具有不同的数据格式、分布和存储方式。因此如何收集、整理和清洗数据,以建立一个一致、完整的数据集尤为重要。多源数据集成可…

Leetcode 700-二叉搜索树中的搜索

给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 题解 如果root.val>val,则搜索左子树,如果roo…

finalshell 4.5.x在m1mac闪退

使用过程中会出现突然闪退,尤其在定位生产打开一堆窗口的情况下,绝绝子 闪退崩溃日志: Thread 116 Crashed:: Java: pool-4-thread-28 0 libsystem_kernel.dylib 0x18e926600 __pthread_kill 8 1 libsystem_pthread.dyl…

基于opencv实现双目立体匹配点云距离

双目相机或两个单目相机。 一、相机标定 MATLAB软件,打开双目标定app。 点击add images,弹出加载图像的窗口,分别导入左图和右图,设置黑白格长度(标定板的长度一般为20)。 点击确定,弹出加载…

ArrayList,LinkedList

ArrayList集合 底层原理 1.利用空参创建的集合,在底层创建一个默认长度为0的数组 2.添加第一个元素时,底层会创建一个新的长度为10的数组 3.存满时,会扩容1.5倍 4.如果一次添加多个元素,1.5倍还放不下,则新创建数…

【C++】list的使用与简单模拟实现

目录 1、list的介绍和使用: 1、结构: 2、接口函数: 迭代器遍历: 增删查改: 翻转与排序: 2、list的模拟实现: 1、节点的封装: 2、迭代器的封装: 3、list的模拟实…

Flutter中自定义气泡框效果的实现

在用户界面的设计中,气泡框(Bubble)是一种非常有效的视觉工具,它可以用来突出显示信息或提示用户。气泡框广泛应用于聊天应用、通知提示等场景。在 Flutter 中,虽然有很多现成的气泡框组件,但如果你想要更多…

关于 ubuntu系统install的cmake版本较低无法编译项目升级其版本 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/141933927 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

django摄影竞赛小程序论文源码调试讲解

2系统关键技术及工具简介 系统开发过程中设计的关键技术是系统的核心,而开发工具则会影响的项目开发的进程和效率。第二部分便描述了系统的设计与实现等相关开发工具。 2.1 Python简介 Python 属于一个高层次的脚本语言,以解释性,编译性&am…

Android Studio调试Flutter项目

run运行项目中途,点击Flutter Attach 等一会就可以调试! 或者,直接Debug允行项目。

C++相关概念和易错语法(32)(单例模式、类型转换)

1.单例模式 (1)设计模式是什么? 简单来说,被反复使用,多数人知晓、经过分类的代码设计经验的总结就叫设计模式,它建立在特殊类的设计之上,实现特殊的功能,运用的知识也十分综合。如…