单片机系统

news2024/12/24 9:29:55
 

我们来看单片机 的例子,读者可能会担心单片机(又称MCU,或微控制器) 过于专业而无法理解。完全没必要!在这里我们仅借它谈论一下有关时间的话题,顺带提一下单片机系统的概念。

图片

    单片机顾名思义是集成到一个芯片里面的计算机系统,计算机系统就意味着 它要跑程序,也就意味着要有人去编写这个程序。这同时意味着单片机本身并没有具体的功能,它是一个通用件,具体要实现什么功能取决于你编写的程序。

    光是一块芯片可什么也干不了,首先要有一个目标程序文件,它可以是你亲 自编写的,也可以是朋友编写的,总之它在PC机里面是一个文件。然后我们通过连接到电脑的程序烧录器,打开配套的烧录软件,将这个文件导入到单片机内。(就像把文件复制到U盘一样)

图片

     单片机内已经有了程序,接下来要怎么让它工作起来呢?这非常简单,首先, 要给单片机加上一个晶振(晶振产生的脉冲信号将驱动单片机按时序工作);其次,当然要给单片机加电;最后给一个复位信号到复位管脚;它就开始运行程序了。这几个最基本的要素,集合在一起,也叫最小系统,如果不想自己亲手做,在网上能够轻松淘到。

图片

    言归正传我们切入正题,单片机系统往往要处理按键输入、数码管的显示、以及其他开关量信号的输入和输出处理。普通的8位单片机一般具备 24到32个IO(输入输出)引脚,每个引脚可以作为输入,也能作为输出。假设单片机供电电压为 5V,那么5V 即代表着程序中的1地)。而程序中的0相当于电压为0V(接最简单的输出应用:在P3.7管脚上面连接一个发光管的负极,发光管的正极通过限流电阻接电源。如果程序给P3.7赋值为 1,那么发光管两端电压都是5V电压差为0,处于熄灭状态。若程序给 P3.7赋值为0,那么发光管正极电压为5V,负极电压为0V(接地),电压差使发光管点亮。这样程序就可以控制发光 管的亮与灭了!最简单的输入应用:在P1.7管脚上面通过一个电阻接电源(上拉电阻),使它默认为5V 然后再将这个管脚通过一个按钮接地,当按钮按下时,管脚电压变为0V。程序只要从P1.7管脚读取数值为0时,表示该按键被按下。

图片

单片机的输入和输出:S1-S4 按键输入,d1-d8 发光管输出

🔜🔜🔜🔜

    回到时间的话题,先来看一下 摇摇棒的例子:

图片

  摇摇棒有一排 LED 发光管 

图片

夜里摇动摇摇棒的效果

    这又是什么原理?这是一个眼睛被时间欺骗的经典案例!眼见为实吗?事实 告诉你,眼见并非为实,很多东西你看到了却并非你想的那样真实。同样还有很 多东西是你肉眼看不到的,但看不到并不证明不存在!我们先撇开摇摇棒的实现 原理,来看看我们眼睛的特性。

图片

关于人类的视觉延时 ,百度百科这么说:视觉暂留(Persistence of vision)

    现象是光对视网膜所产生的视觉在光停止作用后,仍保留一段时间的现象,其具体应用是电影的拍摄和放映。原因是由 视神经的 反应速度造成的。是动画、电影等视觉媒体形成和传播的根据。视觉实际上是靠眼睛的晶状体成像,感光细 胞感光,并且将光信号转换为神经电流,传回大脑引起人体视觉。感光细胞的感 光是靠一些感光色素,感光色素的形成是需要一定时间的,这就形成了视觉暂停 的机理。

    物体在快速运动时,当人眼所看到的 影像消失后,人眼仍能继续保留其影像0.1-0.4秒左右的图像,这种现象被称为视觉暂留现象。是人眼具有的一种性质。人眼观看物体时,成像于视网膜上,并由视神经输入人脑,感觉到物体的像。但当物体移去时,视神经对物体的印象不会立即消失,而要延续 0.1 -0.4秒的时间。人眼的这种性质被称为“眼睛的视觉暂留”。

    读到这里,我想也就不用再解释摇摇棒的原理了!只要你切换的时间小于人 眼延时,我们的眼睛就会被欺骗。接下来再看一个异曲同工的小玩意:电动版摇 摇棒。

图片

🔜🔜🔜🔜

    数码管是廉价、简便、易于实现的显示元件,没错,其实就是7个(带上小 数点就是8个)被做成 条状和点状的发光管。它能够通过不同段位的组合显示 出基本的数字和字母,真是一项了不起的发明!

图片

图片

图片

    数码管的高明之处是码段的复用,通过 7 个段的排列组合,描绘出数量超过7种的数字和字母的象形符号。如将数码管的BC点亮,就是数字1,如果把ABGED点亮,就是数字2,非常形象,四岁的孩子都能读懂。数码管和单片机天然搭配,前面讲到单片机的I 口(输入输出口)能够直接控制发光管的亮灭,而一个数 码管只是8个发光管装在一个壳子里,数码管与单片机连接是酱紫的:

图片

    图中每个引脚上都加了电阻,是因为发光管本身是个二极管,二极管是不能 直接加电源的,千万别把发光管当灯泡一样接到电源,那样会因为电流过大而烧 毁。因此要串联一个电阻,以限制通过发光管的电流,单个发光管的电流在1-5mA之间。

    现在问题来了,估计读者也意识到这个问题了:一个数码管至少需要7 个独 立的控制脚,如果一个系统需要8个甚至更多数码管排列进行显示时,那么至少要56个控制脚,而单片机管脚十分有限,难道一个单片机最多只能接2个数码管?

    办法当然有,那就是在时间上做文章,终于回到时间的话题上来了:) 一般来说一个系统要实现的初级形态总是最复杂的,人们通过线路复用、空间复用、时间复用,总之是资源的复用来简化我们的系统。数码管用了7个段,显示的内容却远远超过 7 种,这是对发光管的复用。一个发光管需要2根引线, 意味着一个数码管至少有14根引线,由于发光管的一端总是要接电源正极或地(负极),把这些线合并成一根线,以减少管脚数量,是线路的复用。

图片

    把 4 个数码管的控制脚并联在一起,形成总线的模式,所有数码管都用同一 组单片机IO口来驱动。读者的第一反应是不是:那好像行不通,岂不是所有数 码管都显示相同的内容了?

    D0 到 D4 能够控制单个数码管的供电,如果单片机的程序这样做:先在 IO口上输出 1 的码型,然后只点亮第1个数码管,其他数码管都关闭;第二步,在IO口上输出 2 的码型,然后只点亮第2个数码管;第三步,IO口上输出3的码型,然后只点亮第3个数码管;第四步,IO口上输出4 的码型,然后只点亮第4个数码管。接着又回到第一步重复这些步骤。

    没错!就是一个跑马灯,4个数码管依次被点亮。如果把时间因素考虑进去, 这个跑马灯跑一圈的时间小于人眼的视觉延时时间,嘿嘿,没错,眼睛就这样被 欺骗了。你就会神奇的感觉到:4个数码管同时亮了!而且还显示着各自独立的内容。
 

  说完数码管,再来谈一谈阵列显示:

图片

    数码管虽好,但其变化实在有限,如果要显示一个图形、图标,那非要阵列 莫属。就拿图中的最基本的阵列单元来看,我的哥!八八六十四个 LED 发光管, 如果要使每个点都能独立显示,至少需要 65 个引脚!那还有简化的空间吗?当然,继续寻找线路复用的方法呗!

图片

    通过行列形式进行组织无疑是一种直观、简化的办法:用 8 根行线与 8 根列 线交叉,每一个交叉点上连接一个发光管,将指定的行线和列线加电,那么它们 所交汇的那个发光管就被点亮。那岂不是同时只能点亮一个,或者一排发光管?回忆一下前面的例子,现在轮到欺骗眼睛的伎俩登场(坏笑)!

图片

单片机 16 个引脚驱动 64 个 LED 的阵列

    以上那么多例子,说明一个事情:平时我们所感觉到事情发生“同时”性并 不完全是真的。时间能够在你眼皮底下变戏法而让你无法察觉!如果你是一个设 计者,要通过区区 16 根线让 64 个发光管“同时”受控制,抛弃时间因素话,就 不可避免会钻到牛角尖里去。“那怎么可能!”

    从时间的微观角度去看,很难有什么事情是真正同时发生的,你在电脑上看 着文档,同时电脑又播放着迷人的音乐,音乐和显示器上的内容变化都是“同时” 发生着,如果真的要同时,那么电脑就要有成千个处理器,每开启一个程序,就 要增加使用一个独立的处理器。而事实上并非如此,个人电脑一般只有一个处理器而且足以应付你“同时”看文档和听歌这类事。

站在程序的视角,在阵列上显示一个 B,总共分 8 步:

图片

阵列组织方式,除了在显示上面派用场,在内存中、键盘中同样可以采用类 似的方法。比如说键盘:

图片

    不难理解,当按键查询程序运行一个周期所需要的时间小于你的手指按下一个按键的时间时,无论你怎么去按下按键,都能被程序检测到!假如你是超人:手指按键速度超过程序速度,那当然按键就不能再响应你了:)这种玩弄时间的 伎俩终于被识破了(坏笑)。
 

 最后上一个案例给读者自己琢磨:

图片

    手握一支笔尖带有一个感光器 的光笔,当光强大于一个设定的幅度时,光笔 输出信号1,否则输出信号0。现在要实现光笔在LED阵列上绘画的功能,站在程 序的角度,程序该怎么做?总共分几步?别忘了利用时间变戏法哦,别问我为什 么不需要触摸屏,奥秘全在于对时间的理解。

    举了那么多栗子够累的,下面我们来玩一玩概念。学概念是最占便宜的行当, 既能快速理解,又不需要花太大成本,然后摇身一变,就能装个专家了!这里当 然还是说与时间有关的事,来谈一谈实时系统。

    实时系统是什么?实时是啥意思?立即、马上的意思?可能差不多吧。但是 立即又是多长时间呢?马上又是多长时间呢?了解分时系统的读者可能会本能的理解字面意思:把系统分为分时系统和实时系统两大类,分时系统是过时的老技术,实时系统比较高大上。真是这样吗?这些理解会把人带到沟里去的。

    看看百度怎么说:一个实时系统是指计算的正确性不仅取决于程序的逻辑正 确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发 生系统出错。所谓“实时”,是表示“及时”,而实时系统是指系统能及时响应 外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协 调一致的运行。

    首先实时系统并非一定是计算机系统,比如执行拦截任务导弹的发射电路, 要求从按钮按下到导弹发射的时间间隔必须小于一个值,否则将错过拦截目标而 导致任务失败。也就是说,实时系统除了对功能有要求外,对时间也有要求。按钮按下能够使火箭发射是功能,按下按钮之后在要求的时间限制内使火箭发射是时间!

    既然是“实时”表示“及时”的意思,那难道分时系统就不及时了吗?问到 点子上了,事实上,实时系统与分时系统并非并列相对的,它们根本就是两个不 同的概念。分时系统主要是指计算机操作系统,而实时系统是一个大概念,它也 包括操作系统。如果在分时系统上增加对时间的约束管理,使得任务的执行时间 能够预知和可控,那么这个分时系统同时又是一个实时系统。

为了加深认识,举一个极端的例子:

图片

    在一艘游轮安装有一个礁石避让系统,这个系统由声呐装置和舵机控制两大 部分组成,声呐装置探测半径为2海里,游轮的最高速度20节(海里每小时), 那么从探测到障碍到游轮触礁的时间最快是6分钟,而舵机转向之后到游轮改变 航道需要4分钟。那就要求礁石避让系统从接收到障碍信号到输出控制舵机转向 的时间必须小于2分钟。只要这个2分钟的要求能够满足,那么这个礁石避让系 统就是一个实时系统!

    实时系统在概念上又有强实时和弱实时之分,或叫硬实时和软实时之分:强 实时系统(Hard Real-Time):在航空航天、军事、核工业等一些关键领域中, 应用时间需求应能够得到完全满足,否则就造成如飞机失事等重大地安全事故,造成重大生命财产损失和生态破坏。因此,在这类系统的设计和实现过程中,应 采用各种分析、模拟及形式化验证方法对系统进行严格的检验,以保证在各种情 况下应用的时间需求和功能需求都能够得到满足。

    弱实时系统(Soft Real-Time):某些应用虽然提出了时间需求,但实时任 务偶尔违反这种需求对系统的运行以及环境不会造成严重影响,如 视频点播(Video-On-Demand,VOD)系统、信息采集与检索系统就是典型的弱实时系统。在VOD系统中,系统只需保证绝大多数情况下视频数据能够及时传输给用户即可, 偶尔的数据传输延迟对用户不会造成很大影响,也不会造成像飞机失事一样严重的后果。

    写在 最后:其实,在时间的世界里,没有“久”、“立即”、“马上”、“瞬间”,时间就是一个可以用数字衡量的东西,我们的直觉和感官范围太小,所有的感觉都建立在 相对的基础上。有句谚语说:饭是要一口一口吃的,事情是一件一件做的,路是 一步一步走的!就是要我们认识到时间的特性,为什么一些人可以从容面对和处 理非常多的事,而大部分人总是只能做一件事,事情多了就烦躁,失去头绪,因 为他潜意识想所有的事情同时得到解决,然后就乱了方寸。从微观的角度,站在 程序的视角也是如此,程序是一个指令一个指令的往下执行的,语句是一句一句 往下走的,不是所有的功能和信号都是同时发生的!即使你感觉到它们是同时发 生的,那极有可能你被“欺骗”了。

    假使一个程序周期就是一次生命的话,你的人生就是一部进化史。当一个键 盘扫描程序全部代码的意义发生在某个方波的下降沿附近的某个位置时,它扫到 了一个按键。当你的人生发生在人类进化史上的某个细微的角落时,你干了一些 有意义的事情。李白的人生、成吉思汗的人生、耶稣的人生、爷爷的人生、爸爸 的人生、你自己的人生,相对于地球时间而言,就如同一个程序周期发生在一连 串信号中某个方波的沟沟里面,性质是一样的。无论你怎样生活,无论是秉承金 钱至上还是顿悟出道的理念,无论你有或没有伟大的目标,无论你信不信上帝, 时间就这样一如既往,让每个人的人生成为它的一个瞬间。

    人的聪明,就在于你能够突破感官,意识到眼见并非为实,去理解那些你身 体感官永远感受不到的事实。希望本文能够对读者有所启发。

 

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

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

相关文章

【五分钟】熟练使用numpy的histogram函数(干货!!!)

histogram函数重要参数详解 def histogram(a, bins10, rangeNone, normedNone, weightsNone, densityNone):...位置参数a: The histogram is computed over the flattened array.(源码对参数a的解释) 从源码对参数a的解释来看,参…

[树莓派3B+][内核版本6.1]的linux内核编译+替换 (超详细)

学习Linux的内核编译,我使用的是x86 64位的18.04的ubuntu-linux虚拟机: 目录 树莓派的Linux内核源码安装 操作系统的启动过程 & Bootloader 单片机裸机:C51,STM32 X86,Intel:windows 嵌入式产品:…

深圳市左下右上百度坐标

爬取百度POI的时候,别人的代码中有提到左下,右上坐标,但是没有说从哪里来,而且还是百度的坐标。 经纬度:左下角,右上角:113.529103,37.444122;115.486183,38.768031 墨卡托坐标:左下角,右上角:12638139.45,…

由11月27日滴滴崩溃到近两个月国内互联网产品接二连三崩溃引发的感想

文章目录 知乎文分析微信聊天截图微信公众号 滴滴技术 发文k8s 官方文档滴滴官方微博账号 近两个月国内互联网产品“崩溃”事件2023-10-23 语雀崩溃2023-11-12 阿里云崩溃2023-11-27 滴滴崩溃2023-12-03 腾讯视频崩溃总结 我的感想 知乎文分析 最近连续加班,打车较…

d3dx9_43.dll丢失原因以及5个解决方法详解

在电脑使用过程中,我们可能会遇到一些错误提示,其中之一就是“d3dx9_43.dll缺失”。这个错误提示通常表示我们的电脑上缺少了DirectX的一个组件,而DirectX是游戏和多媒体应用所必需的软件。本文将介绍d3dx9_43.dll缺失对电脑的影响以及其原因…

第0篇红队笔记-APT-HTB

nmap 80 port-web尝试 searchploit-无结果 资源隐写查看-无结果 135 port rpcclient rpcinfo.py rpcdump.py rpcmap.py rpcmap.py爆破UUID 查看该UUID的表代表的服务能搜到UUID的漏洞 IOXIDResolver提取IPv6地址 IPV6-nmap smb smb探测目录 文件下载 测试其他目录 zip文件…

不再只是android,华为自爆Harmony将对标iOS

今年10月,华为官方宣布,鸿蒙OS 4升级设备数量已突破1亿,成为史上升级最快的鸿蒙OS版本。 日前,据数码博主“定焦数码”消息,大厂技术员工做适配,通过线下沟通时,华为反复提到一个问题&#xff…

很多人忽略的另外一种伦敦银交易计划

做伦敦银我们需要有交易计划,通过计划来执行交易,很多投资者清楚这一点。但是,实际交易中我们需要的计划不是一个,而是两个,那是哪两个计划呢?下面我们就来讨论一下。 具体交易的计划。怎么在一笔交易中取得…

BiseNet实现遥感影像地物分类

遥感地物分类通过对遥感图像中的地物进行准确识别和分类,为资源管理、环境保护、城市规划、灾害监测等领域提供重要信息,有助于实现精细化管理和科学决策,提升社会治理和经济发展水平。深度学习遥感地物分类在提高分类精度、自动化程度、处理…

java后端技术演变杂谈(未完结)

1.0版本javaWeb:原始servletjspjsbc 早期的jsp:htmljava,页面先在后端被解析,里面的java代码动态渲染完成后,成为纯html,再通过服务器发送给浏览器显示。 缺点: 服务器压力很大,因为…

深入微服务架构 | 微服务与k8s架构解读

微服务项目架构解读 ① 什么是微服务? 微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。 微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。也就是说&…

C++数据结构:B树

目录 一. 常见的搜索结构 二. B树的概念 三. B树节点的插入和遍历 3.1 插入B树节点 3.2 B树遍历 四. B树和B*树 4.1 B树 4.2 B*树 五. B树索引原理 5.1 索引概述 5.2 MyISAM 5.3 InnoDB 六. 总结 一. 常见的搜索结构 表示1为在实际软件开发项目中,常用…

链表【2】

文章目录 🥝24. 两两交换链表中的节点🥑题目🌽算法原理🥬代码实现 🍎143. 重排链表🍒题目🍅算法原理🍓代码实现 🥝24. 两两交换链表中的节点 🥑题目 题目链接…

【超详细】vue项目:Tinymce富文本使用教程以及踩坑总结+功能扩展

【【超详细】vue项目:Tinymce富文本使用教程以及踩坑总结功能扩展 引言:一、 开始二、快速开始1、安装Tinymce 三、封装成Vue组件1、文件结构2、index.vue3、dynamicLoadScript.js4、plugin.js5、toolbar.js 四、使用Tinymce组件五、业务逻辑实现1、添加…

vue中的this.$nextTick().then()

MENU 示例一示例二sortsplicepushrandomfloorMathwhile演示 示例一 let reorganize function (arr){let rest [];while (arr.length > 0) {let random Math.floor(Math.random() * arr.length);// 把获取到的值放到新定义的数组中rest.push(arr[random]);// 这句代码的作…

Leetcode每日一题学习训练——Python3版(从二叉搜索树到更大和树)

版本说明 当前版本号[20231204]。 版本修改说明20231204初版 目录 文章目录 版本说明目录从二叉搜索树到更大和树理解题目代码思路参考代码 原题可以点击此 1038. 从二叉搜索树到更大和树 前去练习。 从二叉搜索树到更大和树 给定一个二叉搜索树 root (BST),请…

网络安全卫士:上海迅软DSE的员工上网管理策略大揭秘!

在日常办公中,企业员工可能会在互联网上有意或无意的将一些包含内部重要信息的内容发布出去,从而造成不必要的违规及泄密风险,因此对终端用户进行规范的上网行为管理,既能有效预防重要数据泄密,同时也能提高员工办公效…

Java数据结构之《直接插入排序》(难度系数75)

一、前言: 这是怀化学院的:Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢!) 后面其他编程题只要我写完…

新书推荐——《Copilot和ChatGPT编程体验:挑战24个正则表达式难题》

《Copilot和ChatGPT编程体验:挑战24个正则表达式难题》呈现了两方竞争的格局。一方是专业程序员David Q. Mertz,是网络上最受欢迎的正则表达式教程的作者。另一方则是强大的AI编程工具OpenAI ChatGPT和GitHub Copilot。 比赛规则如下:David编…

OpenResty(nginx+lua+resty-http)实现访问鉴权

OpenResty(nginxluaresty-http)实现访问鉴权 最近用BI框架解决了一些报表需求并生成了公开链接,现在CMS开发人员打算将其嵌入到业务系统中,结果发现公开链接一旦泄露任何人都可以访问,需要实现BI系统报表与业务系统同步的权限控制。但是目前…