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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3753|回復: 11
收起左側

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

[復制鏈接]
ID:191929 發(fā)表于 2017-6-10 21:22 | 顯示全部樓層 |閱讀模式
本帖最后由 惜緣2008 于 2017-6-10 22:04 編輯

請教一下,開發(fā)板上紅外遙控LED的問題??就是按遙控鍵,開發(fā)板上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下降沿觸發(fā),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燈是熄滅狀態(tài)
  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流水燈的狀態(tài)是熄滅的。
  150.         while(1)//主循環(huán)
  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
回復

使用道具 舉報

ID:191929 發(fā)表于 2017-6-10 21:24 | 顯示全部樓層
剛開始學紅外遙控,被難到了,希望有人幫幫我,先謝謝了
回復

使用道具 舉報

ID:189134 發(fā)表于 2017-6-10 22:41 | 顯示全部樓層
有示波器或是邏輯分析儀嘛?截一個波形圖
回復

使用道具 舉報

ID:164602 發(fā)表于 2017-6-11 10:03 | 顯示全部樓層
大致瀏覽了一下你的程序,發(fā)現一個重要問題——紅外遙控器發(fā)出的信號,是有規(guī)則的,你的接收,也要按這個規(guī)則來,我沒有看到相應的程序內容。
這個項目我搞過,分享給你。有程序、有資料。

紅外遙控.rar

2.48 MB, 下載次數: 26

全套資料

回復

使用道具 舉報

ID:123289 發(fā)表于 2017-6-11 11:29 | 顯示全部樓層
1、因為程序不是你寫的
2、你也不想認真讀一下程序
回復

使用道具 舉報

ID:191929 發(fā)表于 2017-6-11 11:52 | 顯示全部樓層
xlbtlmy 發(fā)表于 2017-6-10 22:41
有示波器或是邏輯分析儀嘛?截一個波形圖

沒有,不好意思
回復

使用道具 舉報

ID:191929 發(fā)表于 2017-6-11 11:53 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2017-6-11 10:03
大致瀏覽了一下你的程序,發(fā)現一個重要問題——紅外遙控器發(fā)出的信號,是有規(guī)則的,你的接收,也要按這個規(guī) ...

謝謝,非常感謝
回復

使用道具 舉報

ID:191929 發(fā)表于 2017-6-11 11:55 | 顯示全部樓層
yzwzfyz 發(fā)表于 2017-6-11 11:29
1、因為程序不是你寫的
2、你也不想認真讀一下程序

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

使用道具 舉報

ID:191929 發(fā)表于 2017-6-11 11:57 | 顯示全部樓層
中斷部分沒學好
回復

使用道具 舉報

ID:191929 發(fā)表于 2017-6-11 12:09 | 顯示全部樓層
謝謝你的資料,我會靠自己弄出來的
回復

使用道具 舉報

ID:210106 發(fā)表于 2017-6-11 14:48 | 顯示全部樓層
這個有點難我無能為力
回復

使用道具 舉報

ID:191929 發(fā)表于 2017-6-11 16:24 | 顯示全部樓層
4657575 發(fā)表于 2017-6-11 14:48
這個有點難我無能為力

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕成人 | 成人免费在线 | 欧美日韩国产一区二区三区不卡 | 人人爽人人爽 | 久久久久久久久久久一区二区 | 亚洲精品9999久久久久 | 97国产精品视频人人做人人爱 | 黄色网页在线 | 北条麻妃国产九九九精品小说 | 久久福利网站 | www.男人天堂.com | 国产精品久久久久久久免费大片 | 亚洲 欧美 综合 | 欧美综合久久 | 亚洲午夜网| 国产精品一区二区在线 | 欧美精品乱码久久久久久按摩 | 九九精品网 | 国产在线麻豆精品入口 | 国产成人精品在线播放 | 伊人免费在线观看 | 久久av资源网 | 一区二区三区四区免费观看 | 日日干天天干 | 亚洲精品一区二区 | 在线一区| 欧美在线视频网 | 久久天天| 台湾佬久久 | 亚洲精品欧美一区二区三区 | 91精品国产乱码久久久 | 亚洲精品二区 | 亚洲精品www久久久久久广东 | 国产成人精品999在线观看 | 国产精久久久 | 91精品在线看 | 日韩有码一区 | 曰批视频在线观看 | 国内久久精品 | 日本不卡视频 | 亚洲成人a v |