【文章內(nèi)容簡(jiǎn)介】
寄生電容,更好的保證振蕩器穩(wěn)定可靠的工作,諧振器和電容應(yīng)盡可能安裝的與單片機(jī)芯片靠近。內(nèi)部時(shí)鐘發(fā)生器實(shí)質(zhì)上是一個(gè)二分頻的觸發(fā)器,其輸出信號(hào)是單片機(jī)工作所需的時(shí)鐘信號(hào)。外部時(shí)鐘方式 外部時(shí)鐘方式是采用外部振蕩器,外部振蕩信號(hào)由XTAL2端接入后直接送至內(nèi)部時(shí)鐘發(fā)生器。輸入端XTAL1應(yīng)接地,由于XTAL2端的邏輯電平不是TTL的,故建議外接一個(gè)上拉電阻。 一般情況下,單片機(jī)時(shí)鐘輸入均采用內(nèi)部時(shí)鐘方式,外接一個(gè)震蕩電路,本設(shè)計(jì)采用內(nèi)部時(shí)鐘方式,晶振采用12MHz,其電路如圖39。 圖39 AT89C2051時(shí)鐘電路 獨(dú)立式按鍵結(jié)構(gòu)獨(dú)立式按鍵是指直接用I/O線構(gòu)成的單個(gè)按鍵電路,每個(gè)獨(dú)立式按鍵占有一根I/O口線,每根I/O口線上的按鍵的工作狀態(tài)不會(huì)影響其他I/O口線的工作狀態(tài),其結(jié)構(gòu)簡(jiǎn)單,但I(xiàn)/O口線浪費(fèi)較大。獨(dú)立式按鍵配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,上拉電阻保證了按鍵斷開時(shí),I/O口線有確定的高電平,其電路原理圖如圖310。 圖310 獨(dú)立式按鍵電路 掉電保護(hù)和低功耗的設(shè)計(jì) 低功耗的實(shí)現(xiàn)方法AT89C2051單片機(jī)的CPU有兩種節(jié)電工作方式即空閑方式和掉電方式,遙控器采用了空閑節(jié)電方式。當(dāng)CPU執(zhí)行完IDL=1(=1)指令后,系統(tǒng)進(jìn)入空閑工作方式,這時(shí)內(nèi)部時(shí)鐘不向CPU提供,而只供給中斷、串行口、定時(shí)器部分。遙控器退出低功耗空閑方式電路由與門來(lái)實(shí)現(xiàn)。當(dāng)有鍵按下時(shí),由與門觸發(fā)外部中斷1發(fā)生中斷,單片機(jī)退出空閑工作方式,進(jìn)入鍵盤和紅外發(fā)射程序,結(jié)束后又進(jìn)入低功耗空閑方式待機(jī)。使用過程中單片機(jī)基本上都處于空閑工作方式,功耗相當(dāng)?shù)?,從而為使用電池電源提供保障?掉電保護(hù)和低功耗的設(shè)計(jì)1.掉電保護(hù)在單片機(jī)工作時(shí),供電電源如果發(fā)生停電或瞬間停電,將會(huì)使單片機(jī)停止工作。待電源恢復(fù)時(shí),單片機(jī)重新進(jìn)入復(fù)位狀態(tài),停電前RAM中的數(shù)據(jù)全部丟失,這種現(xiàn)象對(duì)于一些重要的單片機(jī)應(yīng)用系統(tǒng)是不允許的。在這種情況下,需要進(jìn)行掉電保護(hù)處理。掉電保護(hù)具體操作過程如下:?jiǎn)纹瑱C(jī)應(yīng)用系統(tǒng)的電壓檢測(cè)電路檢測(cè)到電源電壓下降時(shí),觸發(fā)外部中斷INT0或INT1,在中斷服務(wù)子程序中將外部RAM中的有用數(shù)據(jù)送入內(nèi)部RAM保存。因單片機(jī)電源入口的濾波電容的儲(chǔ)能作用,可以有足夠的時(shí)間來(lái)完成中斷操作。備用電源自切換電路屬于單片機(jī)內(nèi)部電路。它由兩個(gè)二極管組成,當(dāng)電源電壓高于VPD引腳的備用電源電壓時(shí),VD1導(dǎo)通,VD2截止,單片機(jī)由電源供電;當(dāng)電源電壓降到比備用電源電壓低時(shí),二極管VD1截止,VD2導(dǎo)通,單片機(jī)由備用電源供電。備用電源只為單片機(jī)內(nèi)部RAM和專用寄存器提供維持電流,這時(shí)單片機(jī)外部的全部電路因停電而停止工作,時(shí)鐘電路也停止工作,CPU因無(wú)時(shí)鐘也不工作。當(dāng)電源恢復(fù)時(shí),備用電源還會(huì)繼續(xù)供電一段時(shí)間,大約10ms,以確保外部電路達(dá)到穩(wěn)定狀態(tài)。在結(jié)束掉電保護(hù)狀態(tài)時(shí),首要的工作是將被保護(hù)的數(shù)據(jù)從內(nèi)部RAM中恢復(fù)過來(lái)。當(dāng)用戶檢測(cè)到一個(gè)掉電保護(hù)電路時(shí),立即通過外部中斷輸入線INT0來(lái)中斷單片機(jī)現(xiàn)行操作。外部中斷0服務(wù)程序?qū)⒂嘘P(guān)數(shù)據(jù)信息送入片內(nèi)RAM保存。它輸出的脈寬取決于R、C的數(shù)值及VCC是否以掉電。如果當(dāng)單穩(wěn)態(tài)定時(shí)輸出后,若VCC仍然存在,這是一個(gè)假掉電報(bào)警,并從復(fù)位開始重新操作;若VCC已掉電,則斷電期間由單穩(wěn)態(tài)電路給RESET/VPD供電,維持片內(nèi)RAM處于“餓電流”供電狀態(tài)保存信息,一直維持到VCC恢復(fù)為止。80C2051的掉電保護(hù)過程則不同。當(dāng)電壓檢測(cè)電路檢測(cè)到電源電壓降低時(shí),也觸發(fā)外部中斷,在中斷服務(wù)子程序中,除了要將外部RAM中的有用數(shù)據(jù)保存以外,還要將特殊功能寄存器的有用內(nèi)容保護(hù)起來(lái),然后對(duì)電源控制寄存器PCON進(jìn)行設(shè)置。PCON寄存器的各位定義如表31。表31 PCON寄存器的各位定義D7 D6 D5 D4 D3 D2 D1 D0SMOD———GF1GF0PDIDL其中,SMOD是波特率倍增位,在串行通信中使用。GFGF0:通用標(biāo)志,由軟件置位、復(fù)位。PD:掉電方式控制位,PD=1,則進(jìn)入掉電方式。IDL:待機(jī)方式控制位,IDL=1,則進(jìn)入待機(jī)方式。由軟件將PD置1,就可以使單片機(jī)進(jìn)入掉電保護(hù)狀態(tài)。這時(shí),單片機(jī)的一切工作都停止,只有內(nèi)部RAM和專用寄存器的內(nèi)容被保存。掉電保護(hù)時(shí)的備用電源是通過VCC引腳接入的。當(dāng)電源恢復(fù)正常后,系統(tǒng)要維持10ms的恢復(fù)時(shí)間后才能退出掉電保護(hù)狀態(tài),復(fù)位操作將重新定義專用寄存器,但內(nèi)部RAM的內(nèi)容不變,可將被保護(hù)的內(nèi)容恢復(fù)。如圖311,為掉電保護(hù)電路。圖311 掉電保護(hù)電路2. 低功耗設(shè)計(jì)在很多情況下,單片機(jī)要工作在供電困難的場(chǎng)合,如野外、井下和空中,對(duì)于便攜式儀器要求用電池供電,這時(shí)都希望單片機(jī)應(yīng)用系統(tǒng)能低供耗運(yùn)行。以CMOS工藝制造的80C31/80C51/87C51型單片機(jī)提供了空閑工作方式。空閑工作方式(通常也指待機(jī)工作方式)是指CPU在不需要執(zhí)行程序時(shí)停止工作,以取代不停的執(zhí)行空操作或原地踏步等待操作,達(dá)到減小功耗的目的。空閑工作方式是通過設(shè)置電源控制寄存器PCON中的IDL位來(lái)實(shí)現(xiàn)的。用軟件將IDL位置1,系統(tǒng)進(jìn)入空閑工作方式。這時(shí),送往CPU的時(shí)鐘被封鎖,CPU停止工作,但中斷控制電路、定時(shí)/計(jì)數(shù)器和串行接口繼續(xù)工作,CPU內(nèi)部狀態(tài)如堆棧指針SP、程序計(jì)數(shù)器PC、程序狀態(tài)寄存器PSW、累加器ACC及其他寄存器的狀態(tài)被完全保留下來(lái)。在空閑工作方式下,80C51消耗的電流由正常的24mA將為3mA。單片機(jī)退出空閑狀態(tài)有如下兩種方法。第一種是中斷退出。由于空閑方式下,中斷系統(tǒng)還在工作,所以任何中斷的響應(yīng)都可以使IDL位由硬件清零,而退出空閑方式下,單片機(jī)就進(jìn)入中斷服務(wù)程序。第二種是硬件復(fù)位退出。復(fù)位時(shí),各個(gè)專用寄存器都恢復(fù)默認(rèn)狀態(tài),電源控制寄存器PCON也不例外,復(fù)位使IDL清零,退出空閑工作方式。MCS—51的掉電保護(hù)也是一種節(jié)電工作方式,它和空閑工作方式一起構(gòu)成了低功耗工作方式。一旦用戶檢測(cè)到掉電發(fā)生,在VCC下降之前寫一個(gè)字節(jié)到PCON,使 PD=1,單片機(jī)進(jìn)入掉電方式。在這種方式下,片內(nèi)震蕩器被封鎖,一切功能都停止,只有片內(nèi)RAM00H—7FH單元的內(nèi)容被保留。在掉電方式下,VCC可降至2V,使片內(nèi)RAM處于50微安左右的“餓電流”供電狀態(tài),以最小的耗電保存信息,VCC恢復(fù)正常之前,不可進(jìn)行復(fù)位;當(dāng)VCC正常后,硬件復(fù)位10ms即能使單片機(jī)退出掉電方式。在本設(shè)計(jì)中,退出空閑工作方式采用中斷的方法。當(dāng)遙控鍵盤上的人任一個(gè)按鍵按下以后,與門輸出即為低電平,觸發(fā)INT1引腳,外部中斷1響應(yīng),使IDL位清零,退出空閑工作方式,恢復(fù)正常狀態(tài)。其硬件電路如圖312。 圖312 低功耗控制電路 系統(tǒng)完整電路設(shè)計(jì)圖 紅外發(fā)射電路圖: 如圖313,為紅外發(fā)射電路圖: 圖313 紅外發(fā)射電路圖 紅外接收電路圖: 如圖314,為紅外接收電路圖: 圖314 紅外接收電路圖第4章 系統(tǒng)軟件設(shè)計(jì) 遙控發(fā)射器程序設(shè)計(jì)此設(shè)計(jì)是一個(gè)紅外遙控發(fā)射器,設(shè)計(jì)目的就是根據(jù)按鍵的不同,發(fā)射出不同的紅外信號(hào)。傳統(tǒng)的遙控器都是采用遙控發(fā)射專用集成芯片,由于這些芯片的功能鍵數(shù)及功能受到特定的限制,只適合于某一專用電器產(chǎn)品的應(yīng)用,應(yīng)用范圍受到限制。本設(shè)計(jì)采用單片機(jī)制作,采用編程的方法,由于編程具有靈活性,故應(yīng)用范圍較廣,操作碼可隨意設(shè)定。本設(shè)計(jì)采用的是按紅外發(fā)射頻率的不同,來(lái)識(shí)別不同的按鍵。操作鍵設(shè)定為8個(gè),K0至K7。對(duì)應(yīng)的紅外發(fā)射頻率分別為300Hz、600 Hz、900 Hz、1200 Hz、1500 Hz、1800 Hz、2100 Hz、2400 Hz。發(fā)射時(shí)間確定為一個(gè)定值,由定時(shí)器1來(lái)定時(shí),時(shí)間為100ms,當(dāng)100ms時(shí)間到定時(shí)器1發(fā)生中斷,停止計(jì)時(shí),紅外光也停止發(fā)射。由定時(shí)/計(jì)數(shù)器0來(lái)控制發(fā)射頻率,T0作為定時(shí)器,當(dāng)T0定時(shí)時(shí)間到,然后T0重新工作定時(shí)值與前相同,如此往復(fù),紅外信號(hào)就按一定的時(shí)間間隔發(fā)射出去。通過設(shè)定T0的定時(shí)時(shí)間來(lái)控制紅外信號(hào)的發(fā)射頻率。平時(shí)遙控器工作在空閑方式下,當(dāng)有鍵按下時(shí),由外部中斷1產(chǎn)生中斷,使CPU回到工作狀態(tài),待執(zhí)行完操作后又回到低功耗才狀態(tài)。主程序主要由初始化程序、鍵盤掃描程序,定時(shí)器0中斷服務(wù)程序、定時(shí)器1中斷服務(wù)程序,外部中斷1中斷服務(wù)程序組成。 本電路采用的是軟件按鍵消抖的方法,就是調(diào)用一個(gè)延時(shí)子程序,延時(shí)時(shí)間設(shè)定為6ms。如圖51,為遙控發(fā)射器主程序流程圖,當(dāng)K2至K7鍵按下時(shí),執(zhí)行的程序類似于按下K1鍵所執(zhí)行的程序。START調(diào)初始化程序進(jìn)入低功耗節(jié)電方式外部中斷1中斷CPU退出低功耗方式T0時(shí)間到T1時(shí)間到關(guān)T0、T1 調(diào)延時(shí)程序K1鍵是否按下K2鍵是否按下K1鍵是否松開啟動(dòng)定時(shí)器T1定時(shí)50msK3鍵是否按下調(diào)延時(shí)程序 N N N … Y Y Y .… … … N YN N Y Y圖51 遙控發(fā)射器主程序流程圖遙控發(fā)射器程序如下:K0 BIT K1 BIT K2 BIT