<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 多媒體投影機遙控器的PIC單片機仿真

多媒體投影機遙控器的PIC單片機仿真

作者: 時(shí)間:2011-10-14 來(lái)源:網(wǎng)絡(luò ) 收藏

當前,投影機已是高校多媒體教室的常規設備,但是由于使用頻繁,人員又雜,投影機遙控器損壞及遺失的情況時(shí)有發(fā)生。因為學(xué)校用的投影機均為進(jìn)口產(chǎn)品,遙控器很難配到,并且能買(mǎi)到的話(huà)價(jià)格也是異常昂貴。利用單片機仿真遙控器的功能,制作成本很低的投影機遙控器具有實(shí)用推廣價(jià)值。
制作投影機遙控器的關(guān)鍵是先要讀出原投影機遙控器(同型號)的所有按鍵的控制碼數據,然后做成按鍵控制碼表格,當仿真時(shí)在按鍵操作下單片機將不同的控制碼數據發(fā)射出去,達到遙控投影機的目的。

1 讀遙控器按鍵碼方法

1.1讀遙控器按鍵碼硬件電路

如圖1為單片機讀投影機遙控鍵碼的控制電路。單片機使用宏晶公司的STC12C5410,P1.6口燈用作讀碼狀態(tài)的指示,燈亮代表讀碼狀態(tài)。P1.7口燈用于指示遙控發(fā)射操作,閃爍時(shí)代表遙控碼發(fā)射中,在讀碼狀態(tài)下,當P1.6口燈滅而P1.7口燈亮時(shí)代表碼已讀入。第(1)腳為單片機的復位腳,采用簡(jiǎn)單的RC上電復位電路,(6)腳為外中斷輸入口,用于讀碼功能的轉換控制,當按一下(6)腳口的開(kāi)關(guān)時(shí),系統進(jìn)入中斷讀碼狀態(tài)。(8)腳用于紅外線(xiàn)接收頭的輸出信號讀入。(11)腳作為遙控器的紅外線(xiàn)信號輸出口,用于輸出40KHz載波編碼。(12)腳接遙控測試開(kāi)關(guān)。(4)、(5)腳外接12M晶振。

當按一下“學(xué)習”開(kāi)關(guān)時(shí),P1.6口的讀碼燈亮,表示進(jìn)入讀碼狀態(tài),此時(shí)將需要仿真的遙控器某按鍵對著(zhù)紅外接收頭按一下,當P1.6口的燈滅而P1.7口的指示燈亮時(shí),讀碼成功。從計算機超級終端串口中可獲得鍵碼的數據。為了測試讀得的碼是否正確,可按一下發(fā)射測試開(kāi)關(guān),看是否能正確實(shí)現投影機的功能操作。按以上方法將原投影機遙控器的所有按鍵碼讀入計算機備用。圖2和圖3分別是紅外線(xiàn)接收頭輸出端口及發(fā)射遙控碼時(shí)的單片機輸出口波形圖。

1.2 讀遙控器按鍵碼軟件設計

圖4是讀遙控器按鍵碼控制軟件的主程序流程。圖5是中斷讀入鍵碼數據的程序流程圖。

中斷讀鍵碼程序在編程設計中非常重要。它要完成遙控碼起始位的識別及脈寬計數、遙控碼編碼位的寬度計數、結束位的認別等功能。通過(guò)大量的不同種類(lèi)的遙控碼波形實(shí)驗分析,遙控碼的幀間歇位寬度均在10 ms以上,起始位碼寬度在100μs—20ms之間,編碼位在100μs—5ms之間,為確保對所有遙控器讀碼的成功,采用以下設計方法:

(1)尋提起始位方法:用16位DPTR計數器對高電平進(jìn)行寬度計數,計數采樣周期為21μs,當高電平結束時(shí),如高8位計數器為非零,則說(shuō)明高電平寬度超過(guò)5.35ms(255×21μs),緊接來(lái)的低電平碼就是起始位,否則重新開(kāi)始。

(2)讀起始位方法:采用16位DPTR對低電平進(jìn)行寬度計數(最大可讀寬度為1.376s),當高電平跳變時(shí)結束計數,并將DPTR的高8位、低8分別存入R4,R5寄存器。

(3)讀遙控編碼的方法:采用DPTR低8位計數器對碼(高電平或低電平)進(jìn)行寬度計數,電平跳變時(shí)結束計數,并將值存入規定的地址,在高電平碼計數時(shí),如 DPTR高8位計數器為非零(寬度大于5.35ms),則判定為結束幀間隔位,在相應存儲單元寫(xiě)入OOH作為結束標志。

2 投影機仿真遙控器的設計

2.1仿真遙控器硬件電路的設計

圖6是投影機仿真遙控器的電路原理圖。采用4*8的行列式按鍵開(kāi)關(guān),可有32個(gè)操作按鍵。遙控器從P3.7口輸出40K的紅外線(xiàn)調制信號。


2.2 仿真遙控器軟件的設計

仿真遙控器中通過(guò)主程序的循環(huán)查鍵執行相應的鍵碼發(fā)射功能,鍵碼表是寫(xiě)在ROM中的,因此完成編程后是不能再改的。程序包括以下主要模塊:

(1)初始化程序。P1及P3端口置位,設置計數器計數模式、控制字等。

(2)鍵盤(pán)掃描程序。完成32個(gè)按鍵的掃鍵工作,并翻譯成相應的32個(gè)鍵號,使能執行相應的鍵功能。

(3)按鍵功能程序。利用定時(shí)器定時(shí)中斷功能,實(shí)現40KHz載波的產(chǎn)生;利用ROM表上各按鍵相應的起始位控制數據、高電平控制數據、低電平控制數據控制載波的發(fā)送時(shí)間及間隔時(shí)間。遙控碼調制發(fā)射的算法如下:

①[發(fā)起始位調制波]

取ROM表中起始位數據;

開(kāi)40KHZ方波定時(shí)器;

起始位數據減1,不為零,延時(shí)21μs后重復執行本句;

為零執行下句;

②[發(fā)高電平間隔位]

關(guān)40KHZ方波定時(shí)器;

取ROM表中高電平數據;如數據為0,延時(shí)10ms后結束算法;不為零執行下句;

數據減1,不為零,延時(shí)21μs后重復執行本句;

為零執行下句;

③[發(fā)低電平調制波]

取ROM表中低電平數據;

開(kāi)40KHZ方波定時(shí)器;

低電平數據減1,不為零,延時(shí)21μs后重復執行本句;為零轉②循環(huán);

④算法結束

3 主要性能指標

(1) 讀碼器最大學(xué)習碼長(cháng):206bit

(2) 讀碼器讀碼識別范圍:起始位:21μs~1.376s,編碼位:21μs ~5.355ms

(3) 讀碼誤差:+21μs

(4) 讀碼器幀間歇位識別范圍:小于1.37s,大于5.355ms

(5) 仿真遙控器發(fā)射距離:大于10M

4 小結

的單片機仿真遙控器性能與軟件的設計具有密切的關(guān)系,特別是碼寬計數的采樣周期,關(guān)系到能否識別出起始位及遙控碼采樣精度問(wèn)題,在編程時(shí)需多次實(shí)驗測試,相互兼顧,本設計中讀碼采樣周期為21μs,經(jīng)測試可正確仿真市場(chǎng)上常用的投影機及彩電、空調等設備。

紅外遙控器相關(guān)文章:紅外遙控器原理


關(guān)鍵詞: 多媒體投影機 PIC單片機

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>