(完整版)基于单片机的遥控小车的设计毕业设计 下载本文

内容发布更新时间 : 2024/5/19 21:31:24星期一 下面是文章的全部内容请认真阅读。

导和全面的帮助。从一开始给出课题之后的课题分析,告诉我关系本课题的关键要点,使我在设计上有了方向。到之间不断的提供关于单片机的资料,让我可以在有限的时间里,根据自己的课题所需要的内容重点学习相关的知识。同时也感谢那些在设计过程中从各个方面帮助过我的同学和朋友们,因为他们的帮助使得我可以解决相当一部分的困难,学习了更多额外的知识。

通过这次毕业设计,不仅仅在学习上有了新的提高,深刻感受到了将书本上的知识实际运用到生活的难度。同时,因为在毕设中会遇到一些问题,不免会向他人请教,以及一起讨论,这使我也学会了如何与别人合作,以及合作的重要性。

以上就是我对这次毕业设计最粗浅的认识与总结,对于此篇的论文的而不完美之处,我很诚恳的请评阅老师给予指点与纠正。同时也再次感谢毛鹏老师和在毕设期间帮助过我的同学和朋友们。同样,对于论文完成的仓促所导致的疏漏和不妥深表歉意。

附录

附录1:遥控小车的程序与程序注释 /*

功能: 采用315MHz无线控制,PT2262,与PT2272收发系统。通过无线控

制,

使小车达到三级变速,并且实现左右转动,达到能够跟随循迹小车

硬件: 车模

*/

#include\

#define uchar unsigned char #define uint unsigned int

#define GPIO_Key P2 //按键端口 sbit Steer_PWM = P1^0;

//定义舵机输出端口

sbit Motor_PWM = P1^1; //定义电机输出端口 //定义变量

uchar Steer_Ctrl; //舵机控制变量 uchar Key_Value;

uint Key_Count,Time0,Motor_Ctrl; //函数声明

void KeyScan(void); void Time_config(void); void DelayNms(uchar Nms); void main() { }

void Time_config() {

TMOD = 0x01;

//定时器0工作方式1

Time_config(); EA = 1;

//定时器初始化

//使能全局变量

//舵机的初始值,中间位置,(值变小往右偏,大左)

Steer_Ctrl =24;

Motor_Ctrl = 0; //电机的初始值 电机转速初始值为0 while(1) { }

KeyScan(); //键盘扫描函数,扫描无线接收端的值

}

TL0 = 0xCE; TH0 = 0xFF;

//设置定时初值 50us //设置定时初值

ET0 = 1; //使能定时器0

TR0 = 1; //开启定时器0

void Time0_Int() interrupt 1 { }

void KeyScan()

TR0 = 0; TL0 = 0xCE; TH0 = 0xFF; TR0 = 1; Time0++;

//定时器中断程序 中断向量口为1

//设置定时初值 //设置定时初值

50us

//定时器中断加1

//500为PWM波周期,500*50us = 25ms

if(Time0 > 500)

Time0 = 0;

if(Time0 < Steer_Ctrl) //舵机占空比=(Steer_Ctrl/Time0)*100% else

Steer_PWM = 0;

//电机占空比=(Motor_Ctrl/Time0)*100%

Steer_PWM = 1;

if(Time0 < Motor_Ctrl) else

Motor_PWM = 0; Motor_PWM = 1;

//键值扫描程序,扫描无线输入状态

{ if(GPIO_Key != 0xF0) //检查是否有按键按下 { Key_Value = GPIO_Key; //将键值存储下来 Key_Count++;

//用作延时

if(Key_Value != 0xF0) //键值发生变化 {

switch(Key_Value) //键值选择

{ case 0xF1: Motor_Ctrl = 0;

teer_Ctrl = 24;

break; case 0xF2: Motor_Ctrl = 500; break; case 0xF4: Motor_Ctrl = 350; break; case 0xF8: Motor_Ctrl = 200; break; case 0xF9: Motor_Ctrl = 200;

Steer_Ctrl = 24;

break; case 0xFA: if(Key_Count % 50 == 0)

Steer_Ctrl -= 1;

break; case 0xFC: if(Key_Count % 50 == 0)

Steer_Ctrl += 1; break;

default:

break; }

if(Steer_Ctrl >29) //舵机保护

//停中 //3档 //2档 //1档

//1档中//右转

//左转

} else Steer_Ctrl = 29;

else if(Steer_Ctrl < 19)

Steer_Ctrl = 19;

{ }

}

}

Key_Count = 0;

//无按键按下,延时清零