单片机原理及技术(一)—— 认识单片机(C51编程)
目录
一、单片机概述
1.1 什么是单片机
1.2 单片机的发展历史
1.3 单片机的特点
1.4 MCS-51 系列与 AT89S5x 系列单片机
1.4.1 MCS-51 系列单片机
1.4.2 AT89S5x 系列单片机
1.5 各种衍生品种的8051单片机
1.5.1 STC 系列单片机
1.5.2 C8051Fxxx 系列单片机
一、单片机概述
1.1 什么是单片机
单片机(Microcontroller Unit,MCU)指的是一种集成了中央处理器(CPU)、存储器和各种输入输出设备的微型计算机系统。它具备高度集成度、低功耗、体积小、成本低等优势。单片机广泛应用于嵌入式系统、电子设备、工控系统、通信设备等领域。
单片机通常由以下几个部分组成:
- 中央处理器(CPU):负责执行指令、进行算术逻辑运算等核心计算任务。
- 存储器:包括内部存储器(ROM和RAM)和外部存储器(闪存、SD卡等),用于存储程序和数据。
- 输入输出端口(I/O):用于与外部设备进行数据交互,如开关、LED灯、传感器、显示器等。
- 定时器/计数器:提供计时和定时功能,以及对外部事件的计数。
- 通信接口:如串行通信接口(UART、SPI、I2C)和并行通信接口(GPIO)等,用于与其他设备进行数据通信。
- 程序存储器编程器:用于将程序存储到单片机的存储器中。
单片机通常使用汇编语言或高级编程语言(如C语言)进行编程,开发工具包括编译器、调试器、仿真器等。根据不同厂商和型号的单片机,其架构、指令集、功能和性能特点会有所不同。
单片机的应用非常广泛,例如在家电、汽车、医疗设备、工业自动化、智能家居、消费电子等领域中都有它的身影。单片机的主要优势是体积小、功耗低、成本较低,同时具备较强的实时性和可编程性,使其成为嵌入式系统设计的理想选择。
1.2 单片机的发展历史
单片机的发展历史:
-
第一代单片机(1971-1976年):第一代单片机采用四位或八位的微处理器,有限的存储器容量和外设接口,以及较低的工作频率。最早的单片机是Intel 4004,它由于其简单的功能和广泛应用而受到了很大的关注。
-
第二代单片机(1976-1986年):第二代单片机在处理器性能和功能上有了显著的提升。采用八位或十六位处理器,具备更大的存储器容量和更多的外设接口。Intel的8051系列和Motorola的6805系列是这个时期最著名的单片机。
-
第三代单片机(1986-2000年):第三代单片机在处理器性能、存储器容量和外设接口上都有了重大突破。处理器的位数逐渐增加到32位,存储器容量和运行速度显著提高,外设接口更加丰富多样。Atmel的AVR系列和Microchip的PIC系列是这个时期最著名的单片机。
-
第四代单片机(2000年至今):第四代单片机继续在处理器性能、存储器容量和外设接口上进行创新。处理器的位数进一步增加,存储器容量和运行速度也有了显著提升。此外,随着物联网和嵌入式系统的兴起,单片机的功耗和尺寸也得到了进一步的优化。ARM的Cortex-M系列和ESP8266、ESP32等无线通信芯片也是当前最受欢迎的单片机产品。
1.3 单片机的特点
单片机(Microcontroller)具有以下特点:
-
集成度高:单片机是一种高度集成的电子器件,包含了微处理器核心、存储器、输入输出接口和外设接口等功能模块,可以完成数据处理和控制任务。
-
低功耗:单片机采用高度优化的电路设计和节能技术,功耗较低,适合用于移动设备和电池供电的应用。
-
多功能性:单片机具备通用的处理能力和灵活的配置选项,可以根据不同应用的需求进行编程和配置,实现不同的功能。
-
实时性强:单片机具备快速的响应能力和实时的数据处理能力,适用于需要实时控制和处理的应用场景。
-
体积小巧:单片机封装紧凑,体积小巧,适合嵌入式和紧凑空间的应用,例如智能家居、医疗设备等。
-
成本低廉:由于单片机集成度高,制造工艺成熟,因此成本相对较低,适用于大规模和成本敏感的应用。
-
易于开发和编程:单片机具备友好的开发环境和丰富的开发工具,简化了软硬件的开发流程,降低了开发门槛。
-
可扩展性强:单片机具备丰富的外设接口和扩展接口,可以连接各种外部设备和传感器,扩展应用功能。
综上所述,单片机具备集成度高、低功耗、多功能、实时性强、体积小巧、成本低廉、易开发和编程以及可扩展性强等特点,因此被广泛应用于各种嵌入式系统和控制系统中。
1.4 MCS-51 系列与 AT89S5x 系列单片机
1.4.1 MCS-51 系列单片机
MCS-51系列单片机是由Intel公司在1980年推出的一款经典的8位单片机系列。它是指基于Intel 8051内核的一系列单片机,其中包括8051、8052、8031、8032等不同型号。
MCS-51系列的基础型产品主要包括以下几款单片机:
-
8051:8051是MCS-51系列中最常见的型号,具有4KB的内部程序存储器(ROM)、128B的内部数据存储器(RAM),以及多个外设接口如GPIO、计时器/计数器、串行口等。
-
8052:8052是在8051的基础上增加了更多的功能和内存容量的单片机。它具有8KB的内部程序存储器(ROM)、256B的内部数据存储器(RAM),以及额外的I/O引脚和更强大的计时器/计数器。
-
8031:8031是与8051兼容的单片机,具有和8051相似的特性,但内存容量较小。它包括1KB的内部程序存储器(ROM)和128B的内部数据存储器(RAM)。
-
8032:8032是在8031的基础上增加了更多的功能和内存容量的单片机。它具有1KB的内部程序存储器(ROM)、256B的内部数据存储器(RAM),以及额外的I/O引脚和更强大的计时器/计数器。
1.4.2 AT89S5x 系列单片机
AT89S5x系列单片机是基于Intel 8051架构的8位微控制器系列。它们具有高度集成的特点,适用于各种应用领域,包括工业控制、家电、汽车电子、通信设备等。这个系列的单片机具有低功耗、高性能和多种外设接口等优点。
AT89S5x系列单片机根据内部FLASH存储器的不同容量可以分为不同型号,如AT89S51、AT89S52等。它们都具有相同的核心架构,但在存储容量和外设接口等方面略有差异。
AT89S5x系列单片机中的核心功能包括一个8位的CPU、内部RAM和ROM存储器,以及各种外部和内部中断源。它们还具有多个通用I/O引脚、定时器/计数器、串口通信接口、定时/计数器、PWM输出和ADC功能等。
AT89S5x系列单片机还支持ISP(In-System Programming)和IAP(In-Application Programming)功能,这意味着可以通过串行接口对程序进行编程和更新,而无需将芯片从电路板上取下来。
1.5 各种衍生品种的8051单片机
1.5.1 STC 系列单片机
STC系列单片机是由中国的STC微控制器公司推出的一款基于8051核心架构的8位微控制器系列。STC单片机的特点是低成本、易学易用,广泛应用于各种嵌入式系统。
STC系列单片机具有多种型号,主要包括STC89系列、STC12系列和STC15系列。这些单片机都具有相似的架构和功能,但在存储器容量、外设接口和性能方面略有差异,可以根据具体应用的需求选择适合的型号。
STC单片机具有丰富的外设接口,包括通用I/O口、定时器/计数器、串口通信接口、PWM输出、模拟输入等。它们还支持多种编程方式,包括ISP(In-System Programming)和IAP(In-Application Programming),使得开发者可以通过串行接口对程序进行编程和更新。
STC单片机的开发工具和编程软件相对简单易用,可以使用STC-ISP或STC-ISP-PRO等编程器进行编程,同时可以使用类似Keil C或SDCC等C编译器进行程序开发。
1.5.2 C8051Fxxx 系列单片机
C8051Fxxx系列单片机是由美国Silicon Labs公司推出的一款基于8051核心架构的8位微控制器系列。这些单片机具有高性能、低功耗和丰富的外设接口,适用于各种嵌入式应用领域。
C8051Fxxx系列单片机主要包括C8051F32x、C8051F33x、C8051F34x、C8051F35x、C8051F36x、C8051F37x和C8051F38x等型号。这些型号在存储器容量、外设接口和性能等方面有所差异,开发者可以根据具体应用的需求选择合适的型号。
C8051Fxxx系列单片机具有丰富的外设接口,包括GPIO(通用输入/输出口)、定时器/计数器、ADC(模数转换器)、DAC(数模转换器)、SPI、I2C、UART等。这些外设接口提供了灵活的接口,可以满足各种应用的需求。
C8051Fxxx系列单片机还具有强大的系统集成功能,包括多路模拟输入通道、内部振荡器、低功耗模式和片内电源管理等。这些功能有助于降低系统功耗、提高性能和简化系统设计。
开发C8051Fxxx系列单片机的工具和软件也非常成熟,Silicon Labs提供了Simplicity Studio,这是一个集成开发环境(IDE),支持C语言开发和调试。开发者可以使用C编译器和调试器进行程序开发和调试。
相关文章:
单片机原理及技术(一)—— 认识单片机(C51编程)
目录 一、单片机概述 1.1 什么是单片机 1.2 单片机的发展历史 1.3 单片机的特点 1.4 MCS-51 系列与 AT89S5x 系列单片机 1.4.1 MCS-51 系列单片机 1.4.2 AT89S5x 系列单片机 1.5 各种衍生品种的8051单片机 1.5.1 STC 系列单片机 1.5.2 C8051Fxxx 系列单片机 一、单片…...

白嫖的在线工具类宝藏网站清单,快点击进来收藏一波
简单整理了一下自己日常经常使用的10个免费工具网站,建议点赞关注收藏,快点分享给小伙伴们! 1.奶牛快传:用户体验更好的网盘工具。 https://cowtransfer.com/ 今年开始使用的一款网盘工具,和百度网盘类似,叫奶牛快传,如…...
【机器学习300问】97、机器学习中哪些是凸优化问题,哪些是非凸优化问题?
在机器学习的领域中,多数模型的参数估计问题实质上可以转化为优化问题。鉴于机器学习模型的多样性,不同的模型会对应着不同的损失函数,进而形成各具特色的优化问题。了解优化问题的形式和特点,对于提升我们求解模型参数的效率和准…...
两种盒模型
在CSS中,有两种主要的盒模型(Box Model),它们决定了元素的尺寸计算方式: 标准盒模型(W3C Box Model) 在标准盒模型中,元素的总宽度和总高度分别由以下几个部分组成: Cont…...

【C++】类型转换
目录 前言一、C语言中的类型转换二、为什么C需要四种类型转换三、C强制类型转换3.1 static_cast3.2 reinterpret_cast3.3 const_cast3.4 dynamic_cast3.5 RTTI 前言 本篇文章讲解的是C中对于C语言类型转换做出的一些更好的规范问题,同时也保证了在一些特殊场景下进…...
Redis RDB 持久化问题
前言 Redis 是内存数据库,它将自己的数据储存在内存里面,如果不想办法将储存在内存中的数据保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据也就没了。 因此,Redis 提供了 RDB 持久化功能,这个功能…...
windows 下nginx常用命令
1、启动,目录cmd,后 start nginx.exe 2.重新加载 nginx -s reload 3.查看状态 tasklist /fi “imagename eq nginx.exe” 4.关闭 nginx -s quit...
xjoi题库一级1-10段题解(c语言版)
xjoi题库一级一段 xjoi题库一级二段 xjoi题库一级三段 xjoi题库一级四段 xjoi题库一级五段...

1.int 与 Integer 的简单区别
蓝桥杯刷题从此开始: 第一题就是两个数的和,个人看来主要考察 int与integer 的区别; 这是我提交的答案,竟然会报错: import java.util.*; //输入A、B,输出AB。 class add {public static void main(String …...

单片机原理及技术(二)—— AT89S51单片机(一)(C51编程)
目录 一、AT89S51单片机的片内硬件结构 二、AT89S51的引脚功能 2.1 电源及时钟引脚 2.2 控制引脚 2.3 并行 I/O口引脚 三、AT89S51的CPU 3.1 运算器 3.1.1 算术逻辑单元(ALU) 3.1.2 累加器A 3.1.3 程序状态字寄存器(PSW)…...

某方protobuf闲谈
问题 当我们去看某方的时候,搜索了关键词svm,然后通过抓包查看,请求的Request Payload是一串看不懂的乱码,并且返回的数据也大部分是乱码 观察请求的Content-Type是application/grpc-web+proto,没错数据的传输是protobuf的形式了 protobuf的相关概念和原理,网上有很多教…...

专为汽车内容打造的智能剪辑解决方案
汽车内容创作已成为越来越多车主和汽车爱好者热衷的活动。然而,如何高效、便捷地将行车途中的精彩瞬间转化为高质量的视频作品,一直是困扰着广大用户的一大难题。美摄科技凭借其深厚的视频处理技术和智能分析能力,推出了专为汽车内容记录而生…...

【C语言】二叉树的实现
文章目录 前言⭐一、二叉树的定义🚲二、创建二叉树🎡三、二叉树的销毁🎉四、遍历二叉树1. 前序遍历2. 中序遍历3. 后序遍历4. 层序遍历 🌲五、二叉树的计算1. 计算二叉树结点个数2. 计算二叉树叶子结点的个数3. 计算二叉树的深度4…...

在ubuntu22.04里网站源码连不上mysql数据库
在ubuntu22.04里网站源码连不上mysql数据库。后来找到了原因。 连不上的时候有报错信息: ERROR 1698 (28000): Access denied for user rootlocalhost 用在网上搜索该报错信息,找到了两篇有用的文章,用这两篇文章里的处理方法解决了问题。 …...

博客说明 5/12~5/24【个人】
博客说明 5/12~5/24【个人】 前言版权博客说明 5/12~5/24【个人】对比最后 前言 2024-5-24 13:39:23 对我在2024年5月12日到5月24日发布的博客做一下简要的说明 以下内容源自《【个人】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作…...
豆瓣电影后端设计
sql脚本 -- douban.tags_encode definitionCREATE TABLE tags_encode (id bigint NOT NULL AUTO_INCREMENT COMMENT 自增主键,tag varchar(100) NOT NULL COMMENT tag中文名,tag_encode varchar(100) NOT NULL COMMENT tag转encode,type varchar(100) NOT NULL DEFAULT movie …...

【深度学习】第1章
概论: 机器学习是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析,其基础主要是归纳和统计。 深度学习是一种实现机器学习的技术,是机器学习重要的分支。其源于人工神经网络的研究。深度学习的模型结构是一种含多隐层的神经…...

Vue3实战笔记(37)—粒子特效登录页面
文章目录 前言一、粒子特效登录页总结 前言 上头了,再来一个粒子特效登录页面。 一、粒子特效登录页 登录页: <template><div><vue-particles id"tsparticles" particles-loaded"particlesLoaded" :options"…...
解锁无限可能:JavaScript与【机器学习】的浪漫邂逅
解锁无限可能:JavaScript与机器学习的浪漫邂逅 在人工智能和大数据日益盛行的今天,机器学习已成为我们理解、分析和处理数据的强大工具。而JavaScript,作为前端开发的主流语言,其灵活的特性和广泛的应用场景也让我们对其充满了期…...
【Linux】$()中的内容与不加$()时有什么区别
$()中的内容与不加$()有什么区别,例如$(/usr/local/hadoop/bin/hadoop classpath)与/usr/local/hadoop/bin/hadoop classpath两者有何区别??? 关于这个问题,笔者建议可以参考如下文章: Linux—shell中$((…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...