Advertisement

基于ATMEGA16单片机的寻迹小车程序及原理图

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:ZIP


简介:
本项目设计了一款基于ATMEGA16单片机的寻迹小车,提供了详细的电路原理图和控制程序。该小车能够自动识别线路并沿路径行驶,适用于教育与研究领域。 ```c #include #include #define uchar unsigned char #define uint unsigned int void main() { DDRA = 0X00; DDRB = 0XFF; DDRD |= 0X30; TCCR1A = 0x91; //8位相位修正PWM,频率为244.14Hz TCCR1B = 0x03; //时钟因子64 OCR1A = 250; // 初值占空比100% while(1) { if(PINA == 0xe7) // 加速前进,点亮第4、5灯 { OCR1A = 202; turn(); //居中 } else if (PINA == 0xcf) //速度稍减前进,点亮第5、6灯 { OCR1A = 202; turnL(); //左转-15度 } else if(PINA == 0x9f) //速度再减前进,点亮第6、7灯 { OCR1A = 176; turnLL(); // 左转-30度 } else if (PINA == 0x3f) //速度进一步减小,点亮第7、8灯 { OCR1A = 176; turnLLL(); //左转-45度 } else if(PINA == 0X7f) //速度稍减前进,只亮第8灯 { OCR1A = 176; turnLLL(); // 右转45度 } else if (PINA == 0xf3) //加速前进,点亮第3、4灯 { OCR1A = 202; turnR(); //右转15度 } else if(PINA == 0Xf9) //速度进一步减小,只亮第2、3灯 { OCR1A = 176; turnRR(); // 右转30度 } else if (PINA == 0Xfc) //速度稍减前进,点亮第1、2灯 { OCR1A = 176; turnRRR(); //右转45度 } else if(PINA == 0Xfe) //速度进一步减少,只亮第1灯 { OCR1A = 176; turnRRR(); // 右转45度 } } } void turnLLL() { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0); delay(18); PORTB |= BIT(0); delay(4); } } void turnLL() { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0); delay(18); PORTB |= BIT(0); delay(6); } } void turnL() { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0); delay(18); PORTB |= BIT(0); delay(8); } } void turn() //居中 { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0); delay(18); PORTB |= BIT(0); delay(10); } } void turnR() { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0); delay(18); PORTB |= BIT(0); delay(12); } } void turnRR() { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0);

全部评论 (0)

还没有任何评论哟~
客服
客服
  • ATMEGA16
    优质
    本项目设计了一款基于ATMEGA16单片机的寻迹小车,提供了详细的电路原理图和控制程序。该小车能够自动识别线路并沿路径行驶,适用于教育与研究领域。 ```c #include #include #define uchar unsigned char #define uint unsigned int void main() { DDRA = 0X00; DDRB = 0XFF; DDRD |= 0X30; TCCR1A = 0x91; //8位相位修正PWM,频率为244.14Hz TCCR1B = 0x03; //时钟因子64 OCR1A = 250; // 初值占空比100% while(1) { if(PINA == 0xe7) // 加速前进,点亮第4、5灯 { OCR1A = 202; turn(); //居中 } else if (PINA == 0xcf) //速度稍减前进,点亮第5、6灯 { OCR1A = 202; turnL(); //左转-15度 } else if(PINA == 0x9f) //速度再减前进,点亮第6、7灯 { OCR1A = 176; turnLL(); // 左转-30度 } else if (PINA == 0x3f) //速度进一步减小,点亮第7、8灯 { OCR1A = 176; turnLLL(); //左转-45度 } else if(PINA == 0X7f) //速度稍减前进,只亮第8灯 { OCR1A = 176; turnLLL(); // 右转45度 } else if (PINA == 0xf3) //加速前进,点亮第3、4灯 { OCR1A = 202; turnR(); //右转15度 } else if(PINA == 0Xf9) //速度进一步减小,只亮第2、3灯 { OCR1A = 176; turnRR(); // 右转30度 } else if (PINA == 0Xfc) //速度稍减前进,点亮第1、2灯 { OCR1A = 176; turnRRR(); //右转45度 } else if(PINA == 0Xfe) //速度进一步减少,只亮第1灯 { OCR1A = 176; turnRRR(); // 右转45度 } } } void turnLLL() { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0); delay(18); PORTB |= BIT(0); delay(4); } } void turnLL() { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0); delay(18); PORTB |= BIT(0); delay(6); } } void turnL() { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0); delay(18); PORTB |= BIT(0); delay(8); } } void turn() //居中 { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0); delay(18); PORTB |= BIT(0); delay(10); } } void turnR() { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0); delay(18); PORTB |= BIT(0); delay(12); } } void turnRR() { uchar i; DDRB = 0XFF; PORTB = 0XFF; for(i=0;i<30;i++) { PORTB &= ~BIT(0);
  • 51智能
    优质
    本项目设计并实现了一款基于51单片机控制的寻迹智能小车,详细介绍其工作原理、硬件电路和编程代码,适用于机器人爱好者的参考与学习。 基于51单片机的寻迹智能小车程序原理图非常实用且好用,希望对你有所帮助!
  • MSP430PWM输出
    优质
    本项目介绍了一种基于MSP430单片机的寻迹小车PWM输出程序设计方法。通过优化控制算法,实现了对直流电机的有效驱动和精准速度调节。 MSP430单片机的寻迹小车程序可以输出两路PWM波。
  • 电路设计资料(含文件)
    优质
    本项目提供了一套详细的基于单片机的寻迹小车设计方案,包括完整的电路原理图及编程代码。此资源适用于学习嵌入式系统与自动控制技术的学生及爱好者。 基于单片机寻迹小车的电路设计资料包括原理图及程序文件。
  • 51
    优质
    《小车寻迹51单片机编程》是一本专注于教授如何使用51单片机进行智能小车路径识别与追踪技术学习的手册,适合电子制作爱好者和技术初学者阅读。 51单片机寻迹小车程序 ```c #include #include unsigned int thigh_zuo; unsigned int thigh_you; unsigned int thigh_zuo1; unsigned int thigh_you1; unsigned int count = 0; sbit en0 = P1^2; sbit en1 = P1^3; sbit fan0 = P1^4; sbit fan1 = P1^5; void timer_set() { TMOD = 0x99; // 设置定时器模式 TH0 = TL0 = TH1 = TL1 = 0; // 初始化计数初值为零 TR0 = TR1 = TR2 = 1; // 启动定时器T0, T1和T2 EX0 = EX1 = ET2 = EA = 1; // 开启外部中断和全局中断使能 IT0 = IT1 = 1; // 设置外部中断为边沿触发方式 RCAP2H = TH2 = 255; RCAP2L = TL2 = 0; } void ex0_int() interrupt 0 { thigh_zuo = TH0 * 256 + TL0; // 计算计数值 if (thigh_zuo > 500) en0 = fan0 = !en0; else fan0 = !fan0; TH0 = TL0 = 0; // 清零定时器T1的计数初值 } void ex1_int() interrupt 2 { thigh_you = TH1 * 256 + TL1; // 计算计数值 if (thigh_you > 500) en1 = fan1 = !en1; else fan1 = !fan1; TH1 = TL1 = 0; // 清零定时器T2的计数初值 } void time2_int() interrupt 5 { count++; if (count > 520) { en0 = en1 = 0; count = 0; thigh_zuo1 = thigh_zuo; // 记录上一次中断的计数值 thigh_you1 = thigh_you; } if (count > thigh_zuo1) en0 = !en0; if (count > thigh_you1) en1 = !en1; } void main() { timer_set(); while(1); } ``` 此程序实现了一个基于51单片机的寻迹小车,通过红外传感器检测地面路径,并控制电机驱动轮子前进或后退。定时器用于计时中断处理和数据采集。
  • 51智能
    优质
    本项目设计了一款基于51单片机控制的智能寻迹小车,能够自动识别黑线并沿预定轨道行驶。通过编程实现了精确路径追踪功能,适用于教育、娱乐及科研领域。 基于51单片机的自动寻迹小车是一款利用51单片机实现路径追踪功能的小型车辆。这款小车能够自主识别并沿特定路线行驶,适用于教学、科研及娱乐等多种场景。通过编程控制,可以调整其性能参数以适应不同的环境需求和任务要求。
  • .rar_循___报告_电路
    优质
    本项目包含一款自行设计与制作的循迹小车资料包,内含车辆电路图、核心寻迹算法源代码及完整的实验报告。 循迹小车主程序包括文字报告、电路图和流程图。这些文档详细描述了循迹小车的设计与实现过程,并提供了详细的硬件连接方式以及软件操作步骤。通过阅读这些材料,用户可以全面了解如何构建并调试一台能够自动跟随特定路线行驶的智能小车系统。
  • ATmega16-16PC超声波测距避障PDF.zip
    优质
    本资源提供了一款基于ATmega16-16PC单片机的超声波测距避障小车的相关代码和设计文档,包括源程序和PDF格式的电路原理图。适合电子工程爱好者和技术学习者研究使用。 基于ATmega16-16PC单片机的超声波测距避障小车源程序及PDF原理图可供学习参考。 ```c int main() { init(); _delay_ms(100); while (1) { if (is_balk()) { while (is_balk()) { motor_rotate(); } } else { motor_forward(); } } return 0; } ```