本帖最后由 慢慢思考 于 2018-1-8 20:45 編輯
單片機這東西,它是人設計出來的,而人設計出來的東西,必然是根據人的實際需要來設計,所以,我們可以從“需要”來從頭理解,也就是先從“知道它能做什么”開始學習,然后再學習“怎么讓它做到”,之后如果你有興趣,你可以去學習“它是如何做到的”,猶如汽車,我們知道它能裝著你在路上跑,然后你再學習如何操作這東西在路上跑,至于它為什么能在路上跑,你需不需要知道,那要看你的需要。 比如說流水燈吧,我們知道燈要亮就必須給它加上電即一頭接高電位一頭接低電位,要它滅就必須斷開電(嚴格說是讓兩頭的電位一致),沒有其它方法的。實現它的基本電路,就是燈加開關加電源,一個燈上一個開關,8個燈就接8個開關,然后順序操作各個開關進行開關,讓燈兩端電位一致或不一致。最簡單的操作方法,就是用你的手嘛。 真讓你去做這個事你肯定煩,其實老板也煩,這點小事,付不起工資啊。于是,可以用單片機啊,怎么用?前面說了,除了用開關的辦法來實現流水燈外沒別的辦法,所以,單片機在這里,它就是起個開關以變換電位的作用。 如何實現開關功能?我們知道單片機的引腳是實現各種功能的應用途徑,也就是說要實現這些功能,實際上就是對引腳的應用。 單片機的引腳,其中的電源端、晶振端(也許有也許沒有)那是為其自身能夠工作而設置的,其它的引腳才是應用引腳即稱為端口。其實端口的功能很簡單:輸出、輸入、檢測。簡單解釋就是自身輸出高電位或低電位或者不輸出、接收對方送過來的高電位或低電位或者拒絕接收、檢測自身是處于高電位還是低電位,就這,沒別的,真沒別的。然后我們要知道,通過程序,我們可以控制端口做這些事。 下面我們就清楚了,即然單片機的端口的電位可以高可以低,那么我們可以將8個燈(假設是8個燈)的一頭全部接高電平,而另一頭接單片機的8個端口,在程序中首先將8個端口全部設為高電位,然后將第一個端口在程序中設為低電位——拉高為高電位——將第二個端口設為低電位——拉高為高電位......順序執行下去并循環,流水燈就形成了。當然,你每一步操作之后,要停留一段時間,不然的話,你的眼睛是看不到變化的(太快了之后看不到變化,那是人的問題,不是單片機的問題)。單片機就這么簡單。 前面說了,要讓燈不亮,是要讓其兩頭的電位一樣,所以,你也可以將所有燈的一頭全部接低電平,讓端口輸出高電平亮、低電平滅也行,當然,你硬要混著來那沒人能攔著你,因為這樣也能實現流水燈。 在程序設計時,對于初學者,我的建議是:一個步驟一個步驟地硬寫,這樣你會很快地上手并實現你所想實現的功能,否則,你會因為對編程技巧的不熟練而在編程中消耗很多時間,進而會直接影響你的興趣,比如說流水燈的編程,你要一條一條地逐個端口寫操作程序,等你熟練后再去對程序進行優化。 另外,一定要從自己搭建電路開始,開發板可以買,只是在買時加一個面包板、一些線、數碼管、幾個LED、電阻就行了(最節省的做法,這個可以玩轉LED燈及數碼管和點陣屏,再買一個可調電阻還可以玩1602及12864屏。當然你也可以買更多的東西用于搭建其它類型實驗電路),至于電源及下載則從開發板上的接點引出,包括晶振也可以從開發板上引出。用這些東西搭建電路的目的是快速入門,之后就用開發板上的東西了。 以上知識,足夠你在數碼管、點陣屏上顯示出你想要顯示出來的東西了。同樣的,在編程時,先一條一條地硬編,這樣你就可以很快地將數碼管、點陣屏的顯示玩轉,同時學習編程技巧,然后再從頭設計程序。然后呢?就是學習程序設計語言,領略單片機的內部功能了。 PS:個人認為,學習單片機,首先得能理解其端口的功能并熟練地操作端口,然后再進階。
|