單片機(jī)的經(jīng)驗之談
記得在大學(xué)期間做了幾個AT89S52單片機(jī)的東西,都是很基礎(chǔ)的東西,呵呵,遇到一些很詭異的問題,今天剛好有點(diǎn)時間,想把一些經(jīng)驗和大家分享一下,希望能夠為正在單片機(jī)一線戰(zhàn)斗的戰(zhàn)友們送去一點(diǎn)希望和幫助!
一、單片機(jī)不能下載程序的原因
1.硬件連接是否正確,電源,是否連接正常,在正確的基礎(chǔ)上,板子是否有斷線以及是否虛焊?注意P1.5,P1.6,P1.7,RST引腳和下載接口是否正確連接了,對了,如果P1.5,P1.6,P1.7用作其他用途也有可能下載不成功,俺就在P1.7上掛了個ds18b20,結(jié)果總是檢測不到器件,并且在下載線插在板子上的時候,ds18b20無法測溫,總是顯示0000000.
2.電源波紋是否過大,過大別忘了加旁路電容,一個100uf的電解電容和一個104的磁片電容并聯(lián)即可 有機(jī)會的話可以在電源輸出的地方加一個電感。
3.單片機(jī)復(fù)位電路是否正確,是否能夠保證復(fù)位電路在上電的時候能夠復(fù)位一次單片機(jī),如果復(fù)位電路是正確的,那么請檢查一下復(fù)位電路的電阻阻值,這個千萬不能忽視,因為我前幾天就犯了這個錯誤,復(fù)位電阻不能小于1K因為,太小了電容放電太快,在單片機(jī)RST引腳上高電平持續(xù)的時間太短,造成單片機(jī)上電復(fù)位失敗,從而導(dǎo)致無法下載程序,前幾天我把120歐姆的電阻當(dāng)成10K的(因為兩者的色環(huán)沒有區(qū)別)結(jié)果檢查了N次才知道怎么回事,嘻嘻,別嘲笑我菜鳥
4、如果沒有晶體能不能下載還沒有試過。
5、外部有大負(fù)載,比如電機(jī)驅(qū)動電路,即使不共電源,但是有時候也造成下載程序失敗。
6.還有一個更加大意的東西,就是單片機(jī)沒有插緊,呵呵,這個是最郁悶的問題了。
7、電腦靜電電壓太高,導(dǎo)致單片機(jī)不工作,自然下載不了了,俺的電腦靜電好猛,把俺電痛了
二、單片機(jī)可以下載程序,但是不能執(zhí)行程序的原因
1.極有可能單片機(jī)的EA管腳沒有接VCC,沒有接是可以下載程序的,(并且ALE也會輸出二分之一的晶體頻率)——這是我寫錯了,估計是太累了,暈了,不好意思,下面有位大哥說了,一般情況下是六分之一的————為什么我總是粗心大意?!EA接VCC代表執(zhí)行內(nèi)部代碼,不接執(zhí)行外部ROM程序,我們現(xiàn)在很少用外部EEPROM,肯定要接EA到VCC的
三、單片機(jī)抗干擾設(shè)計
1.我們在用單片機(jī)定時器測一個方波的頻率的時候,當(dāng)單片機(jī)沒有燒寫程序的時候,方波很好,很標(biāo)準(zhǔn),但是燒寫程序之后,方波的形狀就找不到了,多了很多噪聲,很郁悶吧,建議你加個4.7K上拉排阻試試,并且注意前面的電源濾波旁路。要求不高的這兩招都可以解決,要求高的那么就是這兩個模塊通過光電耦合器件隔離,使用獨(dú)立的電源,不共同地就可以減小干擾了。對了P0口必須加上拉電阻。
2.驅(qū)動外部較大功率器件的時候一定要用光電耦合器件隔離,使用獨(dú)立電源,否則單片機(jī)會死機(jī)。以前有個師兄參加廣西電子設(shè)計競賽做液位測量吧,不用光電耦合器件隔離,還使用同一個電源,結(jié)果,單片機(jī)不停的死機(jī),數(shù)碼管一亮一滅,結(jié)果沒有出線。
不過菜鳥建議想搞單片機(jī)的朋友,最好先把最小系統(tǒng)搭建起來,同時寫一個小程序,點(diǎn)亮led,如果成功恭喜您,你的單片機(jī)最小系統(tǒng)搭建起來了,如后才一個一個的添加自己的外圍設(shè)計,循序漸進(jìn),一步一步來,這樣出現(xiàn)問題也好查詢。
擴(kuò)展閱讀:單片機(jī)入門的幾點(diǎn)誤區(qū)