單片機學(xué)習(xí)方法匯總
為什么要掌握這些知識?
實際上,電子工程師就是將一堆器件搭在一起,注入思想(程序),完成原來的這些器件分離時無法完成的功能,做成一個成品。所需要的技能越高、功能越復(fù)雜、成本越低、市場上對相應(yīng)的東東的需求越大,就越成功。這就是電子工程師的自身的價值。從成本到產(chǎn)品售出,之間的差價就是企業(yè)的追求。作為企業(yè)的老板,是在市場上去尋找這樣的應(yīng)用;對電子工程師而言,是將老板提出的需求或者應(yīng)用按照一定的構(gòu)思原則(成本最低、可靠性最高、電路板最小、功能最強大等)在最短的時間內(nèi)完成。最短的時間,跟電子工程師的熟練程度、工作效率和工作時間直接有關(guān)。這就是電子工程師的價值。
將電子產(chǎn)品抽象成一個硬件的模型,大約有以下組成:
1) 輸入
2) 處理核心
3) 輸出
輸入基本上有以下的可能:
1) 鍵盤
2) 串行接口(RS232/485/can bus/以太網(wǎng)/USB)
3) 開關(guān)量(TTL,電流環(huán)路,干接點)
4) 模擬量(4~20ma、 0~10ma、0~5V(平衡和非平衡信號))
輸出基本上有以下組成:
1) 串行接口(RS232/485/can bus/以太網(wǎng)/USB)
2) 開關(guān)量(TTL、電流環(huán)路、干接點、功率驅(qū)動)
3) 模擬量(4~20ma, 0~10ma,0~5V(平衡和非平衡信號))
4) LED顯示:發(fā)光管、八字
5) 液晶顯示器
6) 蜂鳴器
處理核心主要有:
1) 8位單片機,主要就是51系列
2) 32位arm單片機,主要有atmel和三星系列
51系列單片機現(xiàn)在看來,只能做一些簡單的應(yīng)用,說白了,這個芯片也就是做單一的一件事情,做多了,不如使用arm來做;還可以在arm上加一個操作系統(tǒng),程序既可靠又容易編寫。
最近三星的arm受到追捧,價格便宜,以太網(wǎng)和USB的接口也有,周立功的開發(fā)系統(tǒng)也便宜,作為學(xué)習(xí)ARM的產(chǎn)品來說,應(yīng)該是最好的;作為工業(yè)級的控制,是不是合適,在網(wǎng)友中有不同的看法和爭議。本公司使用atmel ARM91系列開發(fā)的1個室外使用的產(chǎn)品,在北京室外使用,沒有任何的通風和加熱的措施,從去年的5月份到現(xiàn)在,運行情況良好。已經(jīng)有個成功應(yīng)用的案例。
但對于初學(xué)者來說,應(yīng)該從51著手,一方面,51還是入門級的芯片,作為初學(xué)者練手還是比較好的,可以將以上的概念走一遍;很多特殊的單片機也是在51的核的基礎(chǔ)上增加了一些I/O和A/D、D/A;也為今后學(xué)習(xí)更高一級的單片機和ARM打下基礎(chǔ)。再說了,哪個老板會將ARM級別的開發(fā)放在連51也沒有學(xué)過的新手手中?
在51上面去做復(fù)雜的并行擴展是沒有必要的,比如,擴展I/O口和A/D、D/A等等,可以直接買帶有A/D、D/A的單片機;或者直接使用ARM,它的I/O口線口多。可以使用I2C接口的芯片,擴展I/O口和A/D、D/A,以及SPI接口擴展LED顯示,例如:MAX7219等芯片。
市面上一些比較古老的書籍中還有一些并行擴展的例子,如:RAM、EPROM、A/D、D/A等,我覺得已經(jīng)沒有必要去看了,知道歷史上有這些一回事就行了;
這些知識,是所有產(chǎn)品都具備的要素。所以要學(xué),再具體應(yīng)用。
第一課:51單片機最小系統(tǒng)
實際上,51單片機核心外圍電路是很簡單的,一個單片機+一個看門狗+一個晶振+2個磁片電容;
1. 單片機:atmel的89C51系列、winbond的78E52系列,還有philips的系列,都差不多;現(xiàn)在有一些有ISP(在線下載的),就更好用了;
2. 看門狗:種類很多,我常用的有max691/ca1161和DS1832等,具體看個人習(xí)慣、芯片工作電壓、封裝等。Max系列和DS系列,還有IMP公司的,種類很多,一般只需要有最基本的功能就可以了;原來我使用max691,但是max691比較貴,因為它有電池切換功能,后來新設(shè)計電路板,就都采用ca1161了。
很早以前的電路設(shè)計中,現(xiàn)在可能還有人使用,使用一個電阻和一個電容達成的上電復(fù)位電路;但是,這樣的復(fù)位電路一個是不可靠,為什么不可靠,網(wǎng)絡(luò)上能找得到專門論述復(fù)位電路的文章;更重要的是,51系列的單片機比較容易受到干擾;沒有看門狗電路是不行的,當程序跑飛時,回不來了,死在那里。
常規(guī)的做法是買一個專門的看門狗電路,完成復(fù)位電路和看門狗電路的功能。
單片機和單片機抗干擾能力是不一樣的。如果你的產(chǎn)品是工作在干擾比較大的環(huán)境,可以試試選用不同品牌的單片機;原來我在一個光電所,做YAG激光治療機的控制部分,脈沖激光機的電源放電的時候,能量是很大的,在采取了所有能夠想到的光電隔離等措施之后,還是不行;后來,選用了intel的8031,就可以了。小聲的說:當時的philips的單片機抗干擾性能是最差的,可能跟Philips主要是用在民用領(lǐng)域有關(guān)。
單片機的輸入輸出口線是最容易引進干擾的地方;在嚴重干擾的情況下,需要將所有的口線光電隔離。
3. 晶振:一般選用11.0592M,因為可以準確地得到9600波特率和19200波特率;也可以使用36.864M,這個頻率是1.8432M的20倍,看別人的電路板上用過,我也沒有用到。這2種晶振很容易買到,價錢跟12M的一樣。書上說,12M的晶振也能得到9600的波特率,但是,實際用的時候,會每隔一段時間就出錯一次,好像累積誤差一樣,比較奇怪。
即使你的單片機系統(tǒng)不使用RS232接口,也可以做一個Rs232,留著做測試,或者預(yù)留等等,沒有壞處。除非你的單片機系統(tǒng)的口線不夠用了。
4. 磁片電容:22pf~30pf,可以在有些書上找到什么晶振頻率對應(yīng)什么容量的磁片電容,但是,我都是隨便拿來使用,反正在11.0592M下,都沒有問題;如果你用到了更高的頻率,最好還是找找資料看看。
如果你的單片機系統(tǒng)沒有工作,檢查步驟如下:
1. 查看門狗的復(fù)位輸出,可能的話在電路板上加一個LED,下拉,這樣看起來就更方便;要是看門狗復(fù)位信號有,往下;
2. 查單片機,看看管腳有沒有問題;一般編程器能夠?qū)⒊绦驅(qū)懭?,說明單片機是好的;最好手頭上準備一個驗證過的單片機,內(nèi)部有一個簡單的程序,比如,在某個口線上輸出1個1秒占空比的方波等,可以使用萬用表測量。
加一句:設(shè)計產(chǎn)品時,要在關(guān)鍵的地方:電源、串口、看門狗的輸出和輸入、I/O口等加不同顏色的LED指示,便于調(diào)試;作為批量大的產(chǎn)品,可以去掉部分LED,一方面是降低成本、一方面是流程保密;
3. 再查磁片電容,有些瓷片電容質(zhì)量不行,干脆換了;順便說一下,換器件最好使用吸錫帶,將焊盤內(nèi)的錫吸干凈,再將器件拔出,這樣不會損傷焊盤內(nèi)的過孔;再將新的瓷片電容焊接上去的時候,用萬用表量量是好的再焊;
4. 最后只有換晶振了;切記要買好的晶振,有些品牌質(zhì)量比較好。
5. 以上按照以上步驟檢測時,將無關(guān)的外圍芯片去掉;因為有一些是外圍器件的故障導(dǎo)致單片機最小系統(tǒng)沒有工作。