找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2939|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)紅外通信控制繼電器源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
可以參考的一個(gè)程序

  1. /***************************************************************************
  2.     本實(shí)驗(yàn)例程是用NEC紅外線接收解碼程序(紅外線接收部分為板子配的林洋電子程序)
  3.     程序功能:
  4.         1、運(yùn)行程序,按遙控器按鍵,在數(shù)碼管上顯示相應(yīng)的控制碼(以16進(jìn)制顯示);
  5.         2、對特別的幾個(gè)鍵,有相應(yīng)的現(xiàn)象出現(xiàn):
  6.         (1)電源鍵,使繼電器工作或斷開;
  7.         (2)靜音鍵,使蜂鳴器響或不響;
  8.         (3)快進(jìn)鍵讓LED燈向右出現(xiàn)一次走馬燈現(xiàn)象;
  9.         (4)快退鍵讓LED燈向左出現(xiàn)一次走馬燈現(xiàn)象;
  10.         (5)按0~9,數(shù)碼管顯示所按的鍵號;
  11.         (6)按其它鍵,不會改變已經(jīng)按的數(shù)字鍵的顯示,表示看電視臺開關(guān)電源或靜音、快進(jìn)快退,都不會
  12. 改變臺號。
  13.     (7)其它鍵沒想好怎么以現(xiàn)有板產(chǎn)生相應(yīng)功能,所以按下后,沒有特別現(xiàn)象,只有顯示其控制碼。
  14. ******************************************************************************/
  15. #include "reg51.h"//頭文件:

  16. #define LED8 P2//紅外遙控功能之一是讓LED燈亮,所以要將P2口改名

  17. sbit hwx=P3^3;                //紅外接收數(shù)據(jù)引腳,也是外部中斷1的I/O口
  18. sbit SMG_q = P1^0;        //定義數(shù)碼管陽級控制腳(千位)
  19. sbit SMG_b = P1^1;        //定義數(shù)碼管陽級控制腳(百位)
  20. sbit SMG_s = P1^2;        //定義數(shù)碼管陽級控制腳(十位)
  21. sbit SMG_g = P1^3;        //定義數(shù)碼管陽級控制腳(個(gè)位)
  22. sbit JDQ=P1^4;                //繼電器
  23. sbit Beep =  P1^5 ;        //蜂鳴器

  24. code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  25.                                                         0x88,0x8c,0xc6,0xa1,0x86,0x8e};        //共陽數(shù)碼管段值表 0-9 a-f

  26. unsigned char ly_disdate[4]={0,0,0,0};
  27. unsigned char ly_lhj[4],i;
  28. bit ly_flag=1;
  29. void display();

  30. void delay(void);

  31. void Delay10ms(unsigned int c)
  32. {
  33.     unsigned char a,b;
  34.     for(c;c>0;c--)
  35.         for(b=38;b>0;b--)
  36.             for(a=130;a>0;a--);
  37. }

  38. void main(void)//主函數(shù)
  39. {
  40.         EA=1;
  41.         EX1=1;
  42.         IT1=1;
  43.         TMOD=0X10;
  44.         JDQ=1;
  45.         ly_flag=0;
  46.         while(1){       
  47.                 if(ly_flag){
  48.                         ly_flag=0;
  49.                         if ((ly_lhj[2]==0x45))
  50.                         {
  51.                                 JDQ=~JDQ;
  52.                         }
  53.                         if ((ly_lhj[2]==0x47))
  54.                         {
  55.                                 Beep=~Beep;
  56.                         }
  57.                         if ((ly_lhj[2]==0x40))
  58.                         {
  59.                                 LED8=0xfe;
  60.                                 for(i=0;i<8;i++)
  61.                                 {                                         
  62.                                         Delay10ms(10);
  63.                                         LED8=LED8<<1;
  64.                                 }
  65.                                 LED8=0xff;
  66.                         }
  67.                         if ((ly_lhj[2]==0x43))
  68.                         {
  69.                                 LED8=0x7f;
  70.                                 for(i=0;i<8;i++)
  71.                                 {                                         
  72.                                         Delay10ms(10);
  73.                                         LED8=LED8>>1;
  74.                                 }
  75.                                 LED8=0xff;
  76.                         }
  77.                         if ((ly_lhj[2]==0x16))
  78.                         {
  79.                                 ly_disdate[0]=0;                       
  80.                         }
  81.                         if ((ly_lhj[2]==0x0c))
  82.                         {
  83.                                 ly_disdate[0]=1;                       
  84.                         }                       
  85.                         if ((ly_lhj[2]==0x18))
  86.                         {
  87.                                 ly_disdate[0]=2;                       
  88.                         }                       
  89.                         if ((ly_lhj[2]==0x5e))
  90.                         {
  91.                                 ly_disdate[0]=3;                       
  92.                         }                       
  93.                         if ((ly_lhj[2]==0x08))
  94.                         {
  95.                                 ly_disdate[0]=4;                       
  96.                         }                       
  97.                         if ((ly_lhj[2]==0x1c))
  98.                         {
  99.                                 ly_disdate[0]=5;                       
  100.                         }                       
  101.                         if ((ly_lhj[2]==0x5a))
  102.                         {
  103.                                 ly_disdate[0]=6;                       
  104.                         }                       
  105.                         if ((ly_lhj[2]==0x42))
  106.                         {
  107.                                 ly_disdate[0]=7;                       
  108.                         }                       
  109.                         if ((ly_lhj[2]==0x52))
  110.                         {
  111.                                 ly_disdate[0]=8;                       
  112.                         }                       
  113.                         if ((ly_lhj[2]==0x4a))
  114.                         {
  115.                                 ly_disdate[0]=9;                       
  116.                         }                       
  117.                         ly_disdate[2]=ly_lhj[2]/16;
  118.                         ly_disdate[3]=ly_lhj[2]%16;
  119.                 }
  120.                 display();
  121.         }               
  122. }

  123. void hongwai(void)   interrupt 2
  124. {
  125.         unsigned char i,ia;
  126.         TL1=0;
  127.         TH1=0;
  128.         TR1=1;
  129.         while(!hwx);
  130.         TR1=0;
  131.         if(TH1<30||TH1>40)
  132. {
  133.                 return;
  134. }
  135.         TH1=0;
  136.         TR1=1;
  137.         while(hwx)                        //
  138.         {
  139.                 delay();
  140.                 if(TH1>22)
  141.                         return;               
  142.         }
  143.         TR1=0;
  144.         if(TH1<12)
  145.                 return;

  146.         for(i=0;i<4;i++)
  147.         {
  148.                 for(ia=0;ia<8;ia++)
  149.                 {                               
  150.                         while(!hwx);
  151.                        
  152.                         TH1=0;
  153.                         TR1=1;
  154.                         while(hwx)
  155.                         {
  156.                                 delay();
  157.                                 if(TH1>15)               
  158.                                         return;               
  159.                         }
  160.                         TR1=0;
  161.                         ly_lhj[i]>>=1;
  162.                         if(TH1>4)
  163.                                 ly_lhj[i]|=0x80;
  164.                 }
  165.         }
  166.         ly_flag=1;
  167.         TF1=0;
  168. }

  169. void display()

  170. {
  171.         SMG_q=0;                        //選擇千位數(shù)碼管(亮)
  172.         P0=table[ly_disdate[0]];        //
  173.         delay();                        //
  174.         P0=0XFF;                        //
  175.         SMG_q=1;                        //(滅)

  176.         SMG_s=0;                        //選擇十位數(shù)碼管
  177.         P0=table[ly_disdate[2]];        //
  178.         delay();                        //
  179.         P0=0XFF;                        //
  180.         SMG_s=1;                        //


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

下載:
hwx.rar (1.54 KB, 下載次數(shù): 30)

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表