<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)小白學(xué)步(24) 改版說明與學(xué)習(xí)思想

          單片機(jī)小白學(xué)步(24) 改版說明與學(xué)習(xí)思想

          作者: 時(shí)間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
          從本篇起,《單片機(jī)小白學(xué)步》系列教程將做一個重大的改版。前面的文章暫且就不改動了,之后的文章將會重新編排。主要的改動如下:
          1. 文章全部使用Markdown進(jìn)行編寫排版,格式更加豐富,閱讀起來也會更加輕松。

            本文引用地址:http://www.ex-cimer.com/article/201611/317592.htm
          2. 實(shí)驗(yàn)的工程源碼,將上傳至我的GitHub頁面,可直接下載使用。

            我的GitHub主頁
            https://github.com/jzj1993

          3. 為了方便統(tǒng)一講解,也考慮到開發(fā)板資料可能有版權(quán)問題,本系列教程將和綠豆芽科技合作。大部分實(shí)驗(yàn),將直接使用綠豆芽科技提供的51Start開發(fā)板。如果有這款開發(fā)板,可以直接燒寫配套代碼進(jìn)行實(shí)驗(yàn)。如果沒有,歡迎購買這款開發(fā)板。當(dāng)然也可以通過簡單的修改代碼,在其他開發(fā)板上做實(shí)驗(yàn)。

          4. 部分實(shí)驗(yàn)仍然會使用面包板搭建最小系統(tǒng),或通過Proteus仿真進(jìn)行。

            綠豆芽科技官方淘寶店
            http://douyatech.taobao.com

            西安電子科技大學(xué)的學(xué)生,可直接到新校區(qū)綜合樓西電實(shí)驗(yàn)室,購買配套開發(fā)板。

          5. 每個知識板塊的介紹,大致會通過下面的順序進(jìn)行:

            • 首先對概念進(jìn)行簡單介紹;
            • 通過基本的例程實(shí)驗(yàn),進(jìn)行初步體驗(yàn),加深理解;
            • 深入介紹底層結(jié)構(gòu)和原理;
            • 介紹相關(guān)的編程技巧思想等內(nèi)容,以及更深入的例程實(shí)驗(yàn)。

          學(xué)習(xí)思想

          經(jīng)過反復(fù)的思考,得出了單片機(jī)學(xué)習(xí)的思想,并進(jìn)行了總結(jié)。

          單片機(jī)的學(xué)習(xí)有兩個方向,分別介紹如下。

          1. 關(guān)注上層應(yīng)用實(shí)踐

          這個方向,就是直接考慮實(shí)際應(yīng)用而不是實(shí)現(xiàn)原理。了解了各種通信接口、各種電路模塊等,可將它們進(jìn)行巧妙的組合,從而實(shí)現(xiàn)對我們的生活有用的產(chǎn)品。例如,通過結(jié)合顯示屏、按鍵、單片機(jī),就可以實(shí)現(xiàn)計(jì)算器、秒表、搶答器、游戲機(jī)等各種好玩有趣的東西。

          學(xué)習(xí)這方面的東西,需要有較好的創(chuàng)新能力,善于從生活中尋找靈感。相對來說技術(shù)性會弱一點(diǎn),使用的各種模塊,完全可以采用現(xiàn)成的東西去實(shí)現(xiàn)。

          這個方向有個比較典型的例子,是Arduino平臺,常常被稱為電子積木。硬件方面,各種電路模塊都是做好的,直接通過導(dǎo)線插接就可以使用;軟件方面,各種電路模塊都有現(xiàn)成的模塊化驅(qū)動,直接調(diào)用相應(yīng)的函數(shù)就可以實(shí)現(xiàn)功能。使用Arduino時(shí),往往只需要關(guān)心作品的創(chuàng)意,以及功能邏輯實(shí)現(xiàn),而不需要深入研究具體的技術(shù)。

          2. 深入底層挖掘原理

          這個方向,就是從原理的角度深入理解單片機(jī)。例如寄存器的構(gòu)成,CPU的執(zhí)行方式等。深入一些,包括模擬電路,數(shù)字電路,微機(jī)原理等。甚至利用FPGA可編程邏輯器件,自行設(shè)計(jì)和實(shí)現(xiàn)CPU和單片機(jī)。

          學(xué)習(xí)這方面的東西,需要較多的背景知識,包括模擬電路,數(shù)字電路,微機(jī)原理等,可以通過使用匯編語言進(jìn)行單片機(jī)編程從而加強(qiáng)理解。如果有興趣自行設(shè)計(jì)CPU,還可以學(xué)習(xí)Verilog或VHDL編程。

          3. 總結(jié)

          這里對此做個總結(jié)。

          之前遇到不少人都提了同樣的一個問題:學(xué)單片機(jī)到底要不要學(xué)匯編呢?

          這里我舉一個例子~

          • 假如你想學(xué)會做飯,最簡單直接的方法,是直接購買做好的食材,只要學(xué)會控制火候,學(xué)會如何搭配各種食材和調(diào)料,并掌握必要的烹飪步驟等內(nèi)容就可以了。

          • 有時(shí)候你可能想要做一些比較特別的菜,但是直接買來加工好的食材不能充分滿足要求。這個時(shí)候就需要購買半成品,然后學(xué)會自己去加工了。

          • 如果對食材本身也有了解,例如什么季節(jié)哪些蔬菜會比較常見等,往往能做的更好,還能節(jié)省成本。

          • 如果有特別需要,還可以嘗試自己種植一些蔬菜等~

          學(xué)單片機(jī)也是一樣的。關(guān)注上層應(yīng)用實(shí)踐,相當(dāng)于直接使用現(xiàn)成的食材,去進(jìn)行組合搭配,得到各種有用的東西。而深入底層挖掘原理,相當(dāng)于去深入了解各種食材的特點(diǎn),并能作出更好的選擇。甚至,你還可以考慮自己從底層去實(shí)現(xiàn)一些模塊,實(shí)現(xiàn)想要的效果。


          所以對于“要不要學(xué)習(xí)匯編”這個問題,我的回答是,需要學(xué)習(xí),但是不需要花費(fèi)過多的精力。一開始直接用C語言進(jìn)行單片機(jī)的學(xué)習(xí),有了一定的認(rèn)識之后,再簡單的去學(xué)習(xí)匯編。其目的是,從中了解底層的工作原理,從而能更好的理解一些問題,能更好的應(yīng)對一些特殊情況,更好的駕馭單片機(jī)系統(tǒng)設(shè)計(jì)。而實(shí)際去實(shí)現(xiàn)想要的創(chuàng)意和產(chǎn)品,直接通過模塊化的C編程就可以了。直接用匯編,效率實(shí)在是太低。

          上面說的兩個方向,偏上層方向的學(xué)習(xí),技術(shù)性相對弱化了,更多的是要考慮各種其他方面的問題,包括創(chuàng)意、產(chǎn)品、乃至市場需求等內(nèi)容;而偏底層的原理學(xué)習(xí),技術(shù)難度相對較大。一般情況下,學(xué)習(xí)單片機(jī),需要對各種基本模塊有所了解(食材),對底層的原理最好也有一些理解(食材半成品的加工),然后再學(xué)習(xí)一些上層的模塊化編程思想、模塊之間的組合等(食材的搭配、火控控制等)??梢愿鶕?jù)個人興趣和特長,有選擇的學(xué)習(xí)相關(guān)知識。



          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();