软件程序怎么让硬件工作的?

问一个比较初级的问题
现在的社会很发达,很多东西都实现了自动化。但是我一直没搞懂,软件程序是如何让硬件来工作的?
具体说就是:比如我们编写一个灯泡亮和灭的程序,就需要芯片能输出高低电平来实现。那么我请问,我们编写的软件程序那是一个看不见摸不着的东西,我们用专用的软件把程序编好后,就需要数据线把程序传输到芯片,为什么这么一个过程就能使得硬件按照程序编写的内容进行工作了也?也就是软件和硬件之间有什么样的桥梁或者默契,就像我们在纸上写了几段话,要求实现某个功能,然后就需要交给某个人去执行;发起者和功能实现这之间就有个执行者,或者交翻译者。计算机书上只是这么简单地说“机器语言”这个概念,我很不明白具体是怎么实现这一转变,这一功能的??
希望懂的人排忧解难,谢谢。

软件和硬件的关系,不是简单的谁控制谁的问题,而是相互依存的关系。

如果把软件和硬件作为一个整体的话,用人来做一个对比,可以说清这种关系。

软件基本上就是一些人为定义好的逻辑,它是一种思想,就像人的思想一样,所以CPU是人的大脑,而CPU里写的软件就是人脑中的思想。

我们这里说的硬件是一些CPU以外的各种电路,这些电路连接到CPU。有些电路是用来采集外界的信息,比如温度、湿度、电压、电流、光线、图像、声音、气味等等,将这些信息传递给CPU。而有些电路是接收CPU发出的指令,按不同的电路实现不同的功能。

比如,发出一个关灯的指令,相应电路接收到该指令后实施关灯的动作。

下面用开灯的过程分别用人和软件硬件来作一个对比:

人: 我在家里看书,太阳落山了,天渐渐变黑,我发现看不清字了,这时我想到要去把灯打开,所以我走到开关边上,伸出手按下开关,这时灯亮了,我又可以继续快乐的看书。

软件硬件:我家里有一套电灯控制系统,工作原理是,光线检测电路检测到光线变暗了,它发出一个信号告诉CPU光线已经较暗了,CUP收到该信息后,其软件逻辑为需要把灯打开,所以CPU输出开灯的指令,电灯控制电路接到指令后接通电灯的开关,这时灯亮了。

扩展资料:

软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。

1相关系统分析员和用户初步了解需求,然后列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。

2系统分析员深入了解和分析需求,根据自己的经验和需求做出一份文档系统的功能需求文档。这次的文档会清楚例用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还例出相关的界面和界面功能。

3系统分析员和用户再次确认需求。

4系统分析员根据确认的需求文档所例用的界面和功能需求,用迭代的方式对每个界面或功能做系统的概要设计。

5系统分析员把写好的概要设计文档给程序员,程序员根据所例出的功能一个一个的编写。

6测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能,然后验收。

参考资料:百度百科-软件

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-10-09
知道电灯是怎么开关的吗??
电脑开关机是电灯开关基本上是一样的
区别主要是电脑内部的多条电路被焊接到了电路板上,这基本上与所提的软件控制硬件无关
至于软件控制硬件
软件程序主要是一连串的(0与1)代码,这与三极管的高低电平对应。三极管的电平高低主要是通过开关来完成,即硬件实现

太模糊,控制也有很多层次的,最底层的就是汇编,但是操作很复杂
比较方便的是使用windows提供的api函数

DOS引导阶段
1987年,计算机病毒主要是引导型病毒,具有代表性的是“小球”和“石头”病毒。当时的计算机硬件较少,功能简单,一般需要通过软盘启动后使用.引导型病毒利用软盘的启动原

理工作,它们修改系统启动扇区,在计算机启动时首先取得控制权,减少系统内存,修改磁盘读写中断,影响系统工作效率,在系统存取磁盘时进行传播;
1989年,引导型病毒发展为可以感染硬盘,典型的代表有“石头2”;
DOS可执行阶段
1989年,可执行文件型病毒出现,它们利用DOS系统加载执行文件的机制工作,代表为“耶路撒冷”,“星期天”病毒,病毒代码在系统执行文件时取得控制权,修改DOS中断,在系统调用

时进行传染,并将自己附加在可执行文件中,使文件长度增加。

软件是如何控制硬件的
悬赏分:30 - 解决时间:2007-8-10 20:32
我对程序能够控制硬件进行工作很不理解,问老师也没有满意的回答。希望有高人给我解释一下。

软件中的命令(这些命令是最初编程设计的)最终都要转化为计算机可以识别的机器语言,就是我们通常听说的0101010101,这种长串的机器代码在硬件中反映成电脉冲或电信号,在超

大规模的集成电路中执行逻辑操作或运算(具体的,那就是电路知识了,最基本的原理都非常非常简单,简单的让你吃惊,即通路,断路),最终形成的现在运算速度惊人的计算机.
要理解的很清楚的话那就要求掌握多门学科的基础知识了.

你不理解软件为何能控制硬件,大概是因为你觉得软件是看不见摸不着的东西,如何能够控制硬件这样有形的实体吧。
其实问题很简单,软件在工作的时候也是实体,软件的实质就是电流信号,用电压的高低代表不同是信息,用这些电流信号去控制逻辑电路的通断,靠逻辑电路的通断来控制硬件

的工作。
说到底软件就是起到一个开关信号的作用,开关要工作,必需保证硬件是加电的,没有接通电源的硬件是无法用软件来控制的。就好比没有插上电源的台灯,你怎么按开关都是不

会亮的。
任何软件在运行前都要有一个将其转化为电流信号的实体化过程,你写在纸上的软件代码是永远也不能控制硬件的。早期电脑用人工接线输入程序,相当于用人体的力量将软件代

码实体化为电信号;现在我们用的软盘、硬盘是通过磁头将程序代码转化为电信号,光盘需要通过光头将程序代码转化为电信号等等。

这个问题看似简单,其实涉及到一些很底层的内容和原理。对于一般计算机爱好者来讲,又没有办法说明白,原因就是我们从来没有考虑过电路在物理上的实现。
计算机软件说到底,不过就是一些指导电子元件工作的指令序列,那么你一定又会问电子元件为什么会按这些序列工作呢?指令序列的在电路中的实质就是一些有规律且有一定意

义的电脉冲,电脉冲控制电子元件的各种状态。工作过程非常复杂。最简单最基本的就是几个逻辑门电路的实现:比如“或”电路,“与”电路等等。通过将这些逻辑门电路的组

合和协同,就能实现电脑整体上的运算和处理能力。因为这是十几个数量级的基础电路的有机集合的对外的体现,如奔腾系列CPU集成了上亿个半导体元件,要想把各个元件的功能

彻底认知,是非常困难的。可以把它们比作每个人的活动合在一起就构成了社会

【有单位,有抽象 正如抽象的生活用电网络,可以将一个用电器作为抽象单位,也可以将一个家庭作为抽象单位,一个抽象单位连接入网络,具体的接入方式,抽象单位完全本

身实现,理想情况下每一功能模块即抽闲单位,都有接口,成为网络的一部分,向新的部分提供接口,理想情况下家庭电路有接口模块,可以任意扩展;每一但单元都有进出,任

意个连接组合,总的单位也有进 和 出】

软件可以发送命令
让cpu的某一引脚
发出高低信号
从而控制硬件

新一篇: 我对程序的思考
我也曾遇到过这样的问题,困惑了好长时间。每每到网上看, 都说的不是我想要的问题,或者说是组成原理书上有讲呀什么的。现在我明白了, 是按自己的想法明白 ,希望像我

困惑过的正在困惑的能在这里得到答案,对你有所帮助

软件如何控制硬件呢??(以下仅是我个人理解, 不保证正确, 如果错的希望能得到您的指点。。先谢谢)

大家都知道。没有软件的硬件就是一堆废铁或“砂子”。您也知道cpu中有个叫做译码器的东东吧,您也知道我们写的程序要经过编译呀, 汇编呀,连接呀。最后生成可以被硬件

执行的二进制。可是问题来了,硬件能认识个啥二进制。这里也许是你不懂的地方。其实解释的关键也就在这里了。高低电压。脉冲的有无控制硬件您能够接受吧,而我们写的程

序(软件)其实都是以高低电压,脉冲的有无存储在磁盘上。或者以有无反射的形式存在光盘上。所谓的机器可直接执行的代码, 也就是二进制,译码器能理解。他能理解。cpu

就能理解。cpu按照硬件设置和硬件特性,选择switch(也就是让哪一条导线是通路),以达到控制硬件。(能理解吗, 如果你还有什么疑问留言吧, 针对性解决可能会好点,)

实际上计算机把相当复杂的问题最终都会转化成加法(ALU)来实现,(太神奇了,我还理解不了。但我知 道,呵呵,这样有助于理解。

软件是如何控制硬件的

--------------------------------------------------------------------------------

http://blog.sina.com.cn 2007年10月19日15:25 eyre
标签: 休闲生活

软件在工作的时候也是实体,软件的实质就是电流信号,用电压的高低代表不同是信息,用这些电流信号去控制逻辑电路的通断,靠逻辑电路的通断来控制硬件的工作。
说到底软件就是起到一个开关信号的作用,开关要工作,必需保证硬件是加电的,没有接通电源的硬件是无法用软件来控制的。就好比没有插上电源的台灯,你怎么按开关都是不

会亮的。
任何软件在运行前都要有一个将其转化为电流信号的实体化过程,你写在纸上的软件代码是永远也不能控制硬件的。早期电脑用人工接线输入程序,相当于用人体的力量将软件代

码实体化为电信号;现在我们用的软盘、硬盘是通过磁头将程序代码转化为电信号,光盘需要通过光头将程序代码转化为电信号等等。

这个问题看似简单,其实涉及到一些很底层的内容和原理。对于一般计算机爱好者来讲,又没有办法说明白,原因就是我们从来没有考虑过电路在物理上的实现。
计算机软件说到底,不过就是一些指导电子元件工作的指令序列,那么你一定又会问电子元件为什么会按这些序列工作呢?指令序列的在电路中的实质就是一些有规律且有一定意

义的电脉冲,电脉冲控制电子元件的各种状态。工作过程非常复杂。最简单最基本的就是几个逻辑门电路的实现:比如“或”电路,“与”电路等等。通过将这些逻辑门电路的组

合和协同,就能实现电脑整体上的运算和处理能力。因为这是十几个数量级的基础电路的有机集合的对外的体现,如奔腾系列CPU集成了上亿个半导体元件,要想把各个元件的功能

彻底认知,是非常困难的。可以把它们比作每个人的活动合在一起就构成了社会.

计算机是数字电路,数字电路是靠1,0来控制电路的.起到电流还有脉冲作用.像你键盘上敲个周字一样.同是由一大一串的0001111111111100.来产生脉冲电流对硬件发出指令的.CPU

就是运算这些数据.然后发出机器语言指挥其它硬件工作的.

参考资料:http://hi.baidu.com/bernardme/blog/item/8cf0b13dbd3b64eb3d6d97d9.html

第2个回答  推荐于2017-11-22
我来说吧,简而言之,每个控制芯片都有控制端,而软件就相当于芯片的触发器,我想你关心的就是这个从软到硬的转换过程。
软件最终会变成“0”和“1”,存在电脑里,实际上和寄存器的原理差不多了,当满足某一个条件,这些“0”和“1”就会输出,去触发控制芯片。就可以动作了。
你看到的软件是一串字符,但实际上在电脑里面是输入的信号;就好像你按下开关是一样的,只不过这些开关是组合的,比如说,你把10个开关调整好,这就是编程序;然后给他们同时通电,这就是执行程序。然后就能看到五颜六色的灯泡了。所谓机器语言,就类似导线,它定义了你的这些开关能完成什么功能。当然计算机目前是先有“导线”,然后给你成千上万个开关去组合。
你现在的疑惑是看到开关有的合上了,有的打开了,在想为什么灯泡会亮。本回答被网友采纳
第3个回答  2009-10-10
看到一楼的回答我比较汗颜……
其实简单的说就是你提到的机器语言的问题,通过微电子元件受电子或电流的作用 实现用处
第4个回答  推荐于2016-03-10
计算机的两个主要组成部分是它内部的存储器及处理器。内部存储器被用来存储程序和数据,处理器则是一组电路,用来实现一系列的基本运算或机器指令,如进行算术运算和逻辑运算的指令。在大多数计算机中,有一些指令通常被称为宏指令,实际上这些指令时通过定义更低层次的指令(称为微指令)来实现的。因为微指令从来不在软件中显示,因此无法详尽的表达它的概念。
计算机的机器语言是一套指令。在没有其他支持软件的情况下,机器语言是大多数硬件计算机能够“理解”的唯一语言。理论上,也可以这样来设计和建造一台计算机,即可以使用一种特殊的高级语言作为它的机器语言作为它的机器语言。但这样建造的计算机会十分复杂非常昂贵。此外也会及不灵活,因为很难通过其他的高级语言来使用它。计算机设计中较现实的选择是,在其硬件上实现能够提供普遍需要的基本操作的较低层次的语言,而要求其系统软件生成使用其他高级语言编写程序的接口。
一种语言的实现系统并不是一台计算机上的唯一软件。它还需要一个称为操作系统的大程序集,这个程序集提供高于机器语言层次的基本操作。这些基本操作包括系统资源的管理、输入和输出操作、文件管理系统、程序编辑器,还包括其他各宗普遍需要的功能。因为语言的实现系统需要许多操作系统工具,所以实现系统是于操作系统接口,而不是直接与处理器打交道。
操作系统和语言实现系统被分层放置于计算机的机器语言接口上,可以将这些层次设想为虚拟计算机,这个计算机在高层次上给用户提供使用接口。例如:一个操作系统和一个C程序编译器就是一个虚拟的C计算机。借助于其他编译器,一个计算机能够变成其他类型的虚拟计算机。绝大多数的计算机系统都提供几种不同类型的虚拟计算机。用户程序在这个虚拟计算机的顶端层次上形成另一个层次。可以看下面的图关于编译:实现程序设计语言的方法可以是三种一般方法中的任何一种。一个极端的方面是,可以将程序翻译成能够在计算机上直接运行的机器语言,这种方法称为编译器实现。这种方法的优越性事,一旦完成编译过程,程序执行速度非常快。
相似回答