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

          新聞中心

          EEPW首頁(yè) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)在遠(yuǎn)程控制中的應(yīng)用

          PIC單片機(jī)在遠(yuǎn)程控制中的應(yīng)用

          ——
          作者: 時(shí)間:2006-06-07 來(lái)源: 收藏
          摘 要: 介紹了一種用PIC系列控制的簡(jiǎn)易遠(yuǎn)程教學(xué)系統(tǒng),著重介紹了遠(yuǎn)程控制器的組成和工作原理,并給出了軟件設(shè)計(jì)流程。

              關(guān)鍵詞: PIC16C54 遠(yuǎn)程控制 

              本文介紹了一種用控制的采用電話遙控的簡(jiǎn)易遠(yuǎn)程教學(xué)系統(tǒng)。它借助于現(xiàn)有的豐富的電話網(wǎng)絡(luò)資源,具有結(jié)構(gòu)簡(jiǎn)單,造價(jià)低廉,易于操作等特點(diǎn),可以實(shí)現(xiàn)對(duì)錄像機(jī)的各種遠(yuǎn)距離控制操作。非常適合于貧困地區(qū)的電化教育的普及與發(fā)展。

               1 系統(tǒng)的總體結(jié)構(gòu)

              該電話遙控教學(xué)系統(tǒng)的總體結(jié)構(gòu)如圖1所示。

              該系統(tǒng)由電話機(jī)、小型程控機(jī)、遠(yuǎn)程控制器和數(shù)臺(tái)錄像機(jī)、電視機(jī)組成,該系統(tǒng)既可以通過(guò)小型程控機(jī)構(gòu)成一個(gè)局域的小系統(tǒng),也可以利用電信網(wǎng)構(gòu)成一個(gè)跨省市的遠(yuǎn)距離遙控系統(tǒng)。在該系統(tǒng)中,遠(yuǎn)程控制器的設(shè)計(jì)與制造是該系統(tǒng)的核心與關(guān)鍵。

              2 遠(yuǎn)程控制器的結(jié)構(gòu)及工作原理

              該控制器的CPU采用美國(guó)Microchip公司生產(chǎn)的PIC16C54一次性用戶可編程(OPT)單片機(jī),同時(shí),配以鈴流檢測(cè)、模擬摘機(jī)、雙音多頻接收等技術(shù),接收遠(yuǎn)程操作指令,實(shí)現(xiàn)對(duì)錄像機(jī)的放像、暫停、快進(jìn)和倒帶等操作。

              2.1 PIC單片機(jī)說(shuō)明

              PIC16C54單片機(jī)是8位單片機(jī),它采用精簡(jiǎn)指令集(RISC)和Harvard總線結(jié)構(gòu),其數(shù)據(jù)總線是8位,指令總線則是12位。這意味著PIC的一個(gè)指令字長(zhǎng)比采用CISC指令集的8位字長(zhǎng)的單片機(jī)指令包含更多的處理信息。它僅有33條指令,且均為單字指令。它的工作電壓為2.5~6.0V,內(nèi)部有自振式看門狗(WDT),且具有保密可熔斷絲,保護(hù)程序不被拷貝。該芯片(見(jiàn)圖2)具有0.5K程序存儲(chǔ)器(ROM),25個(gè)內(nèi)部寄存器組(RAM),8個(gè)特殊功能寄存器,2級(jí)子程序堆棧。它的各引腳功能如下:

              RA0~RA3:4輸入/輸出雙向單獨(dú)可編程I/OA口。

              RB0~RB7:8輸入/輸出雙向單獨(dú)可編程I/OB口。

              RTCC:實(shí)時(shí)時(shí)鐘/計(jì)數(shù)器輸入端。

                :低電平觸發(fā)主復(fù)位端。

              OSC1和OSC2:振蕩信號(hào)輸入和輸出端。

              振蕩方式有阻容、晶體、陶瓷等多種方式,本系統(tǒng)采用阻容式芯片,指令周期為1μs。

              VDD和VSS:電源和地。

             2.2 遠(yuǎn)程控制器的工作原理

              遠(yuǎn)程控制器的工作原理如圖3所示,整個(gè)電路由振鈴檢測(cè),模擬摘機(jī),雙音多頻解碼器,輸出驅(qū)動(dòng)等部分組成,各部分在PIC單片機(jī)控制下,完成對(duì)錄像機(jī)的遙控操作。其工作原理如下:

              當(dāng)電話鈴聲響時(shí),鈴流進(jìn)入以光耦817為主構(gòu)成的振鈴檢測(cè)電路,鈴流進(jìn)入輸入端,輸出端輸出方波信號(hào)。脈沖數(shù)等于振鈴次數(shù),計(jì)數(shù)任務(wù)由CPU的RTCC端完成。當(dāng)RTCC接收到2次振鈴就發(fā)1kHz的模擬摘機(jī)提示音,提示用戶可以進(jìn)行遙控操作了。

              雙音多頻DTMF接收器由SC8870實(shí)現(xiàn),它的2、3腳接收來(lái)自電話線路的雙音多頻脈沖信號(hào),經(jīng)譯碼輸出4位二進(jìn)制代碼D4~D1。D4~D1連到CPU的RA3~RA0輸入端,CPU經(jīng)RA口識(shí)別4位代碼。

             電話按鍵與相應(yīng)的譯碼輸出關(guān)系如表1所示。

             其中,A,B,C,D4個(gè)按鍵常被用作重?fù)?、掛機(jī)、免提等功能。

              為了獲得有效數(shù)據(jù),需將PIC16C54的RB7端與SC8870的數(shù)據(jù)有效端CID端相連,當(dāng)SC8870獲取有效的雙音多頻信號(hào)時(shí),CID端的電平由低變高,當(dāng)CPU檢測(cè)到這個(gè)上跳沿時(shí),通過(guò)CPU的A口接收有效的二進(jìn)制代碼。

              3 系統(tǒng)控制軟件及工作過(guò)程

             系統(tǒng)的軟件流程如圖4所示。

              為了保證系統(tǒng)的安全性,通過(guò)軟件為系統(tǒng)設(shè)置了密碼,同時(shí),系統(tǒng)還提供了模擬摘機(jī)后10秒鐘內(nèi)無(wú)任何操作或操作不完整就自動(dòng)掛機(jī)的功能。

              下面以操作錄像機(jī)放像為例說(shuō)明系統(tǒng)的工作過(guò)程:

              假設(shè)系統(tǒng)的密碼為99,錄像機(jī)放像的操作碼為4#。當(dāng)操作人員撥通控制目標(biāo)電話號(hào)碼時(shí)開(kāi)始振鈴,當(dāng)CPU連續(xù)收到2次振鈴時(shí)RB5端輸出高電平,致使外線電壓降至5V左右,接通話路,此時(shí),CPU發(fā)模擬摘機(jī)提示音,操作人員聽(tīng)到提示音后,可以連續(xù)輸入密碼和操作碼。當(dāng)密碼有效且操作碼正確時(shí)(如994#),對(duì)應(yīng)的輸出端RB2端輸出高電平,同時(shí)發(fā)操作成功提示音,然后系統(tǒng)自動(dòng)掛機(jī)。若密碼或操作碼無(wú)效,則系統(tǒng)直接掛機(jī)不發(fā)提示音。

              該遠(yuǎn)程控制系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單,操作方便的特點(diǎn),經(jīng)反復(fù)測(cè)試,運(yùn)行正常。此外,該系統(tǒng)也可改造成控制其它開(kāi)關(guān)量的遠(yuǎn)程控制系統(tǒng),滿足不同的需求。

               



          評(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); })();