智能紅外遙控開(kāi)關(guān)設(shè)計(jì)_第1頁(yè)
智能紅外遙控開(kāi)關(guān)設(shè)計(jì)_第2頁(yè)
智能紅外遙控開(kāi)關(guān)設(shè)計(jì)_第3頁(yè)
智能紅外遙控開(kāi)關(guān)設(shè)計(jì)_第4頁(yè)
智能紅外遙控開(kāi)關(guān)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

MB

隨著近年來(lái)我國(guó)科技的發(fā)展,家用電器在我國(guó)的發(fā)展極為迅猛,科技在為我

們帶來(lái)方便的同時(shí)也在改變我們的生活方式,傳統(tǒng)意義上的電器開(kāi)關(guān)早已跟不上

了人們對(duì)智能化發(fā)展的向往與追求,跟不上市場(chǎng)對(duì)于智能化開(kāi)關(guān)應(yīng)運(yùn)而生。現(xiàn)今

的家用電器普遍采用紅外遙控方式,這也為一個(gè)遙控器可以控制多個(gè)電器開(kāi)關(guān)提

供了可能。而在工業(yè)環(huán)境中,紅外遙控不僅電路結(jié)構(gòu)簡(jiǎn)單,還可以安全地對(duì)目標(biāo)

進(jìn)行遙控,從而避免在對(duì)人體有高度危害的有毒氣體等環(huán)境中進(jìn)行作業(yè),減少工

作中的成本,降低職業(yè)病的產(chǎn)生概率。紅外線的編解碼電路十分簡(jiǎn)單,完全可以

進(jìn)行多路控制,而開(kāi)關(guān)之間互不干擾,運(yùn)用c語(yǔ)言進(jìn)行單片機(jī)編程,編碼靈活,

硬件價(jià)格便宜,還可以多路遙控,這使得紅外線在室內(nèi)近距離遙控中成為能達(dá)到

同樣功能的傳輸方法中的佼佼者,在合適的環(huán)境中,更多的人會(huì)選擇紅外遙控。

紅外線遙控的發(fā)展十分迅速,人類應(yīng)用紅外線設(shè)備也已經(jīng)很久了,在如今的

電子科技高度發(fā)達(dá)的時(shí)代,紅外線不能像無(wú)線電遙控一樣具有強(qiáng)大的穿透特性,

也不能向過(guò)遠(yuǎn)的地方傳輸,與同類的遙控產(chǎn)品相比可以說(shuō)是非常劣質(zhì)了,但我們

為什么還要用紅外線遙控呢?紅外遙控又憑什么在如今的時(shí)代走進(jìn)千家萬(wàn)戶?

由于近紅外設(shè)備制作簡(jiǎn)單,單片機(jī)操控非常靈活,造價(jià)也很便宜,最總要的是它

非常適用于在室內(nèi)進(jìn)行短距離遙控,也不用向無(wú)線電遙控一樣,每套設(shè)備都有自

己固定的編碼用來(lái)互相識(shí)別,紅外線不能穿越障礙物,這意味著紅外遙控器不會(huì)

因?yàn)榫哂邢嗤念l率而穿墻遙控,所以對(duì)于室內(nèi)進(jìn)行遙控設(shè)備是非常適合的。由

于紅外線在自然界極為普遍,所以我們也不用怕它會(huì)對(duì)人體的健康有所影響,不

可見(jiàn)光對(duì)周圍的空間也不會(huì)造成光污染。

1本設(shè)計(jì)方案思路

所謂智能紅外遙控開(kāi)關(guān),就是由用戶任意指定一個(gè)家用電器的遙控器(例如

家里的電視遙控器)的按鍵作為智能紅外遙控開(kāi)關(guān)的控制鍵。操作時(shí),首先將電

源開(kāi)關(guān)打開(kāi),第二步手動(dòng)復(fù)位后就可以打開(kāi)“取碼”按鍵了,同時(shí)激發(fā)遙控器的

控制鍵,此時(shí),紅外遙控器向紅外遙控開(kāi)關(guān)發(fā)送紅外編碼信號(hào),家用紅外遙控器

發(fā)射的特定編碼信息經(jīng)過(guò)智能紅外遙控開(kāi)關(guān)的紅外接收頭接收后,通過(guò)放大整形,

輸入到遙控開(kāi)關(guān)的STCS9c51RC單片機(jī)芯片中,這個(gè)MCU通過(guò)內(nèi)置的EEPROM記

錄了遙控器發(fā)出的指定按鍵的信號(hào)編碼。接著,MCU芯片發(fā)出微電流指令,控制

智能燈外遙控開(kāi)關(guān)中的繼電器模塊導(dǎo)通或斷開(kāi),從而達(dá)到控制輸出電壓的通斷.

控制電路通斷的目的。

2基本原理

紅外線為一種無(wú)線控制技術(shù),其不輕易損耗編碼信號(hào),硬件價(jià)格低,具有

反碼保證信息不缺失,易實(shí)現(xiàn)這些卓越的優(yōu)點(diǎn),紇外線的波譜范圍還要在紅光的

前面,為O.OlunTlOOOinn,而對(duì)于我們來(lái)說(shuō)宇宙中的不可見(jiàn)光自然也包括了紅外

線。紅外光按波長(zhǎng)一共分為三類,本設(shè)計(jì)需要研究的只是可在室內(nèi)傳輸?shù)慕v外,

而遠(yuǎn)紅外在自然界中極為普遍,不管是太陽(yáng)還是石頭都會(huì)釋放,而中紅外常用來(lái)

制作激光器等光電材料。本設(shè)計(jì)由于目的是遙控室內(nèi)家用電器的電源開(kāi)關(guān),屬于

近紅外設(shè)備,波長(zhǎng)為0.76明1.5M。,因?yàn)榧矣眠b控器的紅外線發(fā)射器與智能

紅外遙控開(kāi)關(guān)紅外一體化接收頭在近紅外光波長(zhǎng)范圍內(nèi),二者的光譜正好相符,

兩者間匹配度高,所以使用近紅外作為編碼發(fā)射的光源,提高了信息的傳輸有效

性及可靠性。

2.1電路原理

現(xiàn)今的紅外遙控系統(tǒng)一般分為兩部分,第一部分是紅外發(fā)射電路,發(fā)射電路

是一個(gè)遙控器,他的內(nèi)部程序主要是一個(gè)單片機(jī)鍵盤矩陣,還有調(diào)制編碼的電路,

紅外發(fā)光二極管,鍵盤矩陣用來(lái)控制需要發(fā)射的紅外編碼,調(diào)制后的編碼遙控信

號(hào)才能用于傳輸信息。而第二部分紅外接收電路則是由紅外接收二極管,單片機(jī)

芯片,復(fù)位電路,晶振等組合成的,它們將紅外發(fā)光二極管發(fā)出的紅外編碼轉(zhuǎn)換

為對(duì)應(yīng)的高低電平信號(hào),再通過(guò)后置放大器將電平信號(hào)放大。

發(fā)射電路一般由按鍵矩陣,編碼IC芯片、放大電路,紅外發(fā)光二極管等幾

部分組成。目前,人們使用的遙控器發(fā)送紅外遙控編碼時(shí),就是把從零到九十個(gè)

數(shù)字的控制鍵所編寫(xiě)的指令和由二進(jìn)制編寫(xiě)的32位用戶碼和鍵碼以及他們的反

碼序列,加載在32-56kHz頻率的載波上,三極管放大后遙控器通過(guò)紅外發(fā)射管

將由鍵盤矩陣選擇,編碼電路調(diào)制的數(shù)據(jù)發(fā)送出去,完成由電調(diào)制編碼向光信號(hào)

轉(zhuǎn)化的過(guò)程。

接收電路一般由光、電信號(hào)的轉(zhuǎn)換部分、放大電路、解調(diào)制電路、解碼電路、

等幾部分組成。光電轉(zhuǎn)換部分將遙控發(fā)射電路發(fā)出的經(jīng)過(guò)調(diào)制的原始信號(hào)恢復(fù)后,

再經(jīng)由二極管電路進(jìn)行放大,發(fā)送到解碼電路,原始信號(hào)再經(jīng)過(guò)單片機(jī)芯片中的

程序最終將一段紅外信號(hào)解調(diào)成了一列二進(jìn)制數(shù)據(jù)。單片機(jī)中的38譯碼器IC

又將二進(jìn)制數(shù)據(jù)譯碼,將三位的二進(jìn)制數(shù)最終變?yōu)榘宋?,最后由繼電器電路來(lái)執(zhí)

行遙控器所發(fā)送的各種命令控制。本設(shè)計(jì)為智能紅外遙控開(kāi)關(guān)設(shè)計(jì),所以主要是

針對(duì)紅外接收電路的研究。

系統(tǒng)框圖如圖2.1所示:

圖2T系統(tǒng)框架原理圖

Figure2-1Systemframeworkschematic

2.2紅外遙控編碼原理

目前處于市場(chǎng)應(yīng)用中的多種紅外遙控器的原理都大同小異,區(qū)別只是在于各

系統(tǒng)的信號(hào)編碼方式不同。而如今被人們青睞的兩種,其一是NECProtocol的

PWM(脈沖寬度調(diào)制)標(biāo)準(zhǔn),一種是PhilipsRC-5Protocol的PPM(脈沖位置

調(diào)制)標(biāo)準(zhǔn)。

455KH%之379KHz?38KHz

(2-1)

由此,NEC脈沖寬度調(diào)制標(biāo)準(zhǔn)格式特征:紅外信號(hào)載波頻率為38kHz;

NEC協(xié)議編碼簡(jiǎn)介:NEC協(xié)議格式總共包括六部分,第一部分為引導(dǎo)碼,組

成它的是一個(gè)高電平和一個(gè)低電平,當(dāng)我們將遙控器上指定的控制鍵按下時(shí),紅

外遙控器將會(huì)發(fā)送一個(gè)高低電平組成的全碼,這個(gè)就是引導(dǎo)碼了,之后紅外遙控

器會(huì)發(fā)送一個(gè)8位數(shù)據(jù)碼,這就是第二部分的用戶碼,接著又有8位數(shù)據(jù)碼,這

是第三部分的用戶碼或者用戶碼的反碼,主要由紅外遙控器的生產(chǎn)廠家決定。第

四部分為按鍵鍵碼,使用紅外遙控器控制智能紅外遙控開(kāi)關(guān)時(shí)主要就看這一字節(jié),

這是作為同一個(gè)遙控器用不同按鍵控制不同的開(kāi)關(guān)的關(guān)鍵所在。第五部分是按鍵

碼的反碼,這個(gè)可以用來(lái)對(duì)數(shù)據(jù)進(jìn)行糾錯(cuò),第六部分是最后一位,它是一個(gè)停止

位,主要作用就是對(duì)碼的隔離。當(dāng)松開(kāi)遙控器的按鍵時(shí),數(shù)據(jù)碼即停止發(fā)射。如

此六個(gè)部分加上后面的延時(shí)時(shí)間總共為108ms。而在按一次鍵的有限幾秒時(shí)間里,

會(huì)出現(xiàn)許多個(gè)由引導(dǎo)碼帶領(lǐng)的四個(gè)字節(jié)加上一段延時(shí)時(shí)間,這樣,兩個(gè)引導(dǎo)碼的

高電平上升沿中間的數(shù)據(jù)碼加延時(shí)都是108ms。如圖所示即為兩個(gè)完整的NEC編

碼。

圖2-3兩個(gè)完整的NEC編碼脈沖圖

Figure2-3TwocompleteNECcodedpulsediagrams

如圖所示,當(dāng)正常發(fā)碼時(shí),一次完整的紅外線發(fā)送紅外編碼的過(guò)程為:13.5ms

的引導(dǎo)碼+低八位的用戶編碼+高八位的用戶編碼或者它的反碼+八位的鍵數(shù)據(jù)碼

+八位的鍵數(shù)據(jù)反碼+一位的停止位隔離碼,最后再加上延時(shí),其中,引導(dǎo)碼為

91ns+4.5ms,是一個(gè)具有完整周期的高低電平。如圖:

圖2-4單個(gè)NEC編碼脈沖圖

Figure2-4SingleNECcodedpifsediagram

NEC編碼格式中的引導(dǎo)碼是一個(gè)9ms的高電平載波加一個(gè)4.5ms的時(shí)間空閑

的組合,它標(biāo)志著引導(dǎo)碼之后即為紅外編碼的遙控?cái)?shù)據(jù),而我們不同的遙控器的

區(qū)別就顯現(xiàn)在這里,這樣當(dāng)接收系統(tǒng)是由微處理器構(gòu)成的時(shí)候,能更有效的處理

碼的接受與檢測(cè)及其他各項(xiàng)控制之間的時(shí)序關(guān)系。

紅外編碼中關(guān)于“0”,“1”的表示方法如下圖2-5所示:

?

—陽(yáng)陽(yáng)皿I叫

91115

13.5ms

圖2-5單個(gè)NEC編碼脈沖中“0”,“1”表示圖

Figure2-5"0"and"1"inasingleNECcodedpulse

在紅外遙控器中,這些以脈沖寬度調(diào)制進(jìn)行編碼的數(shù)據(jù)碼,二進(jìn)制的數(shù)據(jù)“0”

在調(diào)制后表現(xiàn)為時(shí)間為0.565ms的高電平和延時(shí)時(shí)間為0.56ms的0電平時(shí)間空

閑,合在一起,就是一個(gè)完整的,周期為L(zhǎng)125ms的高低電平,它代表的就是數(shù)

據(jù)“0”;二進(jìn)制數(shù)據(jù)“1”與數(shù)據(jù)“0”略有不同,但就是這一點(diǎn)時(shí)間不一樣決定

了他到底是“0”還是“1",二進(jìn)制數(shù)據(jù)“1”在原始信號(hào)與載波信號(hào)相互組合調(diào)

制后,表現(xiàn)為脈沖寬度為0.565ms的高電平,它的延時(shí)空閑時(shí)間較長(zhǎng),為1.685ms

表現(xiàn)為0電平,高低電平組合在一起為2.25ms,比數(shù)據(jù)“0”的時(shí)間長(zhǎng)了不少,

這是紅外解碼時(shí)需要注意的事情。波形如圖2-6所示:

1

圖2-6遙控編碼的“0”和“1”

Figure2-6"0"and"1"ofremotecontrolcode

c——[二:mDec—

弓與瑪?shù)?位用戶編碼「高8位用戶編碼一r8位犍致柜碼殮愜數(shù)盛碼為

圖2-7遙控器發(fā)射的32位碼組圖

Figure2-732-bitcodegroupdiagramtransmittedby(heremotecontroller

原始信號(hào)一|||___

38K載波

調(diào)制后信號(hào)—!■■■■uni

圖2-8原始信號(hào),載波與調(diào)制信號(hào)波形圖

Figure2-8Originalsignal,carrierandmodulationsignalwaveform

圖2-8中的原始信號(hào)就是我們要發(fā)送的編碼信號(hào),原始信號(hào)和38KHz

的載波信號(hào)都是占平比為1/3的方波,以低電平來(lái)表示一個(gè)數(shù)據(jù)“0”位高電平

表示數(shù)據(jù)“1”位,如圖,38K載波相對(duì)于高低電平的時(shí)間長(zhǎng)度來(lái)說(shuō)要短得多,

這就是載波的高頻特性,將原始信號(hào)與載波信號(hào)進(jìn)行混合調(diào)制后,我們就得到了

最終可以承載信息并被發(fā)射出去的已調(diào)信號(hào)了。原始信號(hào)就是加載了我們想要傳

達(dá)信息的信號(hào)編碼,當(dāng)信號(hào)是數(shù)據(jù)“0”時(shí),也就是原始信號(hào)中的低電平,我們

就在數(shù)據(jù)“0”在原始信號(hào)低電平的時(shí)間段里發(fā)射出38KHz的載波,而當(dāng)原始信

號(hào)數(shù)據(jù)為“1”的時(shí)候,表現(xiàn)為高電平,紅外遙控器不發(fā)送任何信號(hào),載波頻率

為0。這就是調(diào)制紅外線編碼信號(hào)的原理過(guò)程。

2.3紅外遙控解碼原理

本設(shè)計(jì)所選為紅外一體化接收頭,可以接收紅外信號(hào),將其轉(zhuǎn)換為電信號(hào),

并放大電信號(hào),解調(diào)制后用TTL電平表示的高低電平由紅外一體化接收頭的脈沖

信號(hào)輸出引腳(OUT)輸出,OUT引腳與STC89c51單片機(jī)中的INTO引腳相連接,

單片機(jī)RC芯片通過(guò)紅外接收解碼程序?qū)⑵渥R(shí)別,并將編碼數(shù)據(jù)發(fā)送到主程序中

處理,或者存入FLISH程序存儲(chǔ)空間中,并執(zhí)行相關(guān)控制程序。紅外一體化接收

頭我們?cè)诤附訒r(shí)可以發(fā)現(xiàn)其共有3個(gè)引腳:VCC接+5V電源的引腳1,接到公

共地的GND引腳2,還有1個(gè)OUT脈沖信號(hào)輸出引腳,紅外線編碼轉(zhuǎn)換成電信號(hào)

之后,就是從這個(gè)引腳向單片機(jī)發(fā)送NEC格式編碼的。紅外一體化接收頭硬件連

接非常簡(jiǎn)單,轉(zhuǎn)換編照的質(zhì)量也很可靠,很少有錯(cuò)誤。若紅外一體化接收頭發(fā)現(xiàn)

有38K的紅外編碼,就會(huì)在OUT這個(gè)脈沖信號(hào)輸出引腳輸出低電平,當(dāng)沒(méi)有38K

的時(shí)候,意味著這是信號(hào)間的間隔,而OUT引腳就會(huì)輸出高電平。這樣一夾,

紅外信號(hào)編解碼時(shí)的電平就會(huì)發(fā)生變化,沒(méi)有信號(hào)變成了高電平,載波也正好反

了過(guò)來(lái)變成了低電平,但脈沖寬度還是不變的,引導(dǎo)碼也由9nls的載波+4.5ms

的空閑變成了9ms的低電平+4.5ms的高電平了。

將紅外遙控港上的控制按鍵點(diǎn)擊36ms后,遙控器中的晶振激活芯片,會(huì)向

紅外一體化接收頭發(fā)射一個(gè)同步脈沖信號(hào),這就是NEC紅外傳輸協(xié)議中的引導(dǎo)碼,

引導(dǎo)碼之后即為總共四個(gè)字節(jié)36位的數(shù)據(jù)碼了。

bitH0

056ms056ms

1.125ms2.25ms

圖2-9遙控解碼時(shí)的“()”和“1”表示圖

Figure2-9"0"and"1"representationsduringremotecontroldecoding

用戶碼用戶碼反碼鍵碼鍵碼反碼

圖2-10遙控解碼時(shí)的NEC編碼序列圖

Figure2-10NECcodesequencediagramduringremotecontroldecoding

圖2T0為接收到的編碼,用邏輯分析儀顯示,智能紅外遙控開(kāi)關(guān)接收到的

先是從0ms持續(xù)到9ms的低電平載波,從這里我們可以看出,這個(gè)低電平已經(jīng)

是處于引導(dǎo)碼的范圍了,而后面緊跟著又加上了4.5ms的高電平,而這一低一

高的兩個(gè)電平最終才組成了完整的引導(dǎo)碼,到了這里我們也已經(jīng)可以看出來(lái)了,

紅外遙控器發(fā)過(guò)來(lái)的引導(dǎo)碼竟然已經(jīng)將相位反轉(zhuǎn)了,這里就是紅外一體化接收頭

這個(gè)硬件的作用了,紅外光波經(jīng)過(guò)放大,檢波,限幅等操作,相位正好顛倒了。

引導(dǎo)碼的高電平變成了低電平,4.5ms的時(shí)間空閑變成了高電平。數(shù)據(jù)碼的一個(gè)

字節(jié)從左到右依次為D0到D7,其中,第一個(gè)字節(jié)是8位二進(jìn)制表示的數(shù)據(jù),

560us的低電平加560us的高電平,根據(jù)圖2-9所示,0.56ms的低電平加0.56ms

的高電平組成了數(shù)據(jù)“0”也就0x00,第二個(gè)字節(jié)也是8位二進(jìn)制數(shù)據(jù),它代表

著NEC紅外編碼格式中的用戶碼或它的反碼,主要由遙控器生產(chǎn)廠家決定,它的

構(gòu)成是560us的低電立載波加1.68ms的高電平空閑,而數(shù)據(jù)位“1”正是由

0.56ms的低電平加上1.68ms的高電平組成。所以第二個(gè)字節(jié)可以看出來(lái)是OxFF。

而位于引導(dǎo)碼之后按鍵鍵碼之前的這兩個(gè)字節(jié)就是用戶碼和用戶碼的反碼。從圖

中可以看到,作為第三個(gè)字節(jié)的按鍵的鍵碼翻譯成二進(jìn)制數(shù)據(jù)則是0x0C,所以

它的反碼就是0xF3,按鍵反碼的作用是將傳輸后的錯(cuò)誤鍵碼糾正過(guò)來(lái),并作為

一個(gè)提醒。四個(gè)字節(jié)后面還有一個(gè)560ns載波停止位,這個(gè)停止位是為了隔離

兩端紅外光波編碼的,后面還有一點(diǎn)延時(shí)。在我們用遙控器進(jìn)行遙控時(shí),智能紅

外遙控開(kāi)關(guān)會(huì)區(qū)分不同的按鍵,而在程序內(nèi)在的表現(xiàn)就是對(duì)鍵碼及其反碼的區(qū)分,

而他們的用戶碼是相同的,這個(gè)上文中也有解釋。這樣我就可以通過(guò)單片機(jī)狗程

序,把當(dāng)前的按鍵的鍵碼給解出來(lái)。

紅外編碼信號(hào)經(jīng)過(guò)紅外遙控接收頭解調(diào)后,會(huì)從OUT引腳向單片機(jī)輸送二進(jìn)

制碼的編碼,這些二進(jìn)制編碼中的信息就是控制智能紅外遙控開(kāi)關(guān)的編碼指令,

在其中包含著控制鍵的需要接收端來(lái)進(jìn)行識(shí)別的編碼信息。但單片機(jī)芯片MCU

還不能將它識(shí)別,所以,在單片機(jī)的程序中還有一個(gè)解碼子程序,主要是通過(guò)對(duì)

數(shù)據(jù)”0和數(shù)據(jù)“1”的高電平持續(xù)時(shí)間來(lái)判斷的。

解碼最重要的就是如何將“0”和“1”識(shí)別出來(lái)。而在采用脈沖寬度調(diào)制的

串行碼中,“0”和“:”起始時(shí)的低電平脈沖寬度是相同的都是().56m*而不

同的則是“0”的高電平脈沖寬度為0.56ms而“1”的高電平脈沖寬度為1.68ms,

所以如果相同的低電平后面接的高電平脈寬為0.56ms,則這一位是“0”若后接

的高電平為1.68ms則這一位是“1”。而低電平不超過(guò)1.12ms則認(rèn)為是“0”,

所以為了信息傳輸?shù)目煽啃院陀行?,?1.12ms+0.56ms)/2=0.84nls作為“0”

和“1”高電平的區(qū)分最好,脈寬低于0.84ms則為“0”高于0.84ms則為“1”。

所以“0”和“1”的區(qū)別就在于低電平之后的高電平持續(xù)的時(shí)間寬度區(qū)別。

3硬件設(shè)計(jì)

3.1硬件介紹

3.1.1元件清單

元器件個(gè)器件代號(hào)

數(shù)

發(fā)光二極管5個(gè)D1,D2,D3,D4,D5

紅外一體化接收頭1個(gè)IR1

5V電磁繼電器4個(gè)K1,K2,K3,K4

DC電源接口1個(gè)Pl

接線柱4個(gè)P2,P3,P4,P5

9012型三極管4個(gè)Q1Q2Q3Q4

10K電阻一個(gè)RI

2K電阻8個(gè)R2—RIO

輕觸按鍵1個(gè)SI

自鎖式電源開(kāi)關(guān)1個(gè)S2

單片機(jī)芯片STC89C51RC1個(gè)UI

12M晶體振蕩器1個(gè)Y1

3.1.2STC89C51單片機(jī)的介紹

STC系列單片機(jī)是美國(guó)STC公司的單片機(jī)。片內(nèi)含有Flash程序存儲(chǔ)器、SRAM、

UART、SPI、A/D、PWM等模塊。單片機(jī)的型號(hào)各不相同,但基本的東西都是類

似的,使用keil軟件就可以,語(yǔ)言可以選用C語(yǔ)言或匯編語(yǔ)言,單片機(jī)的51

是一個(gè)統(tǒng)稱,是51內(nèi)核的意思,不是STC89c51中51的意思,而該器件的基本

功能與普通的51單片機(jī)完全兼容。

40

P1.0c393^cc

Pl.lc38=jPO.O(ADO)

Pl.2c37□PO.l(ADl)

PL3匚36□PO.2(AD2)

P1.4匚35□P0.3(AD3)

Pl.5c34=>P0.4(AD4)

P1.6匚33□P0.5(AD5)

P1.7匚32=3P0.6(AD6)

RSTc31口P0.7(AD7)

(RXD)P3.0匚30nEA/r^

(TXD)P3.1c293ALE/PROG

(INT0)P3.2匚28口PSEN

(iKTl)P3.3匚27nP2.7(A15)

(T0)P3.4c263P2.6(A14)

(T1)P3.5c253P2.5(A13)

(WR)P3.6匚243P2.4(A12)

(RD)P3.7匚23口P2.3(AI1)

XTAL2c22°P2.2(A1O)

XTAL1c213P2.1(A9)

GND匚3P2.O(A8)

圖3-1STC89C51單片機(jī)的引腳圖

Figure3-1PinDiagramofSTC89C51Microcontroller

3.1.3主要功能、性能參數(shù)

如圖3-1所示:

單片機(jī)引腳分為電源,時(shí)鐘,I/O口,控制引腳四種。

外形封裝:40腳PDIP

單片機(jī)配置51內(nèi)核

機(jī)器周期:為12時(shí)鐘;

.工作頻率在:0-40MHz,相當(dāng)于普通8051的0-80MHZ;

3STC89C5xRC對(duì)應(yīng)Flash空間:4KB

內(nèi)部存儲(chǔ)器(RAM):512B:

定時(shí)器,計(jì)數(shù)器:3個(gè)16位:

6.通用異步通信口(UART)l個(gè);

中斷源:8個(gè):

有ISP(在系統(tǒng)可編程)1AP(在應(yīng)用可編程),無(wú)需專用編程器,仿真器

通用1\0口:32\36個(gè)

工作電壓:5.0V

3.1.4芯片引腳

電源:VCC接+5V電源。

GND接地。

時(shí)鐘:XTAL1,XTAL2分別為晶體振蕩器的反相輸入端和反向輸出端。

RST:復(fù)位端。位于STC89c51單片機(jī)的9端口,外接復(fù)位電路,在晶體振蕩器工

作的狀態(tài)下,可以支持上電復(fù)位和手動(dòng)復(fù)位。

ALE(30腳):地址鎖存使能。這個(gè)引腳屬于控制信號(hào)引腳,對(duì)外部存儲(chǔ)器工作

時(shí),輸出脈沖鎖存地址的低字節(jié),在正常情況下,ALE輸出信號(hào)恒定為1/6振

蕩頻率。并可用作外部時(shí)鐘或定時(shí),注意每次訪問(wèn)外部數(shù)據(jù)時(shí),一個(gè)ALE脈沖將

被忽略。

PSEN(29腳):程序存儲(chǔ)使能。讀外部程序存儲(chǔ)。當(dāng)從外部讀取程序時(shí),PSEN

每個(gè)機(jī)器周期被激活兩次,是外ROM讀選通信號(hào)。

EA:內(nèi)外ROM選擇端,總中斷。

PO,P1,P,2P3:四個(gè)端口是STC89c51單片機(jī)中的四個(gè)I/O端口,P3端口除了作

為I/O端口外,每個(gè)引腳都有自己的第二功能。

IT0和IT1分別是外部中斷0和1的輸入口,本設(shè)計(jì)的紅外一體化接收頭就

是接在了外部中斷IT0也就是P3'2端口,而P3'3端口接入一個(gè)“學(xué)習(xí)”按鍵,

用來(lái)控制EEPROM。兩人端口功能基本相同,在寫(xiě)單片機(jī)程序時(shí),我們可以將外

部中斷IT0自行設(shè)定,達(dá)到我們的需求,設(shè)成“0”或“1”分別代表低電平觸發(fā)

和下降沿觸發(fā)這兩種不同的設(shè)定。當(dāng)我們希望對(duì)IT。這個(gè)引腳進(jìn)行設(shè)置時(shí),要先

對(duì)單片機(jī)中的特殊寄存器sfr進(jìn)行設(shè)置。程序中開(kāi)始時(shí)要有EXO=1,打開(kāi)這個(gè)

開(kāi)關(guān),單片機(jī)才會(huì)對(duì)外部中斷進(jìn)行設(shè)置,接下來(lái)要有EA=1,這個(gè)是在中斷使

能寄存器IE中的總開(kāi)關(guān),打開(kāi)它,中斷才可以發(fā)生,不管是EXO還是EA都是屬

于中斷使能寄存器的功能,由硬件控制,它們都是可以位尋址的,所以才能這么

寫(xiě)。這樣ITO的外部中斷就可以配置了。中斷函數(shù)很好認(rèn),例如voidAB_T0()

interrupt0函數(shù),函數(shù)名后面有“interrupty”的就是了,而y是中斷函數(shù)

的中斷號(hào),本論文在下面會(huì)有詳細(xì)的介紹。,需要注意的是,中斷函數(shù)在主程序

中并不需要特意聲明。在51單片機(jī)中,系統(tǒng)初始化運(yùn)行時(shí),寄存器的值全部都

是“0",T/0口的值全部都是“1”。

voidmain()

ITO=1;〃設(shè)置為下降沿觸

發(fā)

EXO=1;//外部中斷0中斷允

許位

EA=1;

while(l){}〃死循環(huán)等待中斷

}

3.1.5紅外接收頭

本設(shè)計(jì)選用的是VS1838B一體化紅外接收頭接收紅外遙控編碼信號(hào),

VS1838B與其他類型的紅外接收頭類似,功能大致相同,可以實(shí)現(xiàn)對(duì)紅外信號(hào)的

接收、放大、整形。一般不需要任何外接元件就能完成從紅外接收到輸出TTL

電平兼容信號(hào)的所有工作。接收器對(duì)外只有3個(gè)引腳:電源Vcc,公共地GND和

1個(gè)脈沖信號(hào)輸出OUT。由圖可以看出,其與單片機(jī)接口非常方便,是紅外接收

電路的成品。剛買來(lái)的紅外一體化接收頭不一定是功能完好的,這就需要我們?cè)?/p>

焊接時(shí),可以用自己手頭的元件簡(jiǎn)單地判斷檢查了,我們可以在紅外接收頭的

OUT輸出口與連接+5V電源的引腳這兩個(gè)金屬輸出端間,用焊錫簡(jiǎn)單地焊接一個(gè)

二極管和一個(gè)功能完好的發(fā)光二極管以及正5V的VCC,若紅外接收頭完好,我

們向紅外接收頭發(fā)送特定的紅外編碼信號(hào),發(fā)光二極管以及二極管都會(huì)正常工作,

這時(shí)我們會(huì)發(fā)現(xiàn)發(fā)光二極管處于發(fā)光且閃動(dòng)的狀態(tài),反之,則證明紅外接收頭功

能不完備,可能是運(yùn)輸時(shí)被毀壞,或者是出廠時(shí)就已損壞。

3.1.6自鎖開(kāi)關(guān)

作為本設(shè)計(jì)中連接電源與電路的總開(kāi)關(guān),自鎖開(kāi)關(guān)都具有鎖定功能,如圖

3-2,當(dāng)我們打開(kāi)電源將自鎖開(kāi)關(guān)連入遙控開(kāi)關(guān)電路時(shí),開(kāi)關(guān)連接DC插座與單片

機(jī)電路,共有六個(gè)接線引腳,當(dāng)我們按下自鎖開(kāi)關(guān)時(shí),開(kāi)關(guān)不會(huì)彈起來(lái),這時(shí),

開(kāi)關(guān)已經(jīng)將電源和電路連接起來(lái)了,電路導(dǎo)通,當(dāng)我們?cè)侔匆幌聲r(shí),開(kāi)關(guān)就會(huì)彈

起,這時(shí)電路處于斷開(kāi)狀態(tài)。自鎖開(kāi)關(guān)能鎖定保持使電路導(dǎo)通或斷開(kāi)的狀態(tài),現(xiàn)

如今我們使用的220V電源插座就是使用的這種機(jī)械開(kāi)關(guān),只是型號(hào)可能略有不

同。

圖3-2自鎖開(kāi)關(guān)電路圖

Figure3-2Self-lockingswitchcircuitdiagram

3.1.7DC電源插口

作為本設(shè)計(jì)電路的5v電源提供插座,接入+5V的直流電源。DC插座是由五

部分組成,應(yīng)用廣泛,圓形的插座空間沒(méi)有正反面,拔插方便,可以為多種設(shè)備

提供電源,入收音機(jī),電腦顯示器等。

3.1.8小型電磁繼電器(5V)

本設(shè)計(jì)中,電路通過(guò)5V的VCC提供的電源行繼電器開(kāi)關(guān)產(chǎn)生通斷控制,控

制大電流設(shè)備電路的通斷,增加安全性。4、5腳是繼電器線圈,沒(méi)有正負(fù)極

之分的,主要是為了通電后由電生磁,產(chǎn)生對(duì)1,2腳常閉開(kāi)關(guān)的吸力,使1,3

引腳上的開(kāi)關(guān)閉合,一個(gè)腳接三極管,為+5V的電磁繼電器提供單片機(jī)I/O口不

能提供的電流。

3.1.9發(fā)光二極管

作為電路中的指示燈,長(zhǎng)腳接正極,短腳接負(fù)極。

3.1.109012型PNP三極管

本設(shè)計(jì)中的9012型PNP三極管作用是電流放大,控制能量的轉(zhuǎn)換。半導(dǎo)體

三極管由兩個(gè)PN結(jié)組成,分為PNP和NPN型晶體管,由于有帶有不同極性的兩

種載流子參與導(dǎo)電,又被稱作雙極型晶體管。本沒(méi)計(jì)使用的是9012型PNP晶體

管。我們從基極B和發(fā)射極E間提供5V的電源,此時(shí),單片機(jī)I/O端口發(fā)出低

電平,存在了大于開(kāi)啟電壓的壓降,這樣一來(lái),PNP晶體管就會(huì)導(dǎo)通,連接晶體

管集電極C的繼電器就可以得到足夠的電壓和電流了。目前市面上的晶體三極管

大致分為三種外形,我們?cè)谥悄芗t外遙控開(kāi)關(guān)中使用的是小功率管。在電路原理

圖中,三極管的符號(hào)一股都是特定的,而不管是NPN型三極管還是PNP型三極管,

都會(huì)發(fā)現(xiàn)里面有一個(gè)小箭頭,而兩種晶體管的區(qū)別僅僅在于方向不一樣,實(shí)際上,

這個(gè)箭頭的作用是用來(lái)指示電流方向的,區(qū)分三極管也主要就靠這個(gè)箭頭的方向。

本設(shè)計(jì)中的9012型三極管還具有開(kāi)關(guān)作用,這就是我們需要關(guān)注的地方了,當(dāng)

基極b的電流為+5V高電平時(shí),VCC也為發(fā)射極提供了+5V的電源,由于三極管

兩極之中壓降為0,所以這個(gè)PNP三極管處于截止?fàn)顟B(tài),集電極C自然也得不到

電流來(lái)驅(qū)動(dòng)電磁繼電器,而當(dāng)單片機(jī)芯片為基極B提供低電平的時(shí)候,發(fā)射極E

與基極B之間的電壓壓降達(dá)到了5V,壓降已經(jīng)大于了三極管的開(kāi)啟電壓,集電

極與發(fā)射極之間就可以導(dǎo)通了,但由于基極與發(fā)射極之間的三極管可以承受的壓

降要小于5V,所以我們還要在STC89C51RC單片機(jī)芯片與三極管基極之間接入一

個(gè)限值為2K的分壓電阻,為三極管及單片機(jī)I/O口分擔(dān)超過(guò)的電壓。由此,我

們就可以通過(guò)對(duì)單片機(jī)I/O端口的輸出高低電平設(shè)置來(lái)進(jìn)行控制電磁繼電器開(kāi)

關(guān)的通斷了。

關(guān)于這里,我本人初次對(duì)單片機(jī)進(jìn)行焊接時(shí),有一個(gè)疑問(wèn),為什么不杷緋電

器直接接到單片機(jī)的I/O端口上呢?單片機(jī)輸出的高電平也是+5V啊,若要打開(kāi)

繼電器,直接用程序設(shè)定一直輸出高電平就行了啊,其實(shí)這個(gè)問(wèn)題是因?yàn)閱纹瑱C(jī)

雖然輸出的也是5V的電壓,但,輸出的電流卻太小了,可能連一個(gè)LED小燈都

不能使其正常發(fā)光,更不足以將電磁繼電器驅(qū)動(dòng)了,所以要加一個(gè)三極管來(lái)當(dāng)作

開(kāi)關(guān),并起放大電流的作用。在繼電器旁邊并聯(lián)一個(gè)電阻和一個(gè)發(fā)光二極管是為

了監(jiān)測(cè)當(dāng)有電流時(shí)電磁繼電器會(huì)不會(huì)工作,電阻的作用也是為發(fā)光二極管分壓,

使二極管壓降與0.7V導(dǎo)通電壓相當(dāng)。

3.2設(shè)計(jì)原理

3.2.1單片機(jī)簡(jiǎn)介

本設(shè)計(jì)中原理圖采用altiumdesign2016版及進(jìn)行原理圖設(shè)計(jì),由于電摘的

原因,新版的軟件過(guò)于卡頓,所以使用老版軟件,芯片燒錄采用的是STC89c51

燒錄器,據(jù)說(shuō)可以重復(fù)擦寫(xiě)程序很多次。在單片機(jī)中的存在的內(nèi)部資源,我們一

般將其分為三大類,這時(shí)單片機(jī)被設(shè)計(jì)出來(lái)時(shí)就給我們準(zhǔn)備的可以使用的內(nèi)容。

第一類是FLISH,這是單片機(jī)中的程序存儲(chǔ)區(qū),而在早期的單片機(jī)中,它被稱為

OTPROM,FLISH應(yīng)該算是它的升級(jí)版本,它可擦寫(xiě)的特性使它成為單片機(jī)中應(yīng)用

最廣泛的程序存儲(chǔ)器,再加上他大容量,低成本的優(yōu)點(diǎn),使FLISH程序存儲(chǔ)器非

常受歡迎。第二類資源是它的數(shù)據(jù)存儲(chǔ)區(qū),也就是RAM,他的作用是將程序運(yùn)行

時(shí)產(chǎn)生的數(shù)據(jù)存儲(chǔ)起來(lái),類似于電腦的內(nèi)存,其實(shí)最典型的比喻是我們的計(jì)算器,

我們用計(jì)算器計(jì)算個(gè)加減法,一些中間的數(shù)據(jù)都會(huì)保存在RAM里邊,關(guān)電后數(shù)

據(jù)丟失,所以我們每次打開(kāi)計(jì)算器,都是從歸零開(kāi)始計(jì)算。但是他的優(yōu)點(diǎn)第一是

讀寫(xiě)速度非常快,第二是理論上是可無(wú)限次寫(xiě)入的,即壽命無(wú)限,不管程序怎么

運(yùn)行怎么讀寫(xiě)它都不會(huì)壞的。第三類資源就是特殊寄存器,它又被稱為SFR,

單片機(jī)的很多功能都是我們通過(guò)對(duì)SFR的讀寫(xiě)來(lái)實(shí)現(xiàn)的。

(1)什么是單片機(jī)最小系統(tǒng)?單片機(jī)最小系統(tǒng)又被稱為單片機(jī)最小應(yīng)用系

統(tǒng),指的是單片機(jī)工作時(shí)用的是最簡(jiǎn)單的元件相互配合的系統(tǒng)。

(2)三個(gè)必要條件是:

電源:本設(shè)計(jì)中的需要用來(lái)提供單片機(jī)STC89c51芯片及其他驅(qū)動(dòng)運(yùn)行的電

壓源,不同的芯片需要的電壓也不同。本設(shè)計(jì)中使用的是+5V電源。

晶體振蕩器:?jiǎn)纹瑱C(jī)的18腳和19腳是晶振的引腳,我們接了一個(gè)

11.0592M的晶振它每秒鐘震蕩11,059,200次,外加兩個(gè)20pF的電容,電容

的作用是幫助晶振起振,并維持震蕩信號(hào)的穩(wěn)定。

復(fù)位電路:接到了單片機(jī)的9腳RST(Reset)復(fù)位引腳上,單片機(jī)復(fù)位一般

是3種情況,上電復(fù)位、手動(dòng)復(fù)位、程序自動(dòng)復(fù)位。

我們假如我們的單片機(jī)程序有100行,當(dāng)某一次運(yùn)行到第50行的時(shí)候,

突然停電了,這個(gè)時(shí)候單片機(jī)內(nèi)部有的區(qū)域數(shù)據(jù)會(huì)丟失掉,有的區(qū)域數(shù)據(jù)沒(méi)丟失,

那么下次打開(kāi)設(shè)備的時(shí)候,我們希望單片機(jī)能正常運(yùn)行。所以上電后,單片機(jī)要

進(jìn)行一個(gè)內(nèi)部的初始化過(guò)程,這個(gè)過(guò)程就可以理解為上電復(fù)位,上電復(fù)位保證單

片機(jī)每次都從一個(gè)固定的相同的狀態(tài)開(kāi)始工作。這個(gè)過(guò)程跟我們打開(kāi)電腦電源開(kāi)

電腦的過(guò)程是一致的。

當(dāng)我們的程序運(yùn)行,遭受到意外干擾而導(dǎo)致程序死機(jī),或者程序跑飛的時(shí)候,

我們就可以按下一個(gè)復(fù)位按鍵,讓程序重新初始化重新運(yùn)行,這個(gè)過(guò)程就叫做手

動(dòng)復(fù)位,最典型的就是我們電腦的重啟按鈕。

當(dāng)我們的程序死機(jī)或者跑飛的時(shí)候,我們的單片機(jī)往往有一套自動(dòng)復(fù)位機(jī)制,

比如看門狗,具體應(yīng)用以后再了解。在這種情況下,如果程序長(zhǎng)時(shí)間失去響應(yīng),

單片機(jī)看門狗模塊會(huì)自動(dòng)復(fù)位重啟單片一機(jī)。還有一些情況是我們程序故意重啟復(fù)

位單片機(jī)。

Figure3-3Resetbuttoncircuitschematic

(3)系統(tǒng)原理圖:原理圖中包括單片機(jī)微控制器模塊,紅外一體化接收頭,

USB供電模塊,復(fù)位模塊,以及電磁繼電器模塊。圖見(jiàn)附錄1。

3.2.2單片機(jī)控制系統(tǒng)電路

單片機(jī)接收紅外接收頭輸出的電平信號(hào)產(chǎn)生中斷,處理中斷服務(wù)程序即紅外

解碼程序并完成對(duì)繼電器的驅(qū)動(dòng)控制,實(shí)現(xiàn)電源開(kāi)關(guān)控制功能,如圖3-4:

VCC

c40

P1.0VCo

P1.1PO,1

PO敢.

P1.22

P1.33

P1.4PO,4

P1.5PO.

5

P1.6PO,6

P1.7PO,7

PO-.

RSTR

(RXD)P3.0A^V-

(TXD)P3.1ING

(DTfO)P3.2

P2,7

(Drfl)P3.3P2.6

(T0)P3.4P2.5

(T1)P3.5P2.4

P2,

(WR)P3.6P2,3

(RD)P3.7P2,2

XTAL2P2.1

XTAL10

GND

圖3-4單片機(jī)芯片控制電路圖

Figure3-4Microcontrollerchipcontrolcircuitdiagram

3.2.3紅外接收頭電路

遙控器發(fā)出的紅外遙控信號(hào)經(jīng)紅外接收頭接收處理后直接送給單片

機(jī)的中斷口INTO,如圖3-5所示。

IR1

o

dvv

三4a

限Qvcc

GND

紅%接收

圖3-5紅外一體化接收頭連接原理圖

Figure3-5Infraredintegratedreceiverconnectionschematic

3.2.4USB接口供電電路

在本設(shè)計(jì)中主要是對(duì)電腦和單片機(jī)燒錄器之間的接口連接。如圖3-6所示,

C16為470uF的去耦電容,它的作用有兩個(gè),一個(gè)是緩沖作用,通電的瞬間,會(huì)

有一股不穩(wěn)定的電流從電源處出現(xiàn),進(jìn)入紅外遙控電路,這會(huì)對(duì)電路中的電子元

器件進(jìn)行沖擊,超過(guò)某個(gè)電子元器件的承受范圍,元器件就會(huì)燒壞,而加了這個(gè)

電容,就會(huì)對(duì)電流有一個(gè)緩沖的作用,可以保護(hù)電路,不受突然接入的大電流的

影響,不會(huì)減少電路元件的使用壽命。在本設(shè)計(jì)的焊接電路中,由于主要元器件

如芯片,二極管,三極管等后級(jí)的電子元器件的工作時(shí)功率及電流大小各不相同,

而有的時(shí)候還需要加一些分壓電阻和限流電阻等元件,所以第二個(gè)就是穩(wěn)定的作

用了,當(dāng)我們?cè)俳o單片機(jī)上電時(shí)器件工作的時(shí)候,可能一個(gè)三極管正好處在工作

狀態(tài),但電流大小不是一直持續(xù)不變的,若是后級(jí)有個(gè)IC芯片在之后突然開(kāi)始

工作了,這時(shí)也許就會(huì)分去電路中的電壓,使電流突然變大,而如果沒(méi)有個(gè)容

納電流的電容,電路中的三極管就會(huì)在此時(shí)燒壞,電路中的電壓也會(huì)直接突然下

降,比如我們的5V電壓突然降低到3V了。而我們系統(tǒng)中有些電子元器件,

必須高于一定的電壓才能正常工作,電壓太低就直接不工作了,有了這個(gè)電容,

可以說(shuō)我們的電壓和電流就會(huì)很穩(wěn)定了,不會(huì)產(chǎn)生大的波動(dòng)。

USB接口電路

圖3-6USB接口電路焊接原理圖

Figure3-6USBinterfacecircuitweldingschematic

3.2.4電磁繼電器模塊電路

如圖3-7所示,電磁繼電器5腳接地,4腳接三極管,1腳2腳狀態(tài)常閉,1

腳3腳狀態(tài)常開(kāi)。三極管的用法特點(diǎn),關(guān)鍵點(diǎn)在于b極(基極)和e級(jí)(發(fā)射極)

之間的電壓情況,對(duì)于9012型PNP而言,e極電壓只要高于b級(jí)0.7V以上,

這個(gè)三極管e級(jí)和c級(jí)之間就可以順利導(dǎo)通。也就是說(shuō),控制端在b和日之

間,被控制端是e和c之間。同理,NPN型三極管的導(dǎo)通電壓是b極比e極

高0.7V,總之是箭頭的始端比末端高0.7V就可以導(dǎo)通三極管的e極和c極。

這就是關(guān)于“導(dǎo)通電壓順箭頭過(guò),電壓導(dǎo)通”的解釋。

如果9012型三極管的基極b我們程序給一個(gè)高電平1,那么基極b和發(fā)

射極e都是+5V,也就是說(shuō)由Vcc提供電源的發(fā)射極e到基極b不會(huì)產(chǎn)生一個(gè)

0.7V的壓降,這個(gè)時(shí)候,發(fā)射極和集電極也就不會(huì)導(dǎo)通,那么豎著看這個(gè)電路

在三極管處是斷開(kāi)的,所以沒(méi)有電流通過(guò),電磁繼電器也就不會(huì)處于工作狀態(tài)。

如果我們程序給三極管基極b的位置一個(gè)低電平0,而發(fā)射極。是個(gè)+5V,產(chǎn)生

壓差就會(huì)導(dǎo)通,PNP三極管e極和b極之間大概有0.7V的電壓,那還有

(5-0.7)V的電壓會(huì)在電阻R5±o這個(gè)時(shí)候,e和c之間也會(huì)導(dǎo)通了,那么電

磁繼電器本身有5V的壓降,三極管本身e和c之間大概有0.2V的壓降,我

們忽略不計(jì)。工作過(guò)程如下,當(dāng)單片機(jī)1\0口為低電平時(shí),PNP三極管導(dǎo)通,VCC

電源驅(qū)動(dòng)電磁繼電器工作,LED小燈串聯(lián)D4電阻R9后與繼電器并聯(lián),用來(lái)檢測(cè)

繼電器的的電流通斷情況。當(dāng)STC89c51單片機(jī)的1\0口發(fā)出0V的低電平時(shí),9012

型PNP三極管導(dǎo)通,基極與發(fā)射極之間電壓為+5V,但這主要是讓三極管導(dǎo)通,

而真正讓電磁繼電器工作,提供電流的還是上方的直流電源Vcc與GND的電壓差。

繼電器

圖3-7電磁繼電器焊接原理圖

Figure3-7Electromagneticrelayweldingschematic

4軟件設(shè)計(jì)

4.1總體方案

本設(shè)計(jì)由單片機(jī)進(jìn)行編解碼實(shí)現(xiàn)紅外遙控,可以說(shuō)本設(shè)計(jì)的重點(diǎn)除了硬件電

路的設(shè)計(jì)外就在于軟件解碼。本章節(jié)將寫(xiě)出解碼軟件的實(shí)現(xiàn)過(guò)程。

本設(shè)計(jì)在MCS-51單片機(jī)中使用C語(yǔ)言來(lái)編程。這時(shí)由于平時(shí)上課時(shí)老師更

提倡用C語(yǔ)言進(jìn)行編程,而c語(yǔ)言又是平時(shí)使用較多的計(jì)算機(jī)語(yǔ)言,優(yōu)點(diǎn)也十分

明顯,具有代碼量小,運(yùn)行速度快,功能強(qiáng)大的特點(diǎn)。編程軟件采用Keil軟件,

這個(gè)軟件是我們?cè)谶M(jìn)行單片機(jī)程序設(shè)計(jì)時(shí)使用最廣泛的應(yīng)用軟件了可以使用C

語(yǔ)言進(jìn)行編譯與調(diào)試。

連接+5V電源,打開(kāi)自鎖開(kāi)關(guān),程序進(jìn)入開(kāi)始運(yùn)行階段。當(dāng)按下智能紅外遙

控開(kāi)關(guān)“學(xué)習(xí)”按鍵時(shí),這時(shí)己經(jīng)開(kāi)始了初始化中斷,按下紅外遙控器的控制按

鍵后,STC89c51RC單片機(jī)就會(huì)開(kāi)始存儲(chǔ)來(lái)自紅外遙控器發(fā)送過(guò)來(lái)的信息編碼,

流程說(shuō)明:在遙控器按下按鍵的時(shí)候,遙控開(kāi)關(guān)開(kāi)始上電,并初始化,紅外

遙控編碼信號(hào)就通過(guò)了固定的信道被對(duì)面的紅外一體化接收頭接收到了,紅外接

收頭的OUT輸出引腳輸出一組TTL高低電平信號(hào)給單片機(jī)INTO口,單片機(jī)的外

部中斷開(kāi)始,然后,單片機(jī)中的預(yù)先寫(xiě)好的紅外解碼程序開(kāi)始工作,引導(dǎo)碼標(biāo)志

著接下來(lái)的是編碼數(shù)據(jù)了,經(jīng)過(guò)了用戶碼及其反碼,單片機(jī)才能對(duì)鍵碼進(jìn)行判斷

數(shù)據(jù),并解碼,由解碼程序處理后,鍵碼的譯碼值會(huì)傳到EEPROM或者

再中斷后被執(zhí)行程序執(zhí)行控制繼電器,當(dāng)沒(méi)有按鋌按下,程序返回到初始化之后,

再次對(duì)鍵碼鑒定。

存儲(chǔ)程序:初始化后,當(dāng)按下“學(xué)習(xí)”按鍵時(shí),單片機(jī)運(yùn)行存儲(chǔ)紅外遙控編

碼的程序此時(shí),由本設(shè)計(jì)紅外遙控開(kāi)關(guān)接收后,會(huì)將其保存在EEPROM中,斷電

后,EEPROM中的紅外編碼信息也不會(huì)丟失,斷電后可以正常使用.

圖3-8智能紅外遙控開(kāi)關(guān)程序流程圖

Figure3-8Intelligentinfraredremotecontrolswitchprogramflowchart

4.2外部中斷設(shè)置

voidinit_intO()//定義子程序

EXO=1;〃允許外部中斷0中斷

EA=1;〃開(kāi)總中斷

ITO=1;//外部中斷0開(kāi)啟

}

當(dāng)我在做一件事A時(shí),突然必須要去做另一件B更重要的事情,而要做這第

二件事B,就必須先放下第一件事A,這樣才能去做第二件事Bo這里面有一

個(gè)主體,就是我,有兩個(gè)客體,是事件A和B,他們是在同一時(shí)間的情況下進(jìn)行

的,如果當(dāng)我做事件B時(shí),不需要了解事件B的過(guò)程,只需要得到一個(gè)結(jié)果就可

以,那么我們就可以事先給事件B訂上一個(gè)鬧鐘,當(dāng)我們?cè)谧鍪录嗀時(shí),事件B

也在同時(shí)發(fā)生,但由于我們不需要給予關(guān)注他的過(guò)程,就可以利用這個(gè)事件B

的運(yùn)行時(shí)間,繼續(xù)做事件A,而一旦我們?cè)O(shè)定的同鐘響了,這說(shuō)明我們的事件B

已經(jīng)結(jié)束了,我們就可以去將事件B的結(jié)果處理掉了。而在單片機(jī)中,單片機(jī)處

理程序也是類似的,當(dāng)單片機(jī)在運(yùn)行一個(gè)程序時(shí),總有一個(gè)或幾個(gè)程序在同時(shí)運(yùn)

行,而我們需要去做的就是去將事件B的結(jié)果處理掉,只有當(dāng)事件B處理完后,

我們才能再去回頭處理事件A,如果用單片機(jī)中斷處理這件事,那么程序不僅

有了可以處理突發(fā)事件的能力,還可以在同一時(shí)間運(yùn)行多個(gè)程序了。特別要注意

的是,單片機(jī)中斷是一種機(jī)制,它與定時(shí)器不同,在單片機(jī)中,定時(shí)器是一個(gè)存

在的模塊,與中斷不同。

在51單片機(jī)中,中斷相關(guān)的寄存器一共有茯個(gè),一個(gè)是中斷使能寄存器IE

(地址是A8H),共有七位,分別為第七位:EA-總開(kāi)關(guān),總中斷使能位,這就

相當(dāng)于家里的總電閘開(kāi)關(guān),當(dāng)我們用到中斷時(shí),總要在程序里寫(xiě)上一句EA=1

這句話的意思是要打開(kāi)總中斷開(kāi)關(guān),這樣我們才能用接下來(lái)的第零位到第五位的

分中斷。第三位:ET1-定時(shí)器1溢出中斷使能,第二位:EX1-外部中斷1使能,

第一位:ETO-定時(shí)器0中斷使能,第零位:EXO-外部中斷0使能。第二個(gè)則是中

斷優(yōu)先級(jí)寄存器,可以位尋址和自己設(shè)置中斷優(yōu)先級(jí)。

在初始化程序中,函數(shù)前邊的void表示函數(shù)返回值為空,就是函數(shù)K返

回任何值,只能在主程序中運(yùn)行,函數(shù)名字是in:t_intO,而程序中EXO=1;是允

許外部中斷使能EX0中斷,EA=1;是打開(kāi)單片機(jī)總中斷,IT0=1;是外部中斷0

負(fù)跳變中斷,這個(gè)下降沿觸發(fā)是由高到低或由低到高這一瞬間觸發(fā)是微秒級(jí)的,

比ITO=1這種電平觸發(fā)要快的多。以上就是本設(shè)計(jì)程序中的外部中斷0初始化程

序。

4.3紅外解碼

4.3.1中斷服務(wù)程序

首先來(lái)了解程序的格式:

void函數(shù)名。inlerruplmFusingnl[}

關(guān)鍵字intebupt表示這是一個(gè)中斷函數(shù),而函數(shù)中的關(guān)鍵字后面還有

一個(gè)m,m后面還有一個(gè)[usingn],這里的m是作為中斷源的入口號(hào),單片

機(jī)中有5個(gè)中斷源,有了這些數(shù)字,編譯時(shí)就可以找到中斷程序的地址了。執(zhí)行

該程序時(shí),這個(gè)地址會(huì)傳個(gè)程序計(jì)數(shù)器PC,MCU就會(huì)從這里運(yùn)行程序了。

這5個(gè)中斷源的中斷入口地址如表4-1所示:

中斷源地址中斷號(hào)

INTO0003H0

TOOOOBH1

INTI0013H2

Tl:OO1BH3

串口0023114

表4-1中斷號(hào)對(duì)照表

Table4-1Interruptnumbercomparisontable

若要計(jì)算的話,設(shè)中斷號(hào)為y,中斷入口地址:y*8+3,而在我們的STC89c51

單片機(jī)中,外部中斷INTO的地址為0003H,解出式子得y二部所以interrupt

后面為Oo

4.3.2中斷函數(shù)下的紅外解碼

voidintO0interrupt0

unsignedchari,j;

delay_100us(20);〃防止干擾

if(hw_P32=0)

(〃引導(dǎo)碼

while(hw_P32==0);〃等待低電平過(guò)完

delaylOOus(20);

if(hw_P32==1)〃引碼結(jié)束

(

delay_100us(20);//延時(shí)2ms

for(i=0;i<4;i++)

for(j=0;j<8;j++)

(

while(hw_P32==0);〃等待過(guò)完

delay_100us(5);

if(hw_P32==0)〃數(shù)據(jù)0的時(shí)間

〃數(shù)據(jù)1的時(shí)間

hwtable[i]?=1;〃低位在前

else

delay_100us(5);//高電平的時(shí)間過(guò)完

hw_table[i]?=1;〃低位在前

hw_table[i]|=0x80;〃數(shù)據(jù)值1

)

flagjieniaen=1;

}

}

中斷函數(shù)和其他函數(shù)不一樣之處在于中斷函數(shù)有自己的中斷入口,他不需要

像普通程序一樣,還要在程序之中重新調(diào)用,而是達(dá)到中斷程序后,會(huì)自動(dòng)進(jìn)入

執(zhí)行階段。

在上面的紅外線解碼程序中,voidint0()interrupt0表明,它也是一個(gè)

中斷函數(shù),因?yàn)橹袛嗪瘮?shù)的格式是固定的,void表明函數(shù)返回值為空,intO為

函數(shù)名,這個(gè)是由編寫(xiě)程序者自行設(shè)定的,而后面跟著的interrupt是中斷的

關(guān)鍵字,有了它就代表著中斷函數(shù)了,再后邊的數(shù)字0是中斷入口號(hào)。

delay」00us(20);是一個(gè)延時(shí)函數(shù),在解碼程序中作為一個(gè)子程序,延時(shí)

lOOus的函數(shù)當(dāng)形式參數(shù)為20時(shí),所輸出的結(jié)果是延時(shí)2ms,在這個(gè)解碼程序中

的作用是防止干擾。

所謂解碼就是判斷NEC標(biāo)準(zhǔn)中紅外編碼信號(hào)脈沖的寬度。在智能紅外遙控開(kāi)

關(guān)中,接受到的編碼序列0和1是通過(guò)脈沖持續(xù)時(shí)間的長(zhǎng)短來(lái)區(qū)分的,發(fā)送出來(lái)

的方波波形被接收的過(guò)程中,只要其接收到編碼信號(hào),(雖然信號(hào)是一段一段的

發(fā)送,而信號(hào)之間還夾著空閑),此時(shí),紅外接收頭尾端的輸出端口I/O就會(huì)輸

出低電平,當(dāng)沒(méi)有編色信號(hào)輸入的時(shí)候,也就是收到空隙時(shí),輸出引腳將輸出一

個(gè)高電平。那我們把輸出引腳接到單片機(jī)的INTO口上,就可以得到紅外遙控器

發(fā)送的編碼信息了。而發(fā)送過(guò)來(lái)的紅外編碼首先過(guò)來(lái)的就是引導(dǎo)碼,由前面的紅

外編碼原理可知,引導(dǎo)碼的第一個(gè)電平是低電平第二個(gè)是高電平,而if(hw_P32

=0)表示引導(dǎo)碼為低電平時(shí)的條件語(yǔ)句,當(dāng)出現(xiàn)了引導(dǎo)碼的低電平時(shí)的程序。

引導(dǎo)碼為9+4.5=13.5ms,while(hw_P32==0);是一個(gè)在hw_P32==0條件下的

死循環(huán),作用是為了等待9nls低電平過(guò)完。delay_100us(27);為延時(shí)函數(shù),延

時(shí)2.7ms(此時(shí)已經(jīng)處于高電平)cif(hw_P32==1)是表示引碼處于4.5ms的高

電平過(guò)程中,而delay_100us(20);延時(shí)函數(shù)為延時(shí)2ms,但我們要知道,這個(gè)延

時(shí)2ms的函數(shù)是位于上面這個(gè)if語(yǔ)句中,也就是說(shuō)在這個(gè)延時(shí)函數(shù)之后,紅外

編碼處于2.7ms+2.0ms=4.7ms而大于4.5ms的高電平結(jié)束狀態(tài)。接下來(lái)就是用戶

碼和用戶碼的反碼了,在這里,我們要知道,NEC標(biāo)準(zhǔn)下的紅外遙控編碼用戶碼

是用來(lái)區(qū)分不同的遙控設(shè)備的,在一個(gè)遙控器中,不同的按鍵的用戶碼都是完全

相同的。for(i=0;i<4;i++)for(j=0;j<8;j++),:}這兩個(gè)C語(yǔ)句中,第一個(gè)for

語(yǔ)句,意思是循環(huán)接收后面由用戶碼,用戶反碼,按鍵鍵碼,鍵碼反碼組成的4

個(gè)字節(jié),而第二個(gè)for語(yǔ)句的意思是循環(huán)接收并判定每個(gè)字節(jié)的8位,兩個(gè)嵌套

for語(yǔ)句將引導(dǎo)碼之后的4個(gè)字節(jié)32位逐位判定。while(hw_P32=0);在NEC

標(biāo)準(zhǔn)格式下,紅外解碼程序中,不管是“0”位還是“1”位,在一個(gè)周期內(nèi)的第

一個(gè)電平都是時(shí)間為。56ms的低電平,所以while(hw_P32==0);語(yǔ)句為等待

0.561.15的低電平結(jié)束,這樣,我們判斷數(shù)據(jù)是1還是0就只需要觀察高電三就

可以了。根據(jù)紅外解碼原理,數(shù)據(jù)0的時(shí)間=0.56ms的低電平+0.5

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論