久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3424|回復(fù): 5
收起左側(cè)

空手道之萬能NEC遙控單片機解碼程式

  [復(fù)制鏈接]
ID:474232 發(fā)表于 2019-2-1 19:10 | 顯示全部樓層 |閱讀模式
以前剛學(xué)MCU時做過紅外遙控解碼,參考別人的程序?qū)懥死习胩欤偣矌资校猛獠恐袛喾绞剑疫很不好使。
后來在做一個遙控控制RGB燈變色時,發(fā)現(xiàn)用外部中斷方式解碼在按鍵時RGB燈老閃(中斷處理解碼去了,PWM波程序被打斷了,PWM用軟件模擬的),
這時想可不可以不用中斷來做呢,就在網(wǎng)上搜了搜,發(fā)現(xiàn)一個,就在這個基礎(chǔ)上做了大量優(yōu)化,最后的解碼程序只有10行左右,
且靈敏度也很好,給大家分享一下。

悄悄告訴你:這個代碼相當(dāng)好用!各種MCU移植都很方便
上源碼:(只是核心部分)

sbit IR_IO = P1^6;          // IR管腳 任意IO
//定時器初始化為125uS中斷一次
void IR_decode_init(void)
{
   TMOD |= 0x12;                     // T1定時方式2
//--------------設(shè)定中斷時間------------------------
   TH0 = (-125);  TL0 = (-125); // 定時125us 12M晶振
    ET0 = 1;        TR0 = 1;        // 啟動T1
    EA = 1;                              // 總中斷允許
}
//解碼的相關(guān)數(shù)據(jù)              
bit Irprot_LastState = 0;   // 端口狀態(tài)位
uchar codeCnt = 0;          // 數(shù)據(jù)碼位計數(shù)
uchar irTime;                   // 碼時間,用于以125us時間計時
uchar IR_data[4];            // 接收數(shù)據(jù)緩存

//下面為解碼的關(guān)鍵部分,大家自己去分析。主思路就是計算下降沿間隔,其余什么高電平多少時間,低電平多少時間都不關(guān)心,因此代碼比較精簡。
//125us執(zhí)行中斷程序一次
void Timer0(void) interrupt 1                                                            
{   
   irTime++;
   if(irTime==240) {irTime--;  codeCnt=0x3f;} // ir解碼后碼值存放時間, 240*125us = 30ms
   if(IR_IO)   Irprot_LastState=1; // 記錄IO狀態(tài)
   else if(Irprot_LastState)       // 有下降沿
   {
      Irprot_LastState = 0;        // 下降沿后IO狀態(tài)記錄為0
      if(irTime<24)                // 小于24*125us=3ms的間隔才進行處理
      {
         codeCnt++;  codeCnt &= 0x1f;
         IR_data[codeCnt>>3] <<= 1;
         if( irTime>15 )   IR_data[codeCnt>>3]++;  // 大于15*125us=1.875ms的間隔為數(shù)據(jù)1
      }
      irTime = 0;                  // 下降沿處理完成,將時間清0
   }
}

使用時只需查詢codeCnt的值是否等于31(如果解碼完成30ms后才去判斷codeCnt==31,codeCnt將不會再是31,
可以在程序中修改該標(biāo)志的存活時間),是表示解碼完成,解碼數(shù)據(jù)放于IR_data[]數(shù)組中;
因為該解碼的核心思想是檢測兩個下降沿相隔的時間,所以只要兩個下降沿間隔符合,
不管高低電平時間都會進行解碼,所以如果要提高準(zhǔn)確性,需把IR_data[]中的數(shù)據(jù)進行檢驗,
也就是看是否IR_data[2]==IR_data[3],如果是,99%是正確的.


評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:284488 發(fā)表于 2019-2-2 09:14 | 顯示全部樓層
好東西,感謝分享!
回復(fù)

使用道具 舉報

ID:21069 發(fā)表于 2019-2-3 01:50 | 顯示全部樓層
好樣的,收下了

評分

參與人數(shù) 3黑幣 +105 收起 理由
shuisheng + 35
刀刀見紅 + 35 很給力!
areyouok + 35 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:156220 發(fā)表于 2019-2-3 11:26 | 顯示全部樓層
好資料謝謝樓主的分享
回復(fù)

使用道具 舉報

ID:472242 發(fā)表于 2019-2-3 21:23 | 顯示全部樓層
先收下,改天看看效果

評分

參與人數(shù) 2黑幣 +47 收起 理由
jinsheng7533967 + 35
站著說話不腰疼 + 12

查看全部評分

回復(fù)

使用道具 舉報

ID:831068 發(fā)表于 2020-11-22 23:25 | 顯示全部樓層
正在學(xué)習(xí),參考參考下大神的
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99爱视频 | 欧美激情精品久久久久久变态 | 亚洲激情一级片 | 欧美精品一区二区三区在线 | 免费av观看 | 在线小视频 | 国产视频福利一区 | 91成人午夜性a一级毛片 | 欧美1—12sexvideos| 精品成人一区二区 | 青青久草 | 国产精品av久久久久久久久久 | 国产一级一级国产 | 一区在线视频 | 精品福利视频一区二区三区 | 亚洲日韩中文字幕一区 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 久久亚洲国产精品日日av夜夜 | 日韩视频在线免费观看 | 亚洲精品在线视频 | 欧美亚洲高清 | 日韩欧美精品一区 | 在线中文视频 | 欧美日韩国产一区二区三区不卡 | 亚洲一区二区三区桃乃木香奈 | 久久久久久久综合 | 亚洲国产精品自拍 | 自拍偷拍第一页 | 五月天婷婷综合 | 一区二区三区亚洲精品国 | 国产日韩久久 | 热re99久久精品国99热观看 | 国产日韩欧美一区二区 | 日韩久久精品电影 | 午夜精品福利视频 | 91精品国产综合久久久久久首页 | 综合久久99 | 天天干夜夜操 | 日韩一区二区在线视频 | 免费一级欧美在线观看视频 | 在线亚洲一区 |