导和全面的帮助。从一开始给出课题之后的课题分析,告诉我关系本课题的关键要点,使我在设计上有了方向。到之间不断的提供关于单片机的资料,让我可以在有限的时间里,根据自己的课题所需要的内容重点学习相关的知识。同时也感谢那些在设计过程中从各个方面帮助过我的同学和朋友们,因为他们的帮助使得我可以解决相当一部分的困难,学习了更多额外的知识。
通过这次毕业设计,不仅仅在学习上有了新的提高,深刻感受到了将书本上的知识实际运用到生活的难度。同时,因为在毕设中会遇到一些问题,不免会向他人请教,以及一起讨论,这使我也学会了如何与别人合作,以及合作的重要性。
以上就是我对这次毕业设计最粗浅的认识与总结,对于此篇的论文的而不完美之处,我很诚恳的请评阅老师给予指点与纠正。同时也再次感谢毛鹏老师和在毕设期间帮助过我的同学和朋友们。同样,对于论文完成的仓促所导致的疏漏和不妥深表歉意。
附录
附录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;
//无按键按下,延时清零