久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

紅外遙控程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:68048 發(fā)表于 2015-7-15 15:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
希望對新手有用,里面有幾個疑問請高手指點
  1. ///** STC15F104不需要外部晶振8管腳VCC/GND/P3.0-P3.5 **///
  2. ///** 四個元件實現(xiàn)NEC協(xié)議紅外遙控的發(fā)射(STC15F104、按鍵開關、紅外發(fā)射管、限流電阻) 還有4個IO口可以利用 **///

  3. ///** 程序燒寫時選運行頻率12M **///
  4. ///** P3.3接按鍵開關與GND鏈接 **///
  5. ///** P3.5接紅外發(fā)射管負極,紅外發(fā)射管正極接+5,注意串接限流電阻 **///



  6. //本程序主體不是自己寫的,主體部分來源與admin 在2009-11-1 02:26:38 發(fā)布的紅外發(fā)射實驗
  7. //***http://www.zg4o1577.cn/bbs/dpj-2820-1.html****////


  8. ///*** 有的地方不了解就按自己的意識修改了一下
  9. ///1、是不是應該13um中斷一次,換一次電平??????????????
  10. ///2、SendIRdata函數(shù)中 endcount原始賦值看不懂
  11. ///上學時接觸幾天C語言(沒過級,英語太差)、自學的51,


  12. ///請教高手指點
  13. ///請教高手指點


  14. #include <STC15F104E.h>
  15. static bit OP; //紅外發(fā)射管的亮滅
  16. static unsigned int count; //延時計數(shù)器
  17. static unsigned int endcount; //終止延時計數(shù)
  18. static unsigned char flag; //紅外發(fā)送標志
  19. char iraddr1; //十六位地址的第一個字節(jié)
  20. char iraddr2; //十六位地址的第二個字節(jié)
  21. void SendIRdata(char p_irdata);
  22. void delay();


  23. void main(void)
  24. {
  25. ///****變量初始化******///
  26. count = 0; //延時計數(shù)器初始化
  27. flag = 0; //紅外發(fā)送標志初始化
  28. OP = 1; //紅外發(fā)射管的亮滅初始化
  29. P35 = 1; //紅外發(fā)射io口初始化

  30. //***中斷初始設置***//
  31. EA = 1; //允許CPU中斷
  32. TMOD = 0x11; //設定時器0和1為16位模式1
  33. ET0 = 1; //定時器0中斷允許
  34. TH0 = 0xFF; //設定時值0為38K 也就是每隔26us中斷一次 TH0 = 0xFF; ????是不是應該13um換一次電平
  35. TL0 = 0xf2; // TL0 = 0xE5;
  36. TR0 = 1; //開始計數(shù)




  37. ///***地址初始化****///
  38. iraddr1=0x00; //第一字節(jié)
  39. iraddr2=0xfd; //第二字節(jié)


  40. /**進入主程序循環(huán)**/
  41. do{
  42. delay();
  43. if(P33==0)
  44. {SendIRdata(0x16);}// 在此填入發(fā)射數(shù)據(jù)
  45. }while(1);
  46. }
  47. /*****定時器0中斷處理 ***/
  48. void timeint(void) interrupt 1
  49. {
  50. TH0=0xFF;
  51. TL0=0xf2; //設定時值為38K 也就是每隔26us中斷一次 ????是不是應該13um換一次電平

  52. count++;

  53. if (flag==1)
  54. {
  55. OP=~OP;
  56. }
  57. else
  58. {
  59. OP = 1;
  60. }
  61. P35 = OP;
  62. }

  63. //**數(shù)據(jù)傳輸函數(shù)**//

  64. void SendIRdata(char p_irdata)
  65. {
  66. /*聲明變量*/
  67. int i;
  68. char irdata=p_irdata;
  69. /*發(fā)送9ms的起始碼*/
  70. endcount=692; /// endcount=223 223*26=5798 ?????????????????
  71. flag=1;
  72. count=0;
  73. do{}while(count<endcount);
  74. /*發(fā)送4.5ms的結果碼 */
  75. endcount=346;
  76. flag=0;
  77. count=0;
  78. do{}while(count<endcount);
  79. /******發(fā)送十六位地址的前八位********/

  80. irdata=iraddr1;
  81. for(i=0;i<8;i++)
  82. {
  83. endcount=43; //先發(fā)送0.56ms的38KHZ紅外波(即編碼中0.56ms的低電平)
  84. flag=1;
  85. count=0;
  86. do{}while(count<endcount); //停止發(fā)送紅外信號(即編碼中的高電平)
  87. if(irdata-(irdata/2)*2) //判斷二進制數(shù)個位為1還是0
  88. {
  89. endcount=130; //1為寬的高電平
  90. }
  91. else
  92. {
  93. endcount=43; //0為窄的高電平
  94. }
  95. flag=0;
  96. count=0;
  97. do{}while(count<endcount);
  98. irdata=irdata>>1;
  99. }
  100. /**********發(fā)送十六位地址的后八位*********/
  101. irdata=iraddr2;
  102. for(i=0;i<8;i++)
  103. {
  104. endcount=43;
  105. flag=1;
  106. count=0;
  107. do{}while(count<endcount);
  108. if(irdata-(irdata/2)*2)
  109. {
  110. endcount=130;
  111. }
  112. else
  113. {
  114. endcount=43;
  115. }
  116. flag=0;
  117. count=0;
  118. do{}while(count<endcount);
  119. irdata=irdata>>1;
  120. }
  121. ////*****發(fā)送八位數(shù)據(jù)*****/////
  122. irdata=p_irdata;
  123. for(i=0;i<8;i++)
  124. {
  125. endcount=43;
  126. flag=1;
  127. count=0;
  128. do{}while(count<endcount);
  129. if(irdata-(irdata/2)*2)
  130. {
  131. endcount=130;
  132. }
  133. else
  134. {
  135. endcount=43;
  136. }
  137. flag=0;
  138. count=0;
  139. do{}while(count<endcount);
  140. irdata=irdata>>1;
  141. }
  142. /******發(fā)送八位數(shù)據(jù)的反碼******/
  143. irdata=~p_irdata;
  144. for(i=0;i<8;i++)
  145. {
  146. endcount=43;
  147. flag=1;
  148. count=0;
  149. do{}while(count<endcount);
  150. if(irdata-(irdata/2)*2)
  151. {
  152. endcount=130;
  153. }
  154. else
  155. {
  156. endcount=43;
  157. }
  158. flag=0;
  159. count=0;
  160. do{}while(count<endcount);
  161. irdata=irdata>>1;
  162. }

  163. endcount=43;
  164. flag=1;
  165. count=0;
  166. do{}while(count<endcount);
  167. flag=0;

  168. }
  169. ///****延時函數(shù)***////
  170. void delay()
  171. {
  172. int i,j;
  173. for(i=0;i<400;i++)
  174. {
  175. for(j=0;j<100;j++)
  176. {
  177. }
  178. }
  179. }
復制代碼

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:51142 發(fā)表于 2015-11-4 11:31 | 只看該作者
學習了,頂。。。。
回復

使用道具 舉報

板凳
ID:130591 發(fā)表于 2016-7-19 13:03 | 只看該作者
正在學習,謝謝了!
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品日韩欧美一区二区三区 | 91亚洲精品久久久电影 | 四虎影音 | 免费在线视频一区二区 | 国产乱码精品一区二区三区忘忧草 | 国产aⅴ爽av久久久久久久 | 综合色在线 | 久久99精品视频 | 仙人掌旅馆在线观看 | 国产在线一区二区三区 | 国产一区久久久 | 国产激情片在线观看 | 精品一区二区三区在线观看国产 | 欧美激情久久久 | 国产精品区二区三区日本 | 99精品99久久久久久宅男 | 日本高清中文字幕 | 日韩综合在线视频 | 麻豆av网| 久久午夜精品 | 日本中文字幕视频 | 中文区中文字幕免费看 | 中文字幕高清在线 | www.亚洲一区| 岛国毛片在线观看 | xxxxx免费视频 | 久久精品中文字幕 | www.色五月.com| 美女激情av | 免费激情网站 | 亚洲综合成人网 | 亚洲伊人久久综合 | 国产日韩欧美一区 | 91操操操 | 国产美女自拍视频 | 久久久91精品国产一区二区三区 | 成人在线一区二区 | 久久久人| 99久久精品免费看国产高清 | 综合在线视频 | 亚洲精品一区二区三区蜜桃久 |