你不理解软件为何能控制硬件,大概是因为你觉得软件是看不见摸不着的东西,如何能够控制硬件这样有形的实体吧。
其实问题很简单,软件在工作的时候也是实体,软件的实质就是电流信号,用电压的高低代表不同是信息,用这些电流信号去控制逻辑电路的通断,靠逻辑电路的通断来控制硬件的工作。
说到底软件就是起到一个开关信号的作用,开关要工作,必需保证硬件是加电的,没有接通电源的硬件是无法用软件来控制的。就好比没有插上电源的台灯,你怎么按开关都是不会亮的。
任何软件在运行前都要有一个将其转化为电流信号的实体化过程,你写在纸上的软件代码是永远也不能控制硬件的。早期电脑用人工接线输入程序,相当于用人体的力量将软件代码实体化为电信号;现在我们用的软盘、硬盘是通过磁头将程序代码转化为电信号,光盘需要通过光头将程序代码转化为电信号等等。
软件到底是怎样控制硬件的
首先,硬件是由各种“门”组成,“门”是个术语,不懂没关系,可以把一个“门”看成是一个多米诺骨牌,它被推倒后能把下一张骨牌推倒。
看过多米诺骨牌视频的都知道,骨牌的巧妙摆放再配合各种机关的话,在推倒后是可以实现许多种功能的,比如演奏音乐,控制灯光甚至开动汽车啦等等。
假设在一个大房间里,已经摆放了这样一堆堆的多米诺骨牌,每一堆骨牌被推倒后,都能实现出特定的功能,但人是不能进来这个房间的,这些骨牌只能靠房间里的一个机械手来推倒。
然后,在房间外面,摆放着有限的几块骨牌,人可以按照不同的排列组合推倒这些骨牌,然后房间里面就会有个机械手按照人的想法来推倒不同的骨牌,实现各种功能。
但是,有时候,人想实现的功能太复杂了,光靠控制机械手推倒骨牌的话,要推倒成千上万块骨牌,太累,那么一种思路是:在房间里事先摆放更多,更复杂的骨牌,这叫增加硬件,但这样很不灵活,只能解决部分问题。
另一种思路是:人每次都临时控制机械手在房间里摆放新的骨牌,然后这些骨牌被推倒后,就可以一次性触发更多的骨牌被推倒。
但实际上房间里并没有新的骨牌,房间里已经摆放了一大堆专用的骨牌,然后机械手只是重新修改了这些骨牌摆放的位置而已。
这个房间,就是一台电脑,那些已经摆放好的骨牌,就是硬件,按照你的意愿推倒一张骨牌,造成连锁反应,实现你想要的功能,叫做控制,通过机械手重新摆放的骨牌,就是软件。那一堆控制机械手的多米诺骨牌,就是你的鼠标键盘。
控制原理解析:
程序本身就是高低电平的组合;它通过在CPU上执行来模拟各种决策过程;同时,计算机就是一堆开关;那么,通过指令向某些地址写出数据(访问特定地址是通过各种寻址机制/指令完成的,归根结底也可以说是通过开关切换,改变了电路拓扑),就等于开启/关闭了对应地址上的某个开关;这个开关可以是类似CPU内部那样的一组三极管,也可以是通向另外一个继电器的信号线——这个信号就促使继电器闭合,于是电机导通。
就好象人开汽车一样,神经发出的微不足道的电脉冲经过肌肉放大,影响了涉及数百甚至数千马力的能量洪流的发动机/变速箱的运转,然后汽车就开走了。
计算机也一样:它通过向控制特定地址上的开关输出0/1(高低电平),就可以通过事先准备的物理设施驱动诸如航模电机、舵机等等机构,这就完成了航模控制。
完整的控制回路甚至可以是:
航模上的传感器采集飞行姿态、地形、位置等等数据(最终转换成高低电平构成的信号)----信号通过某些端口送到CPU-----CPU执行程序,程序读取传感器发来的信号,决定下一步的行动-----经过程序的智能判断后,通过控制特定地址上的开关(前面提过,向这个地址发一组高低电平构成的数据就行了),驱动诸如航模电机、舵机等等机构,完成航模控制。
软件是怎么控制硬件的?
计算机软件在计算机内部无非也就是一堆01代码,作用于硬件也是因为这些01代码,这相对比较复杂的
举个例子说:打印机,它有自己的端口地址,当你点击打印的时候,系统会把这个指令传到它的端口,给它加上一组高低电压。
安装软件的过程除了把软件拷到电脑上之外,剩下的还有给操作系统作个标记(在注册表内注册)
系统为每个硬件设备留下了端口地址,软件作用于硬件首先是把指令传送到他的端口地址。而硬件的工作 也无非是几个指令而已,对它而言就是几个高低电压组成的,用软件控制就是发给它几个特殊的01组合代码。软件的工作就是给这样的硬件编程。规定,什么样的操作用什么样的代码而已。
软件是如何控制硬件的
计算机组成原理,计算机体系结构
二进制在内部就是高低电平,通过时钟脉冲组成时序控制信号,经过控制器,微控器等一些部件控制门电路的开合,完成各种操作。
而软件呢,其实也就是一块块的,什么操作调用什么代码,然后把转换为底层的代码让硬件执行
软件是怎么控制硬件的?
通过一些指令,这个看似简单,其实涉及到一些很底 层的内容和原理。对于一般计算机爱好者 来讲,又没有办法说明白,原因就是我们 从来没有考虑过电路在物理上的实现。 计算机软件说到底,不过就是一些指导电 子元件工作的指令序列,那么你一定又会 问电子元件为什么会按这些序列工作呢? 指令序列的在电路中的实质就是一些有规 律且有一定意义的电脉冲,电脉冲控制电 子元件的各种状态。工作过程非常复杂。 最简单最基本的就是几个逻辑门电路的实 现:比如“或”电路,“与”电路等等。
这些逻辑门电路的组合和协同,就能实现 电脑整体上的运算和处理能力。因为这是 十几个数量级的基础电路的有机集合的对 外的体现,如奔腾系列CPU集成了上亿个 半导体元件,要想把各个元件的功能彻底 认知,是非常困难的。可以把它们比作每 个人的活动合在一起就构成了社会。
望采纳,谢谢
软件是怎样控制硬件的?
说白了:计算机软件 在计算机内部无非也就是一堆01代码,作用于硬件也是因为这些01代码,这相对比较复杂的
举个例子说:打印机,它有自己的端口地址,当你点击打印的时候,系统会把这个指令传到它的端口,给它加上一组高低电压。
安装软件的过程除了把软件拷到电脑上之外,剩下的还有给操作系统作个标记(在注册表内注册)
系统为每个硬件设备留下了端口地址,软件作用于硬件首先是把指令传送到他的端口地址。而硬件的工作 也无非是几个指令而已,对它而言就是几个高低电压组成的,用软件控制就是发给它几个特殊的01组合代码。软件的工作就是给这样的硬件编程。规定,什么样的操作用什么样的代码而已。
参考资料:http://zhidao.baidu.com/question/5791521.html?md=3
软件是怎样控制硬件的
2017年11月15日星期三,我来谈谈,我自己的想法吧,首先,硬件需要通过操作系统之类的程序来进行管理,然后,应用软件会根据用户的需要,来通过操作系统向硬件发送请求,硬件如果空闲,就响应并按照用户的要求进行工作,直到用户打断或者是完成用户的要求后回到等待状态,这个问题,涉及到很多东西,建议你去看看操作系统的书。
软件为什么可以控制硬件?
问题一,举个最简单的例子,就是在“软件空间”,也就是所谓的地址空间中的一些特殊区域,是通过“一根导线”,连接到某个外部引脚上面的,这样,这个“地址空间”里面的数据发生改变,这个引脚对应就有软件上面的“0”、“1”两个值,比如高电平和低电平。
这只是一个非常形象的例子,实际硬件运作过程比较复杂,但是核心差不多就是这样,一般是通过特定的地址实现对硬件的控制——比如软件的存在是依赖存储器的,那么存储器硬件上的一种是电容,只要在这个电容上连接除了起存储作用的“引线”,还连接别的东东,就可以起到相应的作用了,比如点亮一个发光的东东。
疑问二:你说的赋予相应的脉冲,应该是给控制信号吧。大概过程可以描述下:首先软件写入特定的特殊地址,硬件检测到这种写入后反馈给硬件固化的“软件”(也可以叫固件,芯片们工作往往不只有硬件电路的参与,还有硬件本身带有的软件的参与),这种“软件”再“写回”给软件,这就完成了一次通信的过程。
实际硬件软件协同工作的过程非常复杂,《单片机原理》里面有比较细致的描述。所有回答中使用引号的词句表示这只是真实情况的一种近似或形容,不代表其真实工作过程。更多
原理看着很模糊,能加点专业术语和例子吗
假设现在有一个8位单片机,有一个地址0x11,可以控制一组IO接口P0.0~P0.7共8个引脚。
我试着从近似的角度阐释为什么会有控制动作:
1、写入过程:地址0x11(IO控制寄存器)存储着1Byte,8Bit的信息,对应着这8个引脚(可以简单理解为一个存储着信息0、1的电容外面又连接了一个导线到一个引脚),那么当软件对这个地址“写入”值时,相应的引脚电压就要随着这个电容器(这个电容器本质上是触发器)里面存储的电压高低(电平翻转)发生变化。
2、读取过程:由于这个存储电荷的电容与外部的引脚有“导线”连接,因此当外部“人为”(其他设备、芯片或开关什么的)地改变这个引脚的电压(引脚拉高或拉低)时,“电容”会充放电(建立和保持),改变电压(寄存器位变化)。当程序读取了这个地址0x11时,就会得到改变的值。
3、这种软件能够控制硬件进行变化和检测变化的能力,就是数字世界的基础,也是构成现代设备设施的最基本原理。
上文所引用的大部分内容,是真实世界的一种及其不精确的近似,仅可帮助理解,与相关设备的本质工作原理表面相同,但本质有根本性的不同。如想继续加深这方面的理解,建议参考阅读《数字电路基础》。
不满意。如:对于C语言 int a;
a=10;
之后a的单元就储存数字10:之后通过芯片写入,执行就可以动作。
这个单元的赋值就是通过代码实现的,这个过程能解释一下吗
你这么理解是不对的,首先,要对硬件操作,往往需要提供一个指定的地址才行。类似int a;这样的声明,初始化的地址应该在堆栈里面,是“正常的”内存空间里。
要想控制硬件,首先要声明一个指针,指向该地址,比如0x11,然后通过这个指针操作。直接声明变量,这个地址是不能作用到能够控制硬件的空间里面的。
既然不想看泛泛地理论《数字电路基础》,那推荐你找本“从零开始学51单片机”之类的书籍,这样的书籍会讲述软件如何通过寄存器操纵硬件的。要是详细的,比如AD是如何工作的,还得看《数字电路基础》。
之所以会问这样的问题,就是缺少这样的知识,所以我的个人建议是定下心来看书,啃下三本书,一定会胸有成竹。
转载请注明出处51数据库 » 软件是怎样控制硬件的 软件是如何控制硬件的