产品概述

单片机输入信号 自学单片机第十八篇:信号的输入检测

小编 2024-10-10 产品概述 23 0

自学单片机第十八篇:信号的输入检测

通过前段时间的学习,我们基本上已经掌握了关于单片机的端口控制,可以通过控制端口的电位变化来实现一些功能。有时间也可以练习一些复杂的变化,来熟悉自己的所学知识。

输出是说的差不多了,那么接下来的一段时间,就要开始叨叨输入的哪些事情了。

如果说输出是向世界发出声音,那么输入就是聆听世界的声音,婴儿刚出生的一声啼哭,就是通过向外界输出自己的力量,来证明自己的降生,慢慢到了婴儿时期,就会通过聆听周围的声音,观察周围人的动作,来学习这个世界的生存技能。我们学习单片机也是一样,先展示自己的力量,然后再去感受周围的力量,这个过程需要漫长的磨砺,不断的练习和付出。

单片机的输入和输出是使用的同一个引脚,所以我们之前说51的引脚为IO口,意思是既可以作为IN输入端口,也可以作为OUT输出端口,所以简写为IO端口,属于复用端口,有利于节省空间。我们先来看下输入端口的结构,大致了解下。

这个是P1的端口结构,我们暂且不用理会左边那一大堆东西,只看右边这一部分,首先看到的是一个上拉电阻,然后是我们的针脚,接着是一个三极管(实际上是一个场效应管,我们简单理解就好),还有一路单独引出来了,这部分电路看似简单,但却承担着内部与外界的所有数据交换,可谓地位之重。我通过模拟器来简单实现端口的控制,直观的了解下端口是如何读取输入的数据的。

电路尽可能的与原理图一致,我们分为了电源部分、输入输出部分、端口部分、和外部电路,首先我们来说下当输出部分输出高电位时,电路的状态。

注:接下来的解释,需要用到三极管的部分知识,这个需要高中以上的物理知识,如果不理解,我们可以在留言中讨论。我尽量通俗的说,如果真的听不懂,也不影响接下来的学习。

从图中可以看出,当三极管基极(也就是左边横着那个电极),电位为5V高电位,那么三极管就处于截止状态,相当于上下电路是断开的,好比我打差号的部分断开,所以下方的输入电路就读取到了一个高电位,这个高电位是通过上拉电阻送过来的,如果此时外电路接的有小灯泡,那么小灯泡就会点亮了。

当我们让单片机输出0时,三极管的基极(图中b)就会处于低电位,于是三极管导通,图中的a和c就导通了,相当于通过导线直接相连在了一起,所以a点就也是0V低电位了,外部电路也是0V低电位,输入读取电路f也是0V低电位。

通过控制基极的电位,我们就可以让外电路出现与控制器相同的高低电位状态,同时驱动能力也有了很大的提升。但是由于内电路的导线很细,所以驱动功率也是很小的,不要尝试大功率设备,会烧坏芯片内部电路的。我们了解了输出的控制。那么,如果此时我在IO口上接一个SW1开关,人为的给引脚设置高低电位,情况又会是什么样呢?

当我们把SW1设置为0V低电位时,我们会发现,电路状态从接近0V降到了完全的0V,这主要是因为在三极管中存在电阻,而外接的电路不存在电阻,所以电压被拉低到了完全的0V。我们通过时间调整,看下实际情况下当内部电路输出0时,外电路切换高低电位对IO口的电位影响。

我们反复的切换外电路的状态,发现输入电路f读取的a点的状态如上图波形,当SW1切换到5V高电位,此时a点电位是494mV,完全达不到3V高电位的最低电压,所以控制器输入电路读取到的电位就是0.494V,认为输入的是低电位,当SW1切换到0V低电位时,此时a点电位是0V,低于低电位1V的标准,所以控制器输入电路就读取到0V,认为输入的是低电位,通过这个实验,我们发现,不论外电路如何变化,内电路都是读取的低电位,这还怎么知道我输入的是低电位还是高电位,怎么知道我的按键什么时间按下了?

所以我们把控制器的输出从0改为1再试一下,我们还是对SW1进行反复的切换,观察a点的电位和输入电路的波形变化。

此时可以直观的看出,上方的波形已经从几毫伏的变化,变成了现在的0到5V,当SW1切换到5V高电位,由于三极管截止了,所以a点就是5V高电位,f读取到的就是5V高于3V,于是控制器认为输入的是一个高电位,当SW1切换到0V低电位,还是因为三极管截止的原因,a点相当于通过SW1直接与负极相连,所以a点就是0V低电位,f读取到的就是0V低于1V,于是控制器就认为输入的是一个低电位,这样外部的信号与控制器读取的信号就一致了。

所以,我们就有一个要求,在你需要读取外部信号时,除了程序中需要做出读取的相应操作,你的需要读取的引脚在控制器中要先输出一个高电位,也就是置1.不然你就读不到东西。

有人会说了,在前边当控制器输出0时,你如果把SW1连接5V的电阻取消,那么控制器不就可以读取到5V的高电位了吗?实际情况并不这么理想,

我们可以看到,此时芯片的IO口电流已经达到了3A,这对芯片来说就是毁灭的灾难。所以是不允许这么做的,如果你这么做了芯片依然坚持了过来,感到幸运吧。不是每次都有这么好运的。在IO口外接电路时,我们是不允许直接毫无控制直连正负极的,计算好自己的功耗和电流,然后匹配相应的电阻才是最佳的选择。

好了通过以上的解释,我们知道了IO口需要读取外部信息时,是需要内部对IO口提前置1的。下篇我们就尝试读取P1口的信号来看看。

你觉得一个IO口,单片机最大可以带动多大的电流?欢迎留言讨论。

自学单片机第十九篇:输入信号硬件仿真

大致说下之前的文章,不说就没法往下玩,说多了就又不给传了。我们先是分析了关于输入端口如何采集信号,然后通过程序进行了实现,不过都是实时采集,就是说按键按下,相应代码动作,按键释放,所有动作停止,就相当于点动操作,然后我们对此作了升级,让开关信号进行传递,传递中保存开关的信号,这样就做到了自锁,可以在释放开关时,信号不随之发生变化。这个才是我们使用开关的正常操作,当然对于一些场合,实时响应的开关也是有很多用途的,不是每个开关都需要对信号进行存储的。视情况而定。

那么今天,我们就来在硬件上测试一下按键的操作。我们直接测试两个按键,一个是带自锁代码的,一个不带自锁代码的。

首先对之前的代码进行适当的更改。

把两个功能的代码写到了一个程序中,然后我们先从仿真软件中测试下动作看看效果。

效果还是可以的,没有出现错误或警告,按键的动作和输出的反应也符合预期。接下来就是下载到单片机中去,实际测试下效果。

下载完成之后,我们先看下初始状态下的LED灯的亮灭。

我们从图中可以看出,P13也就是LED13是熄灭的,这与我们的软件仿真中的是一致的,需要提醒的是,LED小灯需要在io口上串一个限流电阻。开关我接到了一旁,开关直接与地线相连,前文我们已经探讨过了,开关在动作的判断上,需要使用低电位信号才可以有效识别。

我按下P10开关试一下P11的灯是否会熄灭并保持住。

当按下P10后,p11熄灭,再次按下P10,p11点亮,松开手,灯的状态不随开关的释放改变,自锁有效。然后我们在测试下另一个直接传递变量值的开关。

按下开关,小灯点亮,原来是熄灭的啊,因为我们在程序红写了取反,所以按键的状态与io输出的状态是相反的,就会产生按键按下,小灯点亮的效果,但是我们松开手指之后,小灯就又熄灭了。这是因为这个按键的值,是实时传递到输出ioP13上的,所以按键的状态直接影响LED的状态。

硬件的仿真本来应该使用视频会更加清晰明了一些,可以时间上和设备上不是很允许,所以我们就用照片来说明问题吧,如果有问题或者不明白的地方,我们可以在留言中讨论,当然也可以通过私信给我说。

再不过就是没有缘分了

相关问答

单片机输入信号 如何避免干扰?

1、将单片机控制板用金属罩封起来(网状金属罩机可以)2、交流输入线如口端加磁环3、加电源滤波器增加抗干扰性。4、信号线的屏蔽层加电感接地或电源。1、将...

传感器给 单片机 的都是什么 信号 ,是数字信号还是模拟信号?需不需要AD转换?求指教?

把模拟信号传感器接入单片机:单片机自身带有A/D通道,那么直接把传感器模拟信号接入即可,前提是信号电压的范围要合适,如果信号过于微弱还要增加前置放大...

51 单片机 时钟 信号 怎么 输入 ?

若使用有源晶振,51单片机的时钟信号可以XⅠALⅠ引脚输入,此时XlALO引脚悬空;若使用无源晶振,该晶振应跨接在上述两个引脚之间。现在的51单片机大多集成了内...

如何判别一款 单片机 的哪些脚是 输入 、输出模拟 信号 的,哪些是 输入 、输出数字 信号 的?

任何一个芯片都会有对应的引脚图纸的,别人是没法知道的,只有看厂家提供的图纸连续的信号叫模拟信号,不连续的信号叫数字信号方波即高低电平,是数字信号,正...

单片机 P1——P3口作为 输入 口的时候为什么要先向该口写1呢?

问题很简单,要说清不容易,原因是P0~P3都是准双向口,为什么呢?这要看四个并口的口结构图就明白了。什么叫准双向,就是说P0~P3输出没问题,输入就不然了。...问...

单片机 输出 信号 为什么电平?

如果是5V单片机系统,高输出2V的情况有:1、IO口外接了较大的负载,拉低了端口的电压(一般单片机的IO为弱上拉),如果你断开负载测量端口电压还是2V的话就有可能...

PLC输出端所谓的“ 信号 ”都是什么,打个比方怎么控制接触器闭合?

PLC接口的分类PLC是工业现场、工控自动化常用的控制器,其接口从方向上分为输入口和输出口,从信号类型上可以分为数字接口和模拟量接口。所以,PLC的接口可以分...

一般 单片机信号 采集作AD转换的话,采集的是什么信号?电流还是电压?为什么?还有为什么需要放大?

肯定采集电压信号了,因为ADC的核心是电压比较器。如果被采集的信号很弱,比如最大幅度低于参考电压的10%,那就需要适当放大来减少误差了。如果输入电压大于...

请问 单片机 输出的 信号 是什么类型的? - 147****0387 的回答 -...

单片机的I/O口的输出信号是数字信号,0-2.3V是低电平;3.2-5V是高电平。虽说是数字信号,但实则是高速的模拟信号,因此0V-5V之间是有上升时间的;同样5V...

单片机 cs端是什么意思?

单片机cs端是指单片机的片选端,是控制单片机与外设通信的一种方式。在多个外设连接到单片机时,需要通过片选信号来选择当前要访问的外设,以避免多个外设同时被...

猜你喜欢