软件是怎样控制硬件的

很高兴能够看到和回答这个问题!软件和硬件在电路中的本质和作用软件也是过程中的一个实体。
软件的本质是电信号、中低压和不同的数据。
这些电流信号控制着逻辑电路的关断,通过关闭逻辑电路来控制硬件的工作。
归根结底,软件起到的是开关信号的作用,当开关工作时,要保证设备带电而不开机,硬件是不能被软件控制的。
就像一个灯泡如果不接电源,按下开关就不会亮。
任何软件都必须通过物理方式转换成电流信号,你写在纸上的软件永远无法控制硬件。
以我们每天使用的电脑为例,软硬件工作原理
在指令存储器中发送信息时,计算机存储器中的软件会显示出电流和电流的变化情况。
在软件中,电压和高度的存在可以理解为1和0,0和1的各种组合相当于实现控制硬件目标的新指令。
一个简单的电路甚至需要多个电流。
硬件控制功能,软件是复杂的,可以理解为复杂的电信号。
软件是怎样控制硬件的?
当处理器准备好后,处理器中的指令寄存器会从存储器中检索指令,执行指令后,会对指令进行解码,查看命令、计划工作、设备等需要什么。
然后,控制器就可以根据计划的订单,开始所有参与生产的设备的工作。
在调试过程中,数据寄存器会将处理后的数据从存储器中输出,并传送到算术逻辑单元。
算术逻辑单元包括累加寄存器和程序状态寄存器。
积累寄存器相当于草稿墨水。
运行过程中的一些数据和结果会暂时存放在这个位置,程序状态寄存器专门负责记录运行过程中是否有传输、溢出等信息。
从内存中检索结果并保存到硬盘后的点击数。

可以帮助我们很好地理解软件控制硬件的原理。
如何理解通俗理解软件控制硬件的过程?
软件是指为实现特定目的而具有特定逻辑功能的可执行代码,通常以符号字母或特殊
但这些设备无法识别。
控制硬件是指由各种驱动控制器(如变频器、服务器、屏幕驱动器、单片机、工业可编程自动控制器等)控制的执行器,它可以根据提供的命令直接控制软件......在存储器和硬盘之间进行数据传输,并将采集到的二进制代码写入存储器中。
存储器读取存储的数据,即通过不同的磁化方向,将0和1转换成不同高度、不同电压的电信号,然后处理器通过数据总线搜索存储器,找到存储器中的数据。
要执行的指令,再将相应的指令发送给处理器,同时执行指令,输出的结果也是与高度相连的电压信号。
最后,通过驱动器开辟的接口,将指令结果传送给硬件控制芯片,对机器进行控制。
硬件控制芯片事先切入控制指令集,然后通过指令集分析进入控制器的纵横电压信号的顺序。
只要命令结果与控制命令一致,就会采取相应的措施。
答案写到这里,我想您应该明白了软件是怎样控制硬件的原理。
软件就是一串串代码,将相应的代码转变为特定的计算机硬件可以识别的信息后,硬件就可以正常工作了。

因为只有处理器才能把控制软件的指令,传递到接口电路,最终控制目标设备的动作。

通过I/O口进行控制CPU有GPIO接口,MPU有P0~P4及更多的IO接口。
这些接口,可以通过软件设置,做为输出、输入口。
从CPU,MPU出来的控制信号,一般不能直接控制目标对象,比如最简单的LED灯,电机等,必须经过一些锁存芯片、光电隔离芯片、继电器、接触器、信号驱动等电路,才能控制目标的动作。
一些成熟的电机驱动器,也可直接接收从处理器出来的输出信号,只要用一些芯片进行信号转换即可。
通过内存扩展地址,用可编程芯片如PLC,CPLD,FPGA等对目标进行控制。
有的控制对象需要几十、几百个控制点,这样P口就不够用了。
解决的方法,就是用扩展外部存储器地址的方法,如使用E200H,E300H......这样的扩展地址线,通过PLC、CPLD、FPGA等可编程器件,可以扩展出需要数量的控制输出。
很多硬件从业者,很擅长用PLC、CPLD、FPGA等芯片,以至于单片机最直接的P口被束之高阁,只完成看门狗Watchdog最简单的监视作用。
通过CAN,EtherCAT,ISA,PCIE等总线接口传递控制指令随着外部控制器件的日益智能化、处理器化,各种总线应运而生。
如上位机为高速的PC机,下位机为控制各种动作的单片机,那么PC104的ISA总线接口、PCIE接口、CAN总线接口等,就是最好的选择。
或者下位机直接就是一个支持EtherCAT总线的电机驱动器。
通过这些总线接口,可以快速地传递上位机的控制信号到控制单元中。
总结:软件对硬件的控制,有很多种实现方式,IO直接控制;
扩展地址外加PLC,CPLD,FPGA可编程芯片控制;
CAN,EtherCAT,ISA,PCIE等总线接口控制方式。
根据需要,灵活运用。
我们国家自动控制的实力还是很历害的,控制系统也是非常可靠智能的,相信你的所有想法都会通过控制系统变为现实。

在软件中,需要编程语言,这些编程语言都是高级语言,这些高级语言是为了我们更容易编译操作而编写的,硬件是看不懂的,是需要经过翻译,翻译成为机器语言,然后计算机才看的懂,进而执行简单的操作。
无数简单的操作就成了软件所需要的功能,然后通过机器展示出来。
机器语言是非常简单的,因为机器的每个部件的功能都是固定的,所以要完成一个复杂的动作,需要把相关的部件按一定的规律有序完成才行,这其中有多复杂想想也应该知道。
机器能接受的指令就只有有2个,固定一个动作,做或不做,在计算机中是以2进制标记的,也就是1和0,指令为1,就做该动作一次,指令为0,就不做该动作。
大量固定的动作根据一定的规律有序的成功做完,就组成软件中所需要完成的一个功能。
这就和弹钢琴是一样的,每一个音符需要你按一个键,每按一次就是一次动作,大量有序的按键就展示出了一首曲子,计算机的动作和钢琴的琴键是一样的道理。
最早的时候,软件编程就是大量的机器指令堆砌,工作量非常庞大,且内容复杂无比,维护起来非常麻烦,所以才有机器语言的诞生,就是计算机出厂前计术人员已经把固定的指令操作打包了组成了一个又一个的相对复杂功能,只要计算机软件调用触发这些功能就可以展示相应的功能了,这一层的语言就是计算机语言了,汇编语言就是这一层面的,汇编编程是非常麻烦的,代码量大,工作量也吓人,但是,功能和运行速度也强悍的吓人,任何高级语言都无法比拟,算是软件开发真正的核心技术所在。
我们现在所说的软件编程,用的就是比计算机语言高一层的语言,也就是高级语言,像如今流行的语言C/C++、Java、PHP、js等都是高级语言。
用这些高级语言几行代码展示的功能,在计算机执行的时候仍然是非常复杂的行为,所以不要认为会编程就认识了计算机,真正深究,核心技术的复杂程度绝对超乎你的想象。
看到这里,心理是不是已经有了答案,硬件是不可能完成你所有想要的功能的,软件可以展示的功能都是计算机固有的功能,功能有多强大主要取决于计算机的硬件。
简单来说,软件就像是人的思想,硬件就是人的身体,身体的所有动作都是思想赋予的。
但不合实际的想法身体是不可能完成的。
文章原文:http://www.toutiao.com/i6419069886462427649/更多软件学习相关知识,请搜索东渡科技。

参考:
软件是怎样控制硬件的?
★当你往计算机设备里看时,能看到一大推电路、芯片、电线,扬声器、接口和其他东西,这些都是硬件,你看不见摸不着的就是软件。
软件是计算机上所有的程序,或运行在机器上的代码。
软件可以是任何形式,从应用程序和游戏到网页,以及在网站上给客户行为的数据科学软件。
但是软件和硬件是如何结合起来起作用的呢?
让我们从计算机的中央处理器,即CPU开始说起。
CPU是控制计算机其他部分的主芯片,CPU需要做不同的事情,因此它内部有很多小的电路来处理特定的任务,它有电路来做简单的数学和逻辑计算。
其他电路用来从计算机的不同部分发送和接收信息。
CPU最神奇之处在于它知道使用哪个电路,什么时候用。
CPU会接收简单的命令来告诉它用哪个电路来执行特定的任务。
例如,一个“加”的命令告诉CPU用外部电路来计算新数字,然后用“存储”命令告诉计算机用不同的电路来将结果存到存储器中。
和数字一样,所有的这些简单的命令都用二进制的1和0表示,或者ON/OFF的电路信号。
二进制命令存在存储器中,CPU将它一条条的取出来执行。
实际上,这一系列的命令就是一个非常简单的计算机程序。
二进制代码是软件的基本形式,它控制了计算机上的所有硬件。
现在没有人用二进制写程序了,因为这样太慢了。
现在程序员写的软件更像是PYTHON或这样RUBY,甚至是这样BLOCKLY。
像这样的编程语言,用非常像英语的方法来输入命令。
只需要一条命令就能在屏幕上画一个正方形。
这条高级命令会被转换为成百上千CPU能理解的简单二进制命令。
软件告诉硬件CPU做什么,当你听音乐时,又浏览网页,并和朋友聊天,你的计算机会同时运行多个软件。
那么这些程序是如何到计算机上,CPU又如何一起运行它们的呢?
为了寻找答案,我们要看一看操作系统。
操作系统是计算机的主程序,它负责管理软件如何使用硬件、管理软件资源使计算机有效地利用这些资源的程序集合。
操作系统的任务是:管理处理器、管理存储器、管理设备、管理文件和管理最终输出作业。
例如大多数人
操作系统是一种能控制计算机上其他软件的特殊应用程序。
它让你能通过将程序读取到内存中来安装新程序。
它决定了什么时候程序运行在CPU上,程序是否能操作输入和输出设备。
你可能认为计算机在同时运行多个程序,实际上并非如此,操作系统能在一秒钟内非常快速的切换程序好多次,从而共享CPU。
知足常乐2021.9.7日
参考:
硬件就是电路,软件和硬件所存储的信息的本质其实就是电路上一些开关的状态,只不过现代计算机的集成电路规模之大使其产生质的转变。
就最简单的举例,家里走廊一盏灯有两个开关,按其中任何一个,无论另一个开关的状态如何,都会改变灯的状态(开的就关,关的就开)。
或者说必须两个都是关的,灯才会关,否则就是开的。
这就是一个简单的逻辑电路,电脑就是上亿个这种电路的结合体。
软件和任何存储的信息就是这些开关的状态,开还是关。
以廊灯的例子来说,硬件的功能是受到物理法则约束的,它的可能性只有开合关。
无论你怎么按动开关都不可能造成开灯和关灯以外的状态。
电脑也是一个道理,任何被物理法则允许的硬件行为理论上都有可能用软件实现。
比如说手机的显示屏理论上可以显示任何画面,闪光灯可以用来发光(到一定的亮度),扬声器可以用来说话等。
但是没有软件可以让手机飞起来变成无人机。
软件和信息本身也是没有明确分界线的,现代操作系统因为内存很大所以可以人为划分哪些信息是用来定义逻辑关系,哪些是要用来运算的。
几十年前电脑刚发明的时候内存受限制,软件和信息都是混合在一起录入的以节省内存和带宽。
现代的划分只是方便人类程序员去理解程序的工作方式。

参考:
软件和硬件的关系,我不认为是简单的谁控制谁的问题,而是相互依存的关系。
如果把软件和硬件作为一个整体的话,用人来做一个对比,自认为可以说清这种关系。
软件基本上就是一些人为定义好的逻辑,它是一种思想,就像人的思想一样,所以CPU是人的大脑,而CPU里写的软件就是人脑中的思想。
我们这里说的硬件是一些CPU以外的各种电路,这些电路连接到CPU。
有些电路是用来采集外界的信息,比如温度、湿度、电压、电流、光线、
而有些电路是接收CPU发出的指令,按不同的电路实现不同的功能。
比如,发出一个关灯的指令,相应电路接收到该指令后实施关灯的动作。
下面用开灯的过程分别用人和软件硬件来作一个对比:人: 我在家里看书,太阳落山了,天渐渐变黑,我发现看不清字了,这时我想到要去把灯打开,所以我走到开关边上,伸出手按下开关,这时灯亮了,我又可以继续快乐的看书。
软件硬件: 我家里有一套电灯控制系统,工作原理是,光线检测电路检测到光线变暗了,它发出一个信号告诉CPU光线已经较暗了,CUP收到该信息后,其软件逻辑为需要把灯打开,所以CPU输出开灯的指令,电灯控制电路接到指令后接通电灯的开关,这时灯亮了。
该对比我们可以发现下面的对应关系:口口木的笔记 2019-2-16
参考:
哈哈,我也被这个问题困扰了很久。
其实从本质上来说并没有软件去控制硬件,而是硬件自己的循环控制。
简单来说就是你在键盘上按一下按键,产生高低电压(简单的就是这么说了,当然还有一堆的编码什么的),然后这个电压被存储在ROM(只读寄存器)。
然后处理器加载存储的这个高低电压,执行工作。
想象一下,如果cpu只是一个n-mosfet,当g极读取到高电压时,产生一个大于阈值电压的vgs,那么ds导通,就可以控制一个灯亮,当读取到低电压灯就灭。
当然处理器的处理能力远远不止于此,所以就产生了软件这个概念,让我们可以输入更复杂的控制内容。
请记住你看到的在电脑屏幕上密密麻麻的字母并不是软件,而是一段助记符,真正的软件是你在按下键盘的时候产生的高低电压。
处理器最基本的是架构,比如酷睿,奔腾,这个就是架构,如果把一个处理器比喻为一个工厂,那么这个架构就是工厂的整体框架,几个进料口(单核,双核,四核等等),仓库有多大,取料的方式等等。
然后到指令集,这个是由一堆门电路硬件构成的最小功能执行单元,也是所谓的软件和硬件的接口,目前分为复杂指令集CISC和精简指令集RISC。
x86就是CISC,ARM就是RISC。
正因为这是软件和硬件的接口,导致了同一套系统Windows不能同时在两个指令集平台运行。
Intel 和AMD虽然架构不同,但是指令集是兼容的,所以我们安装Windows的时候基本是同一套。
关于指令集,在微机原理里面有介绍。
好了因为指令集是软件和硬件的接口,软件的编程就必须按照这个接口规范来编写了。
当然现在的高级语言编程并不用知道这些,你只要关心编程的语法和你的逻辑就可以,因为编译器已经帮你做好了这个工作,一系列的编译,汇编,链接之后,你就获得了一个包含01的可执行文件,在存储里面就是表现为高低电压。
然后这段高低电压送入处理器,经过处理器后就输出你想要的结果,达到软件控制硬件的目的。
请记住,本质并没有软件控制硬件,你是不能用意念控制一个东西一个道理,而是硬件控制硬件。
软件是为了高效的输入你的控制指令而发展起来的一套系统化的东西。

参考:
我认为简单点,计算机软件就是通过接口编程来控制硬件的,而我经常用到的接口有串行通讯口RS232和RS485及网线接口,主要用来采集生产设备的参数到ERP系统里进行记录及数据分析。
但有接口通讯还不够,计算机软件编程的时候还要知道设备的通讯协议,简单点就是硬件定时回传一些标准的字符串,例如我编程采集称的重量时,称会回传如下
有了通信协议,程序员还要明白协议里的内容字符代表什么意思。
一般地,如果是串口通讯协议,可以用微软操作系统的超级终端查看,但协议的内容代表什么意思就要问硬件供应商了。
总结:计算机软件编程控制硬件,每个硬协议千变万化,就算同一类型的硬件设备,因制造商不同,通讯协议也不同。
因此如果硬件制造商能标准化通讯协议,计算机软件编程控制硬件更容易,对制造业的自动化之路具有积极作用。

参考:
计算机系统有个基本的原理,很多人没有听说过或者不理解,那就是软硬件等效原理,即:计算机硬件和软件在逻辑功能上是等效的,一个逻辑功能既可以用硬件实现,也可以用软件实现。
所谓用硬件实现就是利用各种逻辑电路来完成相关的逻辑功能,软件实现则是利用硬件的基本功能提供的指令编码编程实现的。
由于用硬件实现一个逻辑功能非常困难,所以,人们一般将要求速度快的、相对固定的、简单的功能用逻辑电路来实现(具体为集成电路芯片等元器件),如CPU中的ALU(算数逻辑单元),一般也就是实现加法功能和逻辑运算功能,其他的复杂的功能都由软件来实现,在这个前提下,硬件实现就相对简单,部分实现了自动化生产(摩尔定律),而软件设计随着人类对计算机功能的需求不断扩大而愈来愈困难(软件危机),也促使软件产业也更加蓬勃发展(造就了比尔盖茨二十多年的首富)。
这样一来计算机系统的软硬件的关系就好理解了,硬件提供基础的功能,其他功能的扩充则由软件来实现,首次功能的扩充是由系统软件来实现的,操作系统是典型的代表,其次是相关的支撑软件,如语言处理软件等,再就是各种应用软件,包括人工智能软件等。
用钢琴的例子很好理解计算机软硬件的关系,略知乐理(以简谱为例)的人都知道,钢琴的基本发音为1234567,这就相当于计算机硬件只有这7个基本功能,每个基本分发音功能都赋予了一个数字编码,简谱中的数字1234567相当于七个基本指令(什么是指令,指令:CPU基本功能的二进制编码,很多教科书都在回避指令的定义,大家可以查查),显然这七个音单独的弹奏没有什么好听的,只有作曲家利用七个基本的音组合起来写成乐曲,演奏起来就说美妙动听的音乐了,钢琴的功能就得到扩充了。
因此,作曲就类似计算机的程序设计(用机器语言进行的编程)!还有就是计算机作为一个计算工具,其理论接触来自于数学,把其制造为具体的计算工具则由物理学科来实现,比如为什么计算机使用二进制,原因之一就是找到能表示两种稳定状态的物理材料(器件)较容易,这样就可以表示0和1,如,磁性材料、开关电路、电容等!
参考:
软件是控制不了硬件的 但是给软件留了一个调用硬件功能的接口代码 软件代码最终都是转成了硬件设定的机器功能码 软件与硬件的隔离层就是一个编译器 软件要通过编译器告诉硬件告诉CPU它想做什么 电脑 尤其是我们当下使用的电脑就是一堆 开关 一堆的功能开关 开关的核心则是加法器 就是所谓的逻辑门电路 所有计算机功能的实现 都是由门实现的 这个门有三种基本的连接方法 中联 并联 和反接 当开关被晶体管替代时 就实现了大规模的功能实现 代码的分类是在寄存器里 代码的数据到了加法器里要进行一次识别转换 经过识别转换之后通过总线发到相应的硬件进行命令的执行 每一代新的处理器最核心的就是内部的门电路的代码 这些代码是处理器的灵魂 也是CPU厂家的绝对商业机密 如果你的老师或者是师傅教你多少处理器的核心代码 你就有多少把控计算机的能力
参考:
软件代码编译后文件保存的内容都是由二进制0和1组成的在机械硬盘中,这些0和1用磁性材料保存,磁化方向不同分别表示0和1硬件控制的是电信号,在电路中用电压的高低来表示1和0 。
比如大于3.5伏的电压表示数字1,小于0.3伏的电压表示数字0。
然后将电信号的0和1与存储器中存储的0和1进行耦合,使其可以相互转化。
首先,内存与硬盘进行数据传输,将编译好的二进制代码存入内存内存读取这些存储数据,就是通过不同的磁化方向将0和1转化成电压高低不同的电信号传入内存中然后CPU通过数据总线对内存寻址,找出需要执行的指令,然后将该指令对应的高低电压信号传入CPU中,并执行指令,输出的结果也是一串高低电压的电信号最后通过驱动程序暴露的接口将指令结果传输给硬件的控制芯片,对硬件进行控制。
硬件的控制芯片中已经提前刻入了控制指令集,然后指令集对控制器传入的一串高低电压信号进行分析,只要指令结果跟控制指令一致,则完成相应动作。

标签