• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于mega128單片機的學習型紅外遙控器設計

    基于mega128單片機的學習型紅外遙控器設計

    作者: 時間:2011-08-25 來源:網絡 收藏

    遙控是一種無線、非接觸控制技術,具有抗干擾能力強、信息傳輸可靠、功耗低、成本低、易實現等顯著優(yōu)點,被諸多電子設備特別是家用電器廣泛采用。隨著人們生活水平的提高,家用電器的數量逐漸增加,使用的頻率越來越高。但是由于各種編碼格式不同[1],所以各種紅外不能兼容,這樣一個家庭就需要很多個遙控器,很不方便。
    目前國內遙控器大部分采用復制遙控器紅外波形的思想,方法很多。但是由于采用專用遙控發(fā)射芯片,集成度高但成本也高。
    本文介紹一種的具有的紅外遙控器的,其思想是通過測量經過紅外接收芯片解調后輸出的編碼脈沖寬度[2],然后存入內部eeprom指定地址。當要發(fā)生紅外信號時,從存儲區(qū)還原出相應的紅外遙控編碼,并調制到38 kHz的載波信號上,最后直接驅動紅外發(fā)光二極管發(fā)射紅外信號,實現一個遙控器控制多種紅外家電設備。
    1 紅外遙控器基本硬件結構
    學習型紅外遙控器由以下幾個模塊組成[3]:、紅外接收模塊、紅外發(fā)射模塊和矩陣鍵盤,如圖1所示。系統(tǒng)采用8 MHz晶振,直接采用內部E2PROM來存儲紅外遙控編碼,其容量為4 KB。

    本文引用地址:http://www.czjhyjcfj.com/article/172533.htm

    紅外接收模塊電路如圖2所示。紅外接收芯片采用HS0038A2,此芯片對接收到的紅外信號進行放大,檢波整形并解調出紅外遙控編碼,得到TTL電平,反相輸入到 的PD0和PD1口,即外部中斷0和外部中斷1口。通過上升沿和下降沿兩個邊沿觸發(fā)中斷來控制定時器的開與關,從而記錄高低電平的脈沖寬度值。

    紅外發(fā)射模塊電路如圖3所示。當系統(tǒng)進入發(fā)射功能時,單片機首先掃描矩陣鍵盤,識別相應按鍵的按下情況,然后從E2PROM中取出相應鍵值的遙控信號[4],即通過學習后保存到E2PROM里的高低電平的寬度值。與此同時,利用單片機T0定時器產生38 kHz的載波信號。最后將遙控信號調制到載波上,通過IO口直接驅動紅外發(fā)射二極管發(fā)射紅外信號。這里的調制完全通過軟件實現,取代了直接用與門來調制的方式,方便準確。由于mega128 單片機IO口的驅動能力強,可以直接驅動二極管,避免了傳統(tǒng)三極管放大后再驅動的繁瑣。

    2 系統(tǒng)軟件
    2.1主程序

      系統(tǒng)上電后不斷掃描鍵盤,當檢測到學習鍵按下時,調入學習子程序,對相應功能鍵的遙控編碼進行學習并寫入E2PROM;當發(fā)射鍵按下時,先識別按下的功能鍵,然后從E2PROM中讀出相應的已經學習到的紅外遙控編碼,然后通過發(fā)射程序發(fā)射出去。如圖4所示。

    2.2 學習子程序
      學習程序的功能是對紅外遙控編碼的學習,即對高低脈沖寬度的測量。當中一定會存在一定誤差,不可能毫無誤差地復制出被測的紅外編碼。不過,由于所有的紅外設備在接收端都允許一定的誤差,只要保證在誤差范圍內都可以對紅外設備進行控制。學習程序的主要思路是通過邊沿觸發(fā)中斷來控制定時器的開和關,從而測出高低脈沖寬度。mega128單片機的外部中斷0和1口的中斷方式分別設置為下降沿和上升沿觸發(fā)中斷。當沒有接收到紅外信號時,外部中斷0、1口都為高,此時程序等待紅外信號的到來。當紅外到達時,下降沿觸發(fā)中斷,學習程序跳到下降沿中斷服務程序。在中斷服務程序里,停止定時器3,保存其寄存器的值并清零,最后啟動定時器1,這樣開始測量低電平。當高電平到來時,上升沿觸發(fā)中斷,程序跳到上升沿中斷服務程序里,此時停止定時器1,保存其寄存器的值并清零,最后啟動定時器3,高電平開始測量。當下一個低電平到來時,程序又跳到下降沿中斷服務程序,重復上面的工作。這樣,高低電平的測量就在兩個邊沿觸發(fā)中斷服務程序里面來回跳轉。最后一次跳入邊沿觸發(fā)中斷服務程序時,一旦產生定時器溢出,則程序跳入定時器溢出中斷服務程序,只要設定一個標志位,讓程序跳回主程序即可。到此,紅外編碼學習完畢,只需把學習到的編碼寬度值存入E2PROM即可。如圖5所示。


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區(qū)

    關閉
    主站蜘蛛池模板: 扶绥县| 洪洞县| 柞水县| 瑞金市| 新巴尔虎右旗| 兰考县| 莎车县| 玉环县| 鸡泽县| 榕江县| 北安市| 交城县| 武冈市| 张家港市| 兴宁市| 延安市| 雅江县| 九龙县| 西林县| 商丘市| 武城县| 香格里拉县| 兴业县| 墨竹工卡县| 普格县| 略阳县| 青州市| 宝应县| 定兴县| 江陵县| 五华县| 莱芜市| 民乐县| 永善县| 泾川县| 自贡市| 牙克石市| 邯郸市| 马关县| 衢州市| 南投市|