如果要說做單片機很難嗎?任何芯片包括51或者ARM其實都不難,最基本的原理用3句話就可以明白:
第1句話:一個芯片管腳要么是輸入,要么是輸出.
所有的程序,用單片機控制的產品,以及外設,無非就是控制芯片的各個管腳輸入或者輸出兩個狀態;例如,芯片發送數據就是輸出,芯片驅動一個產品,也是輸出,芯片接收數據就輸入,單片機對一個存儲芯片寫輸入,可以理解為單片機與存儲芯片連接的管腳輸出狀態,輸出數據到存儲芯片的管腳上,而存儲芯片此時它的芯片對應管腳被配置成輸入,將數據寫入芯片內部.所以說,芯片管腳不是輸入,就是輸出,當然,如果你不使用這個管腳,也可以將它配置成某一種中間
狀態,免得干擾了外界,影響了PCB板上的其它元器件狀態.
第2句話:芯片管腳不是高電平,就是低電平.
芯片管腳不是高電平就是低電平兩種狀態,當然也有第三種,既不高電平也不是低電平的狀態,這樣的管腳狀態表示沒有任何內容和數據;無論管腳是輸入還是輸出,它的目的都是傳輸數據\傳輸信息,所以管腳的高電平我們將它表示為"1",低電平表示為"0",通過0和1這樣的數據來傳輸它想傳輸的內容,這個就是所謂的二進制.
例如:假如復位芯片管腳是低電平進行復位,我們將該管腳一直拉為高電平"1"的時候,芯片可以正常工作,如果將管腳拉低至低電平"0"的時候,芯片通過檢測這個管腳狀態為低電平,芯片內部就會自動進行復位;我們通過控制這個管腳拉高和拉低,從而就可以達到控制芯片的工作;其它的管腳也是同樣的道理.
第3句話:傳輸協議
什么是傳輸協議,比如與串口芯片通信,那么就要是串口協議的;如果是I2C協議的EERPOM,那么就是I2C協議;還有其它一些比如:485協議,USB協議,CAN協議,SD卡的SDIO協議...等等數不勝數.
而這些協議,無非就是按照預先規定的表達方式進行通信.比如舉個例子,我約定先連續發4個1,然后再發4個0,就表示芯片A要開始發數據給芯片B了,即芯片A通過它的芯片管腳發"11110000"給到芯片B的時候,那么芯片B就知道芯片A要給它真正的數據,它就要做好準備工作,準備好之后,芯片B就會給芯片A一個回應,當芯片A收到芯片B的回應,就正式開始發數據.
這樣通信雙方之間的協商規定,就構成了協議,經過這么多年,就形成了我們所常見到的串口協議,CAN協議,USB協議(像USB協議又分為USB1.0協議,USB2.0協議,USB3.0協議,版本越高,速度就越快,協議進行優化后,通信效率也變高子).
所以總結下來,一個芯片最簡單的外設莫過于I/O口的高低電平控制,只要掌握了I/O管腳的輸入和輸出,高電平與低電平控制,再理解傳輸的協議,就基本算是掌握了單片機的本質了,在這里下面詳細講解一下如何用一個I/O口控制一個LED的燈滅,由最基礎的例程入門吧.
|