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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3088|回復: 1
收起左側(cè)

51循跡小車程序

[復制鏈接]
ID:255961 發(fā)表于 2017-12-1 21:43 | 顯示全部樓層 |閱讀模式
/****************************************************************
************
硬件連接
P1_4接驅(qū)動模塊ENA使能端輸入PWM信號調(diào)節(jié)速度
P1_5接驅(qū)動模塊ENB使能端輸入PWM信號調(diào)節(jié)速度

P1_0 P1_1接IN1  IN2  當 P1_0=1,P1_1=0; 時左電機正轉(zhuǎn)  驅(qū)動藍色輸出
端OUT1 OUT2接左電機  
P1_0 P1_1接IN1  IN2  當 P1_0=0,P1_1=1; 時左電機反轉(zhuǎn)                 
P1_2 P1_3接IN3  IN4  當 P1_2=1,P1_3=0; 時右電機正轉(zhuǎn)  驅(qū)動藍色輸出
端OUT3 OUT4接右電機
P1_2 P1_3接IN3  IN4  當 P1_2=0,P1_3=1; 時右電機反轉(zhuǎn)

P1_0接四路尋跡模塊接口第一路輸出信號即中控板上面標記為OUT1
P1_1接四路尋跡模塊接口第二路輸出信號即中控板上面標記為OUT2  
P1_2接四路尋跡模塊接口第三路輸出信號即中控板上面標記為OUT3
P1_3接四路尋跡模塊接口第四路輸出信號即中控板上面標記為OUT4
八路尋跡傳感器有信號(白線為0  沒有信號黑線為1

*****************************************************************
***********/
#include<AT89x51.H>            
#define Right_moto_pwm    P1_4    //接驅(qū)動模塊ENA使能端輸入PWM
信號調(diào)節(jié)速度
#define Left_moto_pwm     P1_5    //接驅(qū)動模塊ENB使能端輸入PWM   
信號調(diào)節(jié)速度
#define Left_1_led        P2_0    //四路尋跡模塊接口第一路
#define Left_2_led        P2_1    //四路尋跡模塊接口第二路
#define Right_1_led       P2_2   //四路尋跡模塊接口第三路
#define Right_2_led       P2_3   //四路尋跡模塊接口第四路
#define Left_moto_go      {P1_0=0,P1_1=1;} //左電機前進
#define Left_moto_back    {P1_0=1,P1_1=0;} //左電機后退     
#define Left_moto_stop    {P1_0=1,P1_1=1;} //左電機停轉(zhuǎn)               
#define Right_moto_go     {P1_2=0,P1_3=1;} //右電機前轉(zhuǎn) #define Right_moto_back   {P1_2=1,P1_3=0;} //右電機后退
#define Right_moto_stop   {P1_2=1,P1_3=1;} //右電機停轉(zhuǎn)
#define uchar unsigned char
#define uint unsigned int
uchar pwm_val_left  =0;
uchar push_val_left =0; //左電機占空比N/10
uchar pwm_val_right =0;
uchar push_val_right=0; //右電機占空比N/10
bit Right_moto_stp=1;
bit Left_moto_stp =1;
/****************************************************************
********/
void  run(void) //前進函數(shù)
{
push_val_left  =13; //PWM 調(diào)節(jié)參數(shù)1-20   1為最慢20是最快  改這
個值可以改變其速度
push_val_right =15; //PWM 調(diào)節(jié)參數(shù)1-20   1為最慢20是最快 改
這個值可以改變其速度
Left_moto_go ;  //左電機前進
Right_moto_go ;     //右電機前進
}

/****************************************************************
********/
void  left(void) //左轉(zhuǎn)函數(shù)
{
  push_val_left  =8;  
push_val_right =9;  
Right_moto_go;  //右電機繼續(xù)
Left_moto_stop;   //左電機停走
}      


/************************************************************************/
void  right(void) //右轉(zhuǎn)函數(shù)
{
push_val_left  =8;   
push_val_right =9;   
Right_moto_stop;  //右電機停走
Left_moto_go;  //左電機繼續(xù)
}
void Delayms(uint x)  
{  
uchar i;  
  while(x--)for(i=0;i<120;i++);  
}  
void  stop(void)
{
  Right_moto_stop;  //右電機停走  
  Left_moto_stop;   //左電機停走
  Delayms(3000);
  run();
  Delayms(100);   
}  


/*************************PWM調(diào) 制 電 機 轉(zhuǎn) 速
********************************/
void pwm_out_left_moto(void)  //左電機調(diào)速,調(diào)節(jié)push_val_left的值改變
電機轉(zhuǎn)速,占空比     
{   
if(Left_moto_stp)
{
  if(pwm_val_left<=push_val_left)
   Left_moto_pwm=1;  
  else  
   Left_moto_pwm=0;    if(pwm_val_left>=20)
    pwm_val_left=0;
}
else   
  Left_moto_pwm=0;
}  
void pwm_out_right_moto(void) //右電機調(diào)速,調(diào)節(jié)push_val_left的值改變
電機轉(zhuǎn)速,占空比
{  
if(Right_moto_stp)
{  
  if(pwm_val_right<=push_val_right)
   Right_moto_pwm=1;  
  else
   Right_moto_pwm=0;
   if(pwm_val_right>=20)
    pwm_val_right=0;
}
else     
  Right_moto_pwm=0;
}
/***************************************************/   
void xunji()
{
switch(P2&0x0f)
{
  case 0x00:      // 全部沒有壓線直走
   run();  break;   
  case 0x01:      // 右壓線左轉(zhuǎn)
   left(); break;   
  case 0x02:      // 右壓線左轉(zhuǎn)
      left(); break;   
  case 0x04:      // 左壓線轉(zhuǎn)右  
   right(); break;           case 0x08:      // 左壓線右轉(zhuǎn)
   right();break;  
  case 0x0f:
   stop();break;        
  default:  
   run(); break;

   }
}

/***********TIMER0中斷服務子函數(shù)產(chǎn)生PWM信號**********/
void timer0()interrupt 1   using 2
{
TH0=0XF8;   //2Ms定時
TL0=0X30;      
pwm_val_left++;
pwm_val_right++;
pwm_out_left_moto();
pwm_out_right_moto();
}

/***************************************************/
void main(void)
{
TMOD=0X01;
TH0= 0XF8;    //2ms定時
  TL0= 0X30;
TR0= 1;
ET0= 1;
EA = 1;
while(1)       /*無限循環(huán)*/
{  

   xunji();   }
}
回復

使用道具 舉報

ID:287974 發(fā)表于 2018-3-30 13:29 | 顯示全部樓層
最后主函數(shù)的循跡函數(shù)是啥
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲网站免费看 | 天天插日日操 | 亚洲精品1区 | 久久国产精品亚洲 | 看片国产| 日韩欧美视频免费在线观看 | 综合在线视频 | 欧美色性| 日韩免费一区 | 欧美日韩精品一区 | 久久性色| 日韩专区中文字幕 | 亚洲精品字幕 | 欧美黄视频 | 国产高清在线观看 | 国产黄色大片 | 国产精品片 | 国产精品国产亚洲精品看不卡15 | 日韩精品视频在线观看一区二区三区 | 一区二区三区四区不卡视频 | 成人国产网站 | 久久精品 | 国产精品久久久久无码av | 成人精品在线观看 | 日韩喷潮| 国产一级片免费看 | 丁香五月网久久综合 | 亚洲一区自拍 | 免费观看黄 | 精品欧美一区二区三区久久久 | 日韩欧美中文在线 | 九九国产在线观看 | 中文在线视频观看 | 亚洲一区中文字幕在线观看 | 一区二区三区亚洲 | 国产精品久久久久一区二区三区 | 国产一区 | 网络毛片| 99在线精品视频 | 一级黄在线观看 | 一本一道久久a久久精品蜜桃 |