單片機在可靠的復位之后,才會從0000H地址開始有序的執(zhí)行應用程序。同時,復位電路也是容易受到外部噪 聲干擾的敏感部分之一。因此,復位電路應該具有兩個主要的功能:
1. 必須保證系統(tǒng)可靠的進行復位;
2. 必須具有一定的抗干擾的能力;
一、復位電路的RC選擇
復位電路應該具有上電復位和手動復位的功能。以MCS-51單片機為例,復位脈沖的高電平寬度必須大于2個機器周期,若系統(tǒng)選用6MHz晶振,則一個機器周期為2us,那么復位脈沖寬度最小應為4us。在實際應用系統(tǒng)中,考慮到電源的穩(wěn)定時間,參數(shù)漂移,晶振穩(wěn)定時間以及復位的可靠性等因素,必須有足夠的余量。圖1是利用RC充電原理實現(xiàn)上電復位的電路設計。實踐證明,上電瞬間RC電路充電,RESET引腳出現(xiàn)正脈沖。只要RESET端保持10ms以上的高電平,就能使單片機有效的復位。
圖 1
對于圖1-a中的電容C兩端的電壓(即復位信號)是一個時間的函數(shù):
u(t)=VCC*[1-exp(-t/RC)]
對于圖1-b中的電阻R兩端的電壓(即復位信號)也是一個時間的函數(shù):
u(t)=VCC*exp(-t/RC)
其中的VCC為電源電壓,RC為RC電路的時間常數(shù)=1K*22uF=22ms。有了這個公式,我們可以更方便的對以上電路進行透徹的分析。
圖1-a中非門的最小輸入高電平UIH=2.0v,當充電時間t=0.6RC時,則充電電壓u(t)=0.45VCC=0.45*5V,約等于2V,其中t即為復位時間。圖a中時間常數(shù)=22ms,則t=22ms*0.6=13ms。
二、復位電路的可靠性與抗干擾性分析
單片機復位電路端口的干擾主要來自電源和按鈕傳輸線串入的噪聲。這些噪聲雖然不會完全導致系統(tǒng)復位,但有時會破壞CPU內的程序狀態(tài)字的某些位的狀態(tài),對控制產生不良影響。
1.電路結構形式與抗干擾性能
以圖1為例,電源噪聲干擾過程示意圖如圖2種分別繪出了A點和B點的電壓擾動波形。
有圖2可以看出,圖2(a)實質上是個低通濾波環(huán)節(jié),對于脈沖寬度小于3RC的干擾有很好的抑制作用;圖2(b)實質上是個高通濾波環(huán)節(jié),對脈沖干擾沒有抑制作用。由此可見,對于圖1所示的兩種復位電路,a的抗干擾電源噪聲的能力要優(yōu)于b。
2. 復位按鈕傳輸線的影響
復位按鈕一般都是安裝在操作面板上,有較長的傳輸線,容易引起電磁感應干擾。按鈕傳輸線應采用雙絞線(具有抑制電磁感應干擾的性能),并遠離交流用電設備。在印刷電路板上,單片機復位端口處并聯(lián)0.01-0.1uF的高頻電容,或配置使密特電路,將提高對串入噪聲的抑制能力。
圖 2
3. 供電電源穩(wěn)定過程對復位的影響
單片機系統(tǒng)復位必須在CPU得到穩(wěn)定的電源后進行,一次上電復位電路RC參數(shù)設計應考慮穩(wěn)定的過渡時間。
為了克服直流電源穩(wěn)定過程對上電自動復位的影響,可采用如下措施:
(1) 將電源開關安裝在直流側,合上交流電源,待直流電壓穩(wěn)定后再合供電開關K,如圖3所示。
圖 3
(2) 采用帶電源檢測的復位電路,如圖4所示。合理配置電阻R3、R4的阻值和選擇穩(wěn)壓管DW的擊穿電壓,使VCC未達到額定值之前,三極管BG截止,VA點電平為低,電容器C不充電;當VCC穩(wěn)定之后,DW擊穿,三極管BG飽和導通,致使VA點位高電平,對電容C充電,RESET為高電平,單片機開始復位過程。當電容C上充電電壓達到2V時,RESET為低電平,復位結束。
圖 4
4. 并聯(lián)放電二極管的必要性
在圖1復位電路中,放電二極管D不可缺少。當電源斷電后,電容通過二極管D迅速放電,待電源恢復時便可實現(xiàn)可靠上電自動復位。若沒有二極管D,當電源因某種干擾瞬間斷電時,由于C不能迅速將電荷放掉,待電源恢復時,單片機不能上電自動復位,導致程序運行失控。電源瞬間斷電干擾會導致程序停止正常運行,形成程序“亂飛”或進入“死循環(huán)”。若斷電干擾脈沖較寬,可以使RC迅速放電,待電源恢復后通過上電自動復位,使程序進入正常狀態(tài);若斷電干擾脈沖較窄,斷電瞬間RC不能充分放電,則電源恢復后系統(tǒng)不能上電自動復位。
三、I/O接口芯片的延時復位
在單片機系統(tǒng)中,某些I/O接口芯片的復位端口與單片機的復位端口往往連在一起,即統(tǒng)一復位。接口芯片由于生產廠家不同,復位時間也稍有不同;復位線較長而又較大的分布電容,導致這些接口的復位過程滯后于單片機。工程實踐表明,當單片機復位結束立即對這些I/O芯片進行初始化操作時,往往導致失敗。因此,當單片機進入0000H地址后,首先執(zhí)行1-10ms的軟件延時,然后再對這些I/O芯片進行初始化。
擴展閱讀:單片機編程學習