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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機+0038紅外發射與接收C程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:574921 發表于 2020-9-8 19:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式




紅外發射程序
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit key1=P3^3;
  6. sbit key2=P3^4;
  7. sbit key3=P3^5;
  8. sbit LED=P1^0; //發射指示燈
  9. sbit out=P3^7;
  10. uchar i,a,num1;
  11. void init()//初始化作用
  12. {
  13.               key1=1;
  14.               key2=1;
  15.               key3=1;
  16. }
  17. void delay(uchar aa)
  18. {
  19.               uchar bb,cc;
  20.               for(bb=aa;bb>0;bb--)
  21.                             for(cc=200;cc>0;cc--);
  22. }
  23. void delayms(uchar aa)//延時程序
  24. {
  25.               for(a=aa;a>0;a--)
  26.               {
  27.                             _nop_();
  28.                             _nop_();
  29.                             _nop_();
  30.                             _nop_();
  31.                             _nop_();
  32.                             _nop_();
  33.                             _nop_();
  34.                             _nop_();
  35.               }
  36. }

  37. void khz(uchar aa)//是發射38KHZ的程序
  38. {
  39.               for(a=aa;a>0;a--)   //這個for語句可以得到準確的26.3波特率
  40.                             {
  41.                                           out=0;
  42.                                           i=7;                            //低了17us
  43.                                           while(i>0)i--;                            //   38kHZ
  44.                                           out=1;
  45.                                                         //高了9us      17+9=26us   比26.3快一點點
  46.                             }

  47. }
  48.               //khz(116);//3.028ms   精確的時間
  49.               //khz(64);//2.006ms
  50.               //khz(40); //1.052ms
  51.               //delayms(125);//2.012ms      這里是一些時間的介紹
  52.               //delayms(65);//1.054ms
  53.               //delayms(93);//1.5ms
  54. void fashu(uchar num)
  55. {
  56.               khz(116);//發射3ms 38khz
  57.               delayms(125);
  58.               for(num1=8;num1>0;num1--) //原來用的是a  后來出錯,肯定在這里!
  59.               {
  60.                             khz(40);
  61.                             if(num&0x01)
  62.                                           delayms(93);//delay 1.5ms
  63.                             else
  64.                                           delayms(65);//delay 1ms
  65.                             num=num>>1;
  66.               }
  67.               khz(20);

  68. }
  69. void tishi()
  70. {
  71.                               LED=0;
  72.                             delay(50);
  73.                             LED=1;
  74.                             delay(50);
  75.                             LED=0;
  76.                             delay(50);
  77.                             LED=1;
  78. }
  79. void keyscan()//按鍵掃描
  80. {
  81.               if(key1==0)
  82.               {
  83.                             _nop_();_nop_();_nop_();_nop_();
  84.                             _nop_();_nop_();_nop_();_nop_();
  85.                             if(key1==0)
  86.                             {
  87.                                           while(!key1);
  88.                                           fashu(0xf3);
  89.                                           tishi();
  90.                             }

  91.               }
  92.               if(key2==0)
  93.               {
  94.                             _nop_();_nop_();_nop_();_nop_();
  95.                             _nop_();_nop_();_nop_();_nop_();
  96.                             if(key2==0)
  97.                             {
  98.                                           while(!key2);
  99.                                           fashu(0x3f);
  100.                                           tishi();
  101.                                          
  102.                             }

  103.               }
  104.               if(key3==0)
  105.               {
  106.                             _nop_();_nop_();_nop_();_nop_();
  107.                             _nop_();_nop_();_nop_();_nop_();
  108.                             if(key3==0)
  109.                             {
  110.                                           while(!key3);
  111.                                           fashu(0xf5);
  112.                                           tishi();
  113.                             }

  114.               }            
  115. }
  116. void main()
  117. {
  118.               init();
  119.               while(1)
  120.               {
  121.                             keyscan();
  122.               }
  123. }
  124. 紅外接收程序
  125. #include<reg51.h>
  126. #include<intrins.h>
  127. #define uchar unsigned char
  128. #define uint unsigned int
  129. sbit led1=P1^0;
  130. sbit led2=P1^1;
  131. sbit led3=P1^2;
  132. sbit in=P3^2;
  133. uchar i,a,num;
  134. bit fleg;
  135. void init()
  136. {
  137.               fleg=1;
  138.               in=1;
  139.               EA=1;
  140.               EX0=1;
  141.               IT0=1;
  142. }
  143. void delayms(uchar aa)
  144. {
  145.               for(i=aa;i>0;i--)
  146.               {
  147.                             _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  148.               }            
  149. }

  150. void main()
  151. {
  152.               init();
  153.               //delayms(45);//0.642ms
  154.               //delayms(35);//0.502ms
  155.               //delayms(115);//1.623ms
  156.               //delayms(72);//1.02ms
  157.               //delayms(84);//1.188ms
  158.               //delayms(31);//0.446ms
  159.               while(1);
  160. }
  161. void sieasdf() interrupt 0
  162. {
  163.               EX0=0;
  164.               for(a=5;a>0;a--)
  165.               {
  166.                             delayms(35);//延時0.5ms 判斷5次  5*0.5=2.5ms
  167.                             if(in)fleg=0;
  168.               }
  169.               if(fleg)
  170.               {
  171.                             delayms(72);//延時1ms  判斷是不是高電平了
  172.                             if(in)
  173.                             {
  174.                                           delayms(115);//延時讓它超過2ms; 2.5+1+1.623=5.123ms  開始讀數據
  175.                                           delayms(118);//若偏移一位,可以去掉。
  176.                                           for(a=8;a>0;a--)
  177.                                           {
  178.                                                         while(!in);
  179.                                                         delayms(86);//延時1.188ms 判斷IO高低,從而得0或1
  180.                                                         num=num>>1;
  181.                                                         if(in)
  182.                                                                       {
  183.                                                                                     num=num|0x80;
  184.                                                                                     delayms(31);//延時0.6ms 因為上面延時1.2ms+0.6 剛好跳過1.5ms
  185.                                                                       }
  186.                                           }            
  187.                                           P2=num;
  188.                            
  189.                             }
  190.               }
  191.               fleg=1;
  192.               EX0=1;
  193. }
復制代碼


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

使用道具 舉報

沙發
ID:663576 發表于 2020-10-14 17:58 | 只看該作者
您好,您這兩個程序是可以放在一起的嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天射中文 | 亚洲综合在 | 国产精品久久亚洲 | 久久99精品久久久久久琪琪 | 精品国产一区二区国模嫣然 | 亚洲成年人免费网站 | 亚洲人a| 精品美女久久久 | h视频在线播放 | 在线看片网站 | 亚洲成人久久久 | 亚洲国产中文字幕 | 国产日韩欧美在线一区 | 人人爽日日躁夜夜躁尤物 | 国产在线网站 | 国产精品伦一区二区三级视频 | 国产精品网址 | 国产综合久久 | www.国产精| 国产午夜在线 | 国产午夜高清 | 欧美日韩一区二区在线观看 | 亚洲欧美一区二区三区视频 | 亚洲精品一区二区在线 | 国产精品成av人在线视午夜片 | 国产精品成av人在线视午夜片 | 欧美一级二级三级视频 | 欧美一区二区在线 | 亚洲精品乱码久久久久v最新版 | 国产精品日产欧美久久久久 | 国产精品久久久久久久久久久久久 | 男人天堂免费在线 | 日本欧美国产 | 草草在线观看 | 免费h视频 | 日批免费看 | 2019精品手机国产品在线 | 欧美极品少妇xxxxⅹ免费视频 | 欧美freesex黑人又粗又大 | www.亚洲视频.com | 欧美啪啪|