代码只是一串字符,为什么能通过电脑指令机器做出机械动作?

怕出名不敢任性


代码确实有数字,有字符,但是世界上所有的编程语言,在最后总会变成一串由0,1组成的序列,而0,1对应的电路就是低电平和高电平,有高低电平就有压差,有压差加上导电介质就可以得到电流!



比如发光二极管就是使用高低电平的转换控制发光和关闭的!


比如说要控制一个机器人,无论是转动,移动,主要就是依靠各类电机,最上层的代码可以是JAVA语言,可以是python语言,甚至直接用汇编语言,经过编译,解释最后变成一套诸如011010101010这样的序列,然后在根据这套序列对应的给高低电平,大家都知道电机里面有磁线圈,通电断电能控制电机的转动,还有角度等都可以,这就能控制机器人的转动,前进后退,甚至使用电信号转变为语音,视频信号等!

所以就是高级语言(java,c等)经过编译成为汇编语言,经过解释成机器语言(01序列),然后通过电来控制硬件,这些属于单片机,嵌入式的范畴了!


哎哟JAVA不错哦


代码是由高级语言写的,要通过编译器进行语法词法分析编译成汇编代码,汇编代码是由cpu指令和操作数组成的,它指示cpu执行什么样的操作以及如何载入操作数。汇编器会把汇编文件编译成可执行的二进制代码。CPU可以直接访问内存,但如果想操作外部硬件,也不是但靠cpu就能完成,cpu可以通过驱动程序与外设进行交互,但外设上还是要有MCU的,MCU是微型控制单元,就是嵌入式编程,把固件写好,比如硬盘,CPU发送内存数据到硬盘的寄存器,再发送命令到硬盘的控制寄存器,硬盘的MCU执行操作。系统中的bios就是一块MCU,没有它系统将无法启动。系统中是不存在0和1的,我们只是用这两个数来表示两种不同的状态,在内存中它表示锁存器中是高电平还是零电平,在硬盘中它表示磁性是否反转,在光盘中它表示是凸起还是凹陷。再驱动机械运动中,用这些0和1的组合来决定哪些位置电通了,通多长时间等等,就相当于一个开关的开合状态,只是不是人工控制的。


深入浅出VBA


可能我没有表达清楚。

看了大家的回复,我基本明白,电脑指挥机械、电子等物理设备做出各种动作的最基本的要素是高电平和低电平。通过高低电平的压差控制电流的通与不通和电流的大小,来使物理设备做出对应的动作。而控制高低电平的则是二进制的0和1。

其实我比较好奇的是0和1这两个数字为什么能控制高低电平?二者是如何建立的关联?

比如说吧,我如果想让一个东西动,那我就要推他一把,或是吹了一口气,或者用其他的方法给他施加物理作用,他才能动。如果这个东西有思维,有认知能力,那我需要给他一个命令,比如跟他说句话,比如给他写张纸,比如给他做一个示范,让他明白,我想让他干什么,告诉他需要执行的动作,他才能自己动。

我真正想知道的是,我们写的程序代码到电脑里边,最终变成了二进制的0和1,那高低电平是如何认识这个0和1,并且根据0和1的组合不同做出不同的动作呢?电平又不识数,又没有思维能力,他怎么能读懂0和1,并作出动作呢?0和1又只是一个表象化的数字,又不能推又不能打也不会说话,他是如何让电平认识他的呢?

按照这样一个理解,那是不是如果把0和一变成其他任意两个不同的数字都可以指挥电平呢?因为0和1本来就是人为规定的,既然可以把二进制基础规定成0和1,那是不是也可以规定成其他的数字呢?比如2和3、4和5、7和8?电平又没有大脑,他是如何认识这些数字的?

我想这中间一定有一种方法,或者一种介质,帮助完成了数字这样一个意识性的东西到电平这样一个物理性的东西的转化。

这种方法和介质是什么?这是我最想知道的。


怕出名不敢任性


电脑只是一台计算机而已,所以就电脑本身而言,是不会做什么机械动作的。如果要让它做机械动作,需要为它配置一个辅助设备,或者称为外部设备。

我们知道,很多现代化的工厂都是用电脑来控制的,例如汽车制造厂,要用机器人来进行汽车的组装工作,……等等。这些受电脑控制的机器人,是如何在电脑代码的指挥下变成机械动作的呢? 原来,在这里,需要的辅助设备叫做“过程I/O设备”,该词中的I/O,就是输入输出的意思。

这种设备,就是将二进制的数字代码与模拟电路之间进行转换的设备,也称“模数转换设备”,电脑里的代码是数字,而电压电流这些能控制机械动作的东西,则是模拟量。这个模数转换设备,就是实行数字量和模拟量之间进行转换的设备。通过这样的设备,电脑的命令,就能变成电压和电流的模拟量去控制机械设备,反过来,电压电流这类模拟量,也可以通过这种变换反馈给电脑。 因此,当在电脑上添加了“过程I/O设备”后,就可以通过这个设备去操控机械设备了。


分享到:


相關文章: