<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 一類基于軟件載波的學(xué)習(xí)型遙控器的設(shè)計(jì)與實(shí)現(xiàn)

          一類基于軟件載波的學(xué)習(xí)型遙控器的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2009-04-24 來源:網(wǎng)絡(luò) 收藏

          摘要:提出了,并對(duì)其工作原理、軟硬件進(jìn)行簡(jiǎn)單的介紹,詳細(xì)概述中紅外遙控編碼學(xué)習(xí)的過程。該紅外采用測(cè)量脈沖寬度的原理,復(fù)制其紅外脈沖信號(hào)進(jìn)行自學(xué)習(xí),以形式38 kHz,最后成功完成了對(duì)其他的學(xué)習(xí)。該裝置可以代替各種不同的遙控器控制家用電器。
          關(guān)鍵詞:紅外遙控器;自學(xué)習(xí);;紅外脈沖信號(hào)

          本文引用地址:http://www.ex-cimer.com/article/166997.htm


          0 引 言
          紅外線遙控是目前使用最廣泛的一種通信和遙控方式,由于其具有結(jié)構(gòu)簡(jiǎn)單、體積小、功耗低、功能強(qiáng)、成本低等特點(diǎn),因而廣泛應(yīng)用于彩電、空調(diào)機(jī)、CD/VCD、錄像機(jī)家用電器設(shè)備及其工業(yè)控制中。隨著現(xiàn)在人們生活中家電日益增加的需要,使用紅外遙控器也越來越頻繁。因其各種紅外遙控器編碼格式不同,使得各種紅外遙控器不能兼容。經(jīng)常需要更換遙控器,這也給人們生活帶來了不便。
          目前國內(nèi)遙控器大多采用復(fù)制遙控器紅外波形達(dá)到學(xué)習(xí)目的,其方法簡(jiǎn)單,實(shí)現(xiàn)起來較方便。但其采用專用遙控集成的芯片,導(dǎo)致復(fù)雜,成本高,并且遙控器的紅外信號(hào)形成都是采用紅外線遙控發(fā)射芯片產(chǎn)生,其集成度高,但價(jià)格昂貴。
          在此介紹一種以AT89S52為核心的紅外遙控器,通過測(cè)量紅外一體化接收頭輸出信號(hào),并原樣地記錄其輸出脈沖寬度,然后保存在E2PROM,最后利用單片定時(shí)器中斷產(chǎn)生38 kHz信號(hào),以軟件代替了硬件,節(jié)約了資源。該學(xué)習(xí)型紅外遙控器能成功地學(xué)習(xí)各種紅外遙控設(shè)備的編碼,并通過38 kHz載波發(fā)送學(xué)習(xí)到的記憶信號(hào)。實(shí)現(xiàn)了對(duì)各種各樣紅外遙控的學(xué)習(xí),從而變成了真正的自學(xué)習(xí)遙控器。


          l 學(xué)習(xí)型紅外遙控器系統(tǒng)
          1.1 學(xué)習(xí)型紅外遙控器的原理
          從家用萬能學(xué)習(xí)型紅外遙控一般原理出發(fā),其可以分為2類:固定碼式學(xué)習(xí)遙控器和波形拷貝式學(xué)習(xí)遙控器。前者,主要通過收集各種不同種類的遙控器信號(hào),然后分而治之。這種學(xué)習(xí)型遙控器對(duì)硬件要求相對(duì)簡(jiǎn)單,控制器的工作頻率不高,存儲(chǔ)容量大,其缺點(diǎn)是對(duì)未知遙控器無效。后者,主要是把原始遙控器所發(fā)出的信號(hào)進(jìn)行完全拷貝,而不管遙控器是什么格式,進(jìn)行適當(dāng)?shù)膲嚎s后,存儲(chǔ)在ROM存儲(chǔ)器中,當(dāng)發(fā)射時(shí),只需將儲(chǔ)存器中讀出的遙控編碼,還原成原始信號(hào),便完成了學(xué)習(xí)功能。此學(xué)習(xí)型遙控器對(duì)MCU的主頻要求高,RAM要求大,其優(yōu)點(diǎn)是對(duì)任何一種紅外遙控器可以進(jìn)行學(xué)習(xí)。下面主要以第二種方法進(jìn)行。
          1.2 學(xué)習(xí)型紅外遙控器基本硬件組成
          學(xué)習(xí)型紅外遙控器由單片機(jī)、紅外發(fā)射電路、紅外一體化接收頭、E2PROM存儲(chǔ)電路,矩陣鍵盤及LED指示燈構(gòu)成,如圖1所示。單片機(jī)AT89S52構(gòu)成紅外遙控的處理器,其數(shù)據(jù)存儲(chǔ)器RAM(258 B)用來存儲(chǔ)學(xué)習(xí)過程中編碼信號(hào)的脈沖寬度;紅外發(fā)射電路:用遙控脈沖信號(hào)調(diào)制38 kHz方波,經(jīng)過三極管放大后,驅(qū)動(dòng)紅外發(fā)光二極管,其中38 kHz載波由AT89S52定時(shí)器TO產(chǎn)生。紅外一體化接收頭:紅外接收頭輸出的信號(hào)經(jīng)過檢波、整形、放大、解調(diào)38 kHz載波信號(hào),其輸出信號(hào)為TTL高低電平。外接E2PROM存儲(chǔ)器:存放學(xué)習(xí)到的高低電平信號(hào)的脈寬值。

          1.3 系統(tǒng)軟件設(shè)計(jì)
          學(xué)習(xí)型遙控器的設(shè)計(jì)性能及實(shí)現(xiàn)與其軟件設(shè)計(jì)編寫具有密切的關(guān)系,特別是碼寬計(jì)數(shù)的采集周期及計(jì)數(shù)器采用的位數(shù)都關(guān)系到能否精確采集到遙控編碼信號(hào)。編碼寬度計(jì)數(shù)的采樣周期在編程中須經(jīng)過多次實(shí)驗(yàn)測(cè)試才能決定。該設(shè)計(jì)讀碼采樣周期大約為12μs。讀遙控編碼的計(jì)數(shù)器采用16位計(jì)數(shù)器,采樣時(shí)間在0~786.432 ms之間。其值保存在設(shè)定的數(shù)據(jù)存儲(chǔ)器中,然后寫入到外部E2PROM存儲(chǔ)器中,發(fā)射過程再從外部的E2PROM存儲(chǔ)器讀出,通過38 kHz載波發(fā)送編碼信號(hào)。


          2 紅外遙控編碼學(xué)習(xí)與軟件載波的發(fā)射
          2.1 紅外遙控信號(hào)編碼結(jié)構(gòu)分析
          紅外遙控器發(fā)射的遙控編碼脈沖由起始碼、系統(tǒng)碼、功能碼、功能碼的反碼組成,如圖2所示。起始碼是1個(gè)遙控碼的起始部分,由1個(gè)高電平和1個(gè)低電平組成,作為接收數(shù)據(jù)的準(zhǔn)備脈沖。這些編碼是經(jīng)38 kHz的載波脈沖調(diào)制后發(fā)射出去。

          通過分析大量不同類型的紅外遙控碼波形,遙控碼的數(shù)據(jù)幀間歇寬度均為10 ms以上,起始碼的高電平均為5 ms以上,通常為9 ms左右。編碼位在10μs~5 ms之間,在設(shè)計(jì)中,只考慮遙控器發(fā)射信號(hào)的高低電平寬度,不考慮其編碼方式,以簡(jiǎn)化設(shè)計(jì)。
          2.2 紅外遙控信號(hào)編碼學(xué)習(xí)軟件設(shè)計(jì)
          一般紅外遙控器的的紅外信號(hào)都是通過38~40kHz(周期大約為26.3μs)進(jìn)行載波調(diào)制而成的,經(jīng)過載波后信號(hào)的脈沖寬度與單片機(jī)的指令周期時(shí)間(12 MHz晶振的指令周期為1μs)數(shù)量級(jí)差不多。如果直接記錄載波信號(hào)的脈沖寬度,這樣誤差很大,必須對(duì)載波信號(hào)進(jìn)行解調(diào)后,方可記錄此時(shí)遙控編碼信號(hào)的脈沖寬度。


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();