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