2007年2月我開始了我的
單片機(jī)學(xué)習(xí)歷程。拿到教材那會我特別的激動,以前總聽老師說起單片機(jī)怎么怎么神奇,心里直癢癢。上學(xué)期做過8086的實(shí)驗(yàn),才知道原來芯片可以編程,一塊“死”芯片居然能夠靈活的工作,我很好奇,一有時間就往實(shí)驗(yàn)室跑,想一探其中的奧秘!
大家都知道,單片機(jī)就是單芯片微型計(jì)算機(jī)。在單片機(jī)內(nèi)部集成了CPU、存儲器、I/O等這些計(jì)算機(jī)組成的基本單元。比起8086更簡單,更易操作。只要外接輸入和輸出設(shè)備就可實(shí)現(xiàn)一定的功能。剛開始是學(xué)單片機(jī)的基本結(jié)構(gòu)及尋址方式。由于我微機(jī)學(xué)得不錯,自然很容易上手。不過說真的,剛開始那會,我還真不知道單片機(jī)是怎么用的,程序怎么編譯,怎樣燒到單片機(jī)的ROM里面,對開發(fā)流程憑書上簡單的文字介紹有些模糊。于是我便開始在網(wǎng)上尋找關(guān)于單片機(jī)方面的資料,開始瀏覽各大網(wǎng)站進(jìn)論壇和大蝦們交流。有一次在論壇里看到一篇帖子,名為“40元做一個女孩子喜歡的東西,學(xué)習(xí)泡妞兩不誤”。我覺得有意思,便進(jìn)去看了下,原來是用單片機(jī)做一個點(diǎn)陣顯示屏,能顯示很多漂亮的字。我想,哎呀!我好玩啊,于是我便開始在網(wǎng)上查找相關(guān)方面的資料,想自已做一個。首先,我得學(xué)習(xí)單片機(jī)的開發(fā)流程,得會KEIL軟件。經(jīng)過一番摸索,我組織了班上幾個好學(xué)的同學(xué)一起買了
編程器,和元器件開始動手了。剛開始的時候困難還挺多的,程序老是有錯誤,等程序調(diào)試通過了,硬件這邊又有問題,不過我沒有放棄,出了問題我總是能冷靜下來思考。終于在幾天之后,我的作品出來了,興奮得我一夜沒睡,第二天,便在寢室同學(xué)面前好生的炫耀了一把!
這次制作的成功經(jīng)歷,我收獲不小,使我掌握了單片機(jī)的開發(fā)流程,明白了單片機(jī)的工作過程,在實(shí)際硬件中是怎樣讀取指令,提取數(shù)據(jù)的。也提高了我軟硬件調(diào)試的能力。再加上主任看了我的作品后的一番鼓勵,越發(fā)激起了我的自信心!
接下來的4月,我意外的接到系學(xué)生工作處主管陳老師來電,說我系承辦了院校園文化藝術(shù)節(jié)的“南方擂臺”知識搶答競賽,而學(xué)校又沒有搶答器,要我組織幾個學(xué)生做一個搶答器。我當(dāng)時想,那好啊,做搶答器不難。以前有用與非門做過,于是我便爽快的答應(yīng)了陳老師,并保證沒有問題,保質(zhì)保量完成。當(dāng)是可能是我想得太簡單了,搶答器不就八個按鍵一個數(shù)碼管顯示不就完了么,把最先搶到的組別顯示出來。可是到主任給我們提要求的時候才發(fā)現(xiàn)搶答器要實(shí)現(xiàn)我功能遠(yuǎn)不只這么多,倒計(jì)時、蜂鳴提示、范規(guī)報警、電子計(jì)分器,這些我都沒有考慮進(jìn)來。主任也說了,這是一次院級的比賽,電子系做的東西要拿的出手,要做就做點(diǎn)樣子出來。我想也好,雖有點(diǎn)難度,但符合我喜歡挑戰(zhàn)難度的性格。我說“行”!這個活我做了!
接到任務(wù)開始布屬,我把計(jì)分電路分了出去由其它幾個同學(xué)做,我專攻搶答部分。由于沒有獨(dú)立設(shè)計(jì)電路的經(jīng)驗(yàn),剛開始得一步步慢慢深入,正好我會PROTEUS。軟硬件的調(diào)度都靠它完成,這樣可以省很多的時間。做搶答器,我們花了一個月的時間,沒日沒夜的調(diào)試程序(當(dāng)時單片機(jī)課程還沒學(xué)到定時器中斷,還得一邊自學(xué)。)做PCB板,采購元器件,安裝,調(diào)試,運(yùn)行。那時,他們的計(jì)分電路也做好了,用了16個數(shù)碼管做顯示。我們將計(jì)分和搶答電路板及數(shù)碼管安裝在了事先木制的外殼上,進(jìn)行整體調(diào)試。記得那時正趕上五一放假,而五月8號就是比賽了。我們都沒有休息,將工作間從實(shí)驗(yàn)室搬到了寢室。那段時間雖然辛苦,但很充實(shí),每個人收獲都特別大。
為了讓自己的編程水平能進(jìn)一步提高,我將自己編寫的程序發(fā)到了論壇里與大家共享,并下載網(wǎng)友們的程序進(jìn)行分析。電子鐘程序、液晶密碼鎖程序、跑馬燈程序、大屏幕點(diǎn)陣屏程序、上下位機(jī)通信程序等等,這些我都能熟練的掌握。我認(rèn)為,學(xué)編程讀別人的程序非常重要,每個人都有不同的思維,相同的任務(wù)卻有很多不同的方法,在每個程序里都能找到些經(jīng)典的段子,讓人回味。從中可以學(xué)到很多的方法,并且有些可以直接的引用。一個出色的程序員在編程時,并不是從零開始,而應(yīng)該是先找出類似的例子進(jìn)行分析,參考,看看有沒有值得引用和借鑒的地方,加以修改,為自己所用。實(shí)踐證明,這樣做是對的。從當(dāng)初不知如何著手到現(xiàn)在隨手就能寫個幾百行,短短幾個月,我進(jìn)步還是蠻快的。
做單片機(jī)課設(shè)那會,我?guī)椭税嗌喜簧俚耐瑢W(xué),幫他們調(diào)試過硬件,修改過程序,并為他們解答了一系列的疑惑。當(dāng)同學(xué)們投來羨慕的目光時,我很自豪,這些都是我努力的結(jié)果。當(dāng)然,努力歸努力,方法也很重要。在這里,我總結(jié)一下,與大家共勉:
1、基本功要雜實(shí),要有一定的數(shù)模電基礎(chǔ)。學(xué)單片機(jī)首先要搞清楚它的基本結(jié)構(gòu)和存儲單元的分配。
2、在學(xué)單片機(jī)的過程中,最好自己動手做一個單片機(jī)系統(tǒng)。先找現(xiàn)成的程序,現(xiàn)成的電路圖,做成實(shí)物,并以這個例子為開端,帶著疑問學(xué)習(xí),往往更有目的,更主動。
3、有條件的話先個好的開發(fā)板,便實(shí)驗(yàn)時之用。沒開發(fā)板,PROTEUS軟件仿真也行。
4、多讀有代表性的程序,讀得多了自然就會學(xué)到很多的好方法??少I本單片機(jī)子程序集看看,也可網(wǎng)上下載程序分析。
5、多泡泡單片機(jī)相關(guān)的論壇,與大家多交流交流,單片機(jī)完全可以自學(xué)的。
我覺得以上幾點(diǎn)相當(dāng)重要,因?yàn)樗鼘ξ規(guī)椭艽?,算是將我領(lǐng)進(jìn)了單片機(jī)的大門,以至于我學(xué)起來不那么吃力,沒有感覺到像大家說的那樣的難。我看過很多的程序,也調(diào)試過很多的程序,每一次收獲都不小。我的實(shí)驗(yàn)室就是KEIL和PROTEUS。這使我做實(shí)驗(yàn)很方便。雖是虛擬的,但調(diào)試程序還是可以的,省去了很多的時間提高了效率。最近我在學(xué)CX51,因?yàn)閷W(xué)單片機(jī)掌握C語言是非常重要的,C語言的通用性對學(xué)習(xí)其它類型的單片機(jī)有很大的幫助。今后,我想做嵌入式系統(tǒng)工程師,想學(xué)ARM,想搞操作系統(tǒng)。所以我現(xiàn)在必須打好基礎(chǔ),這樣才能進(jìn)步。
我學(xué)單片機(jī)的一些經(jīng)歷。其實(shí)我并不是很厲害,我懂的也只是一點(diǎn)皮毛,只是曉得單片機(jī)是怎么回事,能編幾個小程序罷了。寫這些我只是想記錄一下我初學(xué)單片機(jī)的經(jīng)歷。同時對于那些想開始學(xué)習(xí)單片機(jī)的朋友們,還是可以有一些值得借鑒的地方。希望大家都能學(xué)好單片機(jī),那些覺得難的學(xué)得吃力的同學(xué)要對自己有信心,要多做多練,這樣才能培養(yǎng)學(xué)習(xí)興趣。只要堅(jiān)持就能如愿,同志們,加油