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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機 紅外通信控制舵機,自己寫的程序實現不了?大神看看

[復制鏈接]
跳轉到指定樓層
樓主
ID:405273 發表于 2018-10-20 21:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

51單片機紅外控制舵機程序

#include "reg52.h"   
#include <intrins.h>
typedef unsigned int u16;   
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit pwm =P1^5;
sbit IRIN=P3^2;        //紅外傳感器定義口
u8 jd;
u8 count;
u8 IrValue[6];
u8 Time;
u8 DisplayData[8];
u8 code smgduan[17]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0X76};
//extern controlcar(unsigned char contype);
u8 IRCOM[7];
/*******************************************************************************
延時函數
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}

/*******************************************************************************
中斷函數 定時器中斷 0.25ms控制舵機
*******************************************************************************/
void Time0_Init()          //??????????
{
TMOD = 0x01;           //?????0????????1   
IE   = 0x82;
TH0  = 0xff;
TL0  = 0x06;     //12MZ????0.25ms
TR0=1;                 //????????
EX1=1;                                       
  IT1=1;                                               
  EA=1;
}
void DigDisplay()  //數碼管顯示函數
{
u8 i;
for(i=0;i<3;i++)
{
  switch(i)  //λ?????????????????
  {
   case(0):
    LSA=0;LSB=0;LSC=0; break;//?????0λ
   case(1):
    LSA=1;LSB=0;LSC=0; break;//?????1λ
   case(2):
    LSA=0;LSB=1;LSC=0; break;//?????2λ
  }
  P0=DisplayData[2-i];//????????
  delay(100); //????????????
  P0=0x00;//????
}  
}
//舵機定義函數
void zuozhuan()
{
delay(100);
jd=3;
count=0;

}
void guiwei()
{
delay(100);
jd=4;
count=0;
}
void youzhuan()
{
delay(100);
jd=5;
count=0;
}
void controlcar(unsigned char contype)
{
jd=4;
switch(contype)
{
  case 1:
  {
   zuozhuan();
   delay(100) ;
   break;
  }
  case 2:
  {
   guiwei()   ;
   delay(100);
   break;
  }
  case 3:
  {
   youzhuan();
   delay(100);
   break;
  }
}
}
/*******************************************************************************
* ??????         : IrInit()
* ????????     : ??????????????
* ????           : ??
* ???           : ??
*******************************************************************************/
void IrInit()
{
IT0=1;//????????
EX0=1;//???ж?0????
EA=1; //?????ж?
IRIN=1;//????????
}

/*******************************************************************************
* ?? ?? ??       : main
* ????????   : ??????
* ??    ??       : ??
* ??    ??      : ??
*******************************************************************************/
void main()
{
IrInit();
Time0_Init();
// EX1=1;                                               //????????ж?1
//  IT1=1;                                               //?趨???ж?1?????????????
//  EA=1;
delay(10);
while(1)
{
  DisplayData[0] = smgduan[IrValue[2]/16];
  DisplayData[1] = smgduan[IrValue[2]%16];
  DisplayData[2] = smgduan[16];
     DigDisplay();  
}  
}
/*******************************************************************************
紅外線解碼函數
*******************************************************************************/
void IR_IN() interrupt 2 using 0                      //????INT2???ж????
{
  unsigned char j,k,N=0;                              //??????????????
   
  EX1 = 0;                                            //??????ж?,?????????????   
  delay(15);                                        //?????????к???????
  if (IRIN==1)                                        //?ж?????????????
  {  
     EX1 =1;                                          //???ж??
  return;                                          //????
  }
                           
  while (!IRIN)                                       //??IR?????????????9ms?????????????
  {
      delay(1);                                     //??????
  }
  for (j=0;j<4;j++)                                   //????????????????
  {
    for (k=0;k<8;k++)                                 //??β??8λ????
    {
       while (IRIN)                                   //?? IR ?????????????4.5ms?????????????
       {
         delay(1);                                  //??????
       }
      
       while (!IRIN)                                  //?? IR ???????
       {
         delay(1);                                  //??????
       }
   
       while (IRIN)                                   //????IR???????
       {
         delay(1);                                  //??????
         N++;                                         //?????????
         if (N>=30)                                   //?ж??????????
      {
           EX1=1;                                     //?????ж????
        return;                                    //????
         }                  
       }
                                       
      IRCOM[j]=IRCOM[j] >> 1;                         //????????λ??????????????
     
      if (N>=8)                                       //?ж????????
      {
         IRCOM[j] = IRCOM[j] | 0x80;                  //???????λ??1
      }
      N=0;                                            //????λ???????
    }
  }
   
  if (IRCOM[2]!=~IRCOM[3])                            //?ж???????????
  {
     EX1=1;                                           //?????ж?
     return;                                          //????
  }
  for(j=0;j<10;j++)                                   //??????м??????
   {
      if(IRCOM[2]=smgduan[j])                       //???м?λ???
      {
       controlcar(j);                                          //???????????????
      }
   }
   
   
   EX1 = 1;                                           //???ж??
}


void Time0_Int() interrupt 1 //定時器中斷函數
{
TH0  = 0xff;             //??????
TL0  = 0x06;
    if(count< jd)              //?ж?0.5ms???????С??????
      pwm=1;                  //??С???PWM???????
    else
      pwm=0;                  //?????????????
    count=(count+1);          //0.5ms??????1
    count=count%40;     //???????????40 ???????????20ms
}


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

使用道具 舉報

沙發
ID:334190 發表于 2018-10-21 15:52 | 只看該作者
我也遇到過你這個問題,后來我換了接收頭哈哈哈。淘寶上有賣的,接收特定的碼值輸出高電平。哪一款一共有8個輸出位,可以實現遙控的功能。就是避開了解碼的一步
y寶鏈接在下面,但是要郵費有點貴

【8路點動紅外接收模塊/紅外接收模塊/紅外模塊/接收模塊+9鍵遙控器】

鏈接下載.rar

726 Bytes, 下載次數: 14

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费亚洲视频 | 亚洲天堂一区 | 欧美日韩不卡 | 午夜视频在线免费观看 | 精品久久久久久久 | 自拍视频一区二区三区 | 天天操天天玩 | 91av久久久 | 久久精品国产免费看久久精品 | 91精产国品一二三区 | 国产免费一区二区三区最新6 | 午夜影院| 亚洲九色| 国产精品美女在线观看 | 国产福利二区 | 欧美久久久久久久久 | 久草影视在线 | 久久中文网| 日本三级电影在线观看视频 | 大香网伊人 | 亚洲97 | 国产999精品久久久久久绿帽 | 最新国产精品精品视频 | 亚洲视频不卡 | 日本三级全黄三级a | 日韩成人影院 | 国产偷录视频叫床高潮对白 | 亚洲成人蜜桃 | 日本不卡一区 | 久久久久久久国产精品影院 | 中文字幕免费观看 | 久久精品免费看 | 午夜免费网站 | 日韩欧美一区二区三区免费观看 | 野狼在线社区2017入口 | 亚洲欧美综合精品另类天天更新 | 日韩免费高清视频 | 欧美日韩不卡合集视频 | 国产精品一区视频 | 久久福利电影 | 中文字幕精品视频 |