NEC協(xié)議的紅外遙控器驅(qū)動程序.doc
《NEC協(xié)議的紅外遙控器驅(qū)動程序.doc》由會員分享,可在線閱讀,更多相關(guān)《NEC協(xié)議的紅外遙控器驅(qū)動程序.doc(4頁珍藏版)》請在裝配圖網(wǎng)上搜索。
是不是覺得紅外遙控+51單片機是絕妙組合?但是在編程時才發(fā)現(xiàn)超級糾結(jié)?其實也沒那么糾結(jié),自己摸索摸索,總能找出辦法來的。本程序占用了51單片機的定時器0以及中斷1兩個資源,為的是使單片機能接收到每一個紅外脈沖信號,一個都不能少。如果舍不得用這兩個資源,還有另一種查詢的辦法,就是不一定每個信號都能收到,可自己琢磨一下。需要全套NEC協(xié)議紅外遙控器資料的,到網(wǎng)上找,到處都有,而且很全。另外,對著資料寫程序如果實在寫不出,可以找個示波器,把波形錄下來好好研究研究。畢竟有些時候資料會過時,只要里面有一點東西變化了,程序就完全不一樣了。這種彎路,盡量少走。本程序只是頭文件,具體到應用上還要各位自己動腦筋了,希望對大家有所幫助。共同學習,共同進步!/*INF_NEC.h用于NEC協(xié)議的遙控器,主控器為51單片機。用戶碼8位,分布于2-17個脈沖;按鍵碼8位,分布于18-33個脈沖。皆為前8原碼,后8反碼。注意:本驅(qū)動占用51單片機的外部中斷1以及定時器0兩個資源,編程時注意不要再亂動這兩個資源。*/#include#define uchar unsigned char#define uint unsigned intuchar nec_flag=0;/nec_flag:遙控碼的標志位。0:無信號;1、2:信號采集;3、可用信號uchar nec_num=0;/nec_num:紅外碼的序號uint nec_time=0;/nec_time:定時器的計時次數(shù)nec_time*250usuchar nec_cod2=0,1;/遙控器的編號,編號0為原碼,編號1為反碼uchar nec_dat2=0,1;/遙控器的數(shù)據(jù),數(shù)據(jù)0為原碼,數(shù)據(jù)1為反碼#ifndef _INF_NEC_#define _INF_NEC_extern void nec_init();extern void nec_act();#endifvoid nec_init() /外中斷1及定時器0的初始化函數(shù)TMOD=(TMOD&0xf0)|0x02; /定時器0模式2,8位自動重裝TH0=0x19; TL0=0x19; /11.0592MHz晶振,計數(shù)230次,大概時間250usET0=1;TR0=0; /定時器0使能,先關(guān)著IT1=1;EX1=1; /外部中斷1使能,用來接收紅外信號EA=1; /開總中斷void nec_act()/按鍵功能程序if(nec_dat0=nec_dat1)&(nec_flag=3)switch(nec_dat0)case 69: break;case 70: break;case 71: break;case 68:break;case 64:break;case 67:break;case 7:break;case 21:break;case 9:break;case 22:break;case 25:break;case 13:break;case 12:break;case 24:break;case 94:break;case 8:break;case 28:break;case 90:break;case 66:break;case 82:break;case 74:break;void timer0(void) interrupt 1nec_time+;if(nec_time1000)/長時間無紅外遙控信號時關(guān)定時器nec_time=0;nec_num=0;nec_flag=0;TR0=0;void exint1(void) interrupt 2uint intime=0;/intime:為了不打擾計時器工作,所以用intime把nec_time提出來intime=nec_time;nec_time=0;/nec_time置0,準備計數(shù)if(nec_num=0)TR0=1;/開定時器,開始計數(shù)if(nec_num=1)if(intime50)&(intime2)&(intime=2)&(nec_num2)&(intime6)nec_cod0=nec_cod0&(0x017)&(intime11)nec_cod0=nec_cod0|(0x01=10)&(nec_num2)&(intime6)nec_cod1=nec_cod1&(0x017)&(intime11)nec_cod1=nec_cod1|(0x01=18)&(nec_num2)&(intime6)nec_dat0=nec_dat0&(0x017)&(intime11)nec_dat0=nec_dat0|(0x01=26)&(nec_num2)&(intime6)nec_dat1=nec_dat1&(0x017)&(intime11)nec_dat1=nec_dat1|(0x0135)nec_num=35;nec_flag=3;- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- NEC 協(xié)議 紅外 遙控器 驅(qū)動程序
鏈接地址:http://ioszen.com/p-6654055.html