找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

經(jīng)濟(jì)型紅外遙控開關(guān)制作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
所用材料:  JFZM8P150TSL  8腳單片機(jī) 1個(gè)
                    AC/DC   220V TO  5V 電源模塊1個(gè)
                    SRD-05VDC-SL-C 繼電器1個(gè)
                    38K 紅外線接收頭1個(gè)  
                    J3Y /SOT23  1個(gè)
                    101  /0805 1個(gè)  
                    10K /0805 1個(gè)
                    3.9K  /0805 1個(gè)
                    100NF /0805  2個(gè)

制作出來的實(shí)物圖如下:


單片機(jī)源程序如下:
  1. // 編碼格式:NEC6121

  2. // 碼值: 45 46 47

  3. //        44 40 43

  4. //           15

  5. //        16    0D

  6. //           18

  7. //        08    5A

  8. //        42    4A


  9. //  1e 1c 02 0a

  10. #include "interrupt_vector.h"

  11. #include "JFZM8P150TSL.h"

  12. #define DISI()_asm{disi}

  13. #define WDTC()_asm{wdtc}

  14. #define NOP()_asm{nop}

  15. #define ENI()_asm{eni}

  16. #define SLEP()_asm{slep}


  17. #define IR_RE   P62




  18. #define OUT2  P64

  19. #define OUT1  P60

  20. #define OUT3  P61

  21. #define OUT4  P65


  22. #define uchar  unsigned char

  23. #define uint   unsigned int

  24. uchar  TEMPDATA;

  25. bit IR_OK;

  26. bit ON_OFF;


  27. uchar date[]={0x00,0x00,0x00,0x00};

  28. void delay026ms(void);

  29. void delay009ms(void);

  30. void delay(unsigned int i);

  31. void delay(unsigned int i)

  32. {

  33. while(--i)

  34. {

  35. if(!IR_RE)break;

  36. }

  37. }


  38. void intial(void)

  39. {

  40.   PORT6=0x00;


  41.   P6CR&=0x04;


  42. ON_OFF=1;

  43. _asm


  44. {

  45. mov a,@0x0F

  46. contw

  47. }


  48. }

  49. void IR_decode(void);

  50. void IR_decode(void)

  51. {


  52. static uchar i,j,k;

  53. if(!IR_RE)

  54. {

  55. WDTC();

  56. for(k=0;k<9;k++)

  57. {

  58. delay009ms();

  59. if(IR_RE)

  60. {

  61. k=10;

  62. break;

  63. }

  64. else if(k==8)

  65. {

  66. while(!IR_RE);

  67. delay026ms();

  68. if(IR_RE)

  69. {

  70. while(IR_RE);


  71. for(i=0;i<4;i++)

  72. {

  73. for(j=0;j<8;j++)

  74. {

  75. while(!IR_RE);

  76. delay009ms();

  77. if(!IR_RE)

  78. {

  79. date[i]>>=1;

  80. date[i]=date[i]&0x7f;

  81. }

  82. else if(IR_RE)

  83. {

  84. date[i]>>=1;

  85. date[i]=date[i]|0x80;

  86. while(IR_RE);

  87. }


  88. }


  89. k=9;IR_OK=1;

  90. }



  91. }

  92. }

  93. }

  94. }

  95. if(date[2]+date[3]==0xff)

  96. TEMPDATA=date[2];


  97. if(date[2]==0x45) //ALL CLOSE

  98. {

  99. OUT1=OUT2=OUT3=OUT4=0;

  100. }

  101. if(date[2]==0x46)

  102. {

  103. OUT2=!OUT2;

  104. }

  105. if(date[2]==0x44)

  106. {

  107. OUT1=!OUT1;


  108. }

  109. if(date[2]==0x0a)

  110. {

  111. OUT3=!OUT3;


  112. }

  113. if(date[2]==0x0d)

  114. {

  115. OUT4=!OUT4;


  116. }


  117. date[2]=0X00; //必須清除,不然容易頻繁啟動if內(nèi)循環(huán)



  118. }



  119. void delay026ms(void)

  120. {

  121. uchar k,s;

  122. for(k=0;k<2;k++)

  123. for(s=0;s<220;s++);

  124. }

  125. void delay009ms(void) //900us

  126. {

  127. uchar m;

  128. for(m=0;m<145;m++);

  129. }


  130. void main (void)

  131. {



  132. intial();

  133. IR_OK=0;

  134. PORT5=0X00;

  135. PORT6=0X00;


  136. while(1)

  137. {

  138. IR_decode();



  139. }

  140. }


復(fù)制代碼





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

使用道具 舉報(bào)

沙發(fā)
ID:424598 發(fā)表于 2021-9-15 11:10 | 只看該作者
某一個(gè)寶都搜不出來這個(gè)單片機(jī),成本也沒標(biāo),如何個(gè)經(jīng)濟(jì)法?
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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