⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xuanya._c

📁 AVR单片机应用开发指南及实例,包含许多实例,挺不错
💻 _C
字号:
/************功能介绍************************/
            广州双龙电子
             WWW.SL.COM.CN
   Chip type       :  ATMEGA16   
   Clock frequency :  8MHz
/********************************************

        自走车,机器人向前方行走,实现自动避悬崖障碍
        PB2声控启动
	前方碰到障碍,机器人后退,左转,前进 
	左方碰到障碍,机器人后退,右转,前进
	右方碰到障碍,机器人后退,左转,前进 
	前方碰到悬涯,机器人后退,左转,前进 
	左方碰到悬涯,机器人后退,右转,前进
	右方碰到悬涯,机器人后退,左转,前进    
	左侧和右侧同时碰到悬涯,机器人停止待命,同时PA口的LED流水灯显示,
	  电机驱动信号                       led灯指示电机状态 
  PD = 0xA0;//前行    //1010 0000//P0 = 0xC3;//1100,0011
 PD = 0x60;//快速左转//0110 0000//P0 = 0x33;//0011,0011
 PD = 0x20;//慢速左转//0010 0000//P0 = 0xF3;//1111,0011
 PD = 0x90;//快速右转//1001 0000//P0 = 0xCC;//1100,1100
 PD = 0x80;//慢速右转//1000 0000//P0 = 0xCF;//1100,1111
 PD = 0x50;//后退    //0101 0000//P0 = 0x3C;//0011,1100

********************************************/
#include <iom16v.h>
#include <macros.h>
#define xuanya_delayms  300
#include <diy0206.c>

 
unsigned char pa,pb,pc,pd;

void xuanya_car(void)
{
 port_init();         //PA,PB,PC,PD 初始化
 
 mic_startup();       //等待声控启动
 
 while(1)
   {//左(pc7)  中(pc6)  右(pc5)
    
	switch(PINB&0x0b)
       {
	   case 0x09:forward();delay_ms(touch_time); turn_left();delay_ms(touch_time);break; 
      // 0b 0000,1001  尾部开关接触 ,前行,左转

       case 0x0a:backward();delay_ms(touch_time);turn_left();delay_ms(touch_time); break;       
	  //右侧开关接触 ,后退,左转

	   case 0x03:backward();delay_ms(touch_time);turn_left();delay_ms(touch_time);break;       
	  //左侧开关接触,后退,左转

	   case 0x02:stop();delay_ms(touch_time*4); break;    
	   // 0b 0000,0010  两侧开关同时接触,停止运动,熄灭指示灯  
	   }
    pc = PINC & 0xE0;
    if(pc == 0x40)
	  {//后退//左转
	   backward();//后退
	   delay_ms(xuanya_delayms);
	   turn_left();//左转
	   delay_ms(xuanya_delayms/2);
	  }
	if(pc == 0x80)
	  {//后退//左转
	   backward();//后退
	   delay_ms(xuanya_delayms);
	   turn_left();//左转
	   delay_ms(xuanya_delayms/2);
	  }
	if(pc == 0x20)
	  {//后退//左转
	   backward();//后退
	   delay_ms(xuanya_delayms);
	   turn_left();//左转
	   delay_ms(xuanya_delayms/2);
	  }
	if(pc == 0xc0)
	  {//后退//左转
	   backward();//后退
	   delay_ms(xuanya_delayms);
	   turn_left();//左转
	   delay_ms(xuanya_delayms/2);
	  }
	if(pc == 0x60)
	  {//后退//左转
	   backward();//后退
	   delay_ms(xuanya_delayms);
	   turn_left();//左转
	   delay_ms(xuanya_delayms/2);
	  }
	if(pc == 0xE0)
	  {
       //刹车 //led灯为流水灯
       stop();
       PORTA = 0x3C;
       delay_ms(xuanya_delayms);
	   PORTA = 0xC3;
       delay_ms(xuanya_delayms);
	  } 
	else
	  {
	    forward();//前行
	  }
   }
}

void main()
{
 xuanya_car();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -