从玩具到工业控制--51单片机的跨界传奇【3】
在科技的浩瀚宇宙中,51 单片机就像一颗独特的星辰,散发着神秘而迷人的光芒。对于无数电子爱好者而言,点亮 51 单片机上的第一颗 LED 灯,不仅仅是一次简单的操作,更像是开启了一扇通往新世界的大门。这小小的 LED 灯,宛如黑暗中的启明星,承载着我们对电子技术的好奇与憧憬,照亮了我们探索科技未知领域的道路 。
在接下来的篇章里,让我们一同回溯这段充满挑战与惊喜的旅程,看看这颗 LED 灯如何点燃了我们心中对技术追求的熊熊烈火。
一,单片机的内部结构和工作原理
在单片机入门阶段,我们只需要对其结构有个大概的了解就足够了,等后期随着单片机的深入学习,我们再回头来对其结构进行深入的了解。我在这里也是给大家进行简单的讲解,不会太过深入,防止大家失去学习的信心。如图所示:
FLASH就相当于硬盘,SRAM就相当于内存。对于硬盘和内存的概念我就默认大家熟知了,不懂的朋友们可以自行搜索一下这个视频 <内存和硬盘的区别>进行了解。前面,咱们讲过单片机就是一种集成电路,其实在单片机的内部就是如上图所示的结构。单片机内核就是CPU处理器。我们写的程序最终被存放在FLASH程序存储器里面,我们创建的变量被存储在SRAM数据存储器里面。当单片机开始运行的时候,单片机就会从FLASH程序存储器里面调取运行指令,这里告诉大家:FLASH程序存储器是只读存储器,在单片机运行的过程中,产生的一切数据不会再放入FLASH里面,而是存放在数据存储器里面,就是为了防止程序发生错误,引起单片机的工作异常。CPU会根据指令进行运算,会从数据存储器里面调用数据。数据存储器就是CPU用来调取和存放数据,存放中间计算结果的地方,SRAM掉电就会丢失数据,所以为了防止这种情况的发生,一般都会配有看门狗来进行监管,当看门狗检测到电压低于某一个范围时,就会立马读取SRAM里面的数据进行存储。然后,CPU把计算的数据再发送给寄存器(GPIO外设),寄存器根据数据再输出1或0,各个引脚再根据1或0输出对应的高低电平,来控制外围设备,读取外部数据也是如此,通过引脚的高低电平变化,寄存器来进行的1或0的数据存储,再发给CPU根据指令进行处理。我们操作单片机,其实本质上就是操作各个引脚对应的寄存器。大家进行简单的了解即可。
二,单片机的引脚介绍
我们就以我们要讲解的DIP封装的51单片机来展示。其它封装的单片机会多出来4个引脚,多出来的引脚时P4口引脚,这不影响我们的单片机的讲解。如图所示:
我们从外观上可以看到上面,有个半圆的缺口。在所以的单片机里面,半圆缺口左边对应单片机的第一号引脚,逆时针依次排号。
20号引脚和40号引脚分别为单片机的GND和VCC。
51单片机有4组I/O,分别为P0,P1,P2和P3,每组对用8个引脚,也就是说,我们控制这32个引脚来进行外围设备的控制。大家可以看到有些引脚会有个表示,比如T2/P1.0,带有‘ / ’表示这个引脚的功能是可以复用的,也就是说这个引脚有两个功能。没标识的引脚就是普通的I/O口。
T2,T0,T1这些为定时器或计数器引脚(后面会讲解的)。
RXD和TXD为单片机的串口通信引脚,也是我们的程序下载引脚。
INT0和INT1为外部中断引脚。
XTAL1和XTAL2为单片机的外部晶振引脚。
WR(写信号)和 RD(读信号)引脚主要用于外部数据存储器(如 RAM)和 I/O 接口芯片的读写控制。它们是实现单片机与外部设备之间数据传输的关键信号引脚。
EA 引脚用于控制单片机是访问内部程序存储器还是外部程序存储器。这是 51 单片机程序存储选择的关键引脚,当 EA 引脚接高电平时,单片机先从内部程序存储器读取程序指令。如果程序计数器(PC)的值超过了内部程序存储器的容量范围(对于 8051 单片机,内部程序存储器一般为 4KB),那么它会自动转向外部程序存储器读取剩余的程序指令。当 EA 引脚接低电平时,单片机忽略内部程序存储器,直接从外部程序存储器读取所有的程序指令。这种方式适用于程序代码量较大,需要外部扩展大容量程序存储器(如 EPROM、Flash 等)的情况。由于现在我们的单片机都有内部的ROM所以我们不需要读取外部ROM,所以我们直接接高电平就OK了。
ALE 引脚主要用于在访问外部存储器时,锁存低 8 位地址信号。在 51 单片机访问外部存储器(包括数据存储器和程序存储器)的过程中,地址总线是分时复用的,它既用于传输地址信息又用于传输数据信息。当单片机访问外部存储器时,P0 口会先输出低 8 位地址信息,此时 ALE 引脚会输出一个正脉冲。这个正脉冲可以被外部的地址锁存器(如 74LS373)用来锁存 P0 口输出的低 8 位地址,使得地址信息在数据传输阶段能够保持稳定。现在,单片机内部都自带丰富的RAM,不再需要扩展RAM,所以这个引脚用处不大。
PSEN 引脚是程序存储器读选通信号,用于控制对外部程序存储器的读取操作。它是单片机从外部程序存储器读取指令时的关键控制信号。当单片机从外部程序存储器读取指令时,PSEN 引脚会输出一个低电平脉冲。这个低电平信号用于选通外部程序存储器,使其将存储的程序指令输出到数据总线上,然后单片机就可以从数据总线上读取这些指令并执行。
P0口比较特殊,它要接上拉电阻才能驱动,至于什么是上拉电阻? 它是怎样的电路? 我们都会在数码管那个章节讲到的。
总结:以上引脚大家先做了解就足够了,后面学习到的时候,我都会进行详细的讲解的。
三,最小系统单片机的电路介绍
最小的单片机系统是由电源,主控芯片,晶振电路和复位电路组成的。先给大家看电路图:
复位电路的作用:
- 系统初始化
- 复位电路的主要作用是使单片机内部的各个寄存器和电路恢复到初始状态。当单片机复位时,程序计数器(PC)被清零,这意味着单片机从程序存储器的起始地址(对于 51 单片机来说,一般是 0000H)开始执行程序。同时,其他特殊功能寄存器(SFR),如累加器 A、寄存器 B、PSW(程序状态字)等也会被初始化为固定的值。
- 例如,PSW 寄存器在复位后被设置为 00H,这使得单片机进入初始的工作状态,如默认选择工作寄存器组 0。这种初始化功能确保了每次单片机上电或者手动复位后,系统都能以一个确定的、一致的状态开始运行,就像将系统进行了一次 “归零” 操作。
- 解决程序异常情况
- 比如,在一个工业控制环境中,周围可能存在较强的电磁干扰。当干扰导致单片机程序出错时,按下复位按钮,复位电路就能让单片机重新启动,避免了设备长时间故障,保障了系统的可靠性和稳定性。
- 在单片机运行过程中,可能会由于干扰、程序错误或者其他突发情况导致系统出现异常。例如,程序进入了死循环,或者数据被错误地修改,导致系统无法正常工作。此时,复位电路可以通过外部复位信号(如手动复位按键)使单片机重新复位,恢复到正常的工作状态。
晶振电路的作用:
- 提供时钟信号
- 晶振电路为单片机提供了稳定的时钟信号。51 单片机内部的各种操作,如指令执行、数据传输、定时器 / 计数器工作等,都需要时钟信号来进行同步。时钟信号就像是单片机的 “心跳”,它决定了单片机的工作速度和时序。
- 例如,51 单片机的一个机器周期是由 12 个时钟周期组成的。晶振频率的高低直接影响了单片机的机器周期时间。如果晶振频率为 12MHz,那么一个机器周期就是 1 微秒()。这种精确的时钟信号使得单片机能够按照设计好的时序和速度来执行程序指令。
- 保证系统时序稳定
- 单片机在与外部设备通信或者进行内部模块之间的协同工作时,需要严格的时序控制。晶振电路提供的稳定时钟信号是保证这些时序的基础。
- 例如,在使用 51 单片机的定时器 / 计数器功能时,定时器的计数频率是由晶振频率经过内部时钟分频电路得到的。如果晶振频率不稳定,定时器的定时精度就会受到影响,进而导致与定时器相关的功能(如定时采样、定时控制等)出现错误。稳定的晶振电路可以确保这些功能的准确性和可靠性。
四,成为“点灯大师”
讲解了那么多的单片机的基础知识了,也该进行实操了。今天,咱们就来点亮人生中的第一颗LED灯。在点灯之前,咱先认识一下LED电路。
大家知道,我们能控制单片机的引脚输出高低电平 ,给引脚为逻辑1,它就会输出高电平,给0就会输出低电平。上图的LED灯是共阳极的,它的正极都接在一起,8颗LED灯分别与单片机的P1口接在一起,每一个引脚对应一颗LED灯。当我们给0时,就会输出低电平,LED就会正向的导通,LED就会亮,反之就灭。我们使用的时STC国产宏晶提供的芯片安装包,接下来我教大家怎么安装STC提供的芯片安装包,我们需要先下载好stc-isp烧录软件,这个文件我放在文章顶部了,各位可以自行下载。进行如下操作:
OK各位,接下来进行代码演示:
#include <STC89C5xRC.H>
void main()
{P10=0; //STC的头文件里面,我们可以直接进行I/O的操作
}
进行头文件的展示:
各位至于Keil5怎么使用,怎么下载我就不再这多讲了,大家可以自行搜索相关视频。接下里看实验现象:
相关文章:
从玩具到工业控制--51单片机的跨界传奇【3】
在科技的浩瀚宇宙中,51 单片机就像一颗独特的星辰,散发着神秘而迷人的光芒。对于无数电子爱好者而言,点亮 51 单片机上的第一颗 LED 灯,不仅仅是一次简单的操作,更像是开启了一扇通往新世界的大门。这小小的 LED 灯&am…...
Java算法 二叉树入门 力扣简单题相同的树 翻转二叉树 判断对称二叉树 递归求二叉树的层数
目录 模版 先序遍历 中序遍历 后序遍历 力扣原题 相同的二叉树 力扣原题 翻转二叉树 遍历树的层数 题目 静态变量 核心逻辑 模版 // 二叉树public static class Node{public int value;public Node left;public Node right;public Node(int v) {valuev;}} 先序遍历 …...
麒麟操作系统服务架构保姆级教程(十二)keepalived高可用
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 随着业务的扩大,服务器集群也越来越大,用户多了起来就要保证用户访问,服务绝对不能宕机,那么这个时候咱们除了做灾备以外,负载均衡服务器会…...
docker 部署confluence
1.安装docker的过程就不说了。 2.下载镜像。 docker pull cptactionhank/atlassian-confluence:7.4.0 docker images 3.下载pojie 包。 https://download.csdn.net/download/liudongyang123/90285042https://download.csdn.net/download/liudongyang123/90285042 4.编写do…...
【English-Book】Go in Action目录页翻译中文
第8页 内容 前言 xi 序言 xiii 致谢 xiv 关于本书 xvi 关于封面插图 xix 1 介绍 Go 1 1.1 用 Go 解决现代编程挑战 2 开发速度 3 • 并发 3 • Go 的类型系统 5 内存管理 7 1.2 你好,Go 7 介绍 Go 玩具 8 1.3 总结 8 2 Go 快速入门 9 2.1 程序架构 10 2.2 主包 …...
奉加微PHY6230兼容性:部分手机不兼容
从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…...
SSE 实践:用 Vue 和 Spring Boot 实现实时数据传输
前言 大家好,我是雪荷。最近我在灵犀 BI 项目中引入了 SSE 技术,以保证图表的实时渲染,当图表渲染完毕服务端推送消息至浏览器端触发重新渲染。 什么是 SSE? SSE 全称为 Server-Send Events 意思是服务端推送事件。 SSE 相比于 …...
HJ3 明明的随机数(Java版)
一、试题地址 明明的随机数_牛客题霸_牛客网 二、试题内容 描述 对于明明生成的 nn 个 11 到 500500 之间的随机整数,你需要帮助他完成以下任务: 删去重复的数字,即相同的数字只保留一个,把其余相同的数去掉;然后…...
C++ 模拟真人鼠标轨迹算法 - 防止游戏检测
一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...
Linux-----线程同步(条件变量)
目录 相关API restrict关键字 线程间条件切换函数 条件变量pthread_cond_t 案例 在前面的锁的基础上进一步提高线程同步效率,也就是两个线程只用锁去执行的话依然会存在资源竞争的情况,也就是抢锁,这里就需要在锁的这边加上限制…...
58,【8】BUUCTF [PwnThyBytes 2019]Baby_SQL1
进入靶场 和2次注入的页面很像 不过养成查看源代码的好习惯 先访问source.zip 下载后解压,发现两个文件 第一个文件夹打开又有4个PHP文件 那还是先看index.php文件好了 有PHP和HTML两部分,下面是PHP部分代码(HTML太长了,先放一…...
小汽车维修记录程序(PC版)
我需要一个小程序,记录我的小车保养相关的情况:时间,地点,某种零件,以什么价格被保养使用。这样我才能清楚的知道我的小车下一次保养,然后我可以有的放矢的去准备下一次的零件和时间,避免过度保…...
回顾2024年在CSDN的成长
文章目录 我与CSDN的初次邂逅初学阶段的阅读CSDN:编程新手的避风港初学者的福音:细致入微的知识讲解考试复习神器:技术总结的“救命指南”曾经的自己:为何迟迟不迈出写博客的第一步兴趣萌芽:从“读”到“想写”的初体验…...
AI编程工具使用技巧——通义灵码
活动介绍通义灵码1. 理解通义灵码的基本概念示例代码生成 2. 使用明确的描述示例代码生成 3. 巧妙使用注释示例代码生成 4. 注意迭代与反馈原始代码反馈后生成优化代码 5. 结合生成的代码进行调试示例测试代码 其他功能定期优化生成的代码合作与分享结合其他工具 总结 活动介绍…...
解读InnoDB数据库索引页与数据行的紧密关联
目录 一、快速走进索引页结构 (一)整体展示说明 (二)内容说明 File Header(文件头部) Page Header(页面头部) Infimum Supremum(最小记录和最大记录) …...
KubeSphere 与 Pig 微服务平台的整合与优化:全流程容器化部署实践
一、前言 近年来,为了满足越来越复杂的业务需求,我们从传统单体架构系统升级为微服务架构,就是把一个大型应用程序分割成可以独立部署的小型服务,每个服务之间都是松耦合的,通过 RPC 或者是 Rest 协议来进行通信,可以按照业务领域来划分成独立的单元。但是微服务系统相对…...
虚幻基础2:gameplay框架
能帮到你的话,就给个赞吧 😘 文章目录 ue框架:gameplay组成game modeactorcomponent player controllergame state 工作流程 ue框架:gameplay 组成 game mode 游戏类型和规则。可以控制游戏的开始与结束以及一些其他功能。 ac…...
在线base64转码工具
在线base64转码工具,无需登录,无需费用,用完就走。 官网地址: https://base64.openai2025.com 效果:...
2024年,我的技术探索与成长之路
2024年,我的技术探索与成长之路 2024年已经过去,作为一名技术爱好者和写作者,我回顾了过去一年在博客上记录的点滴,感慨良多。这一年,我不仅见证了技术的飞速发展,也在不断学习和实践中找到了自己的成长方向…...
【逆境中绽放:万字回顾2024我在挑战中突破自我】
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 一、引言二、个人成长与盘点情感与心理成长学习与技能提升其它荣誉 三、年度创作历程回顾创作内容概…...
图谱之前端关系应用
文章目录 图谱之前端关系应用(relation-graph、d3.js、echarts)1. relation-graph应用实例优缺点 2. d3.js应用实例优缺点 3. echarts应用实例优缺点 总结 图谱之前端关系应用(relation-graph、d3.js、echarts) 1. relation-grap…...
Kibana:ES|QL 编辑器简介
作者:来自 Elastic drewdaemon ES|QL 很重要 💪 正如你可能已经听说的那样,ES|QL 是 Elastic 的新查询语言。我们对 ES|QL 寄予厚望。它已经很出色了,但随着时间的推移,它将成为与 Elasticsearch 中的数据交互的最强大…...
建造者模式(或者称为生成器(构建器)模式)
一、什么是建造者模式? 将复杂对象的构建与表示进行分离,使得统一的构建过程,可以创建出不同的对象表现模式 就是将复杂对象里面的成员变量,设置不同的值,使得生成出来的对象拥有不同的属性值; 二、特点…...
【CTFHub】SQL注入cookie注入及知识点
打开题目页面如下 根据提示应该在cookie处注入,通过burp suite抓包并发到重放器 知识点 Cookie 是存储在用户本地计算机上的小文件,由 Web 服务器通过 HTTP 协议发送给浏览器,并保存在用户的浏览器端。当用户再次访问该网站时,浏…...
CSS中样式继承+优先级
继承属性和非继承属性 一、定义及分类 1、继承属性是指在父元素上设置了这些属性后,子元素会自动继承这些属性的值,除非子元素显式地设置了不同的值。 常见的继承属性: 字体 font 系列文本text-align text-ident line-height letter-spacing颜色 col…...
[leetcode](找到vector中的特定元素并删除)无重复字符的最长子串
一.找到vector中的特定元素并删除 #include <iostream> #include <vector> #include <algorithm> int main() { // 示例 vector std::vector<int> vec {1, 2, 3, 4, 5, 6}; // 要删除的元素 int aim 3; // 查找元素 auto it std::fin…...
记录一次 centos 启动失败
文章目录 现场1分析1现场2分析2搜索实际解决过程 现场1 一次断电,导致 之前能正常启动的centos 7.7 起不来了有部分log , 关键信息如下 [1.332724] XFS(sda3): Internal error xfs ... at line xxx of fs/xfs/xfs_trans.c [1.332724] XFS(sda3): Corruption of in-memory data…...
Linux使用SSH连接GitHub指南
基础配置流程 步骤1:生成SSH密钥 打开终端:首先,打开你的Linux终端。 生成SSH密钥对:输入以下命令来生成一个新的SSH密钥对: ssh-keygen -t rsa -b 4096 -C "your_email@example.com"-t rsa:使用RSA加密算法生成密钥。-b 4096:密钥长度为4096位,增加安全性。…...
QModbusTCPClient占用内存持续增长
最近使用QModbusTCPClient通信,需要频繁发送读写请求,发现软件占用内存一直在增减,经过不断咨询和尝试,终于解决了。 1.方案一(失败) 最开始以为是访问太频繁,导致创建reply的对象比delete re…...
具体场景的 MySQL 与 redis 数据一致性设计
场景1: 短视频修改名称,简介等视频数据更新还是清除更新策略如何设计?热 key 处理其他处理自己的数据查询 其他问题冷热突变/突然的热 key 加入如果产品要更新后能所有用户立马看到效果怎么办 ? 场景2: 抢红包如何设计?限制红包的数量 分布式锁的自旋问题 场景 3: 更改用户主…...
机器学习之SVD奇异值分解实现图片降维
SVD奇异值分解实现图片降维 目录 SVD奇异值分解实现图片降维1 SVD奇异值分解1.1 概念1.2 基本步骤1.2.1 矩阵分解1.2.2 选择奇异值1.2.3 重建矩阵1.2.4 降维结果 1.3 优缺点1.3.1 优点1.3.2 缺点 2 函数2.1 函数导入2.2 函数参数2.3 返回值2.4 通过 k 个奇异值降维 3 实际测试3…...
基于.Net Core+Vue的文件加密系统
1系统架构图 2 用例图 管理员角色的用例: 文件分享大厅:管理员可以访问文件分享大厅,下载文件。个人信息管理:管理员可以更新自己的个人信息,修改密码。用户管理:管理员负责创建、更新或删除用户账户&…...
数据结构(链表 哈希表)
在Python中,链表和哈希表都是常见的数据结构,可以用来存储和处理数据。 链表是一种线性数据结构,由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。链表可以用来实现栈、队列以及其他数据结构。Python中可…...
1161 Merging Linked Lists (25)
Given two singly linked lists L1a1→a2→⋯→an−1→an and L2b1→b2→⋯→bm−1→bm. If n≥2m, you are supposed to reverse and merge the shorter one into the longer one to obtain a list like a1→a2→bm→a3→a4→bm−1⋯. For ex…...
第23篇 基于ARM A9处理器用汇编语言实现中断<五>
Q:怎样修改HPS Timer 0定时器产生的中断周期? A:在上一期实验的基础上,可以修改按键中断服务程序,实现红色LED上的计数值递增的速率,主程序和其余代码文件不用修改。 实现以下功能:按下KEY0…...
VS Code--常用的插件
原文网址:VS Code--常用的插件_IT利刃出鞘的博客-CSDN博客 简介 本文介绍VS Code(Visual Studio Code)常用的插件。 插件的配置 默认情况下,插件会放到这里:C:\Users\xxx\.vscode\extensions 修改插件位置的方法 …...
数智化转型 | 星环科技Defensor 助力某银行数据分类分级
在数据驱动的金融时代,数据安全和隐私保护的重要性日益凸显。某银行作为数字化转型的先行者,面临着一项艰巨的任务:如何高效、准确地对分布在多个业务系统、业务库与数仓数湖中的约80万个字段进行数据分类和分级。该银行借助星环科技数据安全…...
【md文档】公式简单介绍
在Markdown文档中,可以使用LaTeX语法来插入数学公式。以下是一些常见的LaTeX公式示例及其在Markdown中的写法: 1. 行内公式 行内公式使用单个美元符号 $ 包裹。 ‘’’ 这是一个行内公式:$E mc^2$效果: 这是一个行内公式&…...
macOS Sequoia 15.3 beta3(24D5055b)发布,附黑、白苹果镜像下载地址
“ 镜像(黑苹果引导镜像、白苹果Mac镜像、黑苹果虚拟机镜像)下载地址:黑果魏叔官网。” 关于macOS Sequoia 15.3 beta3(24D5055b),以下是对其的详细介绍: 一、版本发布信息 发布时间 …...
HTML学习笔记(4)
目录 一、背景相关样式 二、定位position 三、javascript 1、变量的定义 2、数据类型 3、绑定事件 一、背景相关样式 background-image: url(); // 背景图片 background-repeat: repeat; // 背景图片是否平铺 no-repeat background-size: 200px; // 背景图片尺寸 cover把…...
密钥轮换时,老数据该如何处理
密钥轮换时是否需要重新加密老数据,取决于具体的加密策略和密钥管理系统的设计。以下是两种常见情况及处理方式: 1. 密钥轮换不涉及重新加密老数据 场景:如果密钥轮换仅用于新数据的加密,而老数据仍使用旧密钥解密。 处理方式&a…...
Django框架:python web开发
1.环境搭建: (a)开发环境:pycharm (b)虚拟环境(可有可无,优点:使用虚拟环境可以把使用的包自动生成一个文件,其他人需要使用时可以直接选择导入包ÿ…...
RCD-IoT:在高数据包传输率下,利用资源受限设备实现工业监测与控制
论文标题 中文:RCD-IoT:在高数据包传输率下,利用资源受限设备实现工业监测与控制 英文:RCD-IoT: Enabling Industrial Monitoring and Control with Resource-Constrained Devices Under High Packet Transmission Rates 作者信…...
LabVIEW实车四轮轮速信号再现系统
开发了一个基于LabVIEW的实车四轮轮速信号再现系统。该系统解决现有电机驱动传感器成本高、重复性差、真实性差和精度低等问题,提供一种高精度、低成本的轮速信号再现解决方案。 项目背景 ABS轮速传感器在现代汽车安全系统中发挥着至关重要的作用。为保证其准确性和…...
【Vim Masterclass 笔记16】S07L32 + L33:同步练习09 —— 掌握 Vim 宏操作的六个典型案例(含点评课内容)
文章目录 S07L32 Exercise 09 - Macros1 训练目标2 操作指令2.1. 打开 macros-practice.txt 文件2.2. 练习1:将旧版 Python 代码转换为新版写法2.3. 练习2:根据列表内容批量创建 Shell 脚本2.4. 练习3:对电话号码作格式化处理2.5. 练习4&…...
LabVIEW 实现线路板 PCB 可靠性测试
在电子设备制造领域,线路板 PCB(Printed Circuit Board)的可靠性直接影响产品的整体性能和使用寿命。企业在生产新型智能手机主板时,需要对 PCB 进行严格的可靠性测试,以确保产品在复杂环境下能稳定运行。传统的测试方…...
深入内核讲明白Android Binder【二】
深入内核讲明白Android Binder【二】 前言一、Binder通信内核源码整体思路概述1. 客户端向服务端发送数据流程概述1.1 binder_ref1.2 binder_node1.3 binder_proc1.4 binder_thread 2. 服务端的binder_node是什么时候被创建的呢?2.1 Binder驱动程序为服务创建binder…...
TextButton组件的功能与用法
文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了CircleAvatar Widget,本章回中将介绍Button这种Widget,闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 关于Button相信大家都很熟悉,也就是我们常用的按钮。用户按下按钮后…...
HTML5+Canvas实现的鼠标跟随自定义发光线条源码
源码介绍 HTML5Canvas实现的鼠标跟随自定义发光线条特效源码非常炫酷,在黑色的背景中,鼠标滑过即产生彩色变换的发光线条效果,且线条周围散发出火花飞射四溅的粒子光点特效。 效果预览 源码如下 <!DOCTYPE html PUBLIC "-//W3C//D…...
AS自治系统
引言 通过前几天的学习,我们基本了解了静态路由,有静态就肯定有动态,那他们又有哪些区别呢? 静态路由:由网络管理员手工填写的路由信息。动态路由:所有路由器运行相同路由协议,之后,…...