找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1960|回复: 1
收起左侧

经济型红外遥控开关制作

[复制链接]
ID:436885 发表于 2021-9-14 18:34 | 显示全部楼层 |阅读模式
所用材料:  JFZM8P150TSL  8脚单片机 1个
                    AC/DC   220V TO  5V 电源模块1个
                    SRD-05VDC-SL-C 继电器1个
                    38K 红外线接收头1个  
                    J3Y /SOT23  1个
                    101  /0805 1个  
                    10K /0805 1个
                    3.9K  /0805 1个
                    100NF /0805  2个

制作出来的实物图如下:
51hei图片_20210912134156.jpg 51hei图片_20210912134037.png

单片机源程序如下:
  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内循环



  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. }


复制代码





回复

使用道具 举报

ID:424598 发表于 2021-9-15 11:10 | 显示全部楼层
某一个宝都搜不出来这个单片机,成本也没标,如何个经济法?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表