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

標(biāo)題: diy紅外遙控解碼器 [打印本頁]

作者: niujia    時(shí)間: 2015-7-18 14:27
標(biāo)題: diy紅外遙控解碼器
上次從本壇安鑫老板那買了幾個(gè)遙控器,質(zhì)量還不錯(cuò),昨天沒事干,研究了一下,做個(gè)接收的程序,暫時(shí)能解碼了undefined,也不知道對不對,發(fā)上來跟大伙共享一下,希望高手再改進(jìn)改進(jìn)








  1. #ifndef _IR_H_
  2. #define _IR_H_

  3. unsigned char IRkeylong;//遙控按鍵長按標(biāo)識
  4. unsigned char IRtime;//紅外時(shí)間
  5. unsigned char IRrec;//紅外接收
  6. unsigned char IRdata[17];//接收到的紅外數(shù)據(jù)(二進(jìn)制)
  7. unsigned char IRdatabit;//紅外數(shù)據(jù)的位
  8. unsigned char IRrecok;//紅外接收完畢標(biāo)識
  9. unsigned char IRkeycode[2];//紅外按鍵鍵值(16進(jìn)制)
  10. unsigned char IRchangeok;//紅外碼轉(zhuǎn)換完畢標(biāo)識(二進(jìn)制轉(zhuǎn)十六進(jìn)制)

  11. void init_timer0()//初使化定時(shí)器0
  12. {
  13.         EA=1;//開總中斷
  14.         TMOD=0x02;//定時(shí)器工作模式為2(8位初值自動重裝的8位定時(shí)器)
  15.         TH0=0x00;//賦初值
  16.         TL0=0x00;//賦初值
  17.         ET0=1;//開定時(shí)器0中斷
  18.         TR0=1;//打開定時(shí)器
  19. }

  20. void init_int0()//外部中斷0初使化
  21. {
  22.         EA=1;//開總中斷
  23.         EX0=1;//開外部中斷0中斷
  24.         IT0=1;//負(fù)跳沿觸發(fā)方式
  25. }

  26. void IRchange()//紅外轉(zhuǎn)換函數(shù)(二進(jìn)制轉(zhuǎn)十六進(jìn)制)
  27. {
  28.         unsigned char x,y,IRdatabit;
  29.         unsigned char value;//值,用于暫存紅外鍵值用
  30.         IRdatabit=1;//紅外數(shù)據(jù)第0位為引導(dǎo)碼(檢測用)從第1位開始才是有用的紅外碼
  31.         if(IRrecok)//開始進(jìn)行紅外轉(zhuǎn)換
  32.         {
  33.                 for(x=0;x<2;x++)//得到2個(gè)8位鍵值碼(16進(jìn)制碼)
  34.                 {
  35.                         for(y=0;y<8;y++)//轉(zhuǎn)換二進(jìn)制的0        和1
  36.                         {
  37.                                 value=value>>1;//右移一次,使最高位為0;
  38.                                 if(IRdata[IRdatabit]>5)//當(dāng)紅外數(shù)據(jù)數(shù)組中的'位'大于1ms時(shí)
  39.                                 {
  40.                                         value=value|0x80;//得到最高位
  41.                                 }
  42.                                 IRdatabit++;//數(shù)組中的'位'自加1
  43.                         }
  44.                         IRkeycode[x]=value;//將得到值保存到紅外鍵值的數(shù)組中
  45.                 }
  46.                 IRchangeok=1;//相反轉(zhuǎn)換標(biāo)識為1
  47.                 IRrecok=0;//接收標(biāo)識置0,等待下一次接收
  48.         }
  49. }

  50. void timer0() interrupt 1//定時(shí)器中斷函數(shù)
  51. {
  52.         IRtime++;//紅外時(shí)間自加1;
  53. }

  54. void int0() interrupt 0//外部中斷函數(shù)
  55. {
  56.         if(IRrec)//開始接收
  57.         {
  58.                 if(IRtime>10) //檢測引導(dǎo)碼
  59.                 {
  60.                         IRdatabit=0;
  61.                         IRkeylong=1;//用于檢測按鍵是否長按下
  62.                 }
  63.                 IRdata[IRdatabit]=IRtime;//將得到的紅外時(shí)間保存到紅外數(shù)據(jù)數(shù)組中
  64.                 IRtime=0;//紅外時(shí)間清0
  65.                 IRdatabit++;//'位'自加1
  66.                 if(IRdatabit==17)//接收完成
  67.                 {
  68.                         IRdatabit=0;//將線外數(shù)據(jù)中的位清0
  69.                         IRrecok=1;//紅外碼接收完成標(biāo)識
  70.                         IRrec=0;//將紅外接收置0,準(zhǔn)備下次接收
  71.                 }        
  72.         }
  73.         else//起始狀態(tài)
  74.         {
  75.                 IRrec=1;
  76.                 IRtime=0;
  77.         }
  78. }

  79. #endif
復(fù)制代碼
  1. #include
  2. #include
  3. #include

  4. #define uint unsigned int//宏定義
  5. #define uchar unsigned char//宏定義
  6. sbit SPEAK=P3^7;

  7. uchar code num[]={"0123456789abcdef"};

  8. void delay_ms(uint z)//延時(shí)毫秒
  9. {
  10.         uint x;uchar y;
  11.         for(x=z;x>0;x--)
  12.                 for(y=114;y>0;y--);
  13. }

  14. /*****延時(shí)微秒*****/        
  15. void delay_us(uint x)
  16. {
  17.         while(x--);
  18. }

  19. /*****蜂鳴提示*****/
  20. void beep(uchar YD,YC) //YD為音調(diào),YC為音長
  21. {
  22.         uchar x;
  23.         for(x=0;x<yc;x++)
  24.         {
  25.                 SPEAK=~SPEAK;
  26.                 delay_us(YD);//音調(diào)
  27.     }
  28.         SPEAK=1;
  29. }

  30. /*****主程序*****/
  31. void main()
  32. {
  33.         uchar clr=1;//清屏用
  34.         init_timer0();//初使化定時(shí)器0
  35.         init_int0();//初使化外部中斷0
  36.         init12();//初使化12864液晶
  37.         w12_com(0x01);
  38.         dis_str(0x80,"IR解碼  By: ain365  ",20);
  39.         dis_str(0x90,"- ^ ^ - 按任意鍵開始",20);
  40.         while(1)
  41.         {
  42.                 IRchange();
  43.                 if(IRchangeok)
  44.                 {
  45.                         while(clr)//清屏一次
  46.                         {
  47.                                 w12_com(0x01);
  48.                                 clr=0;
  49.                         }
  50.                         beep(50,100);//聲音提示
  51.                         dis_str(0x80,"  前 8位碼  --  --  ",20);
  52.                         dis_str(0x90,"  后 8位碼  --  --  ",20);
  53.                         w12_word(0x87,num[IRkeycode[0]/16],num[IRkeycode[0]%16]);
  54.                         w12_word(0x97,num[IRkeycode[1]/16],num[IRkeycode[1]%16]);
  55.                         
  56.                         IRchangeok=0;
  57.                         IRkeylong=0;
  58.                 }
  59.                 delay_ms(500);
  60.                 IRchange();
  61.                 if(IRkeylong)
  62.                 {
  63.                         beep(50,100);
  64.                         IRkeylong=0;
  65.                 }
  66.         }
  67. }
復(fù)制代碼


12864中斷方式.rar (44.39 KB, 下載次數(shù): 42)




作者: gemxie    時(shí)間: 2015-10-23 17:31
好樣的。。。。
作者: A6葉簫    時(shí)間: 2017-3-22 18:58
插個(gè)眼
作者: taiwan3c    時(shí)間: 2017-10-5 12:23
學(xué)習(xí)學(xué)習(xí)




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩特级片 | 999热视频| 欧美日韩国产二区 | 一区二区三区四区免费视频 | www国产精品 | 成人在线观看视频网站 | 91亚洲精选 | 亚洲综合视频在线 | 一级黄色大片 | 欧美大白屁股 | 日韩精品一区二区三区免费视频 | 欧美激情成人 | 美日韩在线视频 | 午夜色播| 亚洲精品字幕 | 超碰人人插 | 少妇性bbb搡bbb爽爽爽欧美 | 日韩一二区 | 午夜免费福利 | 亚洲一区二区免费看 | 91亚洲精品乱码久久久久久蜜桃 | 色偷偷噜噜噜亚洲男人 | 一级片av| 欧美日韩色 | 日韩免费一区二区 | 成人区精品一区二区婷婷 | 欧美日韩精品在线 | 亚洲天堂影院 | 国产一级视频在线观看 | 美国黄色一级大片 | 天天爱综合| 国产精品少妇 | av免费观看网站 | 成人婷婷 | 高清一区二区三区 | 青青草av| 日本少妇做爰全过程毛片 | 国产精品第二页 | 中文字幕在线观看一区 | 国产1级片 | 中文字幕在线一区 |