代碼只是一串字符,為什麼能通過電腦指令機器做出機械動作?

怕出名不敢任性


代碼確實有數字,有字符,但是世界上所有的編程語言,在最後總會變成一串由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設備”後,就可以通過這個設備去操控機械設備了。


分享到:


相關文章: