精华内容
下载资源
问答
  • 编译原理_第2版_张素琴

    热门讨论 2014-03-16 22:45:41
    编译原理_第2版_张素琴等_清华大学 由张素琴和吕映芝等编著的《编译原理》介绍编译系统的一般构造原 理、基本实现技术和一些自动构造工具。主要由语言基础知识、词法分析 、语法分析、中间代码生成、代码优化、目标...
  • 如何看懂常用原理图符号、如何阅读原理

    千次阅读 多人点赞 2019-04-30 18:19:05
    1、原理图符号(第1部分) 1.1、电阻器 1.2、电位计和可变电阻器 1.3、电容器 1.4、电感器 1.5、开关 1.6、电源 1.6.1、直流或交流电压源 1.6.2、电池 1.6.3、电压节点 2、原理图符号(第2部分) 2.1、...

    目录

    1、原理图符号(第1部分)

    1.1、电阻器

    1.2、电位计和可变电阻器

    1.3、电容器

    1.4、电感器

    1.5、开关

    1.6、电源

    1.6.1、直流或交流电压源

    1.6.2、电池

    1.6.3、电压节点

    2、原理图符号(第2部分)

    2.1、二极管

     2.2、晶体管

    2.2.1、双极结晶体管(BJT)

    2.2.2、金属氧化物场效应晶体管(MOSFET)

    2.3、数字逻辑门

    2.4、集成电路

    2.5、杂记

    2.5.1、晶体和谐振器

    2.5.2、接头和连接器

    2.5.3、电机,变压器,扬声器和继电器

    2.5.4、保险丝和PTC

    3、阅读原理图

    3.1、网络,节点和标签

    3.2、交汇点和节点

    3.3、网络名称

    3.4、原理图阅读技巧

    3.4.1、识别模块

    3.4.2、识别电压节点

    3.5、参考组件数据表


    原理图是我们设计,构建和排除电路故障的地图。了解如何阅读和遵循原理图是任何电子工程师的重要技能。

    我们在下边将介绍常用的原理图符号:

    然后我们将讨论这些符号如何在原理图上连接以创建电路模型,并提出一些建议和技巧。

    1、原理图符号(第1部分)

    以下是各种组件的一些标准化基本原理图符:

    1.1、电阻器

    原理图上的电阻器通常由几条锯齿线表示,两个端子向外延伸。使用国际符号的原理图可以改为使用无特征的矩形,而不是曲线。

    1.2、电位计和可变电阻器

    可变电阻器和电位器各自用箭头增加标准电阻器符号。可变电阻器仍然是一个双端子器件,因此箭头恰好位于中间对角线。电位计是三端子设备,因此箭头成为第三个端子。

    1.3、电容器

    有两种常用的电容符号。一个符号表示极化(通常是电解或钽)电容器,另一个符号表示非极化电容器。通常,有两个端子,垂直地延伸到板中。

    带有一个弯曲板的符号表示电容器是有极性的。弯曲板代表电容器的阴极,其电压应低于正极引脚,加号也可以添加到极化电容符号的正极引脚。

    1.4、电感器

    电感器通常由一系列弯曲凸起或环形线圈表示。国际符号可以仅将电感器定义为填充矩形。

     

    1.5、开关

    开关以许多不同的形式存在。最基本的开关,单刀单掷(SPST),是两个端子,半连接线代表执行器(将端子连接在一起的部分)。

    具有多个投掷的开关,如下面的SPDT和SP3T,为执行器增加了更多的可接触点。

     具有多个极的开关通常具有多个相似的开关,其中虚线与中间致动器相交。

    1.6、电源

    正如有很多选项可以为您的项目供电,有各种各样的电源电路符号可以帮助指定电源。

    1.6.1、直流或交流电压源

    大多数情况下,使用电子设备时,您将使用恒定电压源。我们可以使用这两个符号中的任何一个来定义源是提供直流电(DC)还是提供交流电(AC):

    1.6.2、电池

    电池,无论是圆柱形,碱性AA还是可充电锂聚合物,通常看起来像一对不成比例的平行线:

    更多线对通常表示电池中有更多串联电池。此外,较长的线通常用于表示正端子,而较短的线连接到负端子。

    1.6.3、电压节点

    有时-特别是在非常繁忙的原理图上-您可以为节点电压分配特殊符号。您可以将器件连接到这些单端符号,它将直接连接到5V,3.3V,VCC或GND(地)。正电压节点通常用向上的箭头表示,而接地节点通常包括一到三条扁平线(或者有时是一个向下的箭头或三角形)。

     

    2、原理图符号(第2部分)

    2.1、二极管

    基本二极管通常用压在一条线上的三角形表示。二极管也是极化的,因此两个终端中的每一个都需要区分标识符。正极,阳极是进入三角形平坦边缘的终端。负极,阴极延伸出符号中的线(将其视为符号)。

    有各种不同类型的二极管,每个二极管在标准二极管符号上都有特殊的riff。发光二极管(LED)通过指向远处的几条线来增强二极管符号。从光产生能量的光电二极管(基本上是微小的太阳能电池),将箭头翻转并指向二极管。

    其他特殊类型的二极管,如肖特基或齐纳二极管,都有自己的符号,符号的条形部分略有不同。

     2.2、晶体管

    晶体管,无论是BJT还是MOSFET,都可以以两种配置存在:正掺杂或负掺杂。因此,对于这些类型的晶体管中的每一种,至少有两种方法来绘制它。

    2.2.1、双极结晶体管(BJT)

    BJT是三端设备;它们有一个集电极(C),发射极(E)和一个基极(B)。有两种类型的BJT分别是NPN和PNP,它们每种都有自己独特的符号。

     

    集电极(C)和发射极(E)引脚彼此成直线,但发射极应始终有一个箭头。如果箭头指向内部,则为PNP,如果箭头指向外,则为NPN。或者看箭头,总是P指向N的

    2.2.2、金属氧化物场效应晶体管(MOSFET)

    与BJT一样,MOSFET有三个端子,但这次它们被命名为源极(S),漏极(D)和栅极(G)。同样,该符号有两种不同的版本,具体取决于您是否有N沟道或P沟道MOSFET。每种MOSFET类型都有许多常用符号:

    符号中间的箭头定义MOSFET是N沟道还是P沟道。如果箭头指向意味着它是一个n沟道MOSFET,如果它指出它是一个p沟道。

    2.3、数字逻辑门

    我们的标准逻辑功能AND,OR,NOT和XOR-都具有唯一的原理图符号:

     添加泡到输出否定的功能,则创建与非门,NORs的,和XNORs:

    它们可能有两个以上的输入,但形状应该保持不变(好吧,可能更大),并且应该仍然只有一个输出。

    2.4、集成电路

    集成电路完成了如此独特的任务,而且数量众多,它们并没有真正获得独特的电路符号。通常,集成电路由矩形表示,其中引脚从侧面延伸出来。每个引脚都应标有数字和功能。

    ATmega328微控制器(通常在Arduinos上找到),ATSHA204加密IC和ATtiny45MCU的原理图符号。如您所见,这些组件的大小和引脚数量差异很大。

    由于IC具有这样的通用电路符号,因此名称,值和标签变得非常重要。每个IC应具有精确识别芯片名称的值。

    独特的IC:运算放大器,稳压器

    一些更常见的集成电路确实获得了独特的电路符号。您通常会看到如下所示的运算放大器,总共5个端子:非反相输入(+),反相输入(-),输出和两个电源输入。

    通常,在一个IC封装中内置两个运算放大器,只需要一个引脚用于电源,一个用于接地,这就是为什么右边只有三个引脚。

    简单的稳压器通常是三端子元件,带有输入,输出和接地(或调节)引脚。这些通常采用矩形的形状,左侧(输入),右侧(输出)和底部(接地/调整)具有引脚。

    2.5、杂记

    2.5.1、晶体和谐振器

    晶体或谐振器通常是微控制器电路的关键部分。它们有助于提供时钟信号。晶体符号通常有两个端子,而为晶体添加两个电容器的谐振器通常有三个端子。

    2.5.2、接头和连接器

    无论是提供电源还是发送信息,连接器都是大多数电路的要求。这些符号取决于连接器的外观,下面是一个示例:

    2.5.3、电机,变压器,扬声器和继电器

    我们将它们混为一谈,因为它们(大多数)都以某种方式使用线圈。变形金刚(不是眼睛以上的类型)通常涉及两个线圈,相互对接,有几条线将它们分开:

    继电器通常将线圈与开关配对: 

    扬声器和蜂鸣器通常采用与现实生活相似的形式:

     电机通常与终端周围多一点点缀涉及将环绕“M”,有时是:

    2.5.4、保险丝和PTC

    保险丝和PTC-通常用于限制大电流的设备-每个都有自己独特的符号:

     

    PTC符号实际上是热敏电阻的通用符号,是一个与温度相关的电阻

    毫无疑问,这个列表中有许多电路符号,但上面的那些应该让你在原理图读数中有90%的识字率。通常,符号应与其建模的现实组件共享相当大的数量。除符号外,原理图上的每个组件都应具有唯一的名称和值,这有助于识别它。

    位号和值

    值(Value)有助于准确定义组件的内容。对于电阻器,电容器和电感器等原理图,该值告诉我们它们有多少欧姆,法拉或亨利。对于其他组件,如集成电路,该值可能只是芯片的名称。晶体可能将其振荡频率列为其值。

    位号(Default)通常是一个或两个字母和一个数字的组合。名称的字母部分表示组件的类型电阻器的R,电容器的C,集成电路的U,等等。示意图上的每个组件名称应该是唯一的;例如,如果电路中有多个电阻,它们应命名为R1,R2,R3等。元件名称有助于我们参考原理图中的特定点。

    名称的前缀非常标准化。对于某些组件,如电阻器,前缀只是组件的第一个字母。其他名称前缀不是那么直接;例如,电感器是L(因为电流已经占据了i)。这是一个常见组件及其名称前缀的快速表:

    尽管这些是组件符号的“标准化”名称,但它们并未得到普遍遵循。例如,您可能会看到以IC为前缀而不是U的集成电路,或标有XTAL而不是Y的晶体。用你最好的判断来诊断哪一部分是哪一部分。符号通常应该传达足够的信息。

    3、阅读原理图

    了解哪些组件在原理图中的哪一部分是理解它的一半以上的战斗。现在剩下的就是确定所有符号是如何连接在一起的。

    3.1、网络,节点和标签

    原理图网络告诉您组件如何在电路中连接在一起。网络表示为组件终端之间的线。有时(但并非总是)它们是一种独特的颜色,如本原理图中的绿线:

    3.2、交汇点和节点

    电线可以将两个端子连接在一起,也可以连接数十个。当导线分成两个方向时,会形成一个连接点。我们用节点表示原理图上的连接点,在线的交叉点放置小点。

    节点为我们提供了一种方式来说明“穿过这个交叉点的电线是连接的”。在交叉点处缺少节点意味着两条单独的线路正在经过,而不是形成任何类型的连接。(在设计原理图时,通常很好的做法是尽可能避免这些非连接重叠,但有时这是不可避免的)。

    3.3、网络名称

    有时,为了使原理图更清晰,我们将给网络命名并标记它,而不是在原理图上布线。假设没有连接它们的可见导线,假定连接具有相同名称的网络。名称可以直接写在网络的顶部,也可以是“标签”,悬挂在电线上。

    具有相同名称的每个网连接,如在本示意性用于FT231X接口板。名称和标签有助于防止原理图过于混乱(想象一下,如果所有这些网络实际上都与电线连接)。

    网络通常被赋予一个名称,专门说明该线路上信号的用途。例如,电源网可以标记为“VCC”或“5V”,而串行通信网络可以标记为“RX”或“TX”。

    3.4、原理图阅读技巧

    3.4.1、识别模块

    真正广泛的原理图应该分成功能块。可能有一个部分用于电源输入和电压调节,或微控制器部分,或专门用于连接器的部分。尝试识别哪个部分是哪个部分,并遵循从输入到输出的电路流程。优秀的原理图工程师甚至可能像电子书一样放置电路,左侧输入,右侧输出。

     

    如果原理图的抽屉非常好(就像为RedBoard设计此原理图的工程师),他们可能会将原理图的各个部分分成逻辑的标记块。

    3.4.2、识别电压节点

    电压节点是单端子原理图组件,我们可以将组件端子连接到它们,以便将它们分配到特定的电压电平。这些是网名的特殊应用,意味着连接到同名电压节点的所有终端都连接在一起。

    类似的电压节点-如GND,5V和3.3V-都连接到它们的对应部分,即使它们之间没有电线。

    接地电压节点特别有用,因为许多组件需要接地。

    3.5、参考组件数据表

    如果原理图上的某些内容没有意义,请尝试查找最重要组件的数据表。通常,在电路上工作最多的组件是集成电路,如微控制器或传感器。这些通常是最大的组件,位于原理图的中心。

    展开全文
  • STM32F4全系列芯片封装+原理图库

    热门讨论 2016-05-23 13:09:54
    STM32F4全系列芯片封装+原理图库 。注意是F4系列芯片,原理图不一样,但是封装通用。LQFP64 LQFP100 LQFP144 LQFP176。
  • word2vec数学原理

    热门讨论 2015-07-30 16:15:27
    word2vec数学原理,很强大的一个深度学习库。 它可以将语料库中的词转化为向量
  • Android JSBridge的原理与实现

    千次下载 热门讨论 2016-02-28 17:57:08
    博客地址 http://blog.csdn.net/sbsujjbcy/article/details/50752595
  • 嵌入式系统原理与设计.pdf

    千次下载 热门讨论 2012-12-05 22:27:22
    苏曙光、沈刚编著的《嵌入式系统原理与设计》全面地介绍了嵌入式系统的概念、软硬件结构、开发调试过程和工具等内容,涵盖嵌入式系统设计和实现全过程所需要掌握的知识。 《嵌入式系统原理与设计》内容共分为三部分...
  • 关系型数据库的(优化)工作原理

    千次下载 热门讨论 2015-11-01 13:44:00
    大牛写的关系型数据库的(优化)工作原理,非常牛逼的文档
  • Xilinx KC705开发板官方原理图 Kintex7 XC7K325t原理图 DDR3 GTX PCIe 以太网模块 参考原理
  • 编译原理:Compilers:Principles,Techniques,and Tools,Second Edition,kindle,请勿用于商业用途,是kindle原版,超级清晰,排版好,比影印印刷版还清晰。物超所值。来源于互联网,请勿用于商业用途。
  • 数据库性能调优.原理与技术

    千次下载 热门讨论 2016-04-27 16:32:19
    这是一本关于数据库调优的极佳参考书,强烈推荐给从事数据库管理人员,本书对有经验的数据库管理员同样有价值,对于数据库设计人员和数据库研究者,同样是一本难得的参考书。
  • OSGi原理与最佳实践(完整版PDF附源代码)

    千次下载 热门讨论 2013-03-14 22:59:42
    OSGi原理与最佳实践(完整版PDF附源代码),改PDF是由纸质书扫描的,内容完整,附带的源代码和书本完全对应。国内OSGI中文第一书,作者是淘宝架构师,书中提及的示例很有代表性,文章也是深入浅出,相当值得拥有!是...
  • 200多份PCB文件与原理图文件大集合,直接可以打板 200多份PCB文件与原理图文件大集合,直接可以打板
  • 消息中间件rocketmq原理解析

    热门讨论 2015-02-18 10:59:10
    此文档是从学习rocketmq源码过程中的笔记中整理出来的,由于时间及能力原因,理解有误之处还请谅解,希望对大家学习使用rocketmq有所帮助。
  • Google Deepmind AlphaGo原理解析(54页PPT详解)

    千次下载 热门讨论 2016-03-14 17:53:05
    韩国同学、卡耐基梅隆大学Shane Moon博士不久前关于AlphaGo技术的详解(对AlphaGo在Nature上发表的论文的总结,当时AlphaGo还只有5段左右的水平)。
  • 大型网站技术架构_核心原理与案例分析_李智慧 PDF 高清
  • 循迹小车讲解一:原理分析

    万次阅读 多人点赞 2020-10-21 21:28:47
    1、循迹小车原理 (1)小车的类型: 常见的有三轮车,四轮车两种; 三轮车,主要是后面两个主动轮,前面一个万向轮组成; 四轮车,比赛中常见的有4个都是直轮,或者4个是麦克纳姆轮两种; (2)由于是新手,...

    1、循迹小车原理
    (1)小车的类型:
    常见的有三轮车,四轮车两种;
    三轮车,主要是后面两个主动轮,前面一个万向轮组成;
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    四轮车,比赛中常见的有4个都是直轮,或者4个是麦克纳姆轮两种;
    在这里插入图片描述

    在这里插入图片描述
    (2)由于是新手,所以简单说下三轮车的原理;
    四轮的,自己学习解决;
    在这里插入图片描述

    第一个;
    A、三轮车,主要有五种动作。
    前进;
    左转;
    右转;
    后退;
    停止;
    其中,左转,右转又可以分为大转弯,和小转弯;

    B、其中左转,右转,都是根据两个轮子的速度差实现;

    左轮速度>右轮速度;则向右边转弯;
    左轮速度<右轮速度;则向左转弯;

    速度差越大,转弯越大;
    因此可以设置速度差,实现大转弯和小转弯的目的;

    当一个轮子的速度为0,另外一个轮子有速度的时候,会绕着速度为0的轮子转圈,转圈的半径为两个轮子的轮间距,但是实际上,会发生轮子打滑的情况,所以会有点偏移;

    由于是直流电机作为动力,因此,可以控制电机的速度,进行小车的速度控制。

    因此,实际控制小车的几个动作,实际就转化为控制电机的速度;

    (3)直流电机控制的基本内容:

    直流电机,比赛常用的有几种,一种是黄色的T电机;一种是带编码的电机;带编码的电机可以测速等等,稍贵,但是扭矩大,运行性能好。因此在比赛常用。。
    这里由于黄色的电机比较便宜,用这个入手。进行学习。
    在这里插入图片描述
    在这里插入图片描述

    控制方向:
    由于是直流电机,所以两个引脚,A,B。
    如果给5V电压,A接正极,B接负极,那么电机往一个方向运动;如果A接负极,B接正极,那么电机反方向运动。

    所以通过调节A和B的接线,就能控制电机正反转;

    控制速度:
    如果给3.5V电压,那么电机的速度会比5V的慢,因此,可以通过控制电机的电压控制转速。

    如果我们人为去交换A、B的接线,就太复杂了,怎么解决呢?

    如果我们人为去改变电机的电压,调节滑动变阻器等,也比较复杂,而且不够实时,怎么办呢?

    而且,一般要驱动电机,需要带电机驱动模块。

    比如常用的有L298N模块,TB6612模块,或者mos管自己搭建驱动电路;

    新手可以用TB6612模块或者L298N模块;

    这里对TB6612模块进行讲解,如何对电机进行速度控制和方向控制。

    首先介绍PWM的概念。
    PWM是脉冲宽度调制的意思。简单这么理解,如下图的波形。
    T是周期,t1是高电平的时间,t2是低电平的时间。
    t1高电平的时间越长,如果等于周期,那么整个周期,IO口的电平就是5V ,如果是50%,那么是2.5V.
    因此可以控制t1的时间,控制t1/T的比例,从而控制输出的电压,从而控制电机的速度。

    在这里插入图片描述

    一般直流电机的频率是7K-13K,没实验过,可以实验看下效果区别。

    所以,控制小车的轮子的速度,就是控制各自的PWM的高电平比例,就是占空比。

    那么怎么产生一个PWM波形,可以控制比例呢?
    我们者利用的51单片机,有四种方法产生PWM。
    第一,延时
    就是延时t1,P10(假如这个是PWM输出脚)=1,延时t2,P10=0

    delay(t1);
    P10=1;
    delay(T-t1)
    P10=0

    第二
    定时器,定时一段时间,P10=1,定时一段时间,P10=0;

    第三,就是增强型的51单片机,我们现在用的stc8a单片机,有内置的PWM模块。
    这里我们用的就是这个。

    我已经写好函数,直接包含头文件,和c文件,初始化之后,就能直接使用了。
    我这里是低电平的时间,第三个参数,所以要1-0.3转为高电平比例。
    0,是P20通道,6000是频率6K。
    HPWM_Set(0,6000,1-0.3);
    所以改变最后的参数(比例,所以参数在0-1之间),就能控制电机的速度了。
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    TB6612模块的具体介绍,网上很多。

    在这里插入图片描述

    TB6612的的用法:
    (A),TB6612是双驱动,也就是可以驱动两个电机。
    这个合适我们三轮车,因为有两个电机,一个是万向轮,因此我们的小车,就需要一个TB6612模块就行了。

    下面分别是控制两个电机的IO口
    (B)STBY口接单片机的IO口清零电机全部停止,置1通过AIN1 AIN2,BIN1,BIN2 来控制正反转。
    因此,我们可以设置STBY为5V,让电机可以得到单片机的控制;
    (C)
    VM 接12V以内电源。
    这个根据电机的特性和小车运动的场合进行选取。我们这里可以接5V。
    (D)
    VCC 接5V电源
    GND 就不多说了啊
    (E)
    驱动1路
    PWMA:接单片机的PWM口,通过PWM的占空比,控制电机的速度;
    通过控制下面的00,01,10组合,控制电机的方向,顺时针,逆时针转动。
    AIN1,AIN2接单片机的IO引脚;
    真值表:
    AIN1 0 0 1
    AIN2 0 1 0
    停止 正传 反转
    A01 和AO2 接电机1的两个脚;
    (F)
    驱动2路
    PWMB:接单片机的PWM口,通过PWM的占空比,控制电机的速度;

    BIN1和BIN2,接单片机的IO引脚;
    通过控制00,01,10组合,控制电机的方向,顺时针,逆时针转动。
    真值表:
    BIN1 0 0 1
    BIN2 0 1 0
    停止 正传 反转
    B01,BO2 接电机2的两个脚

    在这里插入图片描述
    综上,根据电路原理图,我们的电机是

    假如左轮是A路电机,右轮是B路电机。

    那么A路电机:
    P20----PWMA—速度;
    P04-----0--------停止
    P05-----0

    P20----PWMA—速度;
    P04-----1--------前进?
    P05-----0
    如果不是前进,调换A01, A02的两条电线。

    P20----PWMA—速度;
    P04-----0--------后退?
    P05-----1
    如果不是后退,调换A01, A02的两条电线。

    那么B路电机:
    P21----PWMB—速度;
    P06-----0--------停止
    P07----0

    P21----PWMB—速度;
    P06-----1--------前进?
    P07-----0
    如果不是前进,调换B01, B02的两条电线。

    P21----PWMB—速度;
    P06-----0--------后退?
    P07-----1
    如果不是后退,调换B01, B02的两条电线。

    同时,可以调节PWMA和PWMB的比例大小,决定小车的转弯方向;

    如果PWMA>PWMB,左轮速度大于右轮速度,那么右转;
    如PWMA=0.7,PWMB=0.4,速度差越大,转弯越大;
    如果PWMA<PWMB,左轮速度小于右轮速度,那么左转;
    如PWMA=0.4,PWMB=0.7,速度差越大,转弯越大;
    但是,由于电机的制造误差等等,特性会有偏差。
    因此相同的比例,小车也可能会偏离。
    如PWMA=0.4=PWMB。小车也可能越走越不是一条直线。。

    因此,需要有一条引导线,引导小车直行。或者加测速装置,测得左轮的速度,右轮的速度,单片机调整到一样,就能直走了。

    这里,我们用循迹的方法实现。

    一般用的是黑线,白纸的方法。

    那么怎识别到是黑线呢?

    用的是传感器,当做小车的感觉器官;

    这个传感器有多种类型,有视觉的,有光电的等等。

    我们这里暂时红外传感器,比较便宜。

    而且用的是数字式的红外传感器。。
    一般用的是TCRT5000红外模块,原理图等如下。
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    使用比较简单,接上VCC=5V,GND,将D0接到单片机的一个引脚IO,不断读取IO的状态电平,如果是得到0,那么是白线(黑线),如果是1,那么是相反的线。
    这里,用红外的模块划过黑线,看看是什么状态才确定。

    如果接A0,那么需要ADC转换,后面有时间再做这个吧。

    在这里插入图片描述
    我们这里,用了5个IO口,检测5个模块。
    P10—P15
    P10是1号模块
    P11是2号模块
    。。。。。
    P15是5号模块;

    从而得到实际的小车的状态。
    如果3号模块检测到黑线,(0或者1)那么,小车继续直行;
    如果1号检测到黑线,那么就左转,而且是左大转弯;
    如果是2号,检测到,那么就左小转弯
    同理,进行右转弯,大转弯。

    通过PWMA和PWMB的实际差值,差值越大,转弯越大;

    如果有十字路口,
    5个传感器,有3个以上碰到黑线,那么就是判断,到了十字路口

    如果在其他地方也放置传感器,那么可以检测多种道路的状态。

    在这里插入图片描述

    上面就是循迹小车的原理。

    后面说下如果用单片机进行循迹。如何导入文件,如何使用函数。
    待续。。。。。。。。。。。

    展开全文
  • Spring Boot面试杀手锏————自动配置原理

    万次阅读 多人点赞 2018-11-07 14:11:15
    引言 不论在工作中,亦或是求职面试...当然,作为Spring Boot的精髓,自动配置原理的工作过程往往只有在“面试”的时候才能用得上,但是如果在工作中你能够深入的理解Spring Boot的自动配置原理,将无往不利。 Spr...

    引言

    不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经不是很新的Spring启动框架。

    当然,作为Spring Boot的精髓,自动配置原理的工作过程往往只有在“面试”的时候才能用得上,但是如果在工作中你能够深入的理解Spring Boot的自动配置原理,将无往不利。

    Spring Boot的出现,得益于“习惯优于配置”的理念,没有繁琐的配置、难以集成的内容(大多数流行第三方技术都被集成),这是基于Spring 4.x提供的按条件配置Bean的能力。

    Spring Boot的配置文件

    初识Spring Boot时我们就知道,Spring Boot有一个全局配置文件:application.properties或application.yml。

    我们的各种属性都可以在这个文件中进行配置,最常配置的比如:server.port、logging.level.* 等等,然而我们实际用到的往往只是很少的一部分,那么这些属性是否有据可依呢?答案当然是肯定的,这些属性都可以在官方文档中查找到:

    https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/#common-application-properties

    (所以,话又说回来,找资料还得是官方文档,百度出来一大堆,还是稍显业余了一些)

    除了官方文档为我们提供了大量的属性解释,我们也可以使用IDE的相关提示功能,比如IDEA的自动提示,和Eclipse的YEdit插件,都可以很好的对你需要配置的属性进行提示,下图是使用Eclipse的YEdit插件的效果,Eclipse的版本是:STS 4。

     以上,是Spring Boot的配置文件的大致使用方法,其实都是些题外话。

    那么问题来了:这些配置是如何在Spring Boot项目中生效的呢?那么接下来,就需要聚焦本篇博客的主题:自动配置工作原理或者叫实现方式。

    工作原理剖析

    Spring Boot关于自动配置的源码在spring-boot-autoconfigure-x.x.x.x.jar中:

    当然,自动配置原理的相关描述,官方文档貌似是没有提及。不过我们不难猜出,Spring Boot的启动类上有一个@SpringBootApplication注解,这个注解是Spring Boot项目必不可少的注解。那么自动配置原理一定和这个注解有着千丝万缕的联系!

    @EnableAutoConfiguration

     @SpringBootApplication是一个复合注解或派生注解,在@SpringBootApplication中有一个注解@EnableAutoConfiguration,翻译成人话就是开启自动配置,其定义如下:

     而这个注解也是一个派生注解,其中的关键功能由@Import提供,其导入的AutoConfigurationImportSelector的selectImports()方法通过SpringFactoriesLoader.loadFactoryNames()扫描所有具有META-INF/spring.factories的jar包。spring-boot-autoconfigure-x.x.x.x.jar里就有一个这样的spring.factories文件。

    这个spring.factories文件也是一组一组的key=value的形式,其中一个key是EnableAutoConfiguration类的全类名,而它的value是一个xxxxAutoConfiguration的类名的列表,这些类名以逗号分隔,如下图所示:

    这个@EnableAutoConfiguration注解通过@SpringBootApplication被间接的标记在了Spring Boot的启动类上。在SpringApplication.run(...)的内部就会执行selectImports()方法,找到所有JavaConfig自动配置类的全限定名对应的class,然后将所有自动配置类加载到Spring容器中。

    自动配置生效

    每一个XxxxAutoConfiguration自动配置类都是在某些条件之下才会生效的,这些条件的限制在Spring Boot中以注解的形式体现,常见的条件注解有如下几项:

    @ConditionalOnBean:当容器里有指定的bean的条件下。

    @ConditionalOnMissingBean:当容器里不存在指定bean的条件下。

    @ConditionalOnClass:当类路径下有指定类的条件下。

    @ConditionalOnMissingClass:当类路径下不存在指定类的条件下。

    @ConditionalOnProperty:指定的属性是否有指定的值,比如@ConditionalOnProperties(prefix=”xxx.xxx”, value=”enable”, matchIfMissing=true),代表当xxx.xxx为enable时条件的布尔值为true,如果没有设置的情况下也为true。

    以ServletWebServerFactoryAutoConfiguration配置类为例,解释一下全局配置文件中的属性如何生效,比如:server.port=8081,是如何生效的(当然不配置也会有默认值,这个默认值来自于org.apache.catalina.startup.Tomcat)。

    在ServletWebServerFactoryAutoConfiguration类上,有一个@EnableConfigurationProperties注解:开启配置属性,而它后面的参数是一个ServerProperties类,这就是习惯优于配置的最终落地点。

    在这个类上,我们看到了一个非常熟悉的注解:@ConfigurationProperties,它的作用就是从配置文件中绑定属性到对应的bean上,而@EnableConfigurationProperties负责导入这个已经绑定了属性的bean到spring容器中(见上面截图)。那么所有其他的和这个类相关的属性都可以在全局配置文件中定义,也就是说,真正“限制”我们可以在全局配置文件中配置哪些属性的类就是这些XxxxProperties类,它与配置文件中定义的prefix关键字开头的一组属性是唯一对应的。

    至此,我们大致可以了解。在全局配置的属性如:server.port等,通过@ConfigurationProperties注解,绑定到对应的XxxxProperties配置实体类上封装为一个bean,然后再通过@EnableConfigurationProperties注解导入到Spring容器中。

    而诸多的XxxxAutoConfiguration自动配置类,就是Spring容器的JavaConfig形式,作用就是为Spring 容器导入bean,而所有导入的bean所需要的属性都通过xxxxProperties的bean来获得。

    可能到目前为止还是有所疑惑,但面试的时候,其实远远不需要回答的这么具体,你只需要这样回答:

    Spring Boot启动的时候会通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,而这些自动配置类都是以AutoConfiguration结尾来命名的,它实际上就是一个JavaConfig形式的Spring容器配置类,它能通过以Properties结尾命名的类中取得在全局配置文件中配置的属性如:server.port,而XxxxProperties类是通过@ConfigurationProperties注解与全局配置文件中对应的属性进行绑定的。

    通过一张图标来理解一下这一繁复的流程:

     图片来自于王福强老师的博客:https://afoo.me/posts/2015-07-09-how-spring-boot-works.html 

    总结

    综上是对自动配置原理的讲解。当然,在浏览源码的时候一定要记得不要太过拘泥与代码的实现,而是应该抓住重点脉络。

    一定要记得XxxxProperties类的含义是:封装配置文件中相关属性;XxxxAutoConfiguration类的含义是:自动配置类,目的是给容器中添加组件。

    而其他的主方法启动,则是为了加载这些五花八门的XxxxAutoConfiguration类。

    展开全文
  • WEB SERVICES原理与研发实践

    热门讨论 2013-04-06 22:22:19
    WEB SERVICES原理与研发实践
  • 编译原理及实践附录源代码

    热门讨论 2012-12-05 22:30:17
    编译原理及实践 附录 源代码 本书英文名:Compiler Construction: Principles and Practice 作者:Kenneth C.Louden 电子书中文版下载地址:http://download.csdn.net/detail/bbeikke/4794677 电子书英文版下载地址:...
  • STC12C5A60S2的原理图库和PCB库

    热门讨论 2015-03-28 17:40:55
    这是STC12C5A60S2单片机的原理图库和PCB库,完全可用,项目一直用
  • 【AD笔记】--原理原理图库&原理

    千次阅读 2021-01-28 14:57:55
    AD笔记-原理图&原理图库 一、绘制原理图库 1、新建原理图库 2、编辑基本信息 先在侧边栏找到这个SCH library 选择第一个component,点击右下角的编辑,可以进行编辑信息。 在这里可以进行信息的编辑,Design ...

    AD笔记-原理图&原理图库

    一、绘制原理图库

    1、新建原理图库

    在这里插入图片描述
    2、编辑基本信息
    先在侧边栏找到这个SCH library

    选择第一个component,点击右下角的编辑,可以进行编辑信息。
    在这里插入图片描述
    在这里可以进行信息的编辑,Design Item ID是元器件的名称,Comment可以标注一些信息,如芯片类型等。
    在这里插入图片描述

    方法一:直接手动画

    3、画原理图库的元件(这里以ADS1256)为例,先在立创商城找到要画的元器件,然后点击数据手册。
    在这里插入图片描述

    首先右键放置一个矩形(这里注意基本所有的东西都可以这样放置)
    在这里插入图片描述

    也可以利用上面的工具栏,内容和上面是一样的
    在这里插入图片描述

    放置东西的操作都差不多,没放下的时候鼠标右键可以取消,左键放下之后可以调整大小。
    在这里插入图片描述

    接下来放置引脚,点击工具栏的这个图标
    在这里插入图片描述

    在这里插入图片描述

    这时候可以对引脚进行操作,按空格可以对引脚方向进行90度旋转,x和y键可以分别水平和竖直调转方向。未放下引脚时可以按table键进行参数编辑,如果已经放下了可以双击。
    在这里插入图片描述

    在properties里面可以编辑各种参数(这个面板如果没了的话同样是可以在右侧边栏找到的,如果还没有可以去右下角的panel里面找)。
    在这里插入图片描述

    Designator是引脚编号,name是名称,electrical type可以选择引脚的类型(就是所谓的奇形怪状的引脚,不过不常用,一般都用passive)。
    改好以后就可以把引脚放下了,这里一定要注意有四个小白点的那一段是朝外的(也就是说正常情况下引脚名称应该在矩形里面) ,之后画原理图的时候此处可以连线。
    在这里插入图片描述

    这样把所有的引脚放完,这个元器件就算画好了。
    还可以给它标上名字。
    在这里插入图片描述

    用这里的放置文本字符串,一般名字放在下面。
    在这里插入图片描述

    方法二:利用原理图向导

    在这里插入图片描述
    然后选择大概的形状,引脚数目,输入引脚名称、类型即可创建原理图库
    在这里插入图片描述

    方法三:直接从立创商城下载

    在这里插入图片描述

    方法四:直接去网上下载库,但是可靠性可能得不到保证

    4、 安装原理图库
    方法一:在components面板里找到File-basesd Libraries Preferences
    在这里插入图片描述

    然后点击安装,选择你建立的原理图库

    方法二:直接在右上角的搜索框里搜
    在这里插入图片描述

    点击从文件安装
    在这里插入图片描述

    选择原理图库即可。

    注:如果找不到自己的原理图库文件,可以选择all files在这里插入图片描述

    二、绘制原理图

    1、新建PCB工程文件
    在这里插入图片描述
    再在工程文件中新建原理图
    首先我们需要新建一个原理图。
    打开这个原理图文件,右键选择原理图优先项,可以在里面对原理图的一些基本信息进行设置(不过一般也不用怎么改)。
    在这里插入图片描述

    之后导入元件。在components面板里找到我们刚才画的原理图库,把元件拖进来。
    在这里插入图片描述

    点工具栏里的放置线可以进行连线(右键、左键才算画完了)
    在这里插入图片描述

    还可以放置网络标签,网络标签是对引脚的一个标注,标了相同网络标签的地方表示连在一起。这个常用于不同元件上的引脚,因为原理图里会有好多元件,不可能把所有的地方都用线连起来,会显得很乱,网络标签就比较实用。其他的网络标签可以自己探究。
    在这里插入图片描述

    选择过滤器是个很实用的东西,你可以把自己想选的东西点亮(以texts为例),这样画大框框选中的就只有你标注的文字,不会选上其他东西了。
    在这里插入图片描述

    排列对象,可以选中一堆东西(引脚或者其他),然后利用下面的选项很方便的进行排列。
    在这里插入图片描述

    等画完所有元件后,可以将他们排列整齐,并画上线,加上文字标注
    在这里插入图片描述
    画线:在这里插入图片描述

    展开全文
  • 计算机组成原理核心知识点总结&面试笔试要点

    万次阅读 多人点赞 2019-08-13 14:04:07
    作为一名计算机专业的学生,计算机组成原理、计算机网络、操作系统这三门课程可以说是专业核心基础课,是至关重要的,其内容是一名合格的coder所必备的知识集;非科班出身的程序员要是想要有所提升,也需要认真学习...
  • 编译原理书籍推荐

    千次阅读 多人点赞 2018-09-28 13:44:20
    大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成为了研究生入学考试的必考内容。编译原理及...
  • ESC32原理图和源代码

    热门讨论 2014-09-07 15:35:19
    ESC32 STM32无刷电调的原理图和源代码
  • synchronized底层实现原理及锁优化

    万次阅读 多人点赞 2019-03-11 19:02:26
    一、概述 1、synchronized作用 原子性:synchronized保证语句块内操作是原子的 ...深入理解Java并发之synchronized实现原理 参考: Java的对象头和对象组成详解 参考: Java synchronized原理总结
  • 操作系统原理.pdf

    热门讨论 2011-08-11 16:03:42
    本书用通俗的语言、生动的图片、丰富的例题介绍了操作系统经典的设计原理和最新的发展成果,还结合主流操作系统平台,组织了多个丰富而有趣的实验内容,安排了大量各种难度的练习题,并附有参考答案,以便于自学、选...
  • 触摸开关原理

    万次阅读 2020-08-01 11:35:51
    上图中展示了一个基本的电阻触摸按键原理图,其工作原理很简单。图中的晶体管当做开关,RB电阻将晶体管基极(B)下拉到GND,当没有触摸时,不会浮空,影响判断。RP电阻用于保护电路,当电极短路时,防止电流过大,...
  • 比较优势原理

    千次阅读 2019-06-24 09:41:48
    如果你要在经济学里面找最普遍适用,但是又最违反直觉的原理,那么首推这个比较优势原理。比较优势原理,是在经济学里面两三个最坚如磐石的基本原理之一。 1. 比较优势原理的含义 比较优势原理的含义是说:在一个...
  • 南邮通信原理考研全部真题及答案(1998~2014年)-by 陈杨 这里面包括了南邮考研通信原理全部的真题及答案 希望可以对考研人有用
  •       一个AD工程组一般包含4个基本文件,也就是原理图、原理图库、PCB、PCB元件库。如下图所示,先新建一个工程文件,然后新建以上的4个基本文件并添加到工程中。    二、原理图原件模型的组成及创建    ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,896,740
精华内容 1,558,696
关键字:

原理