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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5156|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的NEC協(xié)議編碼紅外解碼方法與程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
記錄一次使用NEC協(xié)議編碼的紅外遙控信號(hào)的解碼方式。

NEC協(xié)議簡(jiǎn)要記錄
NEC協(xié)議是紅外遙控協(xié)議的一種,由其編碼的數(shù)據(jù)幀分別由引導(dǎo)碼、用戶(hù)碼、用戶(hù)碼(或者是用戶(hù)碼的反碼)、數(shù)據(jù)碼(即按鍵碼)和數(shù)據(jù)碼的反碼這五部分組成,最后還有一個(gè)停止位。引導(dǎo)碼表示即將開(kāi)始傳輸32位的二進(jìn)制數(shù)據(jù);引導(dǎo)碼之后的部分長(zhǎng)度為4字節(jié)一共32位;第一字節(jié)為用戶(hù)碼;第二字節(jié)可能是用戶(hù)碼,也可能是用戶(hù)碼的反碼,具體由廠商決定;第三字節(jié)是當(dāng)前按鍵的按鍵碼;第四字節(jié)是按鍵碼的反碼;停止位主要起隔離作用,一般不進(jìn)行判斷,也不需要理會(huì)。每一字節(jié)的數(shù)據(jù)從低位到高位依次發(fā)送。

NEC協(xié)議編碼方式
NEC協(xié)議的每一比特?cái)?shù)據(jù)本身也需要進(jìn)行編碼,編碼后再進(jìn)行載波調(diào)制。

引導(dǎo)碼:9ms的高電平 + 4.5ms的低電平
比特值0:0.56ms的高電平 + 0.56ms的低電平
比特值1:0.56ms的高電平 + 1.68ms的低電平
發(fā)射端和接收端的電平相反,即:

引導(dǎo)碼:9ms的低電平 + 4.5ms的高電平
比特值0:0.56ms的低電平 + 0.56ms的高電平
比特值1:0.56ms的低電平 + 1.68ms的高電平

源程序記錄
按下紅外遙控器的任一按鍵1~9,即可在開(kāi)發(fā)板的數(shù)碼管模塊的左邊第一位上顯示對(duì)應(yīng)的按鍵數(shù)字。

  1. #include<reg51.h>

  2. sbit OUTPUT=P3^2;                //P3.2引腳為單片機(jī)外部中斷0的觸發(fā)引腳,同時(shí)連接紅外接收模塊IR 1838的輸出端,在模塊輸出信號(hào)的同時(shí)進(jìn)入外部中斷0的服務(wù)函數(shù)
  3. sbit Wei=P2^7;                //數(shù)碼管模塊位鎖存

  4. unsigned char Code[9]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};                //數(shù)碼管顯示從“1”到“9”的段碼
  5. unsigned char Code0[4];
  6. unsigned char Code1[33];
  7. unsigned char time;

  8. bit m,n;                //定義兩個(gè)標(biāo)志位;標(biāo)志位m表示一幀數(shù)據(jù)解碼完畢,標(biāo)志位n表示一幀數(shù)據(jù)接收完畢

  9. void ET_0() interrupt 1 using 1                //定時(shí)器0中斷
  10. {
  11.         time++;                //對(duì)兩個(gè)下降沿之間的時(shí)間間隔進(jìn)行計(jì)數(shù)
  12. }

  13. void EX_0() interrupt 0                //外部中斷0
  14. {
  15.         static unsigned char i;
  16.         static bit START;
  17.         if(START)
  18.         {
  19.                 if(time<63&&time>=33)                //引導(dǎo)碼,9ms+4.5ms
  20.                 {
  21.                         i=0;
  22.                 }
  23.                 Code1[i]=time;                //存儲(chǔ)兩個(gè)下降沿之間的時(shí)間間隔,將用于數(shù)據(jù)幀的“0”和“1”
  24.                 time=0;
  25.                 i++;
  26.                 if(i==33)
  27.                 {
  28.                         n=1;
  29.                         i=0;
  30.                 }
  31.         }
  32.         else
  33.         {
  34.                 time=0;
  35.                 START=1;
  36.         }
  37. }

  38. void ET0_init()                //定時(shí)器0中斷初始化
  39. {
  40.         TMOD=0x02;                //定時(shí)器0工作在方式2
  41.         TH0=0x00;                //重載值
  42.         TL0=0x00;                //初始值
  43.         ET0=1;                //開(kāi)啟定時(shí)器0中斷
  44.         TR0=1;
  45. }

  46. void EX0_init()                //外部中斷0初始化
  47. {
  48.         IT0=1;                //設(shè)置外部中斷0為下降沿觸發(fā)
  49.         EX0=1;                //開(kāi)啟外部中斷0
  50.         EA=1;                //開(kāi)啟總中斷
  51. }

  52. void DECODE()                //紅外解碼
  53. {
  54.         unsigned char i,j,k;
  55.         unsigned char x,y;
  56.         k=1;
  57.         for(i=0;i<4;i++)                //對(duì)數(shù)據(jù)幀中的4個(gè)字節(jié)進(jìn)行處理
  58.         {
  59.                 for(j=1;j<=8;j++)                //對(duì)一個(gè)字節(jié)中的8位進(jìn)行處理
  60.                 {
  61.                         x=Code1[k];
  62.                         if(x>7)                //時(shí)間間隔大于某值則為1,與晶振(12MHz)相關(guān),允許誤差
  63.                         {
  64.                                 y|=0x80;
  65.                         }
  66.                         if(j<8)
  67.                         {
  68.                                 y>>=1;
  69.                         }
  70.                         k++;
  71.                 }
  72.                 Code0[i]=y;
  73.                 y=0;
  74.         }
  75.         m=1;
  76. }

  77. void NUMBER()                //將紅外遙控器的按鍵值轉(zhuǎn)換為數(shù)碼管的段值
  78. {
  79.         switch(Code0[2])
  80.         {
  81.                 case 0x0c:P0=Code[0];break;
  82.                 case 0x18:P0=Code[1];break;
  83.                 case 0x5e:P0=Code[2];break;
  84.                 case 0x08:P0=Code[3];break;
  85.                 case 0x1c:P0=Code[4];break;
  86.                 case 0x5a:P0=Code[5];break;
  87.                 case 0x42:P0=Code[6];break;
  88.                 case 0x52:P0=Code[7];break;
  89.                 case 0x4a:P0=Code[8];break;
  90.                 default:break;
  91.         }
  92.         m=0;
  93. }

  94. void main()
  95. {
  96.         ET0_init();
  97.         EX0_init();
  98.         
  99.         P0=0xfe;                //取數(shù)碼管模塊左邊第一位選通
  100.         Wei=1;
  101.         Wei=0;
  102.         
  103.         while(1)
  104.         {
  105.                 if(n)
  106.                 {
  107.                         DECODE();
  108.                         n=0;
  109.                 }
  110.                 if(m)
  111.                 {
  112.                         NUMBER();
  113.                 }
  114.         }
  115. }
復(fù)制代碼

原理圖

Snipaste_2021-06-04_00-30-58.png (113.75 KB, 下載次數(shù): 155)

Snipaste_2021-06-04_00-30-58.png

Snipaste_2021-06-04_00-32-15.png (30.18 KB, 下載次數(shù): 135)

Snipaste_2021-06-04_00-32-15.png

Snipaste_2021-06-04_00-29-45.png (125.96 KB, 下載次數(shù): 157)

Snipaste_2021-06-04_00-29-45.png

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: a级在线免费观看 | 91麻豆精品国产91久久久久久 | 日韩一区二区三区精品 | 免费黄色片在线观看 | 日韩综合在线视频 | 久久久久久久久久久久91 | 爱爱爱av| 1区2区视频 | 欧美一级免费 | 久久蜜桃av | 午夜天堂精品久久久久 | 久久精品国产久精国产 | 亚洲精品视频导航 | 一级欧美一级日韩片 | 国产成人a亚洲精品 | 91在线电影 | 亚洲一区二区在线播放 | 国产免费一区二区三区免费视频 | 青青草网站在线观看 | 天天操网| 欧美日韩国产一区二区三区 | 国产一级一级毛片 | 国产在线视频一区 | 久久久精 | 亚洲 欧美 激情 另类 校园 | 毛片视频网站 | 操亚洲 | 亚洲欧美激情网 | 一区精品国产欧美在线 | 亚洲性人人天天夜夜摸 | 国产一区二区三区视频在线观看 | 成人午夜精品 | 久久国产一区二区三区 | 亚洲在线一区二区 | 午夜在线免费观看视频 | 亚洲成av人影片在线观看 | 91国在线视频| 亚洲 欧美 另类 综合 偷拍 | 蜜臀久久99精品久久久久野外 | 成人高清视频在线观看 | 亚洲一区二区三区视频在线 |