회원가입 ID/PW 찾기

1) 지식 창고는 본인이 작성한 콘텐츠(팁/노하우/리소스/강좌 등)을 무료 혹은 가상화폐인 납포인트를 통해 공유하는 공간입니다.
2) 본인이 작성한 콘텐츠에 대해서만 지식 창고에 등록할 수 있으며, 저작권에 위배되는 콘텐츠는 사전경고 없이 삭제될 수 있습니다.
3) 콘텐츠 구매 및 첨부파일 다운로드는 회원그룹 '연구원' 이상 가능하오니, 경험치를 쌓아 진급한 후에 이용 부탁드립니다.
4) 무료 콘텐츠의 본문은 구매절차 없이 즉시 이용할 수 있으며, 판매 납포인트가 있는 콘텐츠는 구매 후 이용할 수 있습니다.
5) 콘텐츠 판매에 따른 납포인트 수익은 지정한 비율(50%)에 따라 판매자에게 지급하며, 납포인트 수익을 통해 진급을 빨리할 수 있습니다.
6) 구매 후 평가를 하면 구매 납포인트의 20%를 돌려 드립니다.

콘텐츠 수 185
판매자 아크마 판매 납포인트 무료 평점 4.1점 / 총 14명 참여

/*

8051을 이용해 IR리모콘으로 RC서보모터 제어

8051을 이용해서 IR리모콘(TV리모콘과 같은)로 RC서보모터를 원격조정하는 것입니다...
만들당시 회로는 너무 간단해서 회로도는 그리지 않았습니다.;;
사진은 차후에 올려드리겠습니다.
작성자 :   김대영(아크마)
 작성일 : 2004년 12월 8일
 VERSION : 0.1

*/

// 컴파일러 : 마이크로비젼 7.0

#include <at89x52.h>
 /*
645
1382
2119
18432
*/

#define TIME_SEC    20000
#define RATE_8952   0.000001085069444
#define PULS_LEFT       900
#define PULS_MID       2000
#define PULS_RIGHT      5000
#define PULS_OFF        18432
#define SPEED_1        1
#define SPEED_2        2
#define SPEED_3       3
#define SPEED_4       4
#define SPEED_5       5
#define SPEED_6       6
#define SPEED_20      20

#define TIMER0_ON  TR0 = 1
#define TIMER0_OFF   TR0 = 0
#define TIMER1_ON       TR1 = 1
#define TIMER1_OFF   TR1 = 0
#define TIMER_IT0_ENABLE ET0 = 1
#define TIMER_IT0_DISALBE ET0 = 0
#define TIMER_IT1_ENABLE ET1 = 1
#define TIMER_IT1_DISABLE ET1 = 0
#define IT_ENABLE  EA = 1
#define IT_DISABLE   EA = 0
#define SERVO_PORT  P2_7
#define TRUE    1
#define FALSE    0  


#define REMOCON_RIGHT  P1_4                         
#define REMOCON_DOWN  P1_3                         
#define REMOCON_STOP  P1_2                         
#define REMOCON_UP   P1_1                         
#define REMOCON_LEFT  P1_0  

#define REMOCON_TEST  P1_5                      

char old_right=1;
char old_down=1;
char old_stop=1;
char old_up=1;
char old_left=1;

typedef unsigned int  word;
typedef unsigned char  byte;
typedef char   bool;

byte flag = 0;
word speed;
word rate= PULS_MID;//PULS_MID;
word angle  = PULS_MID;
word target = PULS_MID;
bool chat_flag = FALSE;

long delay_count =0;
long delay_count_h=0;
int led_num = 0;


void delay_s(unsigned int iSec)
{
 int iCnt;
 
 while(iSec)
 {
  for(iCnt=0; iCnt < TIME_SEC; iCnt++);
         iSec--;
 }
}
  
void delay_t(unsigned int iTime)
{
 while(iTime--);
}
 

//타이머 초기화
bool InitTimer(void)
{    


    TMOD = 0x11;  // TMOD 1(16bit timer/counter) setting - use TH, TL, [hgigh : M1 = 0, M0 = 1]  [low : M1 = 0, M0 = 1]

 TH0 = 0x4C;
   TL0 = 0x00;
 TH1 = 0x4c;
 TL1 = 0x00;
       
    TIMER_IT0_ENABLE;
    TIMER_IT1_ENABLE;
 
 TIMER0_ON;
 IT_ENABLE;
 
    return 1;

}

//인터럽트 초기
bool InitInt()
{

 PX0 = 1 ;  
 IT0 = 1 ; 
 EX0 = 1 ;  
 EX1 = 1 ;
 IT_ENABLE;

}

// 서보 이동속도 설
void SetSpeed(word s)
{
 speed = s;
}
void test()
{
 char cnt;

 for(cnt=0;cnt<3;cnt++)
 {
 REMOCON_TEST = 1;
 delay_s(1);
 REMOCON_TEST = 0;
 delay_s(1);
 }
 }


int main(void)
{

 char flag_h = 0;

 delay_t(1);
    delay_s(1);
      
    InitTimer();
 InitInt();

 SetSpeed(SPEED_3);
    rate = 92;
    
 P0_3 = 0;
    
 while(1)
 {

  chat_flag = TRUE;

  if(old_left!=REMOCON_LEFT)
  {
   old_left = REMOCON_LEFT; 
  /*
   if(REMOCON_LEFT==0)
   {
    if(target-100 >= PULS_LEFT)
     target-=100;  
   }
   */
    if(REMOCON_LEFT==0)
   {
    target=PULS_LEFT;  
   }else
   {
    target  = angle;
    }

  }


  
  if(old_right!=REMOCON_RIGHT)
  {
   old_right = REMOCON_RIGHT;

   if(REMOCON_RIGHT==0)
   {
    target=PULS_RIGHT;  
   }else
   {
    target  = angle;
    }
    }

  
  if(old_up!=REMOCON_UP)
  {
   old_up = REMOCON_UP;

   if(REMOCON_UP==0)
   {
    if(speed < SPEED_20)
    {
     speed+=3;
    }  
   }
  }

  
  if(old_down!=REMOCON_DOWN)
  {
   old_down = REMOCON_DOWN;

   if(REMOCON_DOWN==0)
   {
    if(speed > SPEED_1)
    {
     speed-=3;
    }
   }
  }

 

  delay_count++;
  if(delay_count>40000)
  {
   delay_count = 0;

   switch(led_num)
   {
    case 0:
     P0_0 = 0;
     P0_1 = 1;
     P0_2 = 1;
     break;
    case 1:
     P0_0 = 1;
     P0_1 = 0;
     P0_2 = 1;
     break;
    case 2:
        P0_0 = 1;
     P0_1 = 1;
     P0_2 = 0;
     break;
   }

   led_num++;
   if(led_num > 2)
    led_num = 0;
    }
  
 
    delay_count_h++;
  if(delay_count_h>3000)
  {
   delay_count_h=0;
   if(angle >= PULS_MID-100 && angle <= PULS_MID+100)
     {
    if(flag_h)
     P0_3 = 0;
    else
     P0_3 = 1;
 
      flag_h = ~flag_h;
     }else
     {
       P0_3 = 0;
     }
  }

      /* target = PULS_MID;

     delay_s(15);

     target = PULS_MID + 300;

     delay_s(15);
 
     target = PULS_MID - 500;

      delay_s(15);
  */
 }      
}

 

void T0_int (void) interrupt 1
{

 TIMER0_OFF;         

     if(flag == 0)
     {
      flag = 1;
        SERVO_PORT = 0;
  rate = PULS_OFF - angle; // low level time
     }
    
     else
     {
  flag = 0;
       SERVO_PORT = 1;
  rate = angle;
 }
   
     if(angle + speed < target)
      angle += speed;
     else if(angle - speed > target)
      angle -= speed;
     else
      angle = target;
    
     TH0 = ~(byte)((0xff00 & rate) >> 8);
     TL0 = ~(byte)(0x00ff & rate);

    TIMER0_ON;
}


void ext_int(void) interrupt 0
{
 IT_DISABLE;
/*
 if(chat_flag)
 {//채터링처리
  if(target+100 <= PULS_RIGHT)
   target+=100;
  else
   target = PULS_LEFT;
 }else
     chat_flag = FALSE;
*/
 IT_ENABLE;
 
}



크리에이티브 커먼즈 코리아 저작자표시 Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락/3.0에 따라 이용하실 수 있습니다


모르는 것이 무엇인지 스스로 정리하고 질문하는 습관을 가집시다.
무성의/광범위하거나 직접 해보지 않고 올리는 질문은 서로를 피곤하게 합니다.
질문쪽지는 사절이오니 게시판에 글을 남겨주세요. 그래야 다같이 공유할 수 있으니까요.


profile
깨봉 2008.04.28 17:28

유용한 자료인거 같습니다.

profile
뿡뿡이 2008.05.18 19:30

공부하는데 참고하겠습니다^^; 감사요~

profile
쿠키오 2008.09.12 11:14
좋은정보 감사~
profile
초코파잉 2008.10.10 09:37
좋은 정보 감사합니다..^^
profile
용군 2008.10.17 17:21
좋은 자료 감사 해요~^^
profile
☆☆ 2008.11.21 10:06
좋은자료감사합니다~~
profile
삼제갈 2009.11.13 14:00
좋은 자료 감사합니다. ^^
profile
토마토리눅스 2009.12.16 20:39
왕 초보입니다.
회로구성및 간단한 설명을 부탁드립니다.
profile
그런건가 2010.03.22 21:33
어흑.. 간단한 회로도가 필요합니다..
profile
별별이 2010.06.04 21:21
음...굉장히..기내요ㅎ
profile
달리는찰스 2010.06.15 14:14
주석이 있었으면 더 좋았을텐데ㅡ.ㅜ
좋은 정보 감사합니다ㅋ
profile
아이네이아스 2011.01.09 02:49

좋은 자료 감사합니다..

profile
밥볍 2011.11.07 17:42

좋은 자료 감사해요 ^^

profile
조커-J 2012.07.25 09:54
좋은 자료 감사드립니다~ ^^
search
List of Articles
번호 분류 제목 평점 포인트 판매자 등록일 구매수 조회 수
공지 공공의 목적으로 공유하고자 하는 소프트웨어는 '소프트웨어 자료실'에 업로드를 요청드립니다.
공지 구매후 평점 댓글을 남겨주시면 구매포인트의 20%를 돌려드립니다.
45 자작품 & 회로도 모음 한국의 숫자 [5] 5P 아크마 2007-11-11 0 1917
44 자작품 & 회로도 모음 지옥문이 문을 열었네요. [7] 무료 아크마 2007-11-10 0 2048
» 자작품 & 회로도 모음 8051을 이용해 IR리모콘으로 RC서보모터 제어 [14] 무료 아크마 2007-10-23 0 2615
42 자작품 & 회로도 모음 8051을 이용한 도트매트릭스 [39] 무료 현성짱 2007-10-08 0 2645
41 자작품 & 회로도 모음 xwin player 1.0D Beta 실행프로그램 [3] 무료 아크마 2007-04-20 0 1704
40 자작품 & 회로도 모음 리튬폴리머 배터리 충전 및 사용 시스템 [1] 무료 아크마 2007-08-08 0 1897
39 자작품 & 회로도 모음 G-RGN Creator [rgn 파일 생성기] [6] 무료 아크마 2007-08-08 0 1557
38 자작품 & 회로도 모음 ProjectHelper 1.0 [visual c++ 6 -> visual c++ 2003] [2] 무료 아크마 2007-08-08 0 1307
37 자작품 & 회로도 모음 인터넷 TV 시청 "G-TV Player" v1.32 (installer) [1] 무료 아크마 2007-08-08 0 1443
36 자작품 & 회로도 모음 Microsoft DirectX wrapper 라이브러리[오프소스] 무료 아크마 2007-08-08 0 1406
35 자작품 & 회로도 모음 GAnimaker DIRECTX를 이용한 비트맵,jpeg로부터 2D게임에 필요한 애니메이션 제작 [오픈소스] [1] 무료 아크마 2007-08-08 0 1343
34 자작품 & 회로도 모음 KAffiliate 판권 회사 관리 프로그램 [3] 무료 아크마 2007-04-20 0 1282
33 자작품 & 회로도 모음 애견관리로봇과 리모콘를 위한 응용프로그램 [2] 무료 아크마 2007-08-08 0 1247
32 자작품 & 회로도 모음 애견관리로봇 리모콘 - by 아크마 [1] 무료 아크마 2007-08-08 0 1310
31 자작품 & 회로도 모음 애견관리로봇 개략적인 설명 [3] 무료 아크마 2007-08-08 0 1248
30 자작품 & 회로도 모음 [8051, AVR USB라이터] 나누미 1.2 프로그램 [4] 무료 아크마 2007-04-20 0 3342
29 자작품 & 회로도 모음 나누미 라이터기 회로도와 펌웨어 [1] 무료 아크마 2007-04-20 0 3039
28 자작품 & 회로도 모음 ISP 회로도 [18] 5P 뺘쑝 2007-08-18 2 4250
27 자작품 & 회로도 모음 정전압 레귤레이터(7805)를 이용한 전원회로(리니어 방식) [42] 무료 뺘쑝 2007-08-04 0 13088
26 자작품 & 회로도 모음 포토인터럽트를 이용한 비교기식 간단한 회로도 [13] 무료 보해소주 2007-05-30 0 4976
  • 누구도 자기가 하는 말이 다 뜻이 있어서 하는 것이 아니다. 그럼에도 자기가 뜻하는 바를 모두 말하는 사람은 거의 없다.
    - H.애덤즈
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.