欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機學習型紅外線遙控器程序原理圖與PCB文件 [打印本頁]

作者: 嘉禾沐雨    時間: 2022-1-16 20:59
標題: 單片機學習型紅外線遙控器程序原理圖與PCB文件
制作出來的遙控器實物圖如下:

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


學習型紅外線遙控器  元器件   
   
AT89C52單片機及底座   
NPN 三極管      9013系列4個
發光二極管    3個
紅外線發射二極管    2個
電阻  560    3個
電阻  10K    5個
電阻  10    2個
電阻  4K7    2個
電容  1uf    2個,有正負極
電容  10uf    2個,有正負極
電容  20uf,3v    2個,有正負極
電容  30pf    3個,無正負極
12MHz晶振    1個
按鍵開關    3個
電視機三端一體紅外接收解調器    1個
大塊萬用板    1塊
導線若干   

單片機源程序如下:
  1. /*********************************************************************/
  2. //                         remote.c
  3. //                       學習型遙控器
  4. //                     使用keil c51
  5. /*********************************************************************/
  6. //使用AT89C52單片機,12MHZ晶振,
  7. //
  8. //#pragma src(E:\remote.asm)
  9. #include "reg51.h"
  10. #include "intrins.h"     //_nop_();延時函數用
  11. //
  12. #define uchar unsigned char
  13. #define uint unsigned int
  14. //
  15. sbit  studylamp=P1^6;        //學習狀態指示燈
  16. sbit  lamp=P1^7;             //發射指示燈
  17. sbit  studykey=P3^2;         //學習鍵(中斷口)
  18. sbit  remotein=P3^4;         //遙控信號輸入口
  19. sbit  remoteout=P3^5;         // 遙控輸出口
  20. sbit  txkey=P1^0   ;           //發射鍵
  21. //
  22. //
  23. uint i,j,m=255,n,k,s;
  24. uchar idata  remotedata[206];//存肪沖寬度數據用
  25. uint   head;           //存起始位用
  26. uint   remdata;
  27. //
  28. //
  29. ////
  30. /*********1毫秒延時程序**********/
  31. delay1ms(uint t)
  32. {
  33. for(i=0;i<t;i++)
  34.    for(j=0;j<120;j++)
  35.    ;
  36. }
  37. //
  38. //
  39. /***********初始化函數**********/
  40. clearmen()
  41. {
  42. studylamp=0;           //關學習燈
  43. lamp=0;                //關發射指示
  44. remoteout=0;           //關遙控輸出
  45. remotein=1;            //
  46. for(i=0;i<206;i++)     //清內存
  47. {remotedata[i]=0x00;}
  48. IE=0x00;
  49. IP=0x01;
  50. TMOD=0x22;             //8位自動重裝模式
  51. PCON=0X00;
  52. TH1=0xf3;              //40KHZ初值
  53. TL1=0xf3;
  54. IT0=1;
  55. EX0=1;                //外中斷允許
  56. EA=1;                 //開總中斷
  57. }
  58. //
  59. //
  60. /**********鍵功能函數************/
  61. keywork()
  62. {
  63. if(txkey==0)
  64. {
  65.     while(txkey==0);     //等待鍵釋放
  66.     ET1=1;TR1=1;         //發起始位
  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;}//數據為0結束
  73.           for(i=remotedata[n];i>0;i--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
  74.           lamp=~lamp;n++;//偶地址不發脈沖
  75. //
  76.           ET1=1;TR1=1;  //奇地址發調制脈沖
  77.       for(i=remotedata[n];i>0;i--){;}
  78.           remoteout=0;ET1=0;TR1=0;n++;
  79.         }
  80.   }
  81. }
  82. //
  83. //
  84. /***********主函數***************/
  85. main()
  86. {
  87. clearmen();          //初始化
  88. while(1)
  89. {
  90.   keywork();       //按鍵掃描
  91.   }
  92. }
  93. //
  94. //
  95. /*********40KHZ發生器***********/
  96. //定時中斷T1
  97. void time_intt1(void) interrupt 3
  98. {
  99. remoteout=~remoteout;
  100. }
  101. //
  102. //
  103. /***********學習函數 ***********/
  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. ……………………

  113. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei附件下載:
PCB原理圖程序.7z (1.98 MB, 下載次數: 87)
視頻.7z (9.48 MB, 下載次數: 44)


作者: heicad    時間: 2022-1-21 07:04
好資料,51黑有你更精彩!!!
作者: 大米861    時間: 2023-6-9 10:14
好東西,準備手工做個試試,有問題回來請教樓主
作者: 大米861    時間: 2023-7-11 19:26
這個程序有錯吧?
在學習函數里,“while(studykey==0);    //等待鍵釋放” ,但在鍵掃描函數里,并沒有studykey按下的指令,也就是無“等待鍵釋放”狀態。而該函數,只有要該鍵被按下,才為0,然后等非0時,while(studykey==0)才會結束。而如果該鍵從來未被按下過,就一直非0了。也就是說,這條指令是沒任何意義的。
請教樓主,這樣分析是否正確?
作者: herui2128    時間: 2023-7-21 11:29
有成功了的沒
作者: lsh04    時間: 2023-7-21 17:16
大米861 發表于 2023-7-11 19:26
這個程序有錯吧?
在學習函數里,“while(studykey==0);    //等待鍵釋放” ,但在鍵掃描函數里,并沒有st ...

studykey=P3^2;         //學習鍵(中斷口)

他是中斷口




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