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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1993|回復: 2
打印 上一主題 下一主題
收起左側

單片機紅外遙控連發時出現錯誤

[復制鏈接]
回帖獎勵 20 黑幣 回復本帖可獲得 2 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:703051 發表于 2020-4-24 14:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下面的程序是我把買的板子里面帶的稍微修改了一下,把之前的delay函數延時改成了定時器0方式二工作。單發的時候沒問題,連發的時候會變成FFH。
使用的收發協議就是那個NEC協議,9ms低+4.5ms高引導碼那個。紅外接收器輸出腳連的是外部中斷0,P3^2引腳..........

單片機源程序如下:
  1. #include<reg52.h>
  2. typedef unsigned int u16;
  3. typedef unsigned char u8;
  4. //#define u16 unsigned int
  5. //#define u8 unsigned char
  6. sbit LSA=P2^2;//數碼管位選
  7. sbit LSB=P2^3;
  8. sbit LSC=P2^4;
  9. sbit IRIN=P3^2;//外部中斷入口
  10. sbit LED1=P2^0;
  11. sbit LED2=P2^1;
  12. sbit LED3=P2^5;
  13. u8 irvalue[6];
  14. u8 count;
  15. u8 displaydata[8];
  16. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0X76};//0~f+h 顯示碼
  17. void digdisplay()
  18. {
  19. u8 i,j;
  20. for(i=0;i<3;i++)
  21. {
  22. switch(i)
  23. {
  24. case(0):LSA=1;LSB=1;LSC=1;break;
  25. case(1):LSA=0;LSB=1;LSC=1;break;
  26. case(2):LSA=1;LSB=0;LSC=1;break;
  27. }
  28. P0=displaydata[i];//發數據,displaydata是定義好要存數據的數組
  29. j=100;
  30. while(j--);
  31. P0=0x00;//消隱
  32. }
  33. }
  34. void judge()
  35. {
  36. if(irvalue[2]==69)
  37.    LED1=~LED1;
  38. else if(irvalue[2]==94)
  39.    LED2=~LED2;
  40. }
  41. void irinit()
  42. {
  43. IT0=1;//下降沿觸發
  44. EX0=1;//打開中斷0允許
  45. EA=1;//開總中斷
  46. IRIN=1;//初始化端口
  47. TMOD=0x02;//定時器0工作方式2
  48. TH0=0x06;        //設置初值計時0.25ms
  49. TL0=0x06;
  50. ET0=1;                //開定時器0中斷
  51. TR0=1;                //啟動定時器0
  52. PT0=1;                //定時器0
  53. }
  54. void main()
  55. {
  56. irinit();
  57. while(1)
  58. {
  59. displaydata[0]=smgduan[irvalue[2]/16];
  60. displaydata[1]=smgduan[irvalue[2]%16];
  61. displaydata[2]=smgduan[16];
  62. digdisplay();
  63. }
  64. }
  65. /*NEC碼位定義:一個脈沖560微秒連續載波,一個邏輯1傳輸需要560微秒脈沖+1680微秒低電平
  66. 一個邏輯0傳輸需要560微秒脈沖+560微秒低電平
  67. 在接收端對應的是 邏輯1:560微秒低電平+1680微秒高電平
  68.                                  邏輯0:560微秒低電平+560微秒高電平
  69.                                  通過時間判斷0或1
  70. NEC數據格式:9ms+4.5ms的引導碼
  71.                           8位地址碼+8位地址反碼
  72.                           8位控制碼+8位控制反碼*/
  73. void T0_TIMER() interrupt 1
  74. {
  75. count++;
  76. }
  77. void readir() interrupt 0
  78. {
  79. u8 j,k,l;
  80. count=0;
  81. //TR0=1;
  82. while(count<30);
  83. //TR0=0;
  84. if(IRIN==0)
  85. {
  86.         count=0;
  87.         while((IRIN==0)&&(count<40));//等9ms?
  88.         if(IRIN==1)
  89.         {
  90.                 count=0;
  91.                 while((IRIN==1)&&(count<20));
  92.                                   //4.5ms?   引導碼
  93.         for(l=0;l<4;l++)
  94.                         irvalue[l]=0;
  95.                 for(k=0;k<4;k++)//4組數據
  96.                 {
  97.                  for(j=0;j<8;j++)//接收一組數據
  98.                         {
  99.                          count=0;
  100.                          while((IRIN==0)&&(count<4));//等待信號前的560微秒
  101.                          LED3=0;
  102.                          count=0;
  103.                          while((IRIN==1)&&(count<8));//計算高電平
  104.                          irvalue[k]>>=1;//k表示第幾組數據,右移一位
  105.                          if(count>4)  //高電平大于565微秒? 800微秒
  106.                          {
  107.                          irvalue[k]|=0x80;
  108.                          }
  109.                          count=0;
  110.                         }        
  111.                 }
  112.         }
  113.         if(irvalue[2]!=~irvalue[3])
  114.                 return;
  115.         judge();
  116. }
  117. }
復制代碼

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

使用道具 舉報

沙發
ID:600952 發表于 2020-4-26 00:22 | 只看該作者
連發時中斷時長不對了吧,可能是。
回復

使用道具 舉報

板凳
ID:282850 發表于 2020-4-26 10:37 | 只看該作者
再確認一下引導碼,在連續發時,是否還是獨立地打包在數據前,有可能連發時后邊的只有數據。
兩個中斷的處理時間是否來得及,特別關注的延時的地方。NEC沒搞過,另外的紅外搞過。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲免费精品 | 欧洲成人午夜免费大片 | 午夜天堂精品久久久久 | 91麻豆精品国产91久久久久久 | 成人不卡视频 | 国产精品第2页 | 久久国产精品一区二区三区 | 国产亚洲一区二区三区在线观看 | 色婷婷婷婷色 | 国产精品久久久 | 久久精品小短片 | 午夜国产精品视频 | 亚洲精品福利在线 | 精品国产一区二区三区性色av | 欧美一区二区在线播放 | av手机在线免费观看 | 国产婷婷精品 | 欧美日韩网站 | 国产亚洲一区二区三区在线 | 免费观看一级特黄欧美大片 | 免费在线视频精品 | 欧美大片一区 | 日韩免费av一区二区 | 久久久天天 | 久久久国产精品入口麻豆 | 亚洲综合色视频在线观看 | 福利网址| 精品美女视频在免费观看 | 日韩高清av | www免费视频 | 少妇精品亚洲一区二区成人 | 国产精品成人一区二区三区吃奶 | 91视频在线观看免费 | 尤物在线视频 | 成人国产午夜在线观看 | 色网在线观看 | 国产精品久久久久久久久久久久久久 | 欧美极品视频在线观看 | 国产探花在线观看视频 | 亚州综合一区 | 99在线资源|