找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)學(xué)習(xí)型紅外線遙控器程序原理圖與PCB文件

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
制作出來的遙控器實(shí)物圖如下:

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


學(xué)習(xí)型紅外線遙控器  元器件   
   
AT89C52單片機(jī)及底座   
NPN 三極管      9013系列4個(gè)
發(fā)光二極管    3個(gè)
紅外線發(fā)射二極管    2個(gè)
電阻  560    3個(gè)
電阻  10K    5個(gè)
電阻  10    2個(gè)
電阻  4K7    2個(gè)
電容  1uf    2個(gè),有正負(fù)極
電容  10uf    2個(gè),有正負(fù)極
電容  20uf,3v    2個(gè),有正負(fù)極
電容  30pf    3個(gè),無正負(fù)極
12MHz晶振    1個(gè)
按鍵開關(guān)    3個(gè)
電視機(jī)三端一體紅外接收解調(diào)器    1個(gè)
大塊萬用板    1塊
導(dǎo)線若干   

單片機(jī)源程序如下:
  1. /*********************************************************************/
  2. //                         remote.c
  3. //                       學(xué)習(xí)型遙控器
  4. //                     使用keil c51
  5. /*********************************************************************/
  6. //使用AT89C52單片機(jī),12MHZ晶振,
  7. //
  8. //#pragma src(E:\remote.asm)
  9. #include "reg51.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. ……………………

  113. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

板凳
ID:403447 發(fā)表于 2023-6-9 10:14 | 只看該作者
好東西,準(zhǔn)備手工做個(gè)試試,有問題回來請(qǐng)教樓主
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

5#
ID:398219 發(fā)表于 2023-7-21 11:29 | 只看該作者
有成功了的沒
回復(fù)

使用道具 舉報(bào)

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

studykey=P3^2;         //學(xué)習(xí)鍵(中斷口)

他是中斷口
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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