單片機學習心得匯總(一)
實際上,電子工程師就是將一堆器件搭在一起,注入思想(程序),完成原來的這些器件分離時無法完成的功能,做成一個成品。所需要的技能越高、功能越復雜、成本越低、市場上對相應的東東的需求越大,就越成功。這就是電子工程師的自身的價值。從成本到產品售出,之間的差價就是企業(yè)的追求。作為企業(yè)的老板,是在市場上去尋找這樣的應用;對電子工程師而言,是將老板提出的需求或者應用按照一定的構思原則(成本最低、可靠性最高、電路板最小、功能最強大等)在最短的時間內完成。最短的時間,跟電子工程師的熟練程度、工作效率和工作時間直接有關。這就是電子工程師的價值。
將電子產品抽象成一個硬件的模型,大約有以下組成:
1) 輸入
2) 處理核心
3) 輸出
輸入基本上有以下的可能:
1) 鍵盤
2) 串行接口(RS232/485/can bus/以太網/USB)
3) 開關量(TTL,電流環(huán)路,干接點)
4) 模擬量(4~20ma、 0~10ma、0~5V(平衡和非平衡信號))
輸出基本上有以下組成:
1) 串行接口(RS232/485/can bus/以太網/USB)
2) 開關量(TTL、電流環(huán)路、干接點、功率驅動)
3) 模擬量(4~20ma, 0~10ma,0~5V(平衡和非平衡信號))
4) LED顯示:發(fā)光管、八字
5) 液晶顯示器
6) 蜂鳴器
處理核心主要有:
1) 8位單片機,主要就是51系列
2) 32位arm單片機,主要有atmel和三星系列
51系列單片機現(xiàn)在看來,只能做一些簡單的應用,說白了,這個芯片也就是做單一的一件事情,做多了,不如使用arm來做;還可以在arm上加一個操作系統(tǒng),程序既可靠又容易編寫。
最近三星的arm受到追捧,價格便宜,以太網和USB的接口也有,周立功的開發(fā)系統(tǒng)也便宜,作為學習ARM的產品來說,應該是最好的;作為工業(yè)級的控制,是不是合適,在網友中有不同的看法和爭議。本公司使用atmel ARM91系列開發(fā)的1個室外使用的產品,在北京室外使用,沒有任何的通風和加熱的措施,從去年的5月份到現(xiàn)在,運行情況良好。已經有個成功應用的案例。
但對于初學者來說,應該從51著手,一方面,51還是入門級的芯片,作為初學者練手還是比較好的,可以將以上的概念走一遍;很多特殊的單片機也是在51的核的基礎上增加了一些I/O和A/D、D/A;也為今后學習更高一級的單片機和ARM打下基礎。再說了,哪個老板會將ARM級別的開發(fā)放在連51也沒有學過的新手手中?
在51上面去做復雜的并行擴展是沒有必要的,比如,擴展I/O口和A/D、D/A等等,可以直接買帶有A/D、D/A的單片機;或者直接使用ARM,它的I/O口線口多??梢允褂肐2C接口的芯片,擴展I/O口和A/D、D/A,以及SPI接口擴展LED顯示,例如:MAX7219等芯片。
市面上一些比較古老的書籍中還有一些并行擴展的例子,如:RAM、EPROM、A/D、D/A等,我覺得已經沒有必要去看了,知道歷史上有這些一回事就行了;
這些知識,是所有產品都具備的要素。所以要學,再具體應用。
第一課:51單片機最小系統(tǒng)
實際上,51單片機核心外圍電路是很簡單的,一個單片機+一個看門狗+一個晶振+2個磁片電容;
1. 單片機:atmel的89C51系列、winbond的78E52系列,還有philips的系列,都差不多;現(xiàn)在有一些有ISP(在線下載的),就更好用了;
2. 看門狗:種類很多,我常用的有max691/ca1161和DS1832等,具體看個人習慣、芯片工作電壓、封裝等。Max系列和DS系列,還有IMP公司的,種類很多,一般只需要有最基本的功能就可以了;原來我使用max691,但是max691比較貴,因為它有電池切換功能,后來新設計電路板,就都采用ca1161了。
很早以前的電路設計中,現(xiàn)在可能還有人使用,使用一個電阻和一個電容達成的上電復位電路;但是,這樣的復位電路一個是不可靠,為什么不可靠,網絡上能找得到專門論述復位電路的文章;更重要的是,51系列的單片機比較容易受到干擾;沒有看門狗電路是不行的,當程序跑飛時,回不來了,死在那里。
常規(guī)的做法是買一個專門的看門狗電路,完成復位電路和看門狗電路的功能。
單片機和單片機抗干擾能力是不一樣的。如果你的產品是工作在干擾比較大的環(huán)境,可以試試選用不同品牌的單片機;原來我在一個光電所,做YAG激光治療機的控制部分,脈沖激光機的電源放電的時候,能量是很大的,在采取了所有能夠想到的光電隔離等措施之后,還是不行;后來,選用了intel的8031,就可以了。小聲的說:當時的philips的單片機抗干擾性能是最差的,可能跟Philips主要是用在民用領域有關。
單片機的輸入輸出口線是最容易引進干擾的地方;在嚴重干擾的情況下,需要將所有的口線光電隔離。
3. 晶振:一般選用11.0592M,因為可以準確地得到9600波特率和19200波特率;也可以使用36.864M,這個頻率是1.8432M的20倍,看別人的電路板上用過,我也沒有用到。這2種晶振很容易買到,價錢跟12M的一樣。書上說,12M的晶振也能得到9600的波特率,但是,實際用的時候,會每隔一段時間就出錯一次,好像累積誤差一樣,比較奇怪。
即使你的單片機系統(tǒng)不使用RS232接口,也可以做一個Rs232,留著做測試,或者預留等等,沒有壞處。除非你的單片機系統(tǒng)的口線不夠用了。
4. 磁片電容:22pf~30pf,可以在有些書上找到什么晶振頻率對應什么容量的磁片電容,但是,我都是隨便拿來使用,反正在11.0592M下,都沒有問題;如果你用到了更高的頻率,最好還是找找資料看看。
參見以下電路圖:
如果你的單片機系統(tǒng)沒有工作,檢查步驟如下:
1. 查看門狗的復位輸出,可能的話在電路板上加一個LED,下拉,這樣看起來就更方便;要是看門狗復位信號有,往下;
2. 查單片機,看看管腳有沒有問題;一般編程器能夠將程序寫入,說明單片機是好的;最好手頭上準備一個驗證過的單片機,內部有一個簡單的程序,比如,在某個口線上輸出1個1秒占空比的方波等,可以使用萬用表測量。
加一句:設計產品時,要在關鍵的地方:電源、串口、看門狗的輸出和輸入、I/O口等加不同顏色的LED指示,便于調試;作為批量大的產品,可以去掉部分LED,一方面是降低成本、一方面是流程保密;
3. 再查磁片電容,有些瓷片電容質量不行,干脆換了;順便說一下,換器件最好使用吸錫帶,將焊盤內的錫吸干凈,再將器件拔出,這樣不會損傷焊盤內的過孔;再將新的瓷片電容焊接上去的時候,用萬用表量量是好的再焊;
4. 最后只有換晶振了;切記要買好的晶振,有些品牌質量比較好。
5. 以上按照以上步驟檢測時,將無關的外圍芯片去掉;因為有一些是外圍器件的故障導致單片機最小系統(tǒng)沒有工作。
下面我準備寫的有以下幾課:
第二課基本的芯片和分立器件
2.1 簡述
2.2 74系列
2.3 CD4000系列
2.4 光耦與光電管
2.5 三極管
2.6 電容電阻
2.7 固態(tài)繼電器
2.8 繼電器
2.9 變壓器和三端穩(wěn)壓器
2.10 開關電源芯片
2.11 封裝知識、芯片批號等
2.12 接插件
2.13 器件選購的知識
第三課 數(shù)字量的輸入輸出
第四課 單片機的通訊接口
第五課 單片機系統(tǒng)設計的硬件構思
第六課 單片機程序的框架(匯編版本)
第七課 模擬量的輸入輸出
如果程序里面有一些例程,也是已經經過測試可以拿來就用的;實際上是我早年的一些產品的程序的一部分;不好意思,都是匯編的。
參考書
1. 周航慈:《單片機程序設計》
2. 徐涵芳:《MCS-51單片機結構與設計》
3.何立民:《......》
有了這些就基本夠用了;其它的很多都是資料的翻譯;如果英文不好,可以看看;英文好的話,可以不必了,省電錢買開發(fā)系統(tǒng)和編程器、開發(fā)板什么的,需要什么資料直接下載PDF文件好了。
要想成為電子工程師,需要寬帶,在家里安裝包月的adsl或者長寬,絕對值得。
第二課 基本的芯片和分立器件
2.1 簡述
有必要對以下系列的芯片和分立器件進行介紹。
除了單片機作為控制器的核心外,作為一個產品,由很多東西構成;所以,在講系統(tǒng)之前,先將這些零零碎碎的東西一并交待。就好像一棟房子,有各種各樣的構件組成,下面的這些東東就像磚瓦一樣,沒有不行。
2.2 74系列芯片
74系列的芯片的下載地址:
74系列的芯片是古老的一族,大部分的芯片現(xiàn)在均已不用了,但是,實際上,在目前的系統(tǒng)中,還能看到一些芯片,有些芯片現(xiàn)在還在系統(tǒng)中使用,例如:
1、 7404 – 6個反相門
將輸入的TTL邏輯反相,如:0->1,1->0
2、 7407 – 6個集電極開路門
由于集電極開路門可以外接高電壓,可以最高到DC30V,電流最大到39mA,通常我用它驅動8字數(shù)碼管和繼電器等大電流的負載;開路門內部結構是達林頓管的,輸出的邏輯是正的;
與其類似的芯片是7406,只不過是反相開路門。
3、 74LS573與74LS373 – 8 數(shù)據鎖存器
引入幾個概念:
1.這個就是真值表,表示這個芯片在輸入和其它的情況下的輸出情況。
每個芯片的數(shù)據手冊(datasheet)中都有真值表。
布爾邏輯比較簡單,在此不贅述;
2. 高阻態(tài)
就是輸出既不是高電平,也不是低電平,而是高阻抗的狀態(tài);在這種狀態(tài)下,可以多個芯片并聯(lián)輸出;但是,這些芯片中只能有一個處于非高阻態(tài)狀態(tài),否則會將芯片燒毀;
高阻態(tài)的概念在RS232和RS422通訊中還可以用到。
3. 數(shù)據鎖存
當輸入的數(shù)據消失時,在芯片的輸出端,數(shù)據仍然保持;
這個概念在并行數(shù)據擴展中經常使用到。
4. 數(shù)據緩沖
加強驅動能力。74LS244/74LS245/74LS373/74LS573都具備數(shù)據緩沖的能力。
OE:output_enable,輸出使能;
LE:latch_enable,數(shù)據鎖存使能,latch是鎖存的意思;
Dn:第n路輸入數(shù)據;
On:第n路輸出數(shù)據;
再看這個真值表,意思如下:
第四行:當OE=1是,無論Dn、LE為何,輸出端為高阻態(tài);
第三行:當OE=0、LE=0時,輸出端保持不變;
第二行第一行:當OE=0、LE=1時,輸出端數(shù)據等于輸入端數(shù)據;
結合下面的波形圖,在實際應用的時候是這樣做的:
a. OE=0;
b. 先將數(shù)據從單片機的口線上輸出到Dn;
c. 再將LE從0->1->0
d.這時,你所需要輸出的數(shù)據就鎖存在On上了,輸入的數(shù)據在變化也影響不到輸出的數(shù)據了;實際上,單片機現(xiàn)在在忙著干別的事情,串行通信、掃描鍵盤……單片機的資源有限啊。
在單片機按照RAM方式進行并行數(shù)據的擴展時,使用movx @dptr, A這條指令時,這些時序是由單片機來實現(xiàn)的。
后面的表格中還有需要時間的參數(shù),你不需要去管它,因為這些參數(shù)都是幾十ns級別的,對于單片機在12M下的每個指令周期最小是1us的情況下,完全可以實現(xiàn);如果是你自己來實現(xiàn)這個邏輯,類似的指令如下:
mov
P0,A 將數(shù)據輸出到并行數(shù)據端口
clr
LE
setb
LE
clr
LE
上面三條指令完成LE的波形從0->1->0的變化
74ls573跟74LS373邏輯上完全一樣,只不過是管腳定義不一樣,數(shù)據輸入和輸出端各在一側,PCB容易走線;所以大家都喜歡使用這個芯片。
4、 74LS244 – 數(shù)據緩沖器
下載地址:
數(shù)據輸出能力比較強,輸出電流可以到40mA以上;
4個緩沖器分成2組,具有高阻態(tài)控制端口
5、 74LS245 – 總線緩沖器
雙向數(shù)據接口,通常在ISA板卡上可以看到;
早期的51系統(tǒng)中,為了擴展RAM、eprom、A/D、D/A、I/O等經??梢钥吹竭@個片子;
為了增強驅動能力,有時是為了隔離輸入和輸出,主要是布線方便,象74LS573一樣,輸入、輸出在一側,經常用到這個片子
6、 74LS138 – 三-八譯碼器
在早期的51系統(tǒng)的擴展中,作為地址選通的片子,可以經??吹健?br /> 另外一個類似的芯片是74LS154,是4-16譯碼器,現(xiàn)在更是少見了。
有興趣的可以研究一下何立民的經典著作中的有關章節(jié)。
知道有這么一個芯片就可以了。
2.3 CD4000系列
CD4000系列的芯片,除了跟74系列的電氣特性有所區(qū)別外,例如:
1) 電壓范圍寬,應該可以工作在3V~15V,輸入阻抗高,驅動能力差外,跟74系列的功能基本沒有區(qū)別;
2) 輸入時,1/2工作電壓以下為0,1/2工作電壓以上為1;
3) 輸出時,1=工作電壓;0=0V
4) 驅動能力奇差,在設計時最多只能帶1個TTL負載;
5) 如果加上拉電阻的話,至少要100K電阻;
6) 唯一現(xiàn)在使用的可能就是計數(shù)器,CD4060的計數(shù)器可以到14級二進制串行計數(shù)/分頻器,這個74系列的做不到這么高;
下載地址:
2.4 ULN2003/ULN2008
它的內部結構也是達林頓的,專門用來驅動繼電器的芯片,甚至在芯片內部做了一個消線圈反電動勢的二極管。ULN2003的輸出端允許通過IC 電流200mA,飽和壓降VCE 約1V左右,耐壓BVCEO 約為36V。用戶輸出口的外接負載可根據以上參數(shù)估算。采用集電極開路輸出,輸出電流大,故可以直接驅動繼電器或固體繼電器(SSR)等外接控制器件,也可直接驅動低壓燈泡。
經常在工控的板卡中見到這個芯片。
有個完全一樣的型號:MC1413,不過現(xiàn)在好像不怎么見到這個型號了,但是管腳與2003完全兼容。
ULN2003可以驅動7個繼電器;ULN2008驅動8個繼電器。
ULN2003下載地址:
500){this.resized=true;this.style.width=500;}">http://www.hqew.com/document .detail.asp?pdid=148212
ULN2008下載地址:
沒有找到。奇怪啊。
2.5 光耦
光耦是做什么用的?光耦是用來隔離輸入輸出的,主要是隔離輸入的信號。
在各種應用中,往往有一些遠距離的開關量信號需要傳送到控制器,如果直接將這些信號接到單片機的I/O上,有以下的問題:
1) 信號不匹配,輸入的信號可能是交流信號、高壓信號、按鍵等干接點信號;
2) 比較長的連接線路容易引進干擾、雷擊、感應電等,不經過隔離不可靠
所以,需要光耦進行隔離,接入單片機系統(tǒng)。
常見的光耦有:
1) TLP521-1/ TLP521-2/ TLP521-4,分別是1個光耦、2個光耦和4個光耦,HP公司和日本的東芝公司生產。
發(fā)光管的工作電流要在10mA時,具有較高的轉換速率;
在5V工作時,上拉電阻不小于5K,一般是10K;太小容易損壞光耦;
2) 4N25/4N35,motorola公司生產 隔離電壓高達5000V;
3) 6N136,HP公司生產
要想打開6N136,需要比較大的電流,大概在15~20mA左右,才能發(fā)揮高速傳輸數(shù)據的作用。
如果對速率要求不高,其實TLP521-1也可以用,實際傳輸速率可以到19200波特率。
選擇光耦看使用場合,tlp521-1是最常用的,也便宜,大概0.7~1元;
要求隔離電壓高的,選用4N25/4N35,大概在3元左右;
要求在通訊中高速傳輸數(shù)據的,選用6N136,大概在4元左右。
光耦應用的原理框圖如下所示:
1. 輸入干接點隔離
2. 輸入TTL電平隔離
3. 輸入交流信號隔離
4. 輸出RS232信號隔離
5. 輸出RS422信號隔離
光耦除了隔離數(shù)字量外,還可以用來隔離模擬量。將在今后的章節(jié)中描述。
2.6 三極管
2.6.1 三極管的4種工作狀態(tài)
1) 飽和導通狀態(tài)
飽和導通=0
2) 截止狀態(tài)
飽和導通=1
3) 線性放大狀態(tài)
作為低頻放大器時使用,具體的可參見有關電子線路的書籍;
4) 非線性工作狀態(tài)
在無線電通信系統(tǒng)中,作為混頻器等使用。具體的可參見有關電子線路的書籍;
評論