標(biāo)題: 單片機(jī)學(xué)習(xí)型紅外線遙控器(接收存儲(chǔ)與發(fā)射源程序+原理圖+PCB) [打印本頁(yè)]

作者: 15622633856    時(shí)間: 2018-5-11 08:53
標(biāo)題: 單片機(jī)學(xué)習(xí)型紅外線遙控器(接收存儲(chǔ)與發(fā)射源程序+原理圖+PCB)
前言:我要黑幣啊,黑幣不夠用!

基于51單片機(jī)學(xué)習(xí)型紅外遙控器制作介紹:

     本設(shè)計(jì)思想是不考慮紅外編碼方式,對(duì)多個(gè)紅外遙控編碼的脈沖寬度進(jìn)行測(cè)量,電路采用51單片機(jī)AT89S52作為主控制芯片,外圍接紅外接收解調(diào)器和發(fā)射機(jī)二極管以及電阻、電容構(gòu)成。電路設(shè)計(jì)簡(jiǎn)單,用洞洞板就可以完成設(shè)計(jì)。

功能描述:

當(dāng)按下學(xué)習(xí)鍵P3.2時(shí),處于學(xué)習(xí)狀態(tài)時(shí),此時(shí)紅外接收電路就開始接收外來(lái)紅外信號(hào),并將其轉(zhuǎn)換為電信號(hào),找一個(gè)電視遙控器,電視遙控器的發(fā)射頭對(duì)著模塊的接收頭,按下任一按鍵,模塊開始接收遙控碼并存儲(chǔ),當(dāng)學(xué)習(xí)指示燈滅,發(fā)射指示燈亮起時(shí),學(xué)習(xí)完畢;


Altium Designer畫的學(xué)習(xí)型紅外線遙控器電路原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機(jī)源程序如下:
  1. /*********************************************************************/
  2. //                         remote.c
  3. //                       學(xué)習(xí)型遙控器
  4. //                     使用keil c51   
  5. /*********************************************************************/
  6. //使用AT89S52單片機(jī),12MHZ晶振,
  7. //
  8. //#pragma src(E:\remote.asm)
  9. #include"reg52.h"
  10. #include"intrins.h"     //_nop_();延時(shí)函數(shù)用
  11. //
  12. #define uchar unsigned char
  13. #define uint unsigned int
  14. //
  15. sbit  studylamp=P1^6;        //學(xué)習(xí)狀態(tài)指示燈
  16. sbit  lamp=P1^7;             //發(fā)射指示燈
  17. sbit  studykey=P3^2;         //學(xué)習(xí)鍵(中斷口)
  18. sbit  remotein=P3^4;         //遙控信號(hào)輸入口
  19. sbit  remoteout=P3^5;         // 遙控輸出口
  20. sbit  txkey=P1^0   ;           //發(fā)射鍵
  21. //
  22. //
  23. uint i,j,m=255,n,k,s;
  24. uchar idata  remotedata[206];//存肪沖寬度數(shù)據(jù)用
  25. uint   head;           //存起始位用
  26. uint   remdata;
  27. //
  28. //
  29. ////
  30. /*********1毫秒延時(shí)程序**********/
  31. delay1ms(uint t)
  32. {
  33. for(i=0;i<t;i++)
  34.    for(j=0;j<120;j++)
  35.    ;
  36. }
  37. //
  38. //
  39. /***********初始化函數(shù)**********/
  40. clearmen()
  41. {
  42. studylamp=0;           //關(guān)學(xué)習(xí)燈
  43. lamp=0;                //關(guān)發(fā)射指示
  44. remoteout=0;           //關(guān)遙控輸出
  45. remotein=1;            //
  46. for(i=0;i<206;i++)     //清內(nèi)存
  47. {remotedata[i]=0x00;}
  48. IE=0x00;
  49. IP=0x01;
  50. TMOD=0x22;             //8位自動(dòng)重裝模式
  51. PCON=0X00;
  52. TH1=0xf3;              //40KHZ初值
  53. TL1=0xf3;
  54. IT0=1;
  55. EX0=1;                //外中斷允許
  56. EA=1;                 //開總中斷
  57. }
  58. //
  59. //
  60. /**********鍵功能函數(shù)************/
  61. keywork()
  62. {
  63. if(txkey==0)
  64. {
  65.     while(txkey==0);     //等待鍵釋放
  66.     ET1=1;TR1=1;         //發(fā)起始位
  67.     for(i=head;i>0;i--){;}
  68.         remoteout=0;ET1=0;TR1=0;
  69.         n=0;
  70.         while(1)
  71.         {
  72.       if(remotedata[n]==0x00){delay1ms(10);break;}//數(shù)據(jù)為0結(jié)束
  73.           for(i=remotedata[n];i>0;i--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
  74.           lamp=~lamp;n++;//偶地址不發(fā)脈沖
  75. //
  76.           ET1=1;TR1=1;  //奇地址發(fā)調(diào)制脈沖
  77.       for(i=remotedata[n];i>0;i--){;}
  78.           remoteout=0;ET1=0;TR1=0;n++;
  79.         }
  80.   }
  81. }
  82. //
  83. //
  84. /***********主函數(shù)***************/
  85. main()
  86. {
  87. clearmen();          //初始化
  88. while(1)
  89. {
  90.   keywork();       //按鍵掃描
  91.   }
  92. }
  93. //
  94. //
  95. /*********40KHZ發(fā)生器***********/
  96. //定時(shí)中斷T1
  97. void time_intt1(void) interrupt 3
  98. {
  99. remoteout=~remoteout;
  100. }
  101. //
  102. //
  103. /***********學(xué)習(xí)函數(shù) ***********/
  104. //外中斷0
  105. void intt0(void) interrupt 0
  106. {
  107. ET1=0;TR1=0;EX0=0;EA=0;
  108. head=0;studylamp=1;lamp=0;
  109. while(studykey==0);           //等待鍵釋放
  110. while(remotein==1);           //等待遙控碼輸入
  111. head=0;                       //讀入起始位
  112. while(remotein==0){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();head++;}
  113. n=0;remdata=0x0000;
  114. while(1)
  115.          {
  116.        while(remotein==1){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();remdata++;}
  117.            if(remdata>m)                  //高電平>5毫秒退出
  118.            {remotedata[n]=0x00;EX0=1;EA=1;goto end;}
  119.            remotedata[n]=remdata;n++;     //存高電平脈寬數(shù)據(jù)
  120.        remdata=0x0000;                  //脈寬計(jì)數(shù)器清零
  121.            while(remotein==0){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();remdata++;}  //低電平計(jì)數(shù)
  122.            remotedata[n]=remdata;n++;remdata=0x00;//存低電平脈寬數(shù)據(jù)
  123.           }
  124. end: lamp=1;studylamp=0;
  125. }
  126. //
  127. //*********************結(jié)束**************************//
復(fù)制代碼

所有資料51hei提供下載:
學(xué)習(xí)型紅外線遙控器.zip (539.5 KB, 下載次數(shù): 335)



作者: 2018my2018    時(shí)間: 2018-11-16 09:20
請(qǐng)教樓主,這個(gè)程序是學(xué)習(xí)一個(gè)按鍵的嗎?如果學(xué)習(xí)多個(gè)按鍵(比如8個(gè)),程序和電路如何改,請(qǐng)指教。
作者: 2018my2018    時(shí)間: 2018-11-16 09:23
菜鳥請(qǐng)教大師們:此程序是只學(xué)習(xí)一個(gè)按鍵嗎?如果設(shè)置多個(gè)按鍵,程序和電路如何改?
作者: 小貓貓愛(ài)吃魚    時(shí)間: 2018-11-16 09:44
2018my2018 發(fā)表于 2018-11-16 09:23
菜鳥請(qǐng)教大師們:此程序是只學(xué)習(xí)一個(gè)按鍵嗎?如果設(shè)置多個(gè)按鍵,程序和電路如何改?

你好!這里有多解碼的紅外接收和發(fā)射實(shí)物,可以通過(guò)電腦或手機(jī)APP實(shí)現(xiàn)發(fā)射

一體化紅外學(xué)習(xí)型遙控器,NEC解碼、發(fā)射測(cè)試成功 - 51單片機(jī) 單片機(jī)論壇
http://www.torrancerestoration.com/bbs/dpj-119972-1.html

作者: vistayi    時(shí)間: 2019-3-11 23:31
正好需要這個(gè)東西

作者: bking    時(shí)間: 2019-3-13 17:17
極強(qiáng),這篇文章是非常有參考價(jià)值的
作者: CAD板    時(shí)間: 2019-3-27 21:31
樓主能看到嗎?如果看到請(qǐng)說(shuō)一下原理圖中R7連接哪里?
作者: ntlclxyc    時(shí)間: 2019-4-27 09:37
非常好的東西,學(xué)習(xí)啦
作者: ntlclxyc    時(shí)間: 2019-4-27 09:37
好東西,學(xué)習(xí)啦,謝謝
作者: ptlantu    時(shí)間: 2019-4-27 14:47
感謝分享
作者: yyhlsf    時(shí)間: 2019-4-27 19:34
謝謝分享
作者: 206004430    時(shí)間: 2019-5-9 19:31
樓主,您的那個(gè)原理圖有一部分和pcb不符合啊,那個(gè)電阻R7沒(méi)有連到單片機(jī)的第9引腳,而pcb卻連上了
作者: wj0710101    時(shí)間: 2019-5-27 17:29
學(xué)習(xí)學(xué)習(xí)學(xué)習(xí)!。。!
作者: fkx0830    時(shí)間: 2019-6-17 22:57
學(xué)習(xí)一波,好好研究一番
作者: szzxl10    時(shí)間: 2019-6-22 17:48
謝謝分享
作者: 黑龍王    時(shí)間: 2019-8-27 14:29
哈哈 是哪個(gè)芯片呢
作者: kc樂(lè)樂(lè)    時(shí)間: 2019-9-19 15:35
非常好的東西,學(xué)習(xí)啦
作者: jg520    時(shí)間: 2020-2-16 19:42
插眼
作者: 華裔精靈    時(shí)間: 2020-5-11 15:56
很好的分享!謝謝!
作者: lyseg    時(shí)間: 2020-5-11 21:15

謝謝分享!!
作者: eric2020    時(shí)間: 2020-5-27 10:48
有非常大的參考價(jià)值
作者: swustlx86    時(shí)間: 2020-6-1 02:01
好資料,51黑有你更精彩!!!
作者: 下次見(jiàn)    時(shí)間: 2023-12-18 07:20
2018my2018 發(fā)表于 2018-11-16 09:23
菜鳥請(qǐng)教大師們:此程序是只學(xué)習(xí)一個(gè)按鍵嗎?如果設(shè)置多個(gè)按鍵,程序和電路如何改?

不會(huì)啊。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1