软件是怎样控制硬件的?

我觉得你是想问,软件是怎么控制一个设备,如机器人、数控机床,让它们执行设定的动作的。不论怎么变化,软件控制硬件,都离不开计算机的中央处理器CPU,或者单片机MPU。因为只有处理器才能把控制软件的指令,传递到接口电路,最终控制目标设备的动作。以下介绍几种我用过的控制方式。通过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等总线接口控制方式。根据需要,灵活运用。

硬件是怎么让软件工作的?

在悟空问答上的348个问题,只写接地气的科技内容,欢迎关注。复杂的讲不来,说点通俗的。先来问一下,你觉得你是怎么让你控制你的身体运动的呢?比如说你的手触摸到碗,被烫了一下,然后你立即将手缩了回来。从这个流程来看,是不是得先有一个外界的输入,也就是触摸的碗是很热的;然后皮肤将这个“热”翻译成感觉信号传递给大脑?大脑再做出相匹配的反应,然后输出给手部的肌肉;肌肉接收到这个信号,做出相对应的反应,把你的手缩回来。

那么我们其实说硬件就是手、大脑这些东西对吧?那么软件是什么呢?是不是其实就是这一系列神经传递的东西啊?实际上,从结果来看,是硬件控制硬件做出的反应,就像你伸手摸碗,最后缩回手臂,便面上改变的只是你的硬件状态;而所谓的软件,只不过是你身体内部神经之间的传递,你是摸不见看不着,但是却真真实实感觉它们好像存在一样。

其实手机电脑也是一样的。我们用户就是碗,键盘和鼠标就是人手,处理器 闪存就是大脑,存储着预先设置好的各种指令供大脑调配,屏幕、音响、摄像头、喇叭这些东西就是最终要做出反应的硬件。都知道处理器计算速度越快,电脑运行起来就越快,这就像是脑子聪明的人和脑子笨的人同时做100道乘法,脑子聪明的人肯定能更快算完(不就是从记忆中匹配出相对应的乘法口诀表)。

电脑处理器也是一样,同时涌入1W条需要处理的指令,每条需要匹配到相对应的指令最终输出给预定的硬件,运算差的处理器需要的时间就越长,用户感觉电脑运行起来比较慢。电脑的输入,是键盘和鼠标,每一个按键,都代表着一个特殊的信号,你敲打键盘,内部的逻辑是给到一个相应的信号,这个信号属于高级语言,计算机并不能直接读懂,因此中间就需要编译器转化为硬件能够读懂的汇编语言,也就是硬件的指令,这种指令其实已经被提前设置好(所谓的下载软件是下载什么东西呢?其实就是这样的一套预先设置好的指令集),也就是输入什么指令,计算机就会从数据库中匹配相应的指令输出(这就是为什么大脑给你传递的信息是松手,你绝对不会握紧,因为这种指令是提前设定好的,松手的指令是松手,握紧的指令是握紧)。

所以说,我们平时所看见的所谓显示屏上显示的“系统”和“软件”,其实本身只是硬件的不同形态而已,就像你此时看见这篇问答的时候,你看见的黑色字体,不过是屏幕像素点调整到了不同亮度组合而成的罢了,哪儿有什么所谓的软件。软件只不过是源源不断在计算机内部传递的电信号,告诉硬件应该以什么样的方式来展现给用户,屏幕的几百万个像素点该怎么亮,喇叭应该怎么震动而已。

软件控制硬件的物理学原理是什么?

硬件驱动的本质其实是电驱动,而软件代码编译之后其实全部是二进制数字——0和1,故要理解软件控制硬件的原理就要理解0和1如何在软件和硬件中运行1.0和1的表示——逻辑电平数字电路中,电压的高低用逻辑电平来表示。例如在TTL门电路中,大于3.5伏的电压规定为逻辑高电平——表示数字1小于0.3伏的电压规定为逻辑低电平——表示数字02.电路的基本元件——晶体管晶体管,主要有二极管跟三极管。

二极管,一种具有两个电极的装置,只允许电流由单一方向流过。三极管,是一种控制电流的半导体器件,作用是把微弱信号放大成幅度值较大的电信号。3.电路的逻辑运算基础——三种几门逻辑门下图为三种基本的逻辑门以及他们对应的晶体管电路图三种门的基本运算称为布尔运算,逻辑与和或门接受两个电平,非门接收一个电平,经过逻辑门后电平变化如下图其他诸如异或门、与非门等复杂门电路由几门电路组成。

例如下图为一个一位加法器。以一位加法器为基础,可以构建八位加法器例如计算2 3为例十进制数在数字电路中先ASCII编码成二进制说00000010和00000011,两者通过八位加法器进行加法运算和进位,最后输出00000101,再ASCII解码成十进制数5,输出。4.指令集芯片便是以加法器等其他指令为基础而构建而成的一个计算处理芯片。

每个芯片所含有的所有逻辑运算统称为指令集。常见的指令集有电脑端使用的Intel的X86指令集,以及手机使用的ARM的ARM指令集,细分类不展开。这些指令集是嵌入在芯片中的5.驱动程序指令集嵌入在芯片中,人是无法调用的,则开发驱动程序,驱动程序的目的是向外给出一个接口,可以供外部其他部件调用本芯片的指令集进行运算处理。

6.软件编程采用高级语言编写各种程序代码,比如java语言、C语言、C 语言等7.程序编译所编写的程序代码通过编译器编译成二进制0和1组成的一段指令,然后这些指令通过与驱动程序匹配,满足匹配条件后将指令传入指令集中进行运算,从而驱动硬件运行,如果还有输出,则再将由0和1的运算结果进行解码(与编码相对于的解码方式,如ASCII Unicode等),结果输出在显示器上,可以查看输出结果。

芯片为什么能控制家用电器?软件为什么能控制硬件?

芯片是家电用电的控制中心,通过件硬结合来实行控制这里的芯片指的是单片机(MCU),是一颗下载了电子工程师编写的控制程序的集成电路。单片机集成了CPU、RAM、ROM、IO、ADC、定时器等等功能,其实就是一个“微型的计算机”,当然它的运算能力是比较弱的。家用电器功能主要是用户按键输入、控制加热(制冷)、开启风扇、声音报警、温度检测、显示界面等等这些功能,本文将通俗的能大家说说芯片是怎么控制家用电器的。

加热怎么控制?加热需要用到发热管,发热管其实就是“电阻丝”,给它通电就会发热对吧?我们可以用一个继电器来控制发热管电源的开和关,如下面电路图,当继电器K1闭合时,发热就会工作,而继电器的闭全和断开则由继电器开关控制信号来控制。当DR为高电平时,三极管Q1导通,继电器K1闭全,发热管就工作了,DR为低电平,但发热管停止工作。

这个电路中的所有电子元件则称之为硬件,控制信号则通过单片机的软件提供。单片机有什么多引脚,最主要是GPIO(普通输入输出),控制继电器的开关,单片机需要输出一个信号对吧?编程时,需要把单片机连接继电器开关控制信号(DR)的引脚设置为输出,程序按照实现功能输出对应的高电平或者低电就可以了。比如温度低时,输出高电平,让发热管加热,温度高时,输出低电平,停止发热管工作,这个控制我们可以称之为软件。

显示怎么实现?显示可以用管码管、液晶管示器对吧?以简单的“8”字管码管为例,它其实由7个LED组成一个“8”的形状再加一个LED作为数码管后面的小数点,只要点亮指定的段画就可以形成一个数字,比如点亮A/B/C/D/G的位置,它就是一个3了,对吧?这些组合在一起的LED会有一个公共引脚,如果公共引脚为LED的负极,则称为共阴,公共引脚为LED的正极,则称为共阳。

当然,驱动这个数码管也需要一个简单的硬件电路,以共阳数码管为例,可以用三极管来控制公共端,A/B/C/D/E/F/G/DP这些段画则单独控制。至于什么时候谁显示什么数字,该点亮哪些段画,同样需要软件来处理,对吧?比如把温度数据在数码管上显示出来。按键输入怎么获取?上面两个实例都是输出的控制,这里说说怎么获取按键输入。

下图是单个按键输入的硬件电路,按键没有按下时,Key Input通过电阻R1与VCC连接,这时候Key Input是高电平,对吧?当按键按下,Key Input就与GND连通了,就变为低电平了,对吧?单片机的程序就可以通过读取Key Input位置的电平为判定按键是否按下了。当然,编程的时候,需要把单片机与按键连接的引脚设置为输入。

总结相信通过上面几个实列,相信大家已经了解到芯片是怎么通过硬件和软件控制家用电器的了。控制加热、显示界面、按键全入只是最基本的功能,实际上我们的电器还可能有电机、蜂鸣器、语言、彩屏显示,甚至联网等功能,但这些通通都可以由芯片(单片机)来实现,当然功能越多,越复杂就需要选择更强大的单片机。就像手机一样,性能越为强悍,它需要的SoC(也可以称之为芯片)就高级。


文章TAG:如何实现软件控制硬件  软件为什么可以控制硬件  如何  实现  软件  
下一篇