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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7965|回復: 11
收起左側

紅外控制舵機

  [復制鏈接]
ID:93295 發(fā)表于 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;                                //數(shù)碼管為選位
  15. sbit dula=P2^5;                                //數(shù)碼管段選為
  16. sbit PWM=P1^5;                                //PWM信號輸出
  17. uchar IRCOM[7];                                //鍵值存儲
  18. uchar code tab[]={                        //共陽極數(shù)碼管段選數(shù)組
  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, 下載次數(shù): 48, 下載積分: 黑幣 -5

回復

使用道具 舉報

ID:107891 發(fā)表于 2016-3-15 10:40 | 顯示全部樓層
艾瑪。。坨機 我現(xiàn)在正在研究
回復

使用道具 舉報

ID:78462 發(fā)表于 2016-4-3 20:44 | 顯示全部樓層
希望能好好研究下
回復

使用道具 舉報

ID:84495 發(fā)表于 2016-4-4 09:40 | 顯示全部樓層
我有個愛頂貼的好習慣
回復

使用道具 舉報

ID:122267 發(fā)表于 2016-5-20 22:42 | 顯示全部樓層
我想?yún)⒖枷?/td>
回復

使用道具 舉報

ID:121473 發(fā)表于 2016-5-23 08:47 | 顯示全部樓層
認真學習
回復

使用道具 舉報

ID:117161 發(fā)表于 2016-5-31 19:32 | 顯示全部樓層
  有沒有原理圖
回復

使用道具 舉報

ID:117984 發(fā)表于 2016-6-12 17:26 | 顯示全部樓層
謝謝樓主 一起學習一起加油
回復

使用道具 舉報

ID:135495 發(fā)表于 2016-8-2 01:51 | 顯示全部樓層
新手
回復

使用道具 舉報

ID:152251 發(fā)表于 2016-12-5 11:22 | 顯示全部樓層
我有個愛頂貼的好習慣
回復

使用道具 舉報

ID:190886 發(fā)表于 2017-4-18 16:43 | 顯示全部樓層
46和47行代碼應該在41行后面,因為接收引導碼是9ms低電平+4.5ms高電平,不分開~
回復

使用道具 舉報

ID:190939 發(fā)表于 2017-4-18 19:13 | 顯示全部樓層
舵機,就是挺多用的,程序有點不知道怎么入手
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜在线| 99久久精品国产毛片 | 男女免费观看在线爽爽爽视频 | 亚洲色图综合 | 蜜桃视频在线观看www社区 | 香蕉一区 | 欧美国产日韩在线 | 国产一区二区三区免费视频 | 超碰97人人人人人蜜桃 | 白浆在线 | 欧美日韩综合精品 | 福利网址| 日本一区二区在线视频 | 午夜久久久久久久久久一区二区 | 天堂av中文在线 | 欧美综合一区 | av三级在线观看 | 久久伊人亚洲 | 最新国产在线 | 三级av网址| 免费观看黄色一级片 | 一区精品视频 | 青青久久av北条麻妃海外网 | 亚洲欧美中文日韩在线v日本 | 精品国产久| 天天操网 | 日韩在线观看中文字幕 | 欧美一级久久 | 久久久久国产精品一区 | 日韩在线免费播放 | 一级黄a | 在线婷婷 | 狠狠色网 | 免费一区二区三区 | 91久久 | 在线视频亚洲 | 91视频免费在观看 | 亚洲一区二区三区免费在线观看 | 午夜私人影院在线观看 | 99精品视频免费观看 | 精品一区二区三区在线播放 |