【浅谈】单片机基本概念

news2024/11/15 16:01:42

这里写目录标题

  • 一 引言
  • 二 存储器
    • 1 ROM(read only memory)
    • 2 RAM (random access memory)
    • 3 累加器(ACC : accumulator)
  • 三 I/O口
  • 四 堆栈
  • 五 定时/计数器
  • 六 中断
    • 1、`一些中断词汇`:
    • 2 中断的`响应过程`:
    • 3 `作用`:
  • 七 复位
    • 1 `启动方式`:
    • 2 常见的复位电路:
  • 八 看门狗(watchdog tinmer)
    • 1 看门狗的`作用`:
    • 2 看门狗的`4大本质`要素:
  • 九 时钟电路和振荡源
    • 1`常见的时钟电路`:
    • 2 片内`锁相环`(PLL)技术
  • 十 脉宽调制(PWM)
  • 十一 模拟/数字转换(ADC)
    • 1`常用的ADC方法`:
    • 2 A/D转换器的主要`技术指标`
    • 3 采样后的滤波处理
  • 十二 串行通信
    • 1 概念:
    • 2 串行通信最主要的问题:
    • 3 实现同步的方法:

机缘巧合知道了一本关于单片机的书,书名是《匠人手记:一个单片机工作者的实践和思考》,翻了翻,大有裨益,边学习边记录,算是对整个框架的重新梳理吧,仅供学习参考。

一 引言

一个单片机系统,就是一个微型化的计算机。
主要包括:中央处理器CPU、存储器、输入/输出(I/O)设备。
个人计算机是将这些模块分成若干个芯片或模块,安装在主板上,
而单片机是将这些部分集成到一颗芯片中。

中央处理器:主要负责进行算术和逻辑运算,以及对系统其它设备的控制。
存储器:主要用于存储数据和程序。【单片机的一个主要作用就是数据信息处理】
输入/输出设备:是系统与外界交换数据的通道。

一个单片机基础系统框图如下:
在这里插入图片描述
目前单片机继承了更多功能模块,如:A/D D/A PWM LCD驱动电路等。

二 存储器

存储器的物理实质是一组(或多组)具备数据输入/输出和数据存储功能的集成电路,用于充当设备缓存或保存固定的程序及数据。

按存储信息功能不同分为:ROM和RAM

1 ROM(read only memory)

ROM只读存储器:一次写入后只能被读出。一般用于存固定程序或数据表格。
但“只读”有时可被一些新特性的器件颠覆。
如EPROM 和 闪存就可以使用适当的方法进行擦除或改写。
(1) EPROM (Erasable Programmable ROM)
它与一般的ROM不同的是,可用特殊的装置擦除或重写其中的内容。
(2)闪存(flash memory)
也叫PEROM(programmable and erasable ROM),它是完全非易失的,可在线写入,且可按页连续字节写入,读出速度快。

特点:电源关闭或端点后数据仍会保留下来。

2 RAM (random access memory)

随机存储器。即内存。
作用:用来存放各种输入/输出数据、中间计算结果,以及与外部存储器交换信息,或作堆栈用。其存储单元根据具体情况可读出或改写。

特点:暂时存放程序和数据,断电或电源关闭,数据会丢失

3 累加器(ACC : accumulator)

是一种暂存器。
作用:存储计算所产生的的中间结果,提升计算效率。

三 I/O口

它是单片机与外界联系的通道,可多各类外部信号(开关量、模拟量、频率信号)进行检测、判断、处理,并可控制各类外部设备。

输入/输出大多是双向三态的
有些单片机允许设置I/O口的输入/输出状态,当输入时,对外呈“高阻态”,输出时,对外可提供更大的灌电流或拉电流,可直接驱动一些负载(如LED)
输入口:用来读取外部输入的电平信号;
输出口:用来对外输出一个电平信号。

输入门槛电流、最大输出电流、输出电平(高电平、低电平)
I/O口附加功能,包括内部上拉/下拉电阻功能,R-OP-TION功能以及漏极开路功能。
I/O口功能的扩展和复用:中断、唤醒、ADC检测以及PWM输出等。

四 堆栈

堆栈(Stack)是一种线性数据结构,可简单看作是一维数组。

不同的是对一维数组进行元素插入、删除,可在任意位置。但对于堆栈来说,插入、删除操作是固定在一端进行,这一段为栈顶(TOP),另一端为栈底(Bottom)

堆栈操作:压栈和出栈。
向栈中插入数据的操作称为“压入(push)”,从栈中删除数据称为“弹出(pop)”
“向上生长”型堆栈和“向下生长”型堆栈。向上则压栈时指针+1,向下压栈时指针-1

特性:“后进先出(LIFO)”。堆栈是只有一个进出口的一维空间,所以最后一个放入的要先出来。

堆栈指针(SP):用于指示栈顶位置(地址)。发生压栈和出栈操作时,导致栈顶位置变化时,堆栈指针会随之变化。
有的单片机,堆栈指针可通过程序去设置,堆栈空间仅受整个系统的RAM空间大小制约。
有的不允许甚至堆栈指针。

堆栈的应用
1、调用子程序,或响应中断,堆栈用作保存现场。
2、临时变量存取。

注意事项
1、堆栈溢出:覆盖老的数据,造成数据丢失或错乱,或程序结构发生混乱。
2、压栈和出栈的匹配(对应关系)

五 定时/计数器

定时/计数器,实质都是计数器。
定时器:对微机内部时钟脉冲进行计数;
计数器:对微机外部输入的脉冲进行计数。
若输入脉冲周期相同,也可将计数器作为定时器来使用。

作用
(1)计时、定时或延时控制
(2)脉冲计数
(3)测量脉冲宽度或频率(捕获功能)

实现定时的几种方式
(1)软件延时。(占用系统时间)
(2)可编程定时/计数器方法
(3)不可编程的硬件方法(设计一个数字逻辑电路,如555定时器)

六 中断

优先级更高的事件发生,打断优先级低的事件进程时,称为中断。引起中断的事件称为中断源。
通常我们将主应用程序称为后台程序;
中断服务程序称为:前台程序。

1、一些中断词汇

现场保护、中断响应,现场恢复、中断返回、中断嵌套(一个中断事件没做完,更高级别的中断又来了,优先级)、中断屏蔽等

中断嵌套处理示意图:
在这里插入图片描述

2 中断的响应过程

(1)现场保护。将当前地址、ACC、状态寄存器保存到堆栈中。
(2)切换指针。切换到相应的入口地址。
(3)执行中断处理程序。
(4)现场回复。将保存在堆栈中的数据恢复。
(5)中断返回。执行完中断指令后,从中断处返回到主程序,继续执行。

有的单片机会自动执行现场保护和恢复,有的需编写这部分程序。
有的的那篇及为每个中断源分配了不同的入口地址,甚至可自定义,有的则将所有中断源共用一个入口,就需要进行中断查询。

3 作用

某个任务对实时性要求较高时,应交由中断服务程序去做。
当主应用程序对实时性要求较高时,应避免被打扰。

七 复位

复位是通过外部电路给单片机的复位引脚一个复位信号,让系统重新开始运行。

1 启动方式

(1)冷启动:上电复位
(2)热启动:不断电,复位引脚一个复位信号;内部看门狗计时溢出导致的复位等。

常见的复位动作

  • PC指针从起始位置开始运行;
  • I/O扣变成缺省状态(高阻态,或输出低电平);
  • 部分专用控制寄存器恢复到缺省值状态;
  • 普通RAM不变;

注意事项
(1)注意复位信号的电平状态及持续时间必须满足系统要求。
(2)注意避免复位不良。

2 常见的复位电路:

(1)简易的上电复位电路。(有一个电阻和一个电容构成)
在上电时,电容被充电。在电容充电期间,系统复位。电容充电结束后,系统复位结束,开始正常工作。
复位电平的宽度(持续时间)由电阻值和电容值共同决定。

如下复位电路图,为高电平复位有效。

在这里插入图片描述

(2)防电源抖动复位电路

在这里插入图片描述
可以防止因电源抖动而产生的反复复位。

(3)残余电压保护复位电路
在这里插入图片描述
以上两个为欠压保护复位电路,在电源频繁插拔过程中,这两个电路可有效保证复位。

(4)施密特特性复位电路
在这里插入图片描述
避免在Vcc在复位阈值附近时复位振荡,关键器件是反馈电阻R3

(5)掉电预警复位电路

当前一级电源电压(假设为I2V)开始下降时,Vcc由于电容C2的保护作用,还没有下降,这为系统弄的可靠复位提供了宝贵时间。当复位电路检测到I2V电源下降后,利用时间差让cpu提前进入复位状态,从而避免复位不良。

八 看门狗(watchdog tinmer)

需求:程序需要一个独立于系统之外的单元对系统的工作进行监测,在发生异常状况时及时予以纠正。

1 看门狗的作用

防止程序发生死循环,或程序抛费。
在这里插入图片描述
看门狗的工作状态
看门狗是一个定时器电路,平时只要一通电,就会不断计时。计时达到设置,产生一个溢出信号,该型号被接到RST端,引发系统复位。
CPU正常工作时,每隔一段时间就输出一个信号到喂狗端,用来让定时器清零(也称“喂狗”),从而避免在正常工作状态复位。当程序跑飞或死机,程序异常,若超过规定时间不喂狗,看门狗会发生计时溢出,出发系统复位。

2 看门狗的4大本质要素:

定时器
复位电路
可清零
独立性。

喂狗注意事项

  • 喂狗间歇不得大于看门狗溢出时间。
  • 避免在中断中喂狗。
  • 尽可能避免多处喂狗。

看门狗电路发展阶段:
(1)片外分立器件电路(用555或4060等构成)
(2)专用WDT集成电路。
(3)CPU片内集成。(虽是内置,一般都有独立的RC振荡源)

九 时钟电路和振荡源

单片机是一种时序电路,必须提供脉冲信号才能正常工作,所以需有个专门的时钟电路。

1常见的时钟电路

(1)外置晶振+内置振荡器
在这里插入图片描述

(2)外置陶振+内置振荡器
(3)RC振荡器
(4)外部直接给时钟输入

2 片内锁相环(PLL)技术

有时,高时效性和低功耗是矛盾的。有了锁相环技术,就可以控制的单片机的工作频率。
作为编程者需要知道如何去设置系统的工作评率,以及何时选择怎样何种工作频率。

几个概念
振荡周期:指振荡源的振荡节拍
机器周期:一个机器周期包含了多个振荡周期
指令周期:执行一条指令,需要几个机器周期。不同指令操作需要的机器周期不同。

十 脉宽调制(PWM)

pulse width modulation (脉冲宽度调制),简称脉宽调制。

PWM技术原理
通过调整一个周期固定的方波的占空比,来调节输出的平均电压、电流或功劳簿等被控量。

应用场景:

  • 控制电机转速;
  • 控制充电电流;
  • 控制磁场力矩大小。

PWM技术的种类:
相电压控制PWM、脉宽PWM、随机PWM、SPWM、线电压控制PWM等。

十一 模拟/数字转换(ADC)

1常用的ADC方法

  • 积分型ADC
  • 逐次逼近型ADC
  • (sigma-delta)型ADC
  • 闪速ADC
  • 平行比较型ADC
  • 电容阵列逐次比较型
  • 压频变换器

2 A/D转换器的主要技术指标

(1)分辨率
(2)转换速率
(3)量化误差
(4)偏移误差
(5)满刻度误差
(6)线性度
(7) 其它:绝对精度、相对精度等

3 采样后的滤波处理

经过ADC获得的数据一般不能直接用,需要去除其中干扰成分,并且让数据曲线更平滑、稳定。所以要对采样值进行软件滤波,常用的方法有:算数平均滤波法、一阶滤波法、程序判断滤波法等

十二 串行通信

1 概念:

外设和计算机间使用一根数据信号线。数据在数据信号线上逐位地进行传输,每一位数据都占据一个固定的时间长度。

并行通信:数据是被分组同步传输的,每次可传输N位数据;
串行通信:数据是被逐位传输的。其占用的通信端口资源比并行通信少的多。

2 串行通信最主要的问题:

是数据收发同步问题。只有一根数据线。

3 实现同步的方法:

(1)双方约定一个相同的通信速度(如RS232协议),即波特率(bps=bit/s)。波特率决定了通信的速度。

(2)引入时钟信号(如I2C通信协议),意味着增加一段时钟线。该线上每发生一个同步时钟脉冲,双方就完成一个位(bit)的传输。

(3)类似红外通信那样采用特殊的编码方式。
在这种通信方式中,每一位数据都是用一个脉冲来表示。该脉冲有两种不同的脉冲宽度或占空比,分别代表数据0和1。而脉冲边沿则用来实现同步的目的。

串行通信的数据校验:
数据校验是确保通信正常的手段。具体方法包括:奇偶校验、和校验、冗余数据表决校验、CRC校验等

学习书目:《匠人手记:一个单片机工作者的实践和思考》
借用作者的一句话勉励自己,也和大家共勉。“技术源于积累,成功源于执着。

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

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

相关文章

提示词工程与 AI 使用的紧密关系

随着人工智能(AI)技术的快速发展,特别是生成式模型(如 GPT 系列模型)的广泛应用,提示词工程(Prompt Engineering)成为了 AI 使用中至关重要的环节。提示词工程是指通过精心设计和优化…

踩最深的坑,教会自己出海的前端选型

目录 引言 1. 前端 1.1 Next.js 1.2 Remix 1.3 Nuxt 2. 样式与UI库 2.1 Tailwind CSS 2.2 NextUI 2.3 Framer Motion 2.4 Shadcn/UI 引言 在经历了刻骨铭心的合伙创业经历后,我意识到是时候该独立出海了。 捡起早已深埋在心里的创业想法,开始…

Unity2D游戏入门

1.导入资源 在Assets下新建文件夹 Res,将相关素材拖入其中(本文中的素材仅为学习使用)。 2.菜单 设置页面大小 选择素材,查看素材大小。 设置游戏视图大小。 调整工作布局方便查看 记得给场景改名为MenuScene,与其他…

HTTPS安全吗?3个理由告诉你HTTPS为什么是安全的!

从保护银行网站到在线购物期间保护数据,HTTPS协议在互联网上随处可见。例如当您访问racent.com时,你会发现你是通过安全加密链接来访问网站的。这种安全链接会触发浏览器的网址栏旁边显示安全挂锁图标。 但HTTPS真的安全吗? 如果你想快速得到答案&…

item_get京东获取商品详情SKU数据接口||关于京东商品采集接口

jd.item_get 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[yes,no]默…

【网络安全】漏洞挖掘:php代码审计

未经许可,不得转载。 文章目录 正文正文 在应用程序中,通过一个 JavaScript 注释发现了一个备份 ZIP 文件。解压后,获取了应用程序的代码,其中包含如下代码片段: 代码首先检查变量 $action 是否等于 convert,如果是,则继续执行。随后对传入的变量 $data 使用 trim() 函…

github高级搜索

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

memcmp函数的使用

目录 1.头文件 2.memcmp函数讲解 小心&#xff01;VS2022不可直接接触&#xff0c;否则&#xff01;没这个必要&#xff0c;方源面色淡然一把抓住&#xff01;顷刻炼化&#xff01; 1.头文件 memcmp函数的使用需要包括头文件 #include<string.h> 2.memcmp函数讲解 简述…

0基础转行AI产品经理,终于有人说清楚了!

当AI成为趋势&#xff01;越来越多的产品已经或正在高度AI化&#xff0c;这个趋势正如已经完成的产品移动化一样不可阻挡。产品经理要想让自己保值增值&#xff0c;必须积极拥抱AI的大趋势。 . 学习 AI 产品经理可以参考以下书籍&#xff1a; 《人工智能产品经理——AI时代P…

AI绘画入门教程(全网最详细)从零基础入门到精通,看完这一篇就够了!

前言 AI绘画的出现&#xff0c;让越来越多的人可以轻松画出美丽的插画作品。在本篇文章中&#xff0c;我们将会使用AI绘画软件&#xff1a;触站&#xff0c;轻松创建属于自己的作品。从零开始学AI绘画&#xff01; 从零开始学AI绘画关键步骤&#xff1a; 第一步&#xff1a;…

NC 环形链表的约瑟夫问题

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 编号为 1 到 …

助力汽车半导体产业发展,2025 广州国际新能源汽车功率半导体技术展览会与您相约“羊城”广州

助力汽车半导体产业发展&#xff0c;2025 广州国际新能源汽车功率半导体技术展览会与您相约“羊城”广州 随着半导体技术的升级与发展&#xff0c;功率半导体已经成为推动新能源汽车和智能汽车产业升级的关键因素。汽车不再只是单纯的交通工具&#xff0c;而是逐渐演变为一个智…

QT 串口上位机读卡显示

目录 一. QT创建工程 二. 软件更换图标 三. QT打包 一. QT创建工程 文件新建&#xff0c;选择创建一个桌面QT。 重命名RFID,并选择工程保存路径 RFID.pro QT core gui serialport #串行串口greaterThan(QT_MAJOR_VERSION, 4): QT widgetsTARGET RFID TE…

SX_VMware联网_23

利用Nat模式联网&#xff0c;NAT模式&#xff08;Network Address Translation&#xff09;&#xff1a; 在NAT模式下&#xff0c;虚拟机通过主机的网络接口访问外部网络。 虚拟机之间可以相互通信&#xff0c;也可以访问主机网络以及互联网。 虚拟机使用私有IP地址&#xff0c…

健身管理|基于java的健身管理系统小程序(源码+数据库+文档)

健身管理系统|健身管理系统小程序 目录 基于java的健身管理系统小程序 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&…

磁盘内存大小文件树WizTree(找内存分布)

背景 我想要清理C盘&#xff0c;但是不知道那些地方占据内存最多 https://www.diskanalyzer.com/downloadWizTree is the fastest disk space analyzer for Windows. Download the latest version here. Use it to quickly locate and remove space hogs from your hard driv…

k8s(kubernetes)的PV / PVC / StorageClass(理论+实践)

NFS总是不支持PVC扩容 先来个一句话总结&#xff1a;PV、PVC是K8S用来做存储管理的资源对象&#xff0c;它们让存储资源的使用变得可控&#xff0c;从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去自动化创建PV的组件。所有Pod使用存储只有一个原则&…

数据库的索引是什么?

索引就是类似书本的目录一样&#xff0c;拿字典来说&#xff0c;索引存储的记录地址相当于字典的页数&#xff0c;索引存储的键值相等于字典的某个字。我们可以在目录里面快速地浏览&#xff0c;找到某个关键字&#xff0c;我们在翻到具体的页数看字的解释。举例&#xff1a;我…

机器学习特征构建与特征筛选

前言 上一篇文章讲述了原始特征分析和处理&#xff0c;保障后续拿到的是干净的特征变量&#xff0c;但实际这些特征对于建模不一定是有效的&#xff0c;所以需要在原始特征的基础上&#xff0c;结合业务场景做特征变量的衍生&#xff0c;提升数据的表达能力。此外&#xff0c;…

下载 llama2-7b-hf 全流程【小白踩坑记录】

1、文件转换 在官网 https://ai.meta.com/llama/ 申请一个账号&#xff0c;选择要下载的模型&#xff0c;会收到一个邮件&#xff0c;邮件中介绍了下载方法 执行命令 git clone https://github.com/meta-llama/llama.git​ &#xff0c;然后执行 llama/download.sh&#xff0c…