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

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

QQ登錄

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

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

51單片機(jī)遙控接收器 紅外NEC協(xié)議 代碼有詳細(xì)注釋

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
51單片機(jī),紅外NEC協(xié)議,ds18b20溫度傳感器(P3.7),紅外接收器7844s,三位一體共陰數(shù)碼管(段碼:P2,位碼:P1.1,P1.2,P1.3),上拉電阻A102,接觸器(5v)接P1.3,(程序已親測(cè),放心使用)


單片機(jī)源程序如下(源代碼的注釋非常詳細(xì)):
  1. #include<reg52.h>
  2. #include"inf.h"
  3. #include"relay.h"
  4. #include"ds18b20.h"
  5. #include"dig.h"

  6. extern uchar IRCOM[5];          //用來(lái)存放讀取到的紅外值
  7. extern unsigned char DisplayData[3];
  8. extern uchar code DIG_CODE[10];
  9. extern uchar code  RecvData[];
  10. int time=2100;
  11. int SET_Flag=0;//0 是非設(shè)置狀態(tài)  1 是設(shè)置狀態(tài)

  12. /***********************************************函數(shù)聲明**********************************************************/
  13. void TempDisplayTest(void);// DS18B20進(jìn)行溫度轉(zhuǎn)換并進(jìn)行讀取,計(jì)算出來(lái)(并顯示)
  14. extern void Contro_lrelay(uchar ConType,uint k);
  15. void key_scan();


  16. void main()
  17. {
  18.         int tempC=0,te,biao1=0,biao2=0;
  19.         uint ss=0;
  20.         InfInit();
  21.                
  22.         while(1)
  23.         {                         
  24.                  key_scan();
  25.                  
  26.                  //獲取溫度
  27.                  tempC=LcdDisplay(Ds18b20ReadTemp());
  28.                  
  29.                  //如果設(shè)置的溫度值大于室內(nèi)溫度,繼電器閉合
  30.                  te=tempC% 10000;
  31.                  if(biao1==1)

  32.                  goto end1;
  33.                  if(te>=time)
  34.                  {
  35.                          Contro_lrelay(16,1);        //繼電器斷開(kāi)
  36.                           biao1=1;
  37.                           biao2=0;
  38.                  }
  39.                  end1:
  40.                  if(biao2==1)

  41.                  goto end2;
  42.                  if(te<time)
  43.                  {
  44.                          Contro_lrelay(15,1);        //繼電器閉合
  45.                         biao2=1;
  46.                         biao1=0;
  47.                  }
  48.                  end2:
  49.                  //設(shè)置狀態(tài)
  50.                  if(SET_Flag)
  51.                  {
  52.                          tempC=time;
  53.                         ss++;
  54.                  }
  55.                  //工作狀態(tài)
  56.                  else
  57.                  {
  58.                          ss=0;
  59.                  }

  60.                  if(ss<=40)
  61.                  {
  62.                     //顯示
  63.                          DigDisplay(tempC);
  64.                  }
  65.                  else if(ss<=60)
  66.                  {
  67.                          GPIO_DIG=0x00;
  68.                         if(ss==60)
  69.                         ss=0;
  70.                  }                 
  71.         }                                                       
  72. }

  73. /*******************************************************************************
  74. * 函 數(shù) 名         : key_scan()
  75. * 函數(shù)功能                   : 溫度調(diào)節(jié)用
  76. * 輸    入         : i
  77. * 輸    出         : 無(wú)
  78. *******************************************************************************/
  79. void key_scan()
  80. {
  81.         int i=0;
  82.         int j=0;
  83.         uchar Keydate=0;
  84.         for(j=0;j<9;j++)                                   //循環(huán)進(jìn)行鍵碼解析
  85.         {
  86.                 if(IRCOM[2]==RecvData[j])                       //進(jìn)行鍵位對(duì)應(yīng)
  87.                 {
  88.                         Keydate=IRCOM[2];
  89.                         IRCOM[2]=0;
  90.                         break;
  91.                 }                                      
  92.         }               
  93.         switch(Keydate)
  94.         {
  95.                 case 0x07://-
  96.                 {
  97.                         time -=100;
  98.                         break;
  99.                 }
  100.                 case 0x15://+
  101.                 {
  102.                         time +=100;
  103.                         break;
  104.                 }
  105.                 case 0x09://Set
  106.                 {
  107.                         SET_Flag=~SET_Flag;
  108.                         break;
  109.                 }
  110.         }


  111. }
  112.           
復(fù)制代碼
  1. #include"inf.h"
  2. #include"relay.h"
  3. uchar IRCOM[5];          //用來(lái)存放讀取到的紅外值 (IrValue[4])
  4. sbit IRIN=P3^2;   //紅外接收器數(shù)據(jù)接口

  5. //存放按鍵鍵值(NEC紅外協(xié)議)
  6. uchar code  RecvData[]={0x07,0x15,0x09,0x43,0x47,0x0d,0x44,0x40,0x0D,0x0E};


  7. /***********************************************************
  8. *函 數(shù) 名        :InfInit
  9. *函數(shù)功能  :為外部中斷0,做初始化
  10. *函數(shù)參數(shù)  :x
  11. *返 回 值        :無(wú)
  12. ************************************************************/
  13. void InfInit()
  14. {
  15.         IT0=1;//下降沿觸發(fā)
  16.         EX0=1;//打開(kāi)中斷0允許
  17.         EA=1;        //打開(kāi)總中斷
  18.         IRIN=1;//初始化端口
  19. }


  20. /***********************************************************
  21. *函 數(shù) 名        :delayms
  22. *函數(shù)功能  :延時(shí)0.14ms
  23. *函數(shù)參數(shù)  :x
  24. *返 回 值        :無(wú)
  25. ************************************************************/
  26. static void delayms(unsigned char x)                         //0.14mS延時(shí)程序
  27. {
  28.   unsigned char i;                                    //定義臨時(shí)變量
  29.   while(x--)                                          //延時(shí)時(shí)間循環(huán)
  30.   {
  31.     for (i = 0; i<13; i++) {}                         //14mS延時(shí)
  32.   }
  33. }


  34. /***********************************************************
  35. *函 數(shù) 名        :IR_IN
  36. *函數(shù)功能  :外部中斷0
  37. *函數(shù)參數(shù)  :無(wú)
  38. *返 回 值        :無(wú)
  39. ************************************************************/
  40. void IR_IN() interrupt 0// using 0                      //定義INT2外部中斷函數(shù)
  41. {
  42.   unsigned char j,k,N=0;                              //定義臨時(shí)接收變量
  43.    
  44.   EX0 = 0;                                            //關(guān)閉外部中斷,防止再有信號(hào)到達(dá)   
  45.   delayms(15);                                        //延時(shí)時(shí)間,進(jìn)行紅外消抖
  46.   if (IRIN==1)                                        //判斷紅外信號(hào)是否消失
  47.   {  
  48.      EX0 =1;                                          //外部中斷開(kāi)
  49.          return;                                          //返回
  50.   }
  51.                            
  52.   while (!IRIN)                                       //等IR變?yōu)楦唠娖剑^(guò)9ms的前導(dǎo)低電平信號(hào)。
  53.   {
  54.       delayms(1);                                     //延時(shí)等待
  55.   }

  56.   for (j=0;j<4;j++)                                   //采集紅外遙控器數(shù)據(jù)
  57.   {
  58.     for (k=0;k<8;k++)                                 //分次采集8位數(shù)據(jù)
  59.     {
  60.        while (IRIN)                                   //等 IR 變?yōu)榈碗娖,跳過(guò)4.5ms的前導(dǎo)高電平信號(hào)。
  61.        {
  62.          delayms(1);                                  //延時(shí)等待
  63.        }
  64.       
  65.        while (!IRIN)                                  //等 IR 變?yōu)楦唠娖?br />
  66.        {
  67.          delayms(1);                                  //延時(shí)等待
  68.        }
  69.    
  70.        while (IRIN)                                   //計(jì)算IR高電平時(shí)長(zhǎng)
  71.        {
  72.          delayms(1);                                  //延時(shí)等待
  73.          N++;                                         //計(jì)數(shù)器加加
  74.          if (N>=30)                                   //判斷計(jì)數(shù)器累加值
  75.              {
  76.            EX0=1;                                     //打開(kāi)外部中斷功能
  77.                return;                                    //返回
  78.          }                  
  79.        }
  80.                                        
  81.       IRCOM[j]=IRCOM[j] >> 1;                         //進(jìn)行數(shù)據(jù)位移操作并自動(dòng)補(bǔ)零
  82.      
  83.       if (N>=8)                                       //判斷數(shù)據(jù)長(zhǎng)度
  84.       {
  85.          IRCOM[j] = IRCOM[j] | 0x80;                  //數(shù)據(jù)最高位補(bǔ)1
  86.       }
  87.       N=0;                                            //清零位數(shù)計(jì)錄器
  88.     }
  89.   }
  90.    
  91.   if (IRCOM[2]!=~IRCOM[3])                            //判斷地址碼是否相同
  92.   {
  93.      EX0=1;                                           //打開(kāi)外部中斷
  94.      return;                                          //返回
  95. ……………………

  96. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
遙控控制、溫度顯示 (最終程序).zip (76.46 KB, 下載次數(shù): 75)


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

使用道具 舉報(bào)

沙發(fā)
ID:281938 發(fā)表于 2018-3-9 19:49 | 只看該作者
請(qǐng)問(wèn)你知道如何使用遙控功能嗎?自動(dòng)的比如循跡小車我會(huì)做,但是遙控功能的卻不會(huì)
回復(fù)

使用道具 舉報(bào)

板凳
ID:289186 發(fā)表于 2018-3-31 10:23 | 只看該作者
haogege1014 發(fā)表于 2018-3-9 19:49
請(qǐng)問(wèn)你知道如何使用遙控功能嗎?自動(dòng)的比如循跡小車我會(huì)做,但是遙控功能的卻不會(huì)

遙控的需要用一個(gè)紅外接收器、和紅外遙控(NEC協(xié)議),就可以實(shí)現(xiàn)的
回復(fù)

使用道具 舉報(bào)

地板
ID:61973 發(fā)表于 2018-7-29 21:17 來(lái)自觸屏版 | 只看該作者
haogege1014 發(fā)表于 2018-3-9 19:49
請(qǐng)問(wèn)你知道如何使用遙控功能嗎?自動(dòng)的比如循跡小車我會(huì)做,但是遙控功能的卻不會(huì)

那只能說(shuō)明循跡小車也是抄的
回復(fù)

使用道具 舉報(bào)

5#
ID:618124 發(fā)表于 2019-9-30 08:24 | 只看該作者
羅文杰 發(fā)表于 2018-7-29 21:17
那只能說(shuō)明循跡小車也是抄的

有輪子何必再造
回復(fù)

使用道具 舉報(bào)

6#
ID:618689 發(fā)表于 2019-10-1 23:46 | 只看該作者
nec協(xié)議相對(duì)簡(jiǎn)單一點(diǎn),實(shí)現(xiàn)起來(lái)比較容易,可以用IO中斷來(lái)處理
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区国产好的精 | 亚洲视频精品 | 免费在线成人 | 欧美日韩在线看 | 在线视频中文字幕 | 日韩国产欧美一区 | 日韩在线看片 | 欧美区日韩区 | 在线国产视频 | 久草视频在线播放 | 自拍偷拍一区二区三区 | 日本中文在线视频 | 欧美午夜精品久久久久免费视 | 在线观看www | 色综合久久88色综合天天 | 91精品亚洲 | 精品视频一区二区三区 | 国产色婷婷精品综合在线手机播放 | 午夜天堂精品久久久久 | 亚洲欧美精品国产一级在线 | 婷婷综合久久 | 婷婷在线网站 | 91porn国产成人福利 | 欧美精品第一页 | aaaaaaa片毛片免费观看 | 99精品网| 伊人影院在线观看 | 美女视频一区 | 国产高清在线精品 | 操视频网站 | 精品欧美一区二区三区久久久 | 激情在线视频 | 日韩欧美精品在线 | 亚洲一区av | 国产精品久久久久久久久久 | 龙珠z在线观看 | 黄色片在线网站 | 久久久久久av | 精品国产乱码久久久久久牛牛 | 精品免费国产一区二区三区 | 国产精品欧美一区二区三区不卡 |