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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請教一下,單片機開發板上紅外遙控LED的問題??

[復制鏈接]
跳轉到指定樓層
樓主
ID:191929 發表于 2017-6-10 21:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 惜緣2008 于 2017-6-10 22:04 編輯

請教一下,開發板上紅外遙控LED的問題??就是按遙控鍵,開發板上P1口燈一直不亮,是沒解碼成功嗎?
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char   

  4. sbit ir=P3^2;                  //紅外接口的位聲明
  5. sbit fm=P2^3;                //蜂鳴器的位聲明

  6. uchar irtime;
  7. bit irprosok,irok;
  8. uchar ircode[4];
  9. uchar irdata[33];
  10. uchar startflag;
  11. uchar  bitnum;
  12. uchar pwm,num;

  13. void delay(uint ms)   //延時函數
  14. {
  15.     uchar i;
  16.     while(ms--)
  17.     {
  18.         for(i=0;i<120;i++);
  19.     }
  20. }

  21. void bee()                //蜂鳴器函數
  22. {
  23.     fm=0;
  24.     delay(100);
  25.     fm=1;
  26.     delay(100);
  27. }

  28. void timer0init(void)//定時器0初始化 256*(1/12m)*12=0.256ms
  29. {

  30.     TMOD=0x12;//定時器0工作方式1,TH0是重裝值,TL0是初值
  31.     TH0=0x00; //重載值
  32.     TL0=0x00; //初始化值
  33.     EA=1;
  34.     ET0=1;    //開中斷
  35.     TR0=1;   
  36. }

  37. void tim0_isr (void) interrupt 1 using 1  //定時器0中斷服務函數
  38. {
  39.         irtime++;  //用于計數2個下降沿之間的時間
  40. }


  41. void int0init(void)  //外部中斷0初始化
  42. {
  43.         IT0 = 1;   //指定外部中斷0下降沿觸發,INT0 (P3.2)
  44.         EX0 = 1;   //使能外部中斷
  45.         EA = 1;    //開總中斷
  46. }

  47. void timer1init()                                //定時器1初始化,讓定時器1每隔500ms中斷一次
  48. {
  49.         TMOD=0x12;
  50.         TH1=(65536-500)/256;
  51.         TL1=(65536-500)%256;
  52.         EA=1;
  53.         ET1=1;
  54.         TR1=1;
  55. }

  56. void int1() interrupt 3        //定時器500us中斷一次后,進入此中斷函數,讓num值每次加1,并判斷num與pwm值,若小于pwm值,則輸出高電平,反之輸出低電平
  57. {
  58.         TR1=0;
  59.         TH1=(65536-500)/256;
  60.         TL1=(65536-500)%256;
  61.         num++;
  62.         if(num>32)
  63.         {
  64.                 num=0;
  65.         }
  66.         if(num<=pwm)
  67.                 {
  68.                     P1=0xff;
  69.                 }
  70.         else
  71.                 {
  72.                     P1=0x00;
  73.                 }
  74.         TR1=1;
  75. }



  76. void int0 () interrupt 0 //外部中斷0服務函數
  77. {
  78.         if(startflag)
  79.                  {
  80.                   if(irtime>32&&irtime<63)  //8-16ms
  81.                         {
  82.                            bitnum=0;
  83.                         }
  84.                         irdata[bitnum]=irtime;
  85.                         irtime=0;
  86.                         bitnum++;
  87.                         if(bitnum==33)
  88.                           {
  89.                            bitnum=0;
  90.                            irok=1;
  91.                           }
  92.                  }
  93.         else
  94.                  {
  95.                          irtime=0;
  96.                          startflag=1;
  97.                  }
  98. }


  99. void irpros(void) // 紅外碼值處理
  100. {
  101.         uchar mun,k,i,j;
  102.         k=1;
  103.         for(j=0;j<4;j++)
  104.         {
  105.                 for(i=0;i<8;i++)
  106.                 {
  107.                         mun=mun>>1;
  108.                         if(irdata[k]>6)
  109.                         {
  110.                                 mun=mun | 0x80;
  111.                         }
  112.                                 k++;
  113.                 }
  114.                 ircode[j]=mun;
  115.         }
  116.         irprosok=1;
  117. }


  118. void ir_work(void) //紅外鍵值處理
  119. {
  120.         switch(ircode[2])   //判斷第三個數碼值
  121.             {
  122.                          case 0x0c:                                //按鍵1 點亮全部LED燈
  123.                                 {
  124.                                         pwm=0;
  125.                                 }
  126.                          break;                                       

  127.                          case 0x18:                                //按鍵2增加PWM,讓LED燈變亮-----這里的程序不知道該怎么寫,寫了好幾遍都不能進行PWM調光        
  128.                                 {
  129.                                         for(pwm=32;pwm>0;pwm--);
  130.                             }
  131.                         break;                                

  132.                         case 0x5e:                                //這個是按鍵3,讓LED變成30%的亮度,即分段調光
  133.                                 {
  134.                                         pwm=23;
  135.                                 }
  136.                         break;        
  137.                         
  138.                         case 0x08:pwm=32;break;                        //按鍵4,熄滅全部LED燈

  139.             default:pwm=32;break;                         //默認值,默認上電后LED燈是熄滅狀態
  140.                 }         
  141.                   irprosok=0;//處理完成標志
  142. }


  143. void main(void)
  144. {
  145.         int0init(); //初始化外部中斷
  146.         timer0init();//初始化定時器
  147.         timer1init();
  148.         num=0;
  149.         pwm=32;   //讓PWM值是32,即讓單片機上電后LED流水燈的狀態是熄滅的。
  150.         while(1)//主循環
  151.                 {
  152.                 if(irok)       //如果接收好了進行紅外處理
  153.                   {   
  154.                    irpros();
  155.                    irok=0;
  156.                   }
  157.                
  158.                 if(irprosok)  //如果處理好后進行工作處理
  159.                   {
  160.                    ir_work();
  161.                   }
  162.                 }
  163. }
復制代碼

IMG_20170610_211431.jpg (4.57 MB, 下載次數: 100)

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

使用道具 舉報

沙發
ID:191929 發表于 2017-6-10 21:24 | 只看該作者
剛開始學紅外遙控,被難到了,希望有人幫幫我,先謝謝了
回復

使用道具 舉報

板凳
ID:189134 發表于 2017-6-10 22:41 | 只看該作者
有示波器或是邏輯分析儀嘛?截一個波形圖
回復

使用道具 舉報

地板
ID:164602 發表于 2017-6-11 10:03 | 只看該作者
大致瀏覽了一下你的程序,發現一個重要問題——紅外遙控器發出的信號,是有規則的,你的接收,也要按這個規則來,我沒有看到相應的程序內容。
這個項目我搞過,分享給你。有程序、有資料。

紅外遙控.rar

2.48 MB, 下載次數: 26

全套資料

回復

使用道具 舉報

5#
ID:123289 發表于 2017-6-11 11:29 | 只看該作者
1、因為程序不是你寫的
2、你也不想認真讀一下程序
回復

使用道具 舉報

6#
ID:191929 發表于 2017-6-11 11:52 | 只看該作者
xlbtlmy 發表于 2017-6-10 22:41
有示波器或是邏輯分析儀嘛?截一個波形圖

沒有,不好意思
回復

使用道具 舉報

7#
ID:191929 發表于 2017-6-11 11:53 | 只看該作者
HC6800-ES-V2.0 發表于 2017-6-11 10:03
大致瀏覽了一下你的程序,發現一個重要問題——紅外遙控器發出的信號,是有規則的,你的接收,也要按這個規 ...

謝謝,非常感謝
回復

使用道具 舉報

8#
ID:191929 發表于 2017-6-11 11:55 | 只看該作者
yzwzfyz 發表于 2017-6-11 11:29
1、因為程序不是你寫的
2、你也不想認真讀一下程序

哈哈,被看到了,程序是找來的,程序看了一天,也改了一部分,沒成功
回復

使用道具 舉報

9#
ID:191929 發表于 2017-6-11 11:57 | 只看該作者
中斷部分沒學好
回復

使用道具 舉報

10#
ID:191929 發表于 2017-6-11 12:09 | 只看該作者
謝謝你的資料,我會靠自己弄出來的
回復

使用道具 舉報

11#
ID:210106 發表于 2017-6-11 14:48 | 只看該作者
這個有點難我無能為力
回復

使用道具 舉報

12#
ID:191929 發表于 2017-6-11 16:24 | 只看該作者
4657575 發表于 2017-6-11 14:48
這個有點難我無能為力

恩,一起加油,弄出來后會發出來共享的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费在线观看黄视频 | 精品综合视频 | 91社区在线观看 | 成人高清网站 | 特黄毛片视频 | 亚洲毛片在线观看 | 日韩色图在线观看 | 亚洲一区二区三区免费在线 | a久久久久久 | 99久久婷婷国产综合精品电影 | 亚洲九九色 | 日韩欧美一区二区三区免费观看 | 久久久久久久夜 | 色婷婷一区| 在线日韩视频 | 免费黄色成人 | 91精品国产91久久久久久丝袜 | 成人免费看黄网站在线观看 | 国产一区二区三区四 | 国产精品久久久免费 | 亚洲精品在线视频 | 91成人 | 久久99精品久久久久久国产越南 | 欧美激情久久久 | 亚洲成网站 | 国产综合久久 | 男女视频在线免费观看 | 中文字幕在线免费视频 | 男女羞羞视频免费看 | 成人av鲁丝片一区二区小说 | 国产视频日韩 | 成人h动漫亚洲一区二区 | 国产成人精品网站 | 99国产精品99久久久久久 | 日韩精品一区二区三区中文在线 | 久久久91精品国产一区二区三区 | 蜜桃免费一区二区三区 | 欧美一区成人 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 国产精品久久久久久久久免费桃花 | 亚洲国产精品一区二区久久 |