【導(dǎo)讀】回首當(dāng)年,在初學(xué)51單片機(jī)的時(shí)候,總是伴隨很多有關(guān)與晶振的問(wèn)題,今天大俠把自己當(dāng)年學(xué)習(xí)51單片機(jī)有關(guān)晶振的問(wèn)題一并總結(jié)出來(lái),希望對(duì)初學(xué)51的童鞋來(lái)說(shuō)能有幫助。
回首當(dāng)年,在初學(xué)51單片機(jī)的時(shí)候,總是伴隨很多有關(guān)與晶振的問(wèn)題,其實(shí)晶振就是如同人的心臟,是血液的是脈搏,把單片機(jī)的晶振問(wèn)題搞明白了,51單片機(jī)的其他問(wèn)題迎刃而解……
今天大俠把自己當(dāng)年學(xué)習(xí)51單片機(jī)有關(guān)晶振的問(wèn)題一并總結(jié)出來(lái),希望對(duì)初學(xué)51的童鞋來(lái)說(shuō)能有幫助。
一,為什么51單片機(jī)愛(ài)用11.0592MHZ晶振?
其一:因?yàn)樗軌驕?zhǔn)確地劃分成時(shí)鐘頻率,與UART(通用異步接收器/發(fā)送器)量常見(jiàn)的波特率相關(guān)。特別是較高的波特率(19600,19200),不管多么古怪的值,這些晶振都是準(zhǔn)確,常被使用的。
其二:用11.0592晶振的原因是51單片機(jī)的定時(shí)器導(dǎo)致的。用51單片機(jī)的定時(shí)器做波特率發(fā)生器時(shí),如果用11.0592Mhz的晶振,根據(jù)公式算下來(lái)需要定時(shí)器設(shè)置的值都是整數(shù);如果用12Mhz晶振,則波特率都是有偏差的,比如9600,用定時(shí)器取0XFD,實(shí)際波特率10000,一般波特率偏差在4%左右都是可以的,所以也還能用STC90C516 晶振12M 波特率9600 ,倍數(shù)時(shí)誤差率6.99%,不倍數(shù)時(shí)誤差率8.51%,數(shù)據(jù)肯定會(huì)出錯(cuò)。 這也就是串口通信時(shí)大家喜歡用11.0592MHz晶振的原因,在波特率倍速時(shí),最高可達(dá)到57600,誤差率0.00%。 用12MHz,最高也就4800,而且有0.16%誤差率,但在允許范圍,所以沒(méi)多大影響。
二,在設(shè)計(jì)51單片機(jī)系統(tǒng)PCB時(shí),晶振為何被要求緊挨著單片機(jī)?
原因如下:晶振是通過(guò)電激勵(lì)來(lái)產(chǎn)生固定頻率的機(jī)械振動(dòng),而振動(dòng)又會(huì)產(chǎn)生電流反饋給電路,電路接到反饋 后進(jìn)行信號(hào)放大,再次用放大的電信號(hào)來(lái)激勵(lì)晶振機(jī)械振動(dòng),晶振再將振動(dòng)產(chǎn)生的電流反饋給電路,如此這般。當(dāng)電路中的激勵(lì)電信號(hào)和晶振的標(biāo)稱頻率相同時(shí),電 路就能輸出信號(hào)強(qiáng)大,頻率穩(wěn)定的正弦波。整形電路再將正弦波變成方波送到數(shù)字電路中供其使用。
問(wèn)題在于晶振的輸出能力有限,它僅僅輸出以毫瓦為單位的電能量。在 IC(集成電路) 內(nèi)部,通過(guò)放大器將這個(gè)信號(hào)放大幾百倍甚至上千倍才能正常使用。
晶振和 IC 間一般是通過(guò)銅走線相連的,這根走線可以看成一段導(dǎo)線或數(shù)段導(dǎo)線,導(dǎo)線在切割磁力線的時(shí)候會(huì)產(chǎn)生電流,導(dǎo)線越長(zhǎng),產(chǎn)生的電流越強(qiáng)?,F(xiàn)實(shí)中,磁力線不常見(jiàn),電磁波卻到處都是,例如:無(wú)線廣播發(fā)射、電視塔發(fā)射、手機(jī)通訊等等。晶振和IC之間的連線就變成了接收天線,它越長(zhǎng),接收的信號(hào)就 越強(qiáng),產(chǎn)生的電能量就越強(qiáng),直到接收到的電信號(hào)強(qiáng)度超過(guò)或接近晶振產(chǎn)生的信號(hào)強(qiáng)度時(shí),IC內(nèi)的放大電路輸出的將不再是固定頻率的方波了,而是亂七八糟的信 號(hào),導(dǎo)致數(shù)字電路無(wú)法同步工作而出錯(cuò)。
所以,畫(huà)PCB(電路板)的時(shí)候,晶振離它的放大電路(IC管腳)越近越好。
三,單片機(jī)電路晶振不起振原因分析
遇到單片機(jī)晶振不起振是常見(jiàn)現(xiàn)象,那么引起晶振不起振的原因有哪些呢?
?、?PCB板布線錯(cuò)誤;②單片機(jī)質(zhì)量有問(wèn)題;③ 晶振質(zhì)量有問(wèn)題;
④負(fù)載電容或匹配電容與晶振不匹配或者電容質(zhì)量有問(wèn)題;⑤PCB板受潮,導(dǎo)致阻抗失配而不能起振;⑥ 晶振電路的走線過(guò)長(zhǎng);
⑦晶振兩腳之間有走線;⑧外圍電路的影響。
解決方案,建議按如下方法逐個(gè)排除故障:
① 排除電路錯(cuò)誤的可能性,因此可以用相應(yīng)型號(hào)單片機(jī)的推薦電路進(jìn)行比較。② 排除外圍元件不良的可能性,因?yàn)橥鈬慵o(wú)非為電阻,電容,很容易鑒別是否為良品。③ 排除晶振為停振品的可能性,因?yàn)椴粫?huì)只試了一二個(gè)晶振。④試著改換晶體兩端的電容,也許晶振就能起振了,電容的大小請(qǐng)參考晶振的使用說(shuō)明。
⑤在PCB布線時(shí)晶振電路的走線應(yīng)盡量短且盡可能靠近IC,杜絕在晶振兩腳間走線。
四,51單片機(jī)時(shí)鐘電路用12MHZ的晶振時(shí)那電容的值是怎樣得出來(lái)的?拿內(nèi)部時(shí)鐘電路來(lái)說(shuō)明吧!
其實(shí)這兩個(gè)電容沒(méi)人能夠解釋清楚到底怎么選值,因?yàn)?2pF實(shí)在是太小了。這個(gè)要說(shuō)只能說(shuō)和內(nèi)部的振蕩電路自身特性有關(guān)系,搭配使用,用來(lái)校正波形,沒(méi)有人去深究它到底為什么就是這么大的值。
19.89c52單片機(jī)如果不接晶振會(huì)有什么后果?
單片機(jī)不工作了 程序無(wú)法燒入……等等
五,單片機(jī)晶振電路中兩個(gè)微調(diào)電容不對(duì)稱會(huì)怎樣?相差多少會(huì)使頻率怎樣變化?在檢測(cè)無(wú)線鼠標(biāo)的接受模塊時(shí),發(fā)現(xiàn)其頻率總是慢慢變化(就是一直不松探頭的手,發(fā)現(xiàn)頻率慢慢變小)晶振是新的!
電容不對(duì)稱也不會(huì)引起頻率的漂移,說(shuō)的頻率漂移可能是因?yàn)榫д竦碾娙莸娜萘亢懿环€(wěn)定引起的,可以換了試,換兩電容不難,要不就是的晶振的穩(wěn)定性太差了,或者測(cè)量的方法有問(wèn)題.
六,單片機(jī)晶振與速度的疑問(wèn),執(zhí)行一條指令的周期不是由晶振決定的嗎。那么比如51單片機(jī)和MSP430,給51接高速晶振,430接低速的,是不是51跑的要快?是不是速度單片機(jī)速度僅僅與晶振有關(guān),關(guān)鍵是單片機(jī)能不能支持那么大的晶振?
每個(gè)單片機(jī)的速度是受到內(nèi)部邏輯門(mén)電平跳變速度限制的。兩個(gè)芯片同時(shí)使用同樣的晶振,比如12M的。因?yàn)锳VR是RISC指令集,它在同樣外部晶振頻率下,比51要快。
比如,51最快能接40M,AVR是16M的晶振。
STC89C52大都用12MHz晶振,但由于其12個(gè)時(shí)鐘周期才是一個(gè)機(jī)器周期,相當(dāng)于其主頻只有1MHz。
MSP430采用RISC精簡(jiǎn)指令集, 430單片機(jī)若采用內(nèi)部DCO震蕩可達(dá)21MHz主頻。單個(gè)時(shí)鐘周期就可以執(zhí)行一條指令,相同晶振,速度較51快12倍。
對(duì)于一個(gè)51,給他用更高的晶振,速度會(huì)快些。但是對(duì)于高級(jí)的單片機(jī)就不一樣了。高級(jí)單片機(jī)內(nèi)部,一般都是有頻率控制寄存器的,所以,簡(jiǎn)單的增加晶振,可能達(dá)到單片機(jī)的極限,導(dǎo)致跑飛。
七,請(qǐng)問(wèn):有什么方法可以確定某一款單片機(jī)在某一大小的晶振下是否能正常工作?
晶振選擇太高不太合適,具體晶振上限是多少,恐怕測(cè)不出來(lái),只能按照人家單片機(jī)的要求,一般STC系列單片機(jī)上限是35M或40M,stc單憑上寫(xiě)的有,如STC11F16XE 35I-LQFP44G其中35I就是晶振最高35M的工業(yè)級(jí)芯片。
超過(guò)上限會(huì)出現(xiàn)什么樣的問(wèn)題,沒(méi)有測(cè)試過(guò),一般晶振選擇12M的比較多,如果選擇STC 1T指令的,就相當(dāng)于12*12=144M的晶振。如果用于串口通信,建議選用11.0592M的或22.184M,選擇晶振最主要還是參照人家的說(shuō)明書(shū)。
[page]
八,4個(gè)AT89C51單片機(jī)能否用一個(gè)12M的晶振使其都正常工作?一個(gè)采用內(nèi)部時(shí)鐘方式,其余三個(gè)用外部方式...那四個(gè)都用內(nèi)部方式可以不(將4個(gè)單片機(jī)都并聯(lián)在一個(gè)晶振上)?
可以,其中一個(gè)正常接晶振,他的XTAL2輸出接到另外三個(gè)的XTAL1輸入上。
九,單片機(jī)的運(yùn)行速度和晶振大小的關(guān)系,若單片機(jī)的最高工作頻率是40M,晶振是否可以選擇24M或更高,但不超過(guò)40M,這樣單片機(jī)的運(yùn)行速度是否大增?長(zhǎng)期在此工作頻率下對(duì)單片機(jī)是否有不良影響?單片機(jī)對(duì)晶振的選擇的原則是怎樣的?
當(dāng)然是有影響的,單片機(jī)的工作速度越快,功耗也越大,受干擾也會(huì)越厲害,總之最高能跑40M的,跑不超過(guò)40M的是沒(méi)有問(wèn)題的,只是對(duì)相關(guān)的技術(shù)(如PCB的設(shè)計(jì)元件的選取等)會(huì)高去很多.
十,89c51單片機(jī)的復(fù)位電路中常采用12MHZ的晶振,實(shí)際上市場(chǎng)上稍小于12MHZ,為什么呢?
答:需要串口通訊時(shí)一般是用11.0582MHZ的,這樣波特率才好算。
用12MHZ的工作周期就容易計(jì)算。
十一,單片機(jī)晶振上電不起振,但是手碰一下晶振就起振了,為什么?怎么判斷單片機(jī)晶振是否起振呀?
看看晶振配的電容焊了沒(méi)有,值有沒(méi)有錯(cuò)誤?
最簡(jiǎn)單是用示波器,另外可以看一下電源是否正常。
十二,怎樣判斷單片機(jī)外部晶振有沒(méi)有起振?的STC89C52單片機(jī)本來(lái)是好好的后來(lái)不行了,換了個(gè)晶振就好了。但是過(guò)了幾個(gè)小時(shí)后又不行了,是怎么回事。還有就是怎樣判斷晶振是否起振?
①先換一塊單片機(jī)試試,問(wèn)題還在則排除單片機(jī);②可能是虛焊造成的,這點(diǎn)要注意;③用STC89C52也碰到過(guò)類似的問(wèn)題,換了塊晶振就OK了,好像STC起振不橡AT89S52那么順。其實(shí)對(duì)于STC89C52可以直接看30腳(ALE),接個(gè)燈,起振一下子就能看出來(lái)了。
十三,51單片機(jī)晶振上接的電容大小該如何選擇?是晶振越大,電容值也要大一些嗎,一般常用多大的。有人說(shuō)常用的從15-33pf,具體如何選擇效果最好?比如分別用一個(gè)6M和12M的晶振,用多大電容更合適?
15-33pf都可以 們一般用的是15P和30P 晶振大小影響不大 們常用的4M 和12M 以及11.0592M和20M 24M 們都用的 30P 單片機(jī)內(nèi)部有相應(yīng)的整形電路 們不比擔(dān)心
23.給51單片機(jī)12M晶振接2200pF電容會(huì)怎么樣?電路圖里貌似是22pF的,但是沒(méi)有22pF的...接2200pF會(huì)不會(huì)不正常工作?
不可以,晶體會(huì)不工作的。15-33p是合理范圍??梢栽囋嚳矗瑢?duì)單片機(jī)不會(huì)有損壞。
十四,沒(méi)有程序的空白單片機(jī),外部晶振能起振么?
沒(méi)有內(nèi)部晶振的單片機(jī),外部晶振可以起振,如傳統(tǒng)類MS51系列單片機(jī)有內(nèi)部晶振的單片機(jī),外部晶振不會(huì)起振,需要對(duì)外部晶振進(jìn)行配置后才會(huì)起振,如果不對(duì)外部晶振進(jìn)行配置仍使用內(nèi)部晶振,如silicon lab系列C8051F020單片機(jī)
[page]
十五,為什么at89c52 P1.0輸出2.5v電壓,單片機(jī)好像未工作,晶振波形是不規(guī)則的正弦波可不可以?線路板沒(méi)有達(dá)到預(yù)想效果,發(fā)光二極管一直亮,感覺(jué)還是單片機(jī)的問(wèn)題,P1.0輸出2.5v電壓,看門(mén)狗用的X5045。怎么回事?
將看門(mén)狗拿掉,暫時(shí)做成最小系統(tǒng),既只有電源、8952、晶振和兩只30P左右的電容。
?、賹1.0口置1,測(cè)試該口的電壓是否在2.5V以上;
?、趯1.0口置0,測(cè)試改口電壓是否約為0V。
是的話就是OK的,否則就要看看電源電壓、晶振、8952了。電源電壓是5+、-0.25V,且紋波一定要小。
十六,制作max232下載單片機(jī),工作電壓都正常,要外加晶振嘛?
當(dāng)然要加,如果沒(méi)有外加晶振,那么單片機(jī)的時(shí)鐘電路就沒(méi)有了,導(dǎo)致單片機(jī)串口就不能進(jìn)行數(shù)據(jù)傳輸了,最終這個(gè)下載器具就不能下載程序了。
十七,若89c52單片機(jī)使用外接晶振,應(yīng)如何設(shè)置?
晶振的兩個(gè)管腳各接一個(gè)20~30pf的電容后分別接入單片機(jī)的XTAL1和XTAL2,兩個(gè)電容的另一端并接后接地即可,不再需要任何設(shè)置
十八,晶振的原理,如何產(chǎn)生正弦信號(hào)的,詳細(xì)一點(diǎn),從電路方面分析?
晶體可以等效為一個(gè)電感,與里面的電容形成振蕩回路,能量從電感慢慢到電容,再?gòu)碾娙萋诫姼校芏鴱?fù)始形成振蕩。正半周是電容的充放電過(guò)程,負(fù)半周是電感的充放電過(guò)程。
十九,現(xiàn)在要用52單片機(jī)做一個(gè)交通燈電路。要求是紅燈,綠燈30s,黃燈3s。循環(huán)變化。那么外界晶振怎樣選擇?單指令周期多少比較合適?圖中外接的兩個(gè)電容的作用是什么?大小多少合適?
如果選擇晶振的話,那兩個(gè)電容值可以選擇:30加減10PF左右的(頻率在0~33MHZ之間);
如果選擇陶瓷晶振的話,電容值可以選擇:40加減10PF左右的(頻率在1.2~12MHZ)振蕩器應(yīng)盡量靠近電容。指令周期是可以算的,這個(gè)是有公式的!
二十,89c52單片機(jī) 晶振頻率才12兆,太小了,怎樣能改大晶振頻率?
外接18.432或者24MHz的晶振?;蛘邠Q4T的W77E58單片機(jī),這樣相當(dāng)于把工作頻率提高3倍?;蛘邠Q1T的DS89C4XX單片機(jī),這相當(dāng)于把工作頻率提高8倍!用1T的STC12C5A60S2單片機(jī)也有這樣的效果。
二十一,單片機(jī)不能正常工作,晶振問(wèn)題?如何去檢查晶振正常還是不正常?另外看到說(shuō)晶振跟兩個(gè)小電容要離得很近,幾乎都沒(méi)剪引腳(就是買(mǎi)回來(lái)多長(zhǎng)就多長(zhǎng))就插上去了,這個(gè)也有關(guān)系嗎?
用萬(wàn)用表測(cè)量單片機(jī)連接晶振的兩個(gè)引腳,正常起振的狀態(tài)下電壓大概比供電電壓的1/2略低一些,如果其中一個(gè)或全部引腳為電源電壓或零就表明沒(méi)起振。那個(gè)引腳長(zhǎng)些一般不會(huì)有什么影響,相比之下接地更關(guān)鍵些,兩個(gè)諧振電容接地端到單片機(jī)的電源地要盡量近些。