智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰)
我很大的启发。“人可以波折,但必须站起来”,两次高考失利导致吴老师颓废不已、混沌度日,师范毕业后被分配到老家的乡村中学教书,极度失意。在教书7年后吴老师走出雾霭,决定考研,2年后考上研究生,然后研究生提前毕业,考上东北大学博士研究生,继而至烟大教学,在烟大教学、科研成果斐然。这绝对是发生在我们身边的现实版励志故事。吴老师最后给了我们一些建议:年轻人要有理想,有抱负,有求知欲,善于归纳,勤于思辨,面对现实,在应试中提高学习能力,适应社会,努力实现自身抱负和价值。
最后一个讲座请来了东方电子工程部门出身的刘总。刘总的讲座实用性非常强。首先以东方电子给企业做的几个系统为例给我们介绍了工业控制系统。刘总从底层讲起、按层次依次将各个元件进行介绍,让我们实实在在见识到了控制网络是怎么样由一个个部件组成起来的。刘总给了我们一种整体的、全局的理念,将来进企业或者做研发你非常可能只是从事其中很小的一个环节,但你必须有整体意识,善于分析,把握全局,这样才能真真正正将自己的工作完成到优秀并且脱颖而出。作为招聘的领导,刘总给我们提了一些要求和建议,一定要善于总结、见多识广,不能仅仅知道课本上的一些知识,课本上的知识很可能是过时的、小众的,而你必须与时俱进,统揽全局。
十、实习总结
这是我第一次做专业方面的比较大型的设计,比较幸运的我加
入了一个相当强悍的队伍,然后完成了一个感觉还比较成功的作品,
26
智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰)
所学的知识也得到了相当多的应用。从大一的C语言、大二的微机原理、单片机、大三的嵌入式中关于定时/计数器、I/O口、串/并行通讯、中断等等各模块的介绍,大二模拟电子技术到这学期过程控制课程刚学的PID算法,都得到了应用,也相当于将所学知识进行了一次小小的整合和综合性应用吧。看我们的自己小车功能越来越多,跑得越来越流畅,真真切切的感觉到什么叫“知识就是力量”。
首先感谢老师的指导和支持,给我们这次实现自己想法的机会,并给我们提供了实验室和必要的实验条件。感谢创新实验室里的同学们以及我们的特别技术顾问--来自计092-3的梁陈同学,帮我们找到了带有舵机的小车底座,帮我们顺手焊了一个7805稳压电路,给我们提供电池盒、杜邦线以及各种小器件--多谢你的支持!最后一定要提的是我们精诚合作齐心协力的队伍,大家群策群力完成主程序后,最后时刻由于各种原因各种缺席,居然是不同的人员组合完成了不同的纠错、调试任务,不同的组合将程序从90%、95%推进到99.9%以及最后的100%,大家一起见证了最后小车的流畅运行。感谢我强大的队员们:王威--我们队伍当之无愧的核心,将我们各自的模块组合起来以及完成了最后繁琐的两种控制模式的结合;夏青--经常抬头望天进行云计算的才女,几乎分析出了所有出现故障时的前因后果,不得不佩服你的专业基础;峰哥--张飞也能绣花,粗犷的外表下却有着一双灵巧的双手,细腻程度令人惊叹! 这次实习因为有你们而格外美丽!O(∩_∩)O~
27
智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰)
附:系统程序:
//******************************
/*接通电源后,按下开机键,单片机进入模式选择状态,按左三角键进入(超声波)物体追踪模式,小车可以与
物体始终保持设定的距离,按右三角键进入红外遥控模式,可以遥控小车前进、后退、左转、右转、剎停
在两个模式下按关机键,可以终止当前模式,重新选择功能,此时按关机键,直接关机,必须按开机键才能重新选择*/
//1111**************************IO//系统IO分配
//p1_1、p1-2,超声波模块发送和接受信号线tx rx //p1_3,pwm输出线
//p1_0、p1_7,电机正反转的标志位zheng fan //p0数码管数据口 //p2_0/1/2/3数码管驱动
//p0_0、p0_1电机驱动正反转控制
//p0_1、p0_2转向电机(舵机)正反转控制位 //p1_4剎停标志位
//p1_5、p1_6左右方向标志位,红外功能开关标志位 //2222****************************#include
//AT89X51.H中除了IO口 和中断的定义,其余的都与reg52.h的定义重合。
//3333****************************
公
共
变
量
区
**************************************************
//下面是关于红外遥控模块的公共变量区 unsigned char f; //找到起始码开始取值的标志
#define Imax 14000 //此处为晶振为11.0592时的取值, #define Imin 8000 // #define Inum2 700
用来识别起始码
#define Inum1 1450 //周期取值范围,代表0 和1
//系统头文件
//IO口、定时器、中断、串口等相关特殊寄存器头文件 //自定义功能IO头文件
//自编stc12csa60s的pwm模块头文件
头
文
件
区
***************************************************
#include
分
配
详
细
说
明
**********************************************
系
统
功
能
说
明
************************************************
28
智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰)
#define Inum3 3000 //不同的周期所对应的计数值,代表不同的信息
unsigned char Im[4]={0x00,0x00,0x00,0x00}; //起始码、用户码、校验码的存储数组 unsigned long m,Tc; //位计数、信号周期计数值 unsigned char IrOK; //读码有效标志位
//下面是关于超声波模块的公共数据
//设定值为15厘米
#define SETVALUE 15 #define P 15 #define I 0.5 #define D 10
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管的0-9译码值
long S=0; //获取距离值(当前值) int OFFSET=0; //偏差
int pwm_kong=0;//PID运算后的占空比控制因子0-255 int SUM_OFFSET=0; //上一次的偏差 int err[10]; int I_OFFSET=0; int qian_sum=0; int hou_sum=0; int D_OFFSET=0;
unsigned int time=0; //从发送到接受所经历的计数值 unsigned int ge=0; unsigned int shi=0; unsigned int bai=0; unsigned int qian=0; int flag_chao=0;
int flag_hong=0;//进入两个模块的标志位 int flag=0; //红外模式下定义的系统总的开关
//4444*****************************函数声明区(中断服务子程序不参与声明(外部1))**************************************************
//下面是超声波物体追踪模块的相关函数声明 void display();
//数码管显示函数
//微秒级延时函数
void delayus(unsigned int us);
//距离值的个位(厘米计)一下以此类推
void delay(unsigned char i); //延时函数
void StartModule(void) ; //通过p1-1发送一个10us以上的脉冲 void Count() ;//将计数值转化成距离值 void pwminit() ;
//PWM模块初始化函数
void PWM0_set (unsigned int a); //占空比调节函数 void chaoshengbo();//物体追踪模式下的控制函数
//下面是红外遥控模块的相关函数声明
//void delay(unsigned i); //void pwminit();
//延时函数 (公用)
//PWM模块初始化函数
(公用)
29
智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰)
void hongwai();
//红外遥控模式的控制函数
主
函
数
区
//5555*******************************
main() { ****************************************************
//两个模块均要用到定时器(超声波用来计算距离值,红外用来根据信号周期确定信息类型), //为了防止干扰,用两个定时器模块,前1后0,都用到了PWM模块
//且要红外控制 以决定进入物体追踪还是红外遥控,所以,需要公共定义的变量如下: //***********************两个模块公共需要
// pwminit(); //PWM初始化
75%占空比
TMOD=0x11;
TH0=0;TL0=0; //定时器0和1为方式1,16位计数 ,计数值清零
TR0=1; //红外模块需要马上开启定时器工作
TH1=0;TL1=0;//定时器1计数值清零等待超声波模块使用
//*************************需要从红外控制进入两个模块,定义如下:
EA=1;
//开启所有中断
IT1=1;
//外部中断为下降沿触发 EX1=1; //开启外部中断
红外控制依赖于外部中断
m=0;
f=0;
//红外控制标志位清零 in1=0; in2=0;
//初始化使电机停转,防止开机开车
in3=0;
in4=0; //防止开机乱摆
//修改 flag_chao=0; flag_hong=0; //********************************主干程序如下:
while(1)
{ if(IrOK==1) //红外取值有效,开始判断
{
if(Im[2]==0x09)
//开机,p1_5、6全亮
{p1_5=0; p1_6=0; flag=1; //修改
IrOK=0; }
30