<>任务书 年 季学期 学 生 姓 名 学 号
专 业 方 向 班 级 题 目 名 称 智能小车系统设计2 一、设计内容及技术要求: (一)、任务描述 利用《智能小车系统设计2》所提供部件(综合训练目前共有3种智能小车模型),组装小车模型,编写检测、控制程序,实现以单片机为控制系统核心的智能小车系统设计。 (二)、控制任务和要求 基本任务: 1.完成小车的组装工作 2.小车可完成前进、后退、左转、右转等动作,并且可以正确显示当前的速度及行进位移 3.小车具有循迹(自己设计跑道)及避障功能 4.三周设计任务完成后,不必拆分小车,将小车归还老师并如实汇报功能部件运转情况,便于老师及时维护,为下一组同学的设计做好准备 进阶任务: 1.实现舵机转动下的超声波壁障功能,并且可以正确显示前方物体的距离 2.与按键功能配合,正确有序显示小车位移、速度及与前方障碍物距离 3.小车具有无线遥控功能 4.与其它组的小车模型配合可以完成交替领跑任务 二、课程设计总结报告要求: 1.完整的设计任务书: 封面(设计题目、指导教师、专业班级、姓名、学号、时间); 摘要及关键词(3~5):设计总体概述(采用何种硬件,利用何种方法,设计何种东西,实现了何种功能) 目录(按目录格式书写,页码要标清) 第一章 绪言 (本设计的内容与实现的基本原理,设计的特点及可以最终可以实现的功能,可以达到的性能指标) 第二章 方案论证(对所提供的硬件理解并画出系统结构图,为实现该任务所采取软件设计思路及核心算法) 第三章 硬件设计(按照结构框图对各功能部分进行分别介绍,如系统CPU部分、数据采集部分、程序控制部分、人机接口部分等) 第四章 软件设计(整体设计思路,各独立程序功能、原理介绍包括流程图,如主程序、各子程序及中断服务程序) 第五章 设计总结(对整个设计过程的总结、体会,还包括设计中遇到的问题及解决的办法,以及想要实现却未能完成的功能) 参考文献:著作格式:作者.书名.版次.出版地:出版者,出版年; 期刊格式:作者.文章名.期刊名,年,卷(期):起止页 注:字数10000字左右,不得抄袭和雷同,使用学生作业纸(16开) 2.手绘硬件连接2#图一张、手绘软件流程2#图一张。 三、设计进度: 第一周:熟悉掌握系统要求,完成硬件设计、调试。 第二周:完成软件设计,用仿真器完成软、硬件联调,最终实现单片机在目标系统中的 合理运行 第三周:完善设计,完成说明书编写,答辩。
指导教师签字: 附录: 电信学院课程设计报告要求 1、 设计题目; 2、 目录; 3、 本设计的基本原理; 4、 简要说明本设计内容、用途及特点; 5、 本设计达到的性能指标; 6、 设计方案的选择; 7、 写出各部分设计过程、工作原理、元器件选择; 8、 绘制图纸(手绘2号图纸); 9、 设计参考文献; 10、 附录; 11、 设计总结体会; 12、 设计说明书不得少于10000字。 智能小车运行图
显示速度,距离,超声波探测距离 经过调试,小车完美实现了如下功能 1.小车具有无线遥控功能,小车可完成前进、后退、左转、右转等动作,并且可以正确显示当前的速度及行进位移。
2.小车具有循迹及避障功能,实现了舵机转动下的超声波壁障功能,并且可以正确有序显示小车位移、速度及与前方障碍物距离。
3.与其它组的小车模型配合可以完成交替领跑任务。 4.小车所有模式切换均由遥控器控制。
流程图 硬件原理图 附件一:智能小车系统程序 #include #include
sbit AA=P3^0; sbit DD=P3^1; sbit BB=P3^2; sbit CC=P2^2; sbit LCM_RW=P2^4; //定义LCD引脚 sbit LCM_RS=P2^3;
#define RX P2_0 #define TX P2_1 #define LCM_E P2_5 #define Sevro_moto_pwm P2_7 //接舵机信号端输入PWM信号调节速度 #define LCM_Data P0 #define Busy 0x80 //用于检测LCM状态字中的Busy标识
#define Left_1_led P3_7 //P3_7接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1 #define XUNJI_left_led P3_6 //P3_6接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2 #define XUNJI_right_led P3_5 //P3_5接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3 #define Right_2_led P3_4 //P3_4接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4 #define Left_moto_go {P1_4=1,P1_5=0,P1_6=1,P1_7=0;} //左边两个电机向前走 #define Left_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;} //左边两个电机向后转 #define Left_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;} //左边两个电机停转 #define Right_moto_go {P1_0=1,P1_1=0,P1_2=1,P1_3=0;} //右边两个电机向前走 #define Right_moto_back {P1_0=0,P1_1=1,P1_2=0,P1_3=1;} //右边两个电机向后走 #define Right_moto_Stop {P1_0=0,P1_1=0,P1_2=0,P1_3=0;} //右边两个电机停转
void LCMInit(void); //LCD初始化函数 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); //LCD显示一个字符函数 void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);//LCD显示一个字符串函数 void Delay5Ms(void); //延时5毫秒函数 void Delay400Ms(void); //延时400毫秒函数 void Decode(unsigned char ScanCode); void WriteDataLCM(unsigned char WDLCM); //LCD1602写数据函数 void WriteCommandLCM(unsigned char WCLCM,BuysC);//LCD写命令函数
unsigned char ReadStatusLCM(void); unsigned char code Range[] ="V= cm/s S= . m"; //LCD1602显示格式 unsigned char code welcome[] ="=== Welcome === "; unsigned char code key[]="Press any key..."; unsigned char code ASCII[13] = "0123456789.-M"; unsigned char code table[]="Distance:000.0cm"; unsigned char code table1[]="YAO KONG MO SHI "; unsigned char code table2[]="=XUN JI MO SHI= ";
unsigned char pwm_val_left = 0;//变量定义 unsigned char push_val_left =14;//舵机归中,产生约,1.5MS 信号
unsigned int CH0=0; //循迹模式标志 unsigned int CH1=0; //超声波模式标志 unsigned int t=0; //速度基准变量 unsigned int timer=0; //延时基准变量 unsigned int time=0; unsigned int pwm=250; unsigned int count1=0; //计左电机码盘脉冲值 unsigned char timer1=0; //扫描时间变量 unsigned long S1=0; unsigned long S2=0; unsigned long S3=0; unsigned long S4=0; unsigned long S=0; unsigned long V=0; //定义其速度 unsigned long SS=0; unsigned char disbuff[4]= { 0,0,0,0,}; unsigned char disbuff1[4]={ 0,0,0,0,};
void WriteDataLCM(unsigned char WDLCM) //写数据 { ReadStatusLCM(); //检测忙 LCM_Data = WDLCM; LCM_RS = 1; LCM_RW = 0; LCM_E = 0; //若晶振速度太高可以在这后加小的延时 LCM_E = 0; //延时 LCM_E = 1; }
void WriteCommandLCM(unsigned char WCLCM,BuysC) //写指令,BuysC为0时忽略忙检测