中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

单片机论坛

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 单片机论坛 → 浏览主题: 关于AVR单片机的问题6
发表新帖 回复该主题
回帖:0个,阅读:424 [上一页] [1] [下一页]
* 帖子主题:

关于AVR单片机的问题6

分享到
970
wangxd5429
文章数:41
年度积分:50
历史总积分:970
注册时间:2005/1/19
发站内信
发表于:2015/2/4 10:02:09
#0楼
各位高手,小弟正在基于AVR开发一款智能车,实现舵机超声波测距兼避障功能。遇到了一个问题:舵机只是单方向旋转,转动过程断断续续。请教其中的原因。谢谢大家。部分代码如下:
   while(1)
   {
   delay_nus (200);    

   start_SB();              
       if (CSB_data_lcd>400)
       {
         LCD_write_string(7,1,"Err!");  
       }
       else
       {
           ge =(CSB_data_lcd%100%10)+48;
           shi =(CSB_data_lcd%100/10)+48;
           bai =(CSB_data_lcd%1000/100)+48;
           qian =(CSB_data_lcd/1000)+48;
       
       LCD_write_char(7,1,qian);
       LCD_write_char(8,1,bai);
       LCD_write_char(9,1,shi);
       LCD_write_char(10,1,ge);
       LCD_write_string(12,1,"CM");

}

   if(CSB_data_lcd<20)
   {
       stop;
       delay_nms(10);
       k=1;
   }
   
if(k == 1)
{
if(s_1<1)
{
DUTY1 = 45;
S_L=CSB_data_lcd;
}
else if(s_1>=1&&s_1<2)
{
DUTY1 = 170;
S_R=CSB_data_lcd;
z=1;
}
else
{
DUTY1 = 110;
if(S_R>=15&&S_L<=15&&CSB_data_lcd<20)
{
left;
delay_nms(40);
stop;
}
else if(S_R<=15&&S_L>=15&&CSB_data_lcd<20)
{
right;
delay_nms(40);
stop;
}
else if(S_R<=15&&S_L<=15&&CSB_data_lcd<25&&z==1)
{
back;
delay_nms(200);
stop;
z=0;
}
else if(S_R>=15&&S_L>=15&&CSB_data_lcd<20)
{
right;
delay_nms(40);
stop;
}
else
{
k=0;
}
}
}
if(k==0)
{
   forward;
z=0;
}
if(s_1>2)
{
s_1 = 0;
ms_20 = 0;
}
}
}

#pragma interrupt_handler timer1_ovf_isr:9 //timer0 overflow
void timer1_ovf_isr(void)
{
  TCNT1H = 0xff;
TCNT1L = 0xF6;

t++;
 
if(t <= DUTY1)
  {

   PORTA |= (1<<PA0);
}
else
{
   PORTA &= ~(1<<PA0);
}

if(t >= 2000)
{
ms_20++;
t=0;
}

if(ms_20==50)
{
s_1++;
  ms_20=0;
}

}
5分悬赏
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

31.2002