深度解析,单片机运行原理,你知道吗?
单片机是将中央处理单元(CPU)、储存器、输入输出集成在一片芯片上,可以说单片机就是一台微型计算机,只是和我们平常使用的计算机相比它的功能有所不同,也没有我们用的计算机那样强大。
计算机可以运行一个个应用,单片机可以按照工程师的编写可执行文件,实现各种各样的功能。那么,单片机是怎么知道要执行什么指令,做什么动作呢,我们的指令又是怎么被单片机识别呢?了解这个过程,可以加深对单片机的理解。
CPU首先要从CPU的组成说起,CPU是由晶体管组成的,这些晶体管是一种半导体器件,比如二极管就是最为常见的半导体器件。电流只能从正极流向负极,反向则截止。
晶体管通过各种组合方式构成门电路:与门,或门,非门,异或门等。门电路又称为逻辑门,是数字电路的基础,常见门电路,及其真值表:
我们了解下与门电路:
与门电路可以想象为两个串联开关控制一个灯泡,只有同时闭合两个开关,灯泡才会被点亮。开关表示晶体管的导通与截止,灯泡的点亮与熄灭表示电路输出的高低电平。
其他门电路也是由各种晶体管构成,不同的输入,有不同的输出,构成各种功能。各种门电路通过复杂的组合就成了CPU了。然后用CPU完成各种复杂计算的。
加法器有了CPU,我们用它来算一道小学生算术题1+1=2,看看它是怎么计算的,从一个简单加法器开始,加法器由半加器组成。
半加器
半加器由一个与门和异或门构成。不考虑低位进位来的进位值,只有两个输入,两个输出。
1+1=2,2在二进制中表示为0010。在半加器中:异或门输入不同的电平(不是同时高或低),输出为高,也就是1+0或0+1,输出1,当两个都输入为1输出为0,与门则输出为1,也就是进位。可以把它抽象成一个黑盒子:
全加器
用两个半加器可以组成一个全加器:
当多位数相加时,半加器可用于最低位求和,并给出进位数。第二位的相加有两个待加数(B和进位CO),还有一个来自前面低位送来的进位数 (A)。这三个数相加,得出本位和数(全加和数)和进位数。同样可以把它抽象出来:
这个黑盒子就是一个函数,输入两个加数,相加运算,输出和数。
如果要计算多位数的相加,则需要多个全加器以及其他门电路,组合出更复杂的加法器。减法的运算可以用加法来分解:
减法:10 - 5 = 10 +(-5),须通过反码,补码等操作。
其他运算器也有相关的门电路来组成,有关知识这里不展开。
从加法器我们不难得出,CPU的运算是各种门电路的高低电平的输入和输出,高电平为1,低电平为0,把我们平常的十进制数字转成二进制数输入,输出二进制数。
寄存器
两个数字相加用全加器的组合来完成,如果是多个数字的相加呢?比如1+2+3+4+5+……+100,该怎么完成呢?
按照我们的计算过程来看这个问题,我们先把前两个数拿出来相加,得到的和再和第三个数相加,依次累加到100,转换到单片机来完成,那就要把所有的相加数放到一个存储器中,以便在每次的相加中取出,还要把每次相加的和数保存起来用到下一次的相加,这就用到了寄存器了。
寄存器-1保存1-100的数字,寄存器-2保存每次的相加结果。计算1-100的相加,寄存器-2的初始值为0,依次取出寄存器-1的数字和寄存器-2的结果相加:
1+0=1,
2+1=3,
3+3=6,
4+6=10……
锁存器
但是寄存器是怎么帮我们保存数据的呢?这就要锁存器(Latch)来帮助了,两个或非门组成了一个最简单的锁存器。
简单的说,这个单元记住了之前S端的输入1,直到我们把R端设为1,输出端Q才变回0。
然后在这个简单锁存器加上控制端G和一个输入端D就变成了D锁存器:
它有两个输入端,分别是一个信号控制G,一个输入数据信号D,一个输出Q。它的功能就是在G有效的时候把D的值传给Q,也就是锁存的过程。
触发器
把两个D锁存器结合到一起就成了D触发器(DATA flip-flop)。触发器也叫双稳态门,又称双稳态触发器,是一种可以在两种状态下运行的数字逻辑电路。
触发器一直保持它们的状态,直到它们收到输入脉冲,又称为触发。常见的触发器包括:RS 触发器、D 触发器和 JK触发器等,其中D触发器最为常用。
当锁存器-1控制G为有效信号时,D的输入传到到锁存器-2的输入,但是此时锁存器-2的控制信号不是有效的,所以锁存器-2的输出Q没有改变;当锁存器-1的控制G变为无效,锁存器-2的控制信号变为有效,锁存器-2的输出Q就改变了,也就是触发器的D输入传到了Q,并且D没有输入就一直不变。
时序电路
我们再来看看1—100的累加过程,如果寄存器-1和寄存器-2的存储速度不一样,或者运算单元取数不协调,也就是寄存器-2没来得及存储,或者寄存器-1还没取出下一个参与运算的数字,则此次的运算就会就会出错,又会影响到下一次的运算,这个影响会无限放大到之后的结果,并且单片机还有很多外设需要同步运行,这时就需要一个统一指挥来同步各个部分的行动,什么时候该做什么,做到哪一步了。
这个指挥就是时钟。时钟电路产生脉冲信号给电路,可以认为给一次脉冲信号,单片机各个部位就动一下,电路就刷新一下,这就做到了行动统一。前面的D锁存器,D触发器G输入端就是时钟脉冲信号输入,控制G输入信号,进而控制Q的输出,或者记住Q值。这是内存最初的样子。
到此,我们知道了寄存器就是一种时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,用来暂时存放参与运算的数据和运算结果。
一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器,一般有8位寄存器、16位寄存器等。它被广泛的用于各类数字系统和计算机中。
- 运行程序 -
有了前面的铺垫,我们来分析一下,代码从是怎么被单片机识别的,并转换成功能输出的。
首先工程师把代码逻辑写好,再编译成单片机的可执行程序,这个可执行程序实际上就是变成由0,1组成的按一定规律排列好的二进制数,再用烧录器写进单片机。
单片机内部就是由我们前面学的门电路的各种组合,门电路也由半导体器件构成,这些半导体PN结是一种特殊的熔丝。空白的单片机内部是矩阵排列的熔丝,在烧录过程,程序中0的地方就熔断,1的地方就导通。烧录好之后,单片机就有了逻辑功能。
执行程序过程:从程序存储区读取程序指令——分析指令——执行指令。
读取指令:就是根据程序计算器(PC)的地址取出相应的指令,送到指令寄存器。
分析指令:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令是我们之前的加法运算中的取加数,则寻找加数的地址。
执行指令:无非是把一条二进制代码,转换成数字信号(高低电平),操作逻辑门电路,就像我们的加法器一样输入输出。把经过逻辑门运算的结果输出,把单片机的相关引脚电平输出高或低。
也就是单片机上电开机,单片机处于初始状态,可以认为初始状态中程序计算器(PC)就有了第一个指令地址,在时序电路作用下,送到指令寄存器,分析指令,执行指令,输出功能,如此循环。单片机就这样自动进入执行程序过程。
当然单片机运行的过程是很复杂的,这里只是个人简单的理解,总结。
从晶体管组合成逻辑电路,逻辑电路组合成单片机,再从单片机在到现在的计算机,超级计算机,是一个不断积累,不停进步的过程。想要你的人生也是这样的精彩过程吗,来找我领取入门资料,开启与导师的一对一互动,进入高阶学习,成就精彩人生。
单片机是什么?和PLC相比哪个更好?
很多人问,单片机和PLC哪个好学? 今天咱们就来说说这个问题。
单片机是微型计算机系统,属于微控制器的其中一种,PLC的全称是可编程逻辑控制器,从名字上来看这二者肯定有相通之处,但又互相区别。
对于单片机好学还是PLC好学的问题,总的来看,PLC因为入门简单,所以更适合新手,更容易上手和入门,口说无凭,一起来看看原因。
单片机的确功能比PLC强大,但功能越强越广,就意味着电路也会很复杂,,单片机的编程语言C语言或汇编语言相较于梯形图来说,没那么容易懂。总而言之,想学单片机,你不仅得有计算机硬件基础。还要会C语言编程,而且对电路这方面也要多多了解。
接下来具体分析在这几个方面的单片机和PLC的优劣势。
1、编程语言
PLC的编程语言有:梯形图语言(LD)、指令表语言(IL)、功能模块图语言(FBD)、顺序功能流程图语言(SFC)、结构化文本语言(ST)。
梯形图是应用较多的,因为它有点像电气控制中继电器线圈和触电动作之间的关系,如果学过继电器-接触器控制的话,入门就容易很多,所以很多电气控制人员选择它,新手用梯形图进行编程也会容易一些。
单片机的编程语言是C语言或汇编语言,也采用自带的编程语言(如51单片机的ASM语言)。
单片机指令代码多且复杂,所以编程要更难一些,尤其是涉及到更复杂项目程序会更难,因为不仅要懂英文,还要懂数制,如果有计算机基础的人可能会好一些。
2、硬件
单片机价格低,下面这张图就是他的开发板,中间的最大的STC就是单片机开发板的核心芯片,从图上可看出,它的外设输入、输出是比较多的。且单片机的控制电路需要用户自己设置。
PLC的外观看起来就很简洁,因为它的接口、电源、抗干扰电路都被设计在PLC内部,因此学习并操作时,在电路方面花费的时间和精力就比较少,主要的重点是学会用梯形图控制各个输出端口,梯形图对于新手来说,往往容易上手。并且添加扩展模块就可以实现其他功能,但PLC的价格比单片机贵。
3、应用领域
单片机的领域比PLC广,可以广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,技术含量高,使用灵活,但是工作量较大,抗干扰、模块化要求低。开发消费电子、商业应用的电子、玩具、家电等可以选择单片机。
但要知道单片机只是一个芯片,所以电路比较复杂,初学者经常会面临抗干扰能力不强,现信号失真,干扰过大的问题。但对于经验丰富者来说也不算事。
很多人说单片机在工业领域可以代替PLC,我只能说在工业领域,多数自动控制的大型设备还是要用PLC来完成。在设计之初,PLC就更注重于工业应用,对于防干扰、设备接口、联网、模块化都有完善的技术支撑,使用方便简单,开发设计周期短。例如,自动化生产线,就必须用PLC来做。单片机只能用来开发一些补充设备。
总的来说:如果你是新手或是电工,又或是准备在工业领域发展,建议你先学PLC,如果后续有需要可以再学单片机。每个人的情况不同,依据个人需求做选择才是最佳的。
还有,这年头一技在手,天下我有的情况太少,有的公司之前只有单片机,后来公司产品扩展转型,就对PLC也有需求,作为东家,肯定希望自己的员工也能会PLC。所以,在外工作,学习能力很重要。 很多东西只是开头难,学到后面就会融会贯通,一通百通。
往期优秀文章回顾:
举例说明PLC编程中的进制数,新手也能看懂的基础
相关问答
单片机 通俗一点讲究竟是个什么东西?答:通俗一点说单片机就是一个微型电脑或者说它是一个微控制器,就是把电脑里面的关键性部件等全部集中到一颗芯片中。用数字...单片机通俗一点讲究竟是个什么东西...
自动化学主要学的是什么?自动化专业需要以电子技术、计算机信息技术等为主要的技术手段和技术支持,对各种自动化装置和系统实施控制的专业类型。自动化专业需要学习电路知识、数字电子...
从零制作 单片机 需要哪些知识?从零开始我先认为是所有方面都是零基础了。我来说说需要哪些知识点和学习的步骤吧。首先既然是玩单片机,那肯定是需要编程的,所以需要C语言的知识,其次玩电子...
单片机 维修技巧?以下是一些建议的单片机维修技巧:1.问题分析:在开始维修之前,了解单片机的工作原理和常见问题。仔细检查损坏的单片机以确定具体的问题和故障原因。2.工具准...
单片机 是怎么工作?[回答]很多小伙伴是不是都不知道单片机是如何工作的呢?不过没关系,现在就由旺扬科技小编为大家揭晓,希望对大家有所帮助。单片机的工作过程就是一个不断...
串行输入输出和并行输入输出的区别 解析 ?1、本质上的区别并行输入是指将一串数据(如八位数据)一同输入目的寄存器。是并行通信的一种输入方式。串口输入是将数据排成一行,一位一位输入的寄存器。2、...
单片机 属于电学的范围吗? - 小田切让的女朋友 的回答 - 懂得严格来说,单片机属于电子信息科学类。所谓的单片机你可以理解为它是一个精简版的CPU,通过C/C++等语言进行编程,让这个CPU控制硬件电路。电学是物理...
帮忙分析下台湾的 单片机 的优缺点(价位、性能、)谢谢?个人感觉应该影响比较大,台系单片机价格不是一般的便宜,可靠性上面大家都差不多,可是很多台系单片机都是仿Microchip的,已经成系列化的可替代产品,我以前用...
单片机 复位是什么意思?有什么作用-ZOL问答但在电路上电时候或电压波动不稳定的时候,当给单片机上电那一瞬间,电压有在几微秒内(有的是几毫秒内)不是直接跳变到5V的而是一个直线上升的阶段,这时候,单片机...
【 单片机 程序分析题求解答MOVA,#00HDECADECAMOV18H,A(18H)=...[最佳回答]语句一:将74H放入地址30H中.语句二:将74H与1FH相与,结果为14H,存入地址30H中.语句三和四:将地址24H中的内容高低位交换,结果为69H.语句五:将A中内容...