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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

紅外控制舵機

  [復制鏈接]
跳轉到指定樓層
樓主
ID:93295 發表于 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

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

使用道具 舉報

沙發
ID:107891 發表于 2016-3-15 10:40 | 只看該作者
艾瑪。。坨機 我現在正在研究
回復

使用道具 舉報

板凳
ID:78462 發表于 2016-4-3 20:44 | 只看該作者
希望能好好研究下
回復

使用道具 舉報

地板
ID:84495 發表于 2016-4-4 09:40 | 只看該作者
我有個愛頂貼的好習慣
回復

使用道具 舉報

5#
ID:122267 發表于 2016-5-20 22:42 | 只看該作者
我想參考下
回復

使用道具 舉報

6#
ID:121473 發表于 2016-5-23 08:47 | 只看該作者
認真學習
回復

使用道具 舉報

7#
ID:117161 發表于 2016-5-31 19:32 | 只看該作者
  有沒有原理圖
回復

使用道具 舉報

8#
ID:117984 發表于 2016-6-12 17:26 | 只看該作者
謝謝樓主 一起學習一起加油
回復

使用道具 舉報

9#
ID:135495 發表于 2016-8-2 01:51 | 只看該作者
新手
回復

使用道具 舉報

10#
ID:152251 發表于 2016-12-5 11:22 | 只看該作者
我有個愛頂貼的好習慣
回復

使用道具 舉報

11#
ID:190886 發表于 2017-4-18 16:43 | 只看該作者
46和47行代碼應該在41行后面,因為接收引導碼是9ms低電平+4.5ms高電平,不分開~
回復

使用道具 舉報

12#
ID:190939 發表于 2017-4-18 19:13 | 只看該作者
舵機,就是挺多用的,程序有點不知道怎么入手
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久一级毛片 | 国产成人综合亚洲欧美94在线 | 91五月天 | 国产三级| 久久久久久久久久久久久91 | 国产日韩欧美 | 国产农村妇女毛片精品久久麻豆 | 中文字幕一区二区三区四区五区 | 99精品一区二区三区 | 欧美日韩国产精品 | 九色在线视频 | 久久久99精品免费观看 | av中文字幕在线 | 亚洲 欧美 精品 | k8久久久一区二区三区 | 日本欧美黄色片 | 欧美精品二区 | 亚洲 日本 欧美 中文幕 | 91在线精品秘密一区二区 | 国产欧美精品一区 | 狠狠操狠狠干 | 国产区久久 | 亚洲第一成人影院 | 国产一区二区视频在线观看 | 亚洲一区 中文字幕 | 国产精品永久免费视频 | 国内精品久久精品 | 欧美黄色网络 | 中文字幕第一页在线 | 99久久婷婷国产综合精品首页 | 日韩久久久久 | 毛片免费在线观看 | 亚欧洲精品在线视频免费观看 | 999久久久免费精品国产 | 视频在线一区二区 | 亚洲 欧美 激情 另类 校园 | 日日夜夜天天干 | 欧美精品一区三区 | 色吊丝2288sds中文字幕 | 久久九| 国产日产久久高清欧美一区 |