單片機(jī)大俠是怎么樣煉成的
近來在論壇總是見到一些菜鳥們?cè)诖蠼校?ldquo;我想學(xué)單片機(jī)”,“我要學(xué)單片機(jī)”,“如何入門???”,“你們?cè)趺催@么厲害,是怎樣學(xué)的??”等等等等一系列的問題,實(shí)在是看多了也感到煩了,今天,就由我電子白菜厚著面皮,頂著無數(shù)老蝦的磚頭,在這里寫上一篇單片機(jī)學(xué)習(xí)心得,讓菜鳥們勇敢地跨出第一步。
首先解釋什么是蝦米先,以我個(gè)人意見吧,1。來單片機(jī)論壇的時(shí)候能夠看懂大多數(shù)家伙在說什么,(當(dāng)然不是看懂他們?cè)诠嗨奶永玻┎⑶夷苓m當(dāng)?shù)靥岢鰡栴}(非弱智的問題)和討論,解答別人的問題。 2。當(dāng)希望自己用單片機(jī)開發(fā)一個(gè)東東,或公司要求開發(fā)一個(gè)方案的時(shí)候,能夠很快地在心中建立一個(gè)基本模型,知道應(yīng)該需要些什么知識(shí),而自己又掌握多少,并根據(jù)一定的靈感開始搜索資料。就是以上這2點(diǎn)了,如果你滿足了,基本下面的東西你就當(dāng)作是故事來讀就可以了。
然后是心態(tài)問題,不久前看到有人這么問:“我想學(xué)單片機(jī)啊,因?yàn)槁犝f很有錢途,請(qǐng)問學(xué)那種單片機(jī)最有錢途??”這個(gè)問題,我看到了就覺得反感,可以這么說,在這個(gè)壇子混的單片機(jī)大蝦只有兩種:第一是一直從事單片機(jī)類工作的;第二是愛好者,愛好者包括從事單片機(jī)工作的和非單片機(jī)工作的。的確,單片機(jī)是有一定的錢途,但對(duì)于那些本來不是從事單片機(jī)工作的,而又沒有興趣的,單從錢的角度出發(fā)的家伙,想學(xué)好單片機(jī)??恐怕是做白日夢(mèng)。我個(gè)人認(rèn)為,技術(shù),是興趣、生活需要、和個(gè)人目標(biāo)的結(jié)合。而不是單單的向錢看!要知道,當(dāng)一個(gè)相當(dāng)艱難的項(xiàng)目完成的時(shí)候,開發(fā)者那種手舞足動(dòng)的興奮,不是完全來自于項(xiàng)目提成的獎(jiǎng)金!所以煉蝦米的第一要素是:愛好!!以上是我認(rèn)為學(xué)單片機(jī)應(yīng)該具備的技術(shù)心態(tài)。
然后該說到單片機(jī)的學(xué)習(xí)上了,很多人抱怨自己學(xué)校沒有單片機(jī)課上,所以自己不會(huì)單片機(jī)。其實(shí)并不然,以我為例,我以前在學(xué)校的確有單片機(jī)的課上,不過直到上完一個(gè)學(xué)期的單片機(jī),我還是不知道自己在學(xué)什么?。】荚嚨臅r(shí)候老師預(yù)先公布資料和答案了,考試的時(shí)候我們就抄上去就是了,結(jié)果,到考完試的一刻,我突然有點(diǎn)領(lǐng)悟:“我知道什么是中斷啦”。。。。是的,一個(gè)學(xué)期的單片機(jī),我就知道了這么多了。后來?后來是完全的自學(xué),自己研究走出來的,如果*學(xué)校那點(diǎn)所謂單片機(jī),我早撿破爛去了!!所以對(duì)于我們這類非名校的學(xué)生哥而言,技術(shù)離不開自學(xué)。
第一章:偶然
這篇文章叫蝦米是怎樣煉成的,而不是什么單片機(jī)速成,所以我是在寫故事,而不是在寫教材。
我單片機(jī)起步于2002年10月1號(hào),這個(gè)是個(gè)重要的日子。但注意,我在2002年9月的時(shí)候有了自己第一臺(tái)燒寫器和簡(jiǎn)單的實(shí)驗(yàn)板,但那時(shí)候不叫起步,因?yàn)槲野堰@東西買回來了,還根本不怎么會(huì)用。
為什么我記得是2002年10月1號(hào)?而沒有記錯(cuò)為10月2號(hào)?呵呵。。。
2002年國(guó)慶前幾天,學(xué)校開始舉辦電子設(shè)計(jì)競(jìng)賽了,因?yàn)閷W(xué)校每次舉辦比賽,經(jīng)費(fèi)都是問題,所以這個(gè)什么電子競(jìng)賽根本不會(huì)隆重宣布,其實(shí)我當(dāng)時(shí)還不知道的呢。直到有個(gè)同學(xué)偶然跟我提起,學(xué)校有比賽啊,你有打算參加嗎?我當(dāng)時(shí)不知道發(fā)了什么瘋,就說,好啊,我參加!這樣,一個(gè)單片機(jī),甚至是電子白癡的命運(yùn)就改變了。。。
然后就是出方案啦,我也不知道什么時(shí)候發(fā)夢(mèng)夢(mèng)見個(gè)什么古怪產(chǎn)品之類的,總之我就提出了一個(gè)用PC無線控制設(shè)備的方案。PC端用VC寫的串口程序,傳到單片機(jī)上,然后單片機(jī)啟動(dòng)無線發(fā)射模塊,遠(yuǎn)程設(shè)備接收到信號(hào)后,由另一個(gè)單片機(jī)負(fù)責(zé)處理,控制一個(gè)16*2LCD和4個(gè)LED燈。
對(duì)于當(dāng)時(shí)的我來說,難度真的很大的,因?yàn)槲也粫?huì)VC,不會(huì)單片機(jī),不會(huì)LCD,無線發(fā)射模塊我是買了一對(duì),但沒用過。也就是說,白手起家!!
但我還是決定做,不然很沒面子。于是和2個(gè)MM組合起來,成為3人組報(bào)名學(xué)校的設(shè)計(jì)大賽了。
和MM組有個(gè)原因,1。方案是我提出的,我希望自己能夠獨(dú)立完成 2。組男生的話可能會(huì)在設(shè)計(jì)上有爭(zhēng)議等的,隨時(shí)破壞計(jì)劃,還是MM聽話點(diǎn)。。。。其實(shí)在最后,這兩位MM的表現(xiàn)完全是出于我意料,他們實(shí)在是強(qiáng)?。『芏鄦栴}都是他們幫忙解決的呢。
第二章:奮斗的開始
可能這篇故事寫的不是很生動(dòng),也沒什么趣味,有些朋友們或許看到一半就溜了,,但我依然希望能有人愿意看下去。。。也希望能讓一些還沒進(jìn)門的菜鳥有所感悟。
和MM們組隊(duì)后,‘工程’就要開始了,題目是“計(jì)算機(jī)遠(yuǎn)程控制系統(tǒng)”(呵呵,很牛的名字吧:),但由于我的方案相對(duì)于當(dāng)時(shí)我們的實(shí)力來說是超前不少的,所以和MM們有個(gè)協(xié)議,因?yàn)槲覀兌疾粫?huì)VC串口編程(VC也不會(huì)),所以VC部分我必須負(fù)責(zé)全部并在最短時(shí)間內(nèi)完成,不然整過計(jì)劃就不用再做了?;貞?yīng)第一章所說的,為什么我記得是2002年10月1號(hào)?因?yàn)槲沂窃谀翘炱鸫粼诩依镎?天,干什么?研究VC?。。?!這是我到現(xiàn)在為止,第一個(gè)沒有去玩的國(guó)慶節(jié)。從早到晚,除了睡覺,吃飯上廁所,就是屁股不離座,眼不離電腦?。∧阏f,我會(huì)忘記嗎??
當(dāng)時(shí)做了一條串口線把電腦的兩個(gè)串口連起來,然后串口1發(fā)給串口2,一邊是用我的程序,另外一邊是用串口調(diào)試軟件。還有手上的幾本VC書,就這樣寫出我的第一個(gè)VC程序出來。還記得當(dāng)時(shí)成功發(fā)送的第一個(gè)字節(jié)是’r’!!到現(xiàn)在我還記得很清楚,當(dāng)時(shí)真是開心死了,還馬上把串口線和程序帶回學(xué)校(我是走讀生)給MM看,并正式宣布我們的項(xiàng)目開始。這國(guó)慶7天假期個(gè)中的困難和痛苦我就不想說了,只知道那是我技術(shù)之路的第一個(gè)起點(diǎn)。
人家都說VC難入門,是的,真的很難啊,不過你要知道VC存在并為這么多程序員所用,自然有他的道理,只要愿意堅(jiān)持,困難是能夠克服的,而且,你并不是第一個(gè)面對(duì)他的人,所以沒有任何道理退縮??吹絼e的大蝦能夠成功,那自己為什么不行呢?所以煉蝦米的第二要素是:堅(jiān)持??!
第三章:嘗試成功
在VC寫的串口程序成功后,我們的計(jì)算機(jī)遠(yuǎn)程控制系統(tǒng)就要開始了。其實(shí),當(dāng)時(shí)的VC程序只能發(fā)數(shù)據(jù),并不能收,因?yàn)槭盏脑捜绻?strong>mscomm要利用消息,如果是API的話要用線程,上面兩個(gè)我當(dāng)時(shí)都不懂,不過沒問題,我的題目是遠(yuǎn)程控制,沒有說是遠(yuǎn)程監(jiān)控,所以單發(fā)就夠用了,:)。剩下的就是單片機(jī)接收串口數(shù)據(jù),然后控制射頻模塊發(fā)射,接收端就是模塊接收后的單片機(jī)處理,例如亮LED和控制16*2LCD。
那時(shí)侯如何分配51的IO腳也弄了個(gè)半天呢,最后和2個(gè)MM協(xié)調(diào)好后,用了張A3紙畫了兩個(gè)大大的51,然后那個(gè)腳做什么,哪個(gè)腳接LED,那個(gè)腳接16*2LCD,那個(gè)腳按鍵。。。呵呵,是夸張了點(diǎn),但當(dāng)時(shí)還是菜鳥階段啊~~~~
弄好管腳分配了,就做板子,別以為我很有錢,做工業(yè)板,我是拿萬能板飛線做的,當(dāng)時(shí)焊?jìng)€(gè)MAX232也焊了半天,勉強(qiáng)焊好了個(gè)有串口的最小系統(tǒng)了,發(fā)射模塊都還沒焊上呢。但這時(shí)候要分工合作利用時(shí)間,于是開始寫程序了,基本上是邊看書本邊寫程序,半猜半寫。用的是匯編。那時(shí)侯沒有這里的家伙這么幸福,300元就能買個(gè)老丁的仿真器來調(diào)試程序,我用的是最納悶的方法:N片51侍侯,130元的便宜燒寫器寫程序,編譯通過,燒一片,插上板,上電?。〕鍪裁磫栴}?拔下,猜猜原因后改程序,再燒再插拔。(當(dāng)時(shí)沒有S51的,其實(shí)那時(shí)侯有我也不會(huì)用ISP的),于是就是這樣調(diào)試程序的了,其中多繁瑣可能沒多少人明白,因?yàn)槟銈冑I了個(gè)仿真器就插到上面去了,到程序完成了才拔掉。
直到整個(gè)項(xiàng)目完成為止,我有一片51燒壞了,估計(jì)是壽命到達(dá)終點(diǎn)了,1000次的壽命,代表我至少就這樣插拔了1000次單片機(jī)。真不知道是什么滋味了。
總之當(dāng)時(shí)就是這樣天天寫,晚晚寫,還得和MM逃課了一個(gè)星期,終于搞定,發(fā)射距離是30M左右啦。20M內(nèi)接收完全沒有錯(cuò)誤。還能在PC上按鍵,然后字母發(fā)射到遠(yuǎn)處的16*8LCD顯示出來。(其實(shí)現(xiàn)在還想不通這么簡(jiǎn)單的東西當(dāng)時(shí)居然要花一個(gè)多月呢,如果是現(xiàn)在,估計(jì)單片機(jī)程序我是一小時(shí)就出來了)
電子大賽結(jié)束,我的MM組合贏得學(xué)校的一等獎(jiǎng)(林中無老虎,菜鳥稱大王咯:),后來這東東改進(jìn)一下就趕著參加了廣東省的挑戰(zhàn)杯了,蒙混騙了個(gè)3等獎(jiǎng)。
第四章:真正的開始
比賽是有兩個(gè)一等獎(jiǎng)的,還有一個(gè)是我們鄰班的家伙,他當(dāng)時(shí)比我牛多了,做的是串口的電子閱讀器,把文章從PC下載他的閱讀器上就能閱讀了,中文的哦:),其實(shí)他當(dāng)時(shí)就已經(jīng)會(huì)VC的DIRECTX編程了,還喜歡用VC來寫游戲,比我牛多了。之后的大學(xué)單片機(jī)生涯我都是在和他比拼中度過的,這樣進(jìn)步當(dāng)然就快啦?,F(xiàn)在這個(gè)家伙和我住在一起了,呵呵,不過他向驅(qū)動(dòng)程序的路走,我向嵌入式發(fā)展,此為后話。
自從有了第一次嘗試成功,我就開始沉迷起來了,特別在放假的時(shí)候,更是全情投入,我戒掉電腦游戲也是從那時(shí)侯開始的,現(xiàn)在有多少大學(xué)生敢說他不玩游戲??我看沒多少吧?其實(shí)現(xiàn)在想來,玩游戲真的浪費(fèi)了我很多的生命啊。。回頭看一看,游戲在你的回憶中并沒有多少殘留,也就是不值得去回憶,那我們弄來還有什么用?所以我從不玩游戲。
說回來,我開始沉迷在單片機(jī)的研究中,也經(jīng)常省下點(diǎn)錢上落廣州購(gòu)買點(diǎn)芯片等東西,開始還是自己用萬能板焊電路板的,玩玩鍵盤掃描,做做動(dòng)態(tài)顯示8段管等的。后來買了塊128*64的LCD,學(xué)人家搞起漢字顯示來了,好象搞了一個(gè)多星期才能輸出個(gè)漢字,呵呵,夠笨吧?后來還做了很多小實(shí)驗(yàn),其實(shí)都是自己焊的萬能板的。之后從老師中得知有種感光板,于是就撲上廣州買了幾塊回來弄,第一次弄就失敗了2塊,合共18大元,我狂倒中(2002年12月左右吧)~~后來積累經(jīng)驗(yàn)后,就成功了,之后越做越漂亮:)單面的工藝已經(jīng)比美工業(yè)板,現(xiàn)在能做到0.25MM的線寬和0.3MM的線距,能夠完成大部分的實(shí)驗(yàn)需要了。
其實(shí)那時(shí)侯大學(xué)階段做的小實(shí)驗(yàn)還是圍繞著一些自己的愿望,也就是算創(chuàng)作了,例如做個(gè)計(jì)數(shù)器,做個(gè)電子種;有的是網(wǎng)上看到別人做出來了,自己又想做。不過想做的太多,時(shí)間卻太少,那時(shí)候還是處于剛進(jìn)門什么都想學(xué)的階段。但不管時(shí)間夠不夠,做的多少得多少嘛,結(jié)果現(xiàn)在家里就一大堆東西了,呵呵。
后來學(xué)會(huì)了上論壇問人了,取名字的時(shí)候我想想,我是個(gè)電子白癡呢,就取個(gè)菜點(diǎn)的名字吧,叫白癡不是很好,于是就叫白菜了,于是我就叫電子白菜,其實(shí)就是電子白癡的意思:)那年是2003年的新年。
有了論壇的幫助,我感覺進(jìn)步的更快了,好多問題都有人指點(diǎn),開始發(fā)的問題還直被人罵菜,后來慢慢地積累帖子數(shù)百,偶然也就能罵罵別人菜,呵呵,不過論壇是要上,自己的實(shí)驗(yàn)也得做,我覺得在開始階段,很多東西都要親身經(jīng)歷過才能積累經(jīng)驗(yàn)的,單看書上說的是一回事,自己做起來又是另外一回事。在實(shí)踐中,我學(xué)到的絕對(duì)不止是實(shí)驗(yàn)中的一個(gè)程序,更加地我學(xué)會(huì)了如何去解決問題和如何利用實(shí)驗(yàn)成果進(jìn)入下一個(gè)更復(fù)雜的實(shí)驗(yàn)中。
第五章 狂熱
2003年開始,大學(xué)的課程基本完結(jié),但還沒畢業(yè)^0^,我是2003年7月畢業(yè)的,那么這7個(gè)月就是假期,對(duì)的,是7個(gè)月的假期,基本除了做畢業(yè)設(shè)計(jì)外是沒什么事情做的。我覺得這個(gè)正是我第一個(gè)飛躍的階段。話說回來,我們的同學(xué)們啊,真是難得有這7個(gè)月假期了,瘋狂的在游戲,電影和睡覺吃飯中度過,直到后來快要把全天下的電影看光了,百般無聊下,
開始看那些有著10年歷史的外國(guó)肥皂?。ㄖ形恼Z音),那么這7個(gè)月他們是白過的了,還連電費(fèi)都虧下了??!
當(dāng)然,我也很快樂地玩了不少時(shí)間,這7個(gè)月當(dāng)中,我基本把技術(shù)和娛樂1比1地分配下去了,折算一下我也算下了3個(gè)半月去鉆研了。其實(shí)現(xiàn)在回想一下還是覺得當(dāng)時(shí)應(yīng)該把更多的時(shí)間下在技術(shù)研究上,這樣的話我現(xiàn)在的技術(shù)應(yīng)該會(huì)更好一些。因?yàn)楣ぷ骱笞约貉芯康臅r(shí)間就少很多了嘛。。。
說到我這7個(gè)月,學(xué)會(huì)的東西還真不少,主要是不玩游戲啊,就省下了很多很多時(shí)間了。我在不做實(shí)驗(yàn)的時(shí)候,基本時(shí)間都花在網(wǎng)上,找找資料,看看技術(shù)類的東西,從網(wǎng)上我得到了很多新信息,包括很多單片機(jī)的應(yīng)用,重要的是這些應(yīng)用遠(yuǎn)超越我自己做的那些小試驗(yàn),小電路板。另一個(gè)方面,應(yīng)用思維也很重要,實(shí)際的產(chǎn)品跟我們學(xué)生比賽弄的東西不同,他要求的是穩(wěn)定,實(shí)際和可行。舉個(gè)例子:學(xué)生們參加比賽都做過什么紅外線水龍頭的東西吧?他們做出來的那東東,紅外線不怎么經(jīng)過調(diào)制和編碼就射了,接收端當(dāng)然是抗干能力擾差啦,如果用在實(shí)際上,豈不是水龍頭一天自動(dòng)放水幾次??就算一天自動(dòng)放水一次而已,這個(gè)東西都是賣不出的了。另一方面,他們總覺得電費(fèi)不是錢,紅外線是源源不斷地放,接收端是不停地檢測(cè),單片機(jī)經(jīng)常缺乏睡眠。。。再舉個(gè)例子,溫度控制,這個(gè)東西估計(jì)大學(xué)生的比賽中是常出現(xiàn)的題目了,他們總是有著這樣一個(gè)概念:你調(diào)100度,那么我的發(fā)熱管就一直加熱,直到AD檢測(cè)到100度了,就停,然后當(dāng)溫度降低到99度,又開始加溫。同學(xué)們,看上去很正常吧??但我不妨跟你說,這樣的東西是根本不能用的,如果用在工控上(一般要求精度為1~2度)是必然闖禍的東西?。槭裁??因?yàn)閷W(xué)生們都認(rèn)為到了100度的時(shí)候就關(guān)發(fā)熱管,那么他溫度就應(yīng)該只有下降沒有上升的理由是不?但實(shí)際中,關(guān)掉發(fā)熱設(shè)備后,發(fā)熱絲還是火紅火紅的,溫度是以一個(gè)曲線形式繼續(xù)上升的,所以你到100度才關(guān),到頭來實(shí)際溫度是到110或更高才會(huì)開始下降的。同理,溫度下降后的加熱上升也有這個(gè)問題。關(guān)于這類溫度控制的算法,是有一門專門的PID學(xué)問的。大家可以在網(wǎng)上多搜索資料。
說回正題,由于在上網(wǎng)中得到了不少啟發(fā),我就開始慢慢脫離那些C程序量還不到300行的小實(shí)驗(yàn)了,也就是說,不再點(diǎn)跑馬燈,鍵盤,LED等的東西了。我開始想寫大點(diǎn)的程序,但想歸想,可是沒有什么題材啊,于是就想不如嘗試做個(gè)主板的BIOS燒寫器如何?其實(shí)BIOS燒寫器就只是一個(gè)簡(jiǎn)單的PC下載BIN或HEX程序到FLASH上的東西而已。如果這個(gè)東西能做出來,倒不如再加上一個(gè)128*64的LCD上去(之前剛能弄的他顯示漢字),再加個(gè)鍵盤(早就會(huì)了,掃描程序是抄回來的:),做個(gè)類似PDA的東西,有時(shí)間顯示(當(dāng)時(shí)剛弄通了1302),有中文顯示,還要有中文閱讀器的(因?yàn)槟俏慌笥炎鲞^的,我不會(huì),當(dāng)然就想做出來啦)。于是就這樣,心中就有了一大堆的想法了,慢慢就把這個(gè)模型拼了出來:要有一個(gè)單片機(jī),一片F(xiàn)LASH,一片RAM,一個(gè)串口,LCD,鍵盤,還有時(shí)鐘芯片,就這么多??!
(呵呵,說著好象有點(diǎn)象丁丁在賣的實(shí)驗(yàn)板了:)
不過很可惜,到現(xiàn)在我還是沒有把這個(gè)東西完全做出來(倒是給老丁先下了手:),只自己做了塊有FLASH,RAM,串口的板子,也就是先完成了燒寫B(tài)IOS的部分了,而且這個(gè)東西還是很后期才做出來的,為什么?因?yàn)楫?dāng)時(shí)有更重要的事情吸引了我。。。
第六章 升級(jí)
當(dāng)時(shí)在論壇上,網(wǎng)上看到有人做USB接口的,覺得很牛啊,于是自己也想做,但一直就是沒資料,也不知道如何學(xué)。這時(shí)候好象又回到了當(dāng)初認(rèn)識(shí)單片機(jī)的時(shí)候,好象一切都很新鮮,全部都不懂一樣。感到無從下手。2003年一月,是我大學(xué)4年級(jí)第一學(xué)期末,我們開始要畢業(yè)設(shè)計(jì)選題了,當(dāng)時(shí)有兩個(gè)最難的題目USB接口設(shè)計(jì)和藍(lán)牙協(xié)議通信(我的是普通學(xué)校,這樣的題目已經(jīng)是最難的了,嗚。。)我選了USB題目(順便提一下,鄰班的那家伙,就是我現(xiàn)在的室友,選了藍(lán)牙的)。其實(shí)我選USB的時(shí)候?qū)SB還是完全沒有了解的,有時(shí)候想當(dāng)時(shí)真的是勇字當(dāng)胸了,因?yàn)樽霾怀鰜砗芸赡墚厴I(yè)不了的。但有時(shí)候一些技術(shù)的研究當(dāng)成為了壓力和任務(wù)的時(shí)候,進(jìn)步反而快。
于是,我的USB就是這樣起步的了。。。
有了任務(wù)在身,就不象以前那么地邊玩邊實(shí)驗(yàn)了,我放下了很多打算,開始專心研究起USB來,說是專心,但什么底子都沒有。做個(gè)P呢!
開始是上驅(qū)動(dòng)開發(fā)網(wǎng)的USB專欄的,但一看就傻了眼,哪里除了牛B的蝦,就是菜鳥一群,帖子要么看不懂,看懂的都對(duì)我沒有幫助。不過上那里我也獲得了信息,就是用D12做USB比較普遍,于是設(shè)計(jì)就定位在D12了。正好這個(gè)時(shí)候周立功哪里出了本USB D12編程的書,雖然我對(duì)周X沒有什么好感,但無論那本書是不是真正是他公司出的,在當(dāng)時(shí)的環(huán)境下,這本書對(duì)于我是有著劃時(shí)代的意義的(夸張了),當(dāng)時(shí)是馬上到廣州買的,要價(jià)35元,還是爛紙油印版,不過學(xué)懂了就不說虧了;再要一片D12,20元;之后再買本USB協(xié)議的書,再?gòu)木W(wǎng)上下了USB的相關(guān)東西,好了,就這么多,2本書,一個(gè)芯片,放下我的實(shí)驗(yàn)和一點(diǎn)點(diǎn)的激情和幻想,靜下心來,我開始了閉門造車。那時(shí)候是2003年的農(nóng)歷新年啊,我的快樂的新年,基本就在閉門中度過,幸好還有拜年,討了點(diǎn)紅包,不然真的窮死了。
說起這個(gè)USB,他的確和我之前做的小實(shí)驗(yàn)有天淵之別,之前做的東西只是了解一下原理,動(dòng)一動(dòng)腦然后就可以寫程序了,但這個(gè)是涉及協(xié)議,當(dāng)時(shí)我還是第一次接觸協(xié)議類的東西,沒有什么動(dòng)腦的空間了,只能老實(shí)地看,學(xué)。
記得魯迅在寫文章救國(guó)家之前呆在屋子里抄了一年的碑文,那一年的工夫練就了魯迅的堅(jiān)韌。之前經(jīng)常焊萬能板飛線的實(shí)驗(yàn)板,做多了,除了做出點(diǎn)板子來玩,還讓我學(xué)會(huì)了堅(jiān)韌和耐性(不知道多少人試過焊復(fù)雜線路的萬能板?別以為簡(jiǎn)單,很煩的呢,要很有耐性,萬一錯(cuò)一跟線,修改是比較痛苦的)有了這么一點(diǎn)耐性一個(gè)月的閉關(guān)練功,某天我突然領(lǐng)悟,(只見關(guān)內(nèi)石門頓開,一人影身披彩云,飛星天外,此刻山搖地動(dòng)——白菜出山啦~~·· #%#—%—) 臺(tái)下眾大蝦:-_-#!..
當(dāng)時(shí)是看懂了,其實(shí)是開始看懂了而已,明白到D12每個(gè)寄存器的意義,USB那些反反復(fù)復(fù)的數(shù)據(jù)交換的一點(diǎn)意義,說實(shí)在的,板子沒做,程序沒開始寫,我只是放下所有東西看了一個(gè)月的書。。。呵呵
臺(tái)下眾大蝦: -_-####!!!!.....
離開2003寒假結(jié)束還有一個(gè)星期,我盡情地玩去了~~
于是是開學(xué),找指導(dǎo)老師談畢業(yè)設(shè)計(jì)等等,我的指導(dǎo)老師是個(gè)博士豬,為什么叫博士豬?
因?yàn)樗胁┦康淖C書和頭腦,但象豬般懶惰,所以叫博士豬,聽說他很懶,講完課了,就玩去了,不過這家伙講課技術(shù)不簡(jiǎn)單,為什么?因?yàn)樗v的東西不簡(jiǎn)單,但我們聽起來簡(jiǎn)單——牛也??!以下簡(jiǎn)稱他博豬,博豬很有錢,因?yàn)榕既徊煌祽械臅r(shí)候就出去接點(diǎn)活干干,一般一兩個(gè)星期就干完,然后就拿個(gè)幾萬到幾十萬,之后又開始豬的生活,到快沒錢的時(shí)候,又會(huì)去干活。跟博豬的畢業(yè)設(shè)計(jì)不錯(cuò),因?yàn)樗欢甎SB,于是就沒有什么要求,我想怎么發(fā)揮就怎么發(fā)揮。博豬對(duì)通信和DSP的算法等東西非常牛牛牛?。?!讓我感到什么是天外有天,豬外有豬!不過我最后也沒有走通信的路。
博豬的牛沒有帶給我什么,只是送我4片D12,然后說,拿去做吧。我暗喜,4片啊,發(fā)達(dá)了:)
有兩片我做感光板子把他們焊成雙列直插,一片現(xiàn)在焊到老丁的板子上,自己還留了2片。于是當(dāng)然就是做板調(diào)試?yán)?,搞USB弄了不少時(shí)間呢。
當(dāng)時(shí)其實(shí)想花錢買周立功的USB板子的,不過要價(jià)450大元,廣東話說:好過去搶!于是沒買,但到廣州的時(shí)候死死地盯著柜臺(tái)的哪個(gè)450元看了半小時(shí),2個(gè)LED,2個(gè)鍵,D12喚醒用了片74XX,D12是總線方式連接。。于是我就做了塊類似的板子出來了,而且還多了個(gè)串口,比周立功的450元強(qiáng)!!不過做的時(shí)候不小心把串口的收發(fā)腳調(diào)亂了。。(主要是選封裝的時(shí)候搞錯(cuò)了,PROTEL不過關(guān)啊,后來苦練了)總的來說板子比較難看。
之后就是寫程序。不過程序還沒怎么寫,之前投簡(jiǎn)歷的公司要求我過去實(shí)習(xí)一個(gè)月了,于是那些早上12點(diǎn)起來,晚上2點(diǎn)睡覺的生活沒有了。我得去上班了。上班實(shí)習(xí),其實(shí)就是沒事情干,當(dāng)時(shí)有個(gè)工程師跳走,留下一個(gè)USB接口的項(xiàng)目沒人做也,于是我又勇字掛胸前,
對(duì)主管說:我來做¥……¥#……—%主管瞪起金魚眼看我,好象說:你小子!??!。。。
我不做,也沒人手做,我不做,我又沒事情做,所以,USB我做。
那個(gè)USB可不是D12,他是三菱的16位單片機(jī)自帶的USB接口(我討厭三菱,各位要多抵制日貨),困難比較大,幸好他有所有的DEMO程序,呵呵,有程序在手,簡(jiǎn)單啦:)那次是我第一次接觸51以外的單片機(jī),而且還是16位的,算是升級(jí)了。而且那個(gè)項(xiàng)目是跑UCOSII的,當(dāng)時(shí)還沒有2.51出來,那些工程師手拿的是橙黃色的那本UCOS書,好象是2.01版本左右吧,不記得了??傊揖晚槺氵B帶UCOS也學(xué)了。
實(shí)習(xí)時(shí)間一個(gè)月,我收獲不少:1。為他們的項(xiàng)目寫了一個(gè)VC界面,用來做USB的上位機(jī)通信,2。修改了三菱的單片機(jī)DEMO程序(C的)讓他能基本運(yùn)行來收發(fā)數(shù)據(jù),3。修正了三菱USB技術(shù)手冊(cè)上的一個(gè)重大錯(cuò)誤(那次后我知道日本芯片的DATASHEET經(jīng)常出問題的,好象有意坑我們中國(guó)人)4。讓我知道這個(gè)世界上有UCOS這樣?xùn)|西,正打算買書回來看5。勞累過度,住了一天醫(yī)院。
走的時(shí)候主管說我行:)不過我走后,做的東西就沒有用了,他們中沒有人會(huì)VC,我寫的東西是白寫,后來哪個(gè)項(xiàng)目泡了,單片機(jī)部分的程序也就沒了。再后來,我的電腦出問題了,我不小心把自己硬盤干掉了,第一份工作的成果完全沒有了。一點(diǎn)底子都沒有留。連帶一些重要的資料也沒有了,應(yīng)該有幾位老哥知道我這件事情的吧。還好,畢業(yè)設(shè)計(jì)我刻了光盤,不然。。。這次意外說明一個(gè)問題,我并不是別人想象中那么幸運(yùn)的。
由于電腦的問題,拖了我好幾個(gè)星期,幸好堅(jiān)持之前下班的時(shí)候晚上一定要?jiǎng)觿?dòng)腦做點(diǎn)東西,不然真的趕死!最后USB畢業(yè)設(shè)計(jì)還是馬馬乎乎干完了(主要是PC端的程序是拿非利譜網(wǎng)上的,和我的51+USB配合起來不是很好,這個(gè)問題我還得有時(shí)間再解決,然后把整個(gè)系統(tǒng)完善一下)
在這里有個(gè)小插曲的:
在我下載了非利譜的USB資料后,看了一兩天的哪個(gè)上位機(jī)VC程序,看懂了點(diǎn),于是決定動(dòng)手改改,發(fā)現(xiàn)改動(dòng)起來其實(shí)很簡(jiǎn)單。于是沉迷了幾天去研究和看懂那個(gè)程序。在畢業(yè)答辯的前一天,我突然想改進(jìn)我的USB畢業(yè)設(shè)計(jì),就是在下位機(jī)的板子上添一塊128*64的LCD(我以前一直用來玩的那塊),然后上位機(jī)的VC程序構(gòu)造一個(gè)字符輸入欄,在PC上輸入漢字,然后在PC上轉(zhuǎn)換出他的點(diǎn)陣(16*16的)再發(fā)到我的USB板子上,并在LCD上顯示出哪個(gè)漢字來。但離開畢業(yè)答辯還只有一天,我當(dāng)晚就挑燈夜戰(zhàn)。先用跨線的方式把板子上51的多余腳引出來,接到LCD上(其實(shí)剛好夠,呵呵)這樣不用總線方式來驅(qū)動(dòng)LCD,確保我即使到最后調(diào)試失敗了,也不會(huì)影響我原先的USB部分(我還得畢業(yè),輸不起!?。┖负秒娐妨耍鸵膭?dòng)VC部分,因?yàn)镻C負(fù)責(zé)把輸入的漢字轉(zhuǎn)換內(nèi)碼,然后在一個(gè)點(diǎn)陣文件中提取點(diǎn)陣(點(diǎn)陣文件是16*16的,可以用網(wǎng)上的很多點(diǎn)陣提取軟件生成),所以涉及到文件的讀寫, 當(dāng)時(shí)是用API來讀寫文件的:)提取點(diǎn)陣了,就要通過USB傳到板子上,再通過單片機(jī)在LCD上重顯。時(shí)間只有一天,我是不停的想不停的寫了,當(dāng)時(shí)我的VC還是不怎么樣的,所以用了不少時(shí)間。最大問題是我沒有仿真器!!還是用燒片子,插片子的方法調(diào)啊。我記得一直寫到第二天早上6點(diǎn)的時(shí)候,成功把‘啊’’’’字傳過去了:),之后當(dāng)然要繼續(xù)改寫51的程序,讓他能達(dá)到換行的效果等東西啦,于是繼續(xù)寫啊寫啊。。
然后不幸降臨:(。。。
當(dāng)我再插上51的時(shí)候,然后插上USB接口(我用USB供電的),USB枚舉成功,但LCD沒有顯示了(我在枚舉成功后LCD會(huì)顯示歡迎字段的,這時(shí)候真的麻煩了,因?yàn)楹芸赡躄CD壞了:(我馬上拔掉LCD,插到我其他的板子上試,發(fā)現(xiàn)真的不顯示了,天啊,倒霉的很啊~~我不段調(diào)負(fù)壓電阻,發(fā)現(xiàn)LCD一點(diǎn)反映都沒有,5555。于是省下不用試了,可以睡大覺了。
于是我人生中的第一個(gè)通宵編程以無奈告終。畢業(yè)設(shè)計(jì)當(dāng)然是拿了個(gè)優(yōu)啦,不過沒有機(jī)會(huì)在博豬前展示我的USB傳漢字功能了??!
這次又說明了,我有時(shí)候真的很倒霉的。
不過,有失必有得,我一直認(rèn)為是LCD負(fù)壓芯片燒掉了,所以希望找一塊代換,但他是MAX的,比較難買到,我根據(jù)網(wǎng)友的指示去MAXIM哪里申請(qǐng),于是我學(xué)會(huì)了申請(qǐng)免費(fèi)東東:)后來證實(shí)我的想法沒錯(cuò),把負(fù)壓芯片換上后,LCD就能用了:)
我覺得我弄的兩個(gè)USB——實(shí)習(xí)公司的和畢業(yè)設(shè)計(jì)的,都是自己爭(zhēng)取回來的,想想當(dāng)初如果我不夠勇氣,不敢接公司的USB項(xiàng)目,怕畢業(yè)不了而不敢選USB題目的話,恐怕現(xiàn)在還對(duì)USB一竅不通,有時(shí)候,在工作中,生活中,我們應(yīng)該付出一點(diǎn)勇氣來,勇敢地接受挑戰(zhàn)。特別在工作中,你要有勇氣承擔(dān)任務(wù)和責(zé)任,才能被高層相識(shí)。所以我覺得,煉蝦米的第三要素:勇氣??!
畢業(yè)答辯后有一個(gè)月才能拿到畢業(yè)證書的,我沒浪費(fèi)這個(gè)空閑,繼續(xù)進(jìn)修我的技術(shù),當(dāng)初發(fā)現(xiàn)51+D12傳輸速度實(shí)在是慢的很,于是又從論壇上得到信息,改用AVR單片機(jī)來做??!于是我就買了AT90S8515回來,當(dāng)時(shí)買的真是牛貴!要我35元,唉,沒辦法。買了后發(fā)現(xiàn)燒寫器不支持啊,于是把以前的哪個(gè)TOP151(呵呵,120元而已)以60元賣掉,換個(gè)TOP852:)
當(dāng)然又得花錢啦,幸好家里人支持我開發(fā),給了不少資金上的輔助。
搞AVR一切又要從頭開始了,當(dāng)然,因?yàn)橹坝辛?1的底子,學(xué)起來很快,基本一個(gè)星期就算弄懂了,然后又用2個(gè)星期的時(shí)間把之前用51做的東西全部搬到8515上并做了條下載線來玩。其實(shí)在弄AVR的時(shí)候,把程序搬到我的128*64LCD上出現(xiàn)花屏問題的,這個(gè)問題弄了很久,最后發(fā)現(xiàn)AVR控制我哪個(gè)LCD不能用標(biāo)準(zhǔn)的時(shí)序的,標(biāo)準(zhǔn)時(shí)序51可以驅(qū)動(dòng),但AVR就不可以。
畢業(yè)前最后這個(gè)月其實(shí)我并沒做到什么東西,因?yàn)檫@個(gè)月我真的都拿來玩了,玩了。。于是我從小學(xué)到大學(xué)的學(xué)生時(shí)代,結(jié)束了....
第七章 回首
我的高中老師當(dāng)年為了要我們努力應(yīng)付高考,這樣說過:你們應(yīng)該在高中這段時(shí)間好好努力,當(dāng)你們升上大學(xué)的時(shí)候就會(huì)覺得很幸福的了,因?yàn)楸痊F(xiàn)在高中自由的多知道嗎?所以想以后過快樂的大學(xué)生活,就應(yīng)該現(xiàn)在好好努力上進(jìn),再拼搏多一些時(shí)間,你們就可以上大學(xué)了,自由了?。?br />
于是一片期待中,我就上了大學(xué),發(fā)現(xiàn)高中老師在騙人啊,大學(xué)原來還要努力復(fù)習(xí),考試,不然重修要給錢的,很慘!??!但是我的初期的大學(xué)生活還是用來玩,一旦到了快考試的前2個(gè)月,我就拼啊,復(fù)習(xí)啊,然后,嘿嘿,拿60分到70分,穩(wěn)守重修陣線也??!考完試?yán)玻?dāng)然又是玩玩玩,然后開學(xué)了,還是玩玩玩!
快到考試了 ??拼拼拼!!。。。
看到這里,各位還在讀大學(xué)的兄弟姐妹們是否覺得這樣的生活似曾相識(shí)??如果你們有同感的話,請(qǐng)你們馬上結(jié)束這樣的生活吧,不然,到你們?cè)陔x開大學(xué)回首當(dāng)年的時(shí)候,恐怕會(huì)追悔莫及,無比痛心!
生命每天都在消逝,時(shí)間從不等人,大學(xué)4年間,你們都有好好地享受了嗎?我覺得,大多數(shù)人都是認(rèn)為大學(xué)生活是幸福的,愉快的。因?yàn)槲覀冊(cè)谀莻€(gè)時(shí)間曾經(jīng)享受過年輕的快樂,毫無驅(qū)束,不用承擔(dān)任何社會(huì)責(zé)任,不用面對(duì)社會(huì)的壓力,不用為生活而煩惱。說到這里,大家是否都有那么一點(diǎn)余味還在腦海中游蕩,感覺到一股難得的輕松的快感?
不妨回想一下當(dāng)新生入學(xué)軍訓(xùn),剛剛認(rèn)識(shí)新朋友的時(shí)候,當(dāng)學(xué)校舉辦交誼舞會(huì),電子系的學(xué)生鼓氣了生平第一次的勇氣,走過對(duì)面外語系邀請(qǐng)MM跳舞的時(shí)候,當(dāng)你偶然得知學(xué)校舉辦文藝晚會(huì),立刻放下手上的作業(yè),直奔到會(huì)堂的時(shí)候,當(dāng)你發(fā)現(xiàn)哪個(gè)文藝晚會(huì)原來很納悶,于是決定中途和朋友們溜到外面夜宵的時(shí)候,當(dāng)你發(fā)現(xiàn)明天早上原來沒有課,正欣喜若狂,在晚上1點(diǎn)鐘和室友打CS和星際的時(shí)候,當(dāng)學(xué)校舉辦校運(yùn)會(huì),放假3天,你正考慮如何去瘋狂地度過這從天而降的‘橫財(cái)’’’’假期的時(shí)候,當(dāng)你覺得別人在運(yùn)動(dòng)會(huì)上無比的牛B吸引了對(duì)面的女生而感到向往,決定明天開始放學(xué)就到后山操場(chǎng)鍛煉準(zhǔn)備下一年的比賽的時(shí)候,當(dāng)你在空閑中陪MM打籃球的時(shí)候,甚至當(dāng)某天下午沒有課,決定一覺睡到夜宵的時(shí)候,朋友們,是否覺得那種生活無比地幸福,并且很想過一次呢?
但事實(shí)上你真的想再這樣過一次嗎??
我曾經(jīng)在某個(gè)VC論壇上看到一個(gè)朋友發(fā)了個(gè)帖子:如果讓你再讀一次大學(xué),你會(huì)做什么?
回貼是:
我會(huì)大學(xué)一年級(jí)就開始學(xué)C和C++,二年級(jí)就學(xué)好VC,然后再學(xué)JAVA。。。。
我會(huì)不再打游戲機(jī),專心學(xué)習(xí)。。。。
我要先過英語4級(jí),再過6級(jí),然后計(jì)算機(jī)1,2,3級(jí),再考高級(jí)程序員。。
我會(huì)在VC上下大工夫,并在大學(xué)期間成為學(xué)校最牛的程序高手。。。
我會(huì)努力學(xué)習(xí),然后考研究生。。。
我將不再浪費(fèi)時(shí)間,我要活出我的精彩。。。。
看到嗎?沒有一個(gè)提到上面那種悠閑生活,為什么?那么你不妨自己去想想,當(dāng)真的給你回到幾年前的大學(xué),你會(huì)如何?我想,你會(huì)第一時(shí)間把電腦的游戲刪除掉,拿起書本好好學(xué)習(xí),是嗎?
如果是這樣,那就證明一樣?xùn)|西:你認(rèn)為你浪費(fèi)了大學(xué)的4年了。
其實(shí),這也許和人的某種心態(tài)有關(guān),就是無論你過的如何,心里總有一種懷念當(dāng)年的感 覺,認(rèn)為你之前過的還是有點(diǎn)遺憾。所以,在走出大學(xué)門口的那瞬間,我們都曾經(jīng)有過這樣那樣的不舍。
我以前對(duì)一個(gè)朋友說過一句話:無論你是活的精彩還是無奈,對(duì)于一個(gè)平凡人在說,人生總有遺憾,好象一個(gè)好玩樂的大學(xué)生沒有好好珍惜他的學(xué)業(yè),到后來一事無成的時(shí)候,他會(huì)說后悔。如果他在大學(xué)年間比較努力地完成學(xué)業(yè),而且也有痛快過一番,那么他后來可能為自己的一份平凡的工作而感到難奈。但如果他非常努力地學(xué)習(xí),最后考取了研究生并繼續(xù)努力成為一個(gè)牛人,他也許會(huì)為他當(dāng)年的低頭發(fā)奮而忘記周圍的風(fēng)光而遺憾,更無奈地,當(dāng)他看到那些年輕的紅男綠女在身邊嬉笑打罵的時(shí)候,他只能為自己走幾步樓梯也喘氣而發(fā)出力不從心的一聲嘆息。
人生總有遺憾,然而我們不能因?yàn)楸厝粫?huì)出現(xiàn)的無奈而感到嘆息,幸福的路,其實(shí)就是一條最少遺憾發(fā)生的路,當(dāng)我們挑選出遺憾最少的路的時(shí)候,正代表我們已經(jīng)挑選出能夠得到最多幸福的一種生活??!
現(xiàn)在回頭看來,我的確是浪費(fèi)了大學(xué)的4年了,我是1999年入學(xué)的,但我本來就應(yīng)該走的路,在2002年10月才開始跨出第一步,我真的浪費(fèi)了很多很多啊。而唯一的幸運(yùn)是,我在大學(xué)一年級(jí)就開始學(xué)習(xí)C語言。以使我后來的路走的不算太艱苦。
評(píng)論