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