如何快速學(xué)習(xí)單片機(jī)?
說到硬件操控,有幸學(xué)過初中物理的大神們應(yīng)該都知道:硬件操控的本質(zhì)是電子器件兩端接上符合規(guī)范的高低電壓,造成電子流動(dòng)然后電子器件進(jìn)行工作。
但是,在實(shí)際開發(fā)中,一般會(huì)使用一段封裝好的代碼,例如安卓控制閃光燈打開:
這種封裝好的代碼固然簡(jiǎn)單方便,但是總是沒有利用電流操控底層的快感。而我對(duì)單片機(jī)的理解是: 單片機(jī)通過CPU邏輯運(yùn)算+IO端口控制電流來控制電子器件的開關(guān) 。
那么單片機(jī)開發(fā)到底是什么呢?它怎么控制電流繼而運(yùn)行起電子元件呢?首先我們來看一個(gè)簡(jiǎn)單的例子。下面是一組八個(gè)LED燈的電路原理圖:
大家可以考慮一下壓抑住自己關(guān)掉頁面的沖動(dòng),其實(shí)電路圖很簡(jiǎn)單,經(jīng)我一講會(huì)更簡(jiǎn)單。我們先忽視上方的動(dòng)態(tài)數(shù)碼管,只需仔細(xì)瀏覽紅色方框中的電路圖,其中D11-D18是八個(gè)LED燈,并且負(fù)極默認(rèn)接地(GND)。那么只要在LED燈左側(cè)加上高電壓,理論上我們就能讓LED發(fā)亮,并且我們看到,LED左側(cè)的引線通過好多亂七八糟的電路,最后落到J12上。電路對(duì)應(yīng)實(shí)物圖如下:
可以看到,J12是一排引腳,或者說是一排導(dǎo)電的金屬針,那往后的事情就簡(jiǎn)單了呀,通過J12想辦法接進(jìn)正電壓,我們就能“手動(dòng)”讓硬件點(diǎn)亮了。
想什么辦法來接入高電壓呢?你是否已經(jīng)迫不及待地找向身邊的插線板?唔…我們不這么玩兒,這么簡(jiǎn)單粗暴的“手動(dòng)”和藍(lán)翔的課程還有什么區(qū)別?為了稍稍高端一些,我們來試著看一下承載著單片機(jī)的MCU板塊吧,其原理圖如下:
實(shí)物圖如下:
其中,40接入了VCC(正極),各種PX.X和PXX一一對(duì)應(yīng)起來。事實(shí)上,我們把這些PXX叫IO端口,用一個(gè)簡(jiǎn)單粗暴的解釋:這些端口能通過CPU邏輯發(fā)出或接收高電壓或低電壓。
相信聰明的看官們已經(jīng)迫不接待把手伸過屏幕開搞了,沒錯(cuò),我們應(yīng)該把單片機(jī)的輸出端口和剛才LED的輸入端口串聯(lián)在一起,然后輸出高電壓,我們就能通過寫寫代碼把LED完美地點(diǎn)亮了。接線如下(代表IO端口P0的JP10接到代表LED輸入的J12):
編程如下:
其中,0xff等價(jià)于11111111,也就是八個(gè)高電平。寫入單片機(jī)后,結(jié)合默認(rèn)的八個(gè)LED負(fù)極已經(jīng)全部接地,效果如下:
我們可以看到,八個(gè)LED全亮。
所以總結(jié)起來,單片機(jī)開發(fā),就是:分析電路板原理圖,想辦法編程或接線使電子器件兩端產(chǎn)生電壓差,將所編程序?qū)懭雴纹瑱C(jī),實(shí)驗(yàn)失敗檢查接線代碼或坐等控制硬件的快感油然而生。