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