亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5269|回復: 5
打印 上一主題 下一主題
收起左側

單片機學習型紅外線遙控器程序原理圖與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)

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

使用道具 舉報

5#
ID:513213 發表于 2023-7-21 17:16 | 只看該作者
大米861 發表于 2023-7-11 19:26
這個程序有錯吧?
在學習函數里,“while(studykey==0);    //等待鍵釋放” ,但在鍵掃描函數里,并沒有st ...

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

他是中斷口
回復

使用道具 舉報

地板
ID:398219 發表于 2023-7-21 11:29 | 只看該作者
有成功了的沒
回復

使用道具 舉報

板凳
ID:403447 發表于 2023-7-11 19:26 | 只看該作者
這個程序有錯吧?
在學習函數里,“while(studykey==0);    //等待鍵釋放” ,但在鍵掃描函數里,并沒有studykey按下的指令,也就是無“等待鍵釋放”狀態。而該函數,只有要該鍵被按下,才為0,然后等非0時,while(studykey==0)才會結束。而如果該鍵從來未被按下過,就一直非0了。也就是說,這條指令是沒任何意義的。
請教樓主,這樣分析是否正確?
回復

使用道具 舉報

沙發
ID:403447 發表于 2023-6-9 10:14 | 只看該作者
好東西,準備手工做個試試,有問題回來請教樓主
回復

使用道具 舉報

樓主
ID:262 發表于 2022-1-21 07:04 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表