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

標題: 紅外控制舵機 [打印本頁]

作者: keil321    時間: 2016-3-15 10:27
標題: 紅外控制舵機
紅外控制舵機
  1. /*******************************************************************************
  2. *具體操作:        使用配套的遙控,按按鍵,查看顯示屏鍵值。                                                   *
  3. *        鍵值表:   45H    46H      47H                                                 *
  4. *                                   44H    40H      43H                                                                                   *
  5. *                                   07H    15H      09H                                                                                   *
  6. *                                   16H    19H      0DH                                                                                   *
  7. *                                   0CH    18H      5EH                                                                                   *
  8. *                                   08H    1CH      5AH                                                                                   *
  9. *                                   42H    52H      4AH                                                                                   *
  10. *******************************************************************************/
  11. #include<reg52.h>
  12. #define uchar unsigned char
  13. sbit IR=P3^3;                                //紅外中斷引腳
  14. sbit wela=P2^6;                                //數碼管為選位
  15. sbit dula=P2^5;                                //數碼管段選為
  16. sbit PWM=P1^5;                                //PWM信號輸出
  17. uchar IRCOM[7];                                //鍵值存儲
  18. uchar code tab[]={                        //共陽極數碼管段選數組
  19. 0xc0,0xf9,0xa4,0xb0,0x99,
  20. 0x92,0x82,0xf8,0x80,0x90};
  21. uchar dj,count;                                        //dj舵機角度標識引腳
  22. void delay0(uchar x)                        //延時0.14ms
  23. {
  24.         uchar i;
  25.         while(x--)
  26.         {
  27.                 for(i=0;i<13;i++);
  28.         }
  29. }
  30. void inter() interrupt 2                //外部中斷
  31. {       
  32.         unsigned char j,k,N=0;
  33.         EX1=0;
  34.         delay0(15);
  35.         if(IR==1)
  36.         {
  37.                 EX1=1;
  38.                 return;
  39.         }
  40.         while(!IR)
  41.                 delay0(1);                           //跳過9ms低電平引導碼
  42.         for(j=0;j<4;j++)
  43.         {
  44.                 for(k=0;k<8;k++)
  45.                 {
  46.                         while(IR)
  47.                                 delay0(1);                //跳過4.5ms的高電平
  48.                         while(!IR)
  49.                                 delay0(0);                //跳過0.56ms低電平
  50.                         while(IR)                        //計算高電平的時間
  51.                         {
  52.                                 delay0(1);
  53.                                 N++;
  54.                                 if(N>=30)                //高電平過長終止外部中斷
  55.                                 {
  56.                                         EX1=1;
  57.                                         return;
  58.                                 }
  59.                         }
  60.                         IRCOM[j]=IRCOM[j]>>1;//向右移位補零
  61.                         if(N>=8)
  62.                         {
  63.                                 IRCOM[j]=IRCOM[j]|0X80;
  64.                         }                                         //如果為高電平IRCOM為1
  65.                         N=0;       
  66.                 }
  67.         }
  68.   if(IRCOM[2]!=~IRCOM[3])                 //原碼與反碼對比驗證,如果不正確則停止
  69.   {
  70.           EX1=1;
  71. //        IROK=0;
  72.         return;       
  73.   }
  74.   IRCOM[4]=IRCOM[2]>>4;                //高四位變低四位
  75.   IRCOM[5]=IRCOM[2]&0X0F;        //取鍵值得低四位
  76.   IRCOM[7]=IRCOM[4]*16+IRCOM[5];//十六進制換算成十進制
  77.   EX1=1;
  78. }
  79. void delay(unsigned int z)
  80. {
  81.         unsigned int x,y;
  82.         for(x=z;x>0;x--)
  83.                 for(y=110;y>0;y--);
  84. }
  85. void display(uchar num)                  //十進制鍵值顯示
  86. {
  87.         uchar         bai,shi,ge;
  88.         bai=num/100;
  89.         shi=(num%100)/10;
  90.         ge=num%10;
  91.         wela=1;
  92.         P0=0x01;
  93.         wela=0;
  94.         P0=0XFF;
  95.         dula=1;
  96.         P0=tab[bai];
  97.         dula=0;
  98.         delay(5);

  99.         wela=1;
  100.         P0=0X02;
  101.         wela=0;
  102.         P0=0xff;
  103.         dula=1;
  104.         P0=tab[shi];
  105.         dula=0;
  106.         delay(5);

  107.         wela=1;
  108.         P0=0x04;
  109.         wela=0;
  110.         P0=0xff;
  111.         dula=1;
  112.         P0=tab[ge];
  113.         dula=0;
  114.         delay(5);
  115.         switch(num)
  116.         {
  117.                 case 7:
  118.                                 dj--;
  119.                                 count=0;
  120.                                 if(dj==0)
  121.                                         dj=1;
  122.                 break;
  123.                 case 21:               
  124.                                 dj++;
  125.                                 count=0;
  126.                                 if(dj==6)
  127.                                         dj=5;
  128.                 break;       
  129.                 default:
  130.                 break;                       
  131.                 }
  132. }
  133. /*void IRscan(uchar num)
  134. {
  135.         uchar temp;
  136.         temp=num;
  137.         if(IROK!=0)
  138.         {
  139.                 switch(num)
  140.                 {
  141.                         case 7:
  142.                                                 dj--;
  143.                                                 count=0;
  144.                                                 if(dj==0)
  145.                                                 dj=1;
  146.                         break;
  147.                         case 21:               
  148.                                                 dj++;
  149.                                                 count=0;
  150.                                                 if(dj==6)
  151.                                                 dj=5;
  152.                         break;       
  153.                         default:
  154.                         break;                       
  155.                 }
  156.                 IROK=0;
  157.         }
  158. }  */
  159. void main()
  160. {
  161.         EA=1;          //全局中斷開
  162.     EX1=1;         //外部中斷1開
  163.     IT1=1;
  164.         TMOD=0X010;
  165.         TH1=0XFE;
  166.         TL1=0X0C;
  167.         ET1=1;
  168.         TR1=1;
  169.         count=0;
  170.         while(1)
  171.         {       
  172. //                IRscan(IRCOM[7]);
  173.                 display(IRCOM[7]);
  174.                 delay(2);
  175.         }
  176. }
  177. void time1() interrupt 3
  178. {
  179.         TH1=0XFE;
  180.         TL1=0X0C;
  181.         count++;
  182.         if(count<dj)
  183.                 PWM=1;
  184.         else
  185.                 PWM=0;
  186.         count=count%40;
  187. }
復制代碼


舵機 紅外.rar

21.55 KB, 下載次數: 48, 下載積分: 黑幣 -5


作者: 357291542    時間: 2016-3-15 10:40
艾瑪。。坨機 我現在正在研究
作者: 小菜鳥來學習    時間: 2016-4-3 20:44
希望能好好研究下

作者: absflash    時間: 2016-4-4 09:40
我有個愛頂貼的好習慣
作者: 挖去12    時間: 2016-5-20 22:42
我想參考下
作者: xyka    時間: 2016-5-23 08:47
認真學習
作者: 5551    時間: 2016-5-31 19:32
  有沒有原理圖
作者: 冥空    時間: 2016-6-12 17:26
謝謝樓主 一起學習一起加油
作者: 15773130960    時間: 2016-8-2 01:51
新手
作者: eversence213    時間: 2016-12-5 11:22
我有個愛頂貼的好習慣
作者: fine    時間: 2017-4-18 16:43
46和47行代碼應該在41行后面,因為接收引導碼是9ms低電平+4.5ms高電平,不分開~
作者: 安若兮    時間: 2017-4-18 19:13
舵機,就是挺多用的,程序有點不知道怎么入手





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本理论片好看理论片 | 一区二区三区国产 | 亚洲国产成人久久综合一区,久久久国产99 | av一区在线观看 | 蜜桃av一区二区三区 | 中文字幕一区二区三区不卡 | 日韩中文字幕在线视频 | 亚洲综合成人网 | 日韩一区二区三区视频在线观看 | 国产精品视频一二三区 | 精品久久久久久久 | 国产羞羞视频在线观看 | 在线播放国产一区二区三区 | 免费观看黄网站 | 99久9| 久久中文字幕一区 | 一区二区三区国产视频 | 国产成人精品一区二区三区四区 | 亚洲一区视频在线 | 国产99视频精品免视看9 | 国产视频1区 | 欧州一区 | 免费精品视频一区 | 午夜精品久久久久久久久久久久久 | 日韩av免费在线观看 | 久久精品一区二区 | 久久精品一区二区 | 精品一区二区三区不卡 | 久久成人免费视频 | 亚洲人在线播放 | 三级视频网站 | 黄视频免费观看 | 国产三级在线观看播放 | 亚洲精品一区在线观看 | 成人亚洲 | 欧美国产亚洲一区二区 | 99精品久久| 日韩一区二区在线视频 | 精品国产乱码久久久久久老虎 | 欧美日韩亚洲国产 | 亚洲精品国产综合区久久久久久久 |