標(biāo)題: 51單片機(jī)尋跡小車全套資料-proteus-PCB [打印本頁]

作者: 紅燒鯉魚    時(shí)間: 2018-12-5 10:29
標(biāo)題: 51單片機(jī)尋跡小車全套資料-proteus-PCB

使用芯片:AT89S52 或者 STC89C52 或AT89S51 STC89C51
晶振:12MHZ
編譯環(huán)境:Keil
作者:zheng


#include <reg52.h>            // 引用標(biāo)準(zhǔn)庫的頭文件
#include <intrins.h>

#define uchar unsigned char
#define uint  unsigned int
//=================電機(jī)驅(qū)動(dòng)=====================
sbit    dianji_r = P3^0;  //右邊電機(jī)控制口,低電平轉(zhuǎn)?
sbit    dianji_l = P3^7;  //左邊電機(jī)控制口,低電平轉(zhuǎn)
//=============循跡感應(yīng)接口======================
sbit    xjmk_r    =    P3^2;// 右邊尋跡模塊檢測口 INT0
sbit    xjmk_l  =    P3^3;// 左邊尋跡模塊檢測口 INT1



void    check_righet();//右邊時(shí)候檢測到黑線測試程序
void    check_left();//左邊時(shí)候檢測到黑線測試程序

void delay_50us(uint t);
void delayms(uint Ms);


uchar r_count;//右邊傳感器檢測到的次數(shù)計(jì)數(shù)單元
uchar l_count;
uint time;
//***********************主程序******************************
main()   
{   
  time=50;


   dianji_r=0;//上電時(shí)右側(cè)電機(jī)運(yùn)行
   dianji_l=0;//上電時(shí)左側(cè)電機(jī)運(yùn)行
   EA=1;
   EX1=1;
   EX0=1;
   IT1=0;
   IT0=0;
xjmk_r=1;//置IO為1,準(zhǔn)備讀取數(shù)據(jù)
   xjmk_l=1;
    _nop_();
   r_count=0;
   l_count=0;
    while(1)
    {
          _nop_();
      //  check_righet();//調(diào)用右邊尋跡檢測傳感器
     //   check_left();//
       if(r_count>=1)
        {
              delayms(time);
              dianji_r=0;
              dianji_l=0;
              r_count=0;
            _nop_();   
        }
        if(l_count>=1)
        {

              delayms(time);
              dianji_r=0;
              dianji_l=0;
              l_count=0;
              _nop_();
         }


    }

}
void init0int() interrupt 2
{
    l_count=5;
    dianji_l=1;
    dianji_r=0;
    if(r_count>0)
    {   EX0=0;
        delayms(20);
        if(time>=20)time-=19;
        EX0=0;
    }
   return;
}

void init1int() interrupt 0
{
    r_count=5;
    dianji_r=1;
    dianji_l=0;
    if(l_count>0)
    { EX1=0;
     delayms(20);
     if(time>=20)time-=19;
     EX1=1;}
    return;

}
//*******************************************************************************
//函數(shù)名稱:
//功能:左邊邊時(shí)候檢測到黑線測試程序
void    check_left()
{
    if(xjmk_l==0)//檢測右邊的傳感器是否感應(yīng)到黑線
        {
              delay_50us(1);//延時(shí),去除機(jī)械振動(dòng)
               _nop_();
              if(xjmk_l==0)//再次檢測
              {
                 delay_50us(1);//延時(shí),去除機(jī)械振動(dòng)
                 if(xjmk_l==0)
                 {  
                    l_count++;
                    xjmk_l=1;
                 }
              }
         }
}
//*******************************************************************************
//函數(shù)名稱:
//功能:右邊時(shí)候檢測到黑線測試程序
void    check_righet()
{
    if(xjmk_r==0)//檢測右邊的傳感器是否感應(yīng)到黑線
        {
              delay_50us(1);//延時(shí),去除機(jī)械振動(dòng)
              if(xjmk_r==0)//再次檢測
              {
                 delay_50us(1);//延時(shí),去除機(jī)械振動(dòng)
                 if(xjmk_r==0)
                 {  
                    r_count++;
                    xjmk_r=1;

                 }
              }
         }
}
//*******************************************************************************
//函數(shù)名稱:void delay_50US(unsigned int t)
//功能: 延時(shí)50*t(us)
void delay_50us(uint t)
{
  uchar j;
  for(;t>0;t--)
  {

    for(j=19;j>0;j--);
  }
}

/*====================================================================
  設(shè)定延時(shí)時(shí)間:x*1ms
====================================================================*/
void delayms(uint Ms)
{
  uint i,TempCyc;
  for(i=0;i<Ms;i++)
  {
    TempCyc =70;
    while(TempCyc--);
  }
}


搜狗截圖18年12月05日1027_1.png (86.24 KB, 下載次數(shù): 19)

搜狗截圖18年12月05日1027_1.png

51單片機(jī)循跡小車資料.rar

1.24 MB, 下載次數(shù): 101, 下載積分: 黑幣 -5


作者: 陳潤源home    時(shí)間: 2018-12-12 09:48
感謝樓主




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1