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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

紅外遙控程序

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

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



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


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


  12. ///請教高手指點(diǎn)
  13. ///請教高手指點(diǎn)


  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ā)送標(biāo)志
  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ā)送標(biāo)志初始化
  28. OP = 1; //紅外發(fā)射管的亮滅初始化
  29. P35 = 1; //紅外發(fā)射io口初始化

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




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


  40. /**進(jìn)入主程序循環(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; //設(shè)定時值為38K 也就是每隔26us中斷一次 ????是不是應(yīng)該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的結(jié)果碼 */
  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) //判斷二進(jìn)制數(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. }
復(fù)制代碼

評分

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

查看全部評分

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

相關(guān)帖子

回復(fù)

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人欧美在线 | 久久久久亚洲 | xx视频在线| 狠狠狠色丁香婷婷综合久久五月 | 91精品综合久久久久久五月天 | 日本电影网站 | 日韩成人在线一区 | 中文字幕第三页 | 亚洲一区二区日韩 | a级大片免费观看 | 色天天综合 | 老司机深夜福利网站 | 成人国产午夜在线观看 | 大久| 免费特黄视频 | 欧洲成人| 天天操夜夜爽 | 久久久久国产精品www | 国产精品国产a级 | 日韩中出 | 在线免费观看毛片 | 国产一区二区三区在线免费 | 天堂一区 | 亚洲最新网址 | 国产激情福利 | 狠狠干天天干 | 久久久久久久久久久蜜桃 | 国产精品久久久久久久久久久久久 | 毛片在线看看 | 全免一级毛片 | 国产一区二区三区在线免费 | 日韩成人精品一区 | 中文字幕一区二区不卡 | 黄色精品 | 久久99精品视频 | 亚洲国产精品一区二区三区 | 亚洲综合视频一区 | 国产色在线| 天天拍天天色 | 美女视频h | 国产精品久久久久久久久久久免费看 |