找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1736|回復(fù): 0
收起左側(cè)

位置控制程序

[復(fù)制鏈接]
ID:147079 發(fā)表于 2016-11-9 18:18 | 顯示全部樓層 |閱讀模式
//接線:主板的VCC +12V GND分別接位置對(duì)象的+5V +V GND;
//主板中插上位置對(duì)象控制板,信號(hào)接口接對(duì)象的信號(hào)接口,CLK_mcu,K1,K2分別接CPU的P14,P15,P16;
// JD1接到MCU的P1口 獨(dú)立鍵盤的KEY接口接到MCU的P1口 短路帽打在右方。
// KEY0- 右運(yùn)動(dòng)0.25MM; KEY1- 左運(yùn)動(dòng)0.25MM;
// KEY2- 右運(yùn)動(dòng)1cm; KEY3- 左運(yùn)動(dòng)1cm;
// KEY4- 右運(yùn)動(dòng)5cm; KEY5- 左運(yùn)動(dòng)5cm;
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

sbit en=P1^0;                  // 定義P1.0口
sbit rst=P1^1;                 // 定義P1.1口
sbit ccw=P1^2;                 // 定義P1.2口
sbit hf=P1^3;                  // 定義P1.3口
sbit clk=P1^4;                 // 定義P1.4口
sbit k1=P1^5;                  // 定義P1.5口
sbit k2=P1^6;                  // 定義P1.6口


void ShortDelay(void)
{ uchar x,y;
  for(x=0;x<5;x++)
     for(y=0;y<125;y++)
              _nop_();
  return;
}


void outclk(uint a)
{  uint i,j;

while(a--)
    { en=1;                  // 定義P1.0口
      rst=1;                 // 定義P1.1口
      if((k1&k2)!=0)         // K1,K2限位置判斷
        {clk=1;
         for(i=150;i>0;i--)           //200
         for(j=150;j>0;j--);           //200
         clk=0;  
        }
      else {rst=1;en=0;}  
    }   

}

uchar  key(void)
{uchar key_num;

   if( ( P2 & 0x3f) != 0x3f )        //判斷按鍵
   {
       ShortDelay();                //消除抖動(dòng)
       if( ( P2 & 0x3f ) != 0x3f )
           {

          switch ( P2 & 0x3f )             //將按鍵碼轉(zhuǎn)換成鍵值
          {  
             case  0x3e: return  key_num=01;  
             case  0x3d: return  key_num=02;
             case  0x3b: return  key_num=03;
             case  0x37: return  key_num=04;
             case  0x2f: return  key_num=05;
             case  0x1f: return  key_num=06;
             default :   return  key_num=00;
          }
           }
          
   }
   return key_num;
}

  char code dx516[3] _at_ 0x003b;  
void main(void)
{ uchar b;

while(1)
{

   b= key();
   switch(b)
      {                //4步走1CM設(shè)定走5Cm 半應(yīng)該是200的為了調(diào)整誤差所以少4步 (10CM為多8步)
        case 00:rst=1;break;//0
        case 01:ccw=1; outclk(1);break;//1    右運(yùn)動(dòng)1步
        case 02:ccw=0; outclk(1);break;//2    左運(yùn)動(dòng)1步
        case 03:ccw=1; outclk(40);break;//3          右運(yùn)動(dòng)1CM
        case 04:ccw=0; outclk(40);break;//4   左運(yùn)動(dòng)1CM
        case 05:ccw=1; outclk(196);break;//5   右運(yùn)動(dòng)5CM
        case 06:ccw=0; outclk(196);break;//6  左運(yùn)動(dòng)5CM
        default:break;
          }
}
}


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表