智能小车系统设计

上传人:d**** 文档编号:138478921 上传时间:2022-08-21 格式:DOCX 页数:20 大小:281.98KB
收藏 版权申诉 举报 下载
智能小车系统设计_第1页
第1页 / 共20页
智能小车系统设计_第2页
第2页 / 共20页
智能小车系统设计_第3页
第3页 / 共20页
资源描述:

《智能小车系统设计》由会员分享,可在线阅读,更多相关《智能小车系统设计(20页珍藏版)》请在装配图网上搜索。

1、计算机控制技术综合训练任务书年 季学期学生姓名学 号专业方向班 级题目名称智能小车系统设计2、设计内容及技术要求:(一)、任务描述利用智能小车系统设计2所提供部件(综合训练目前共有3种智能小车模型),组装小 车模型,编写检测、控制程序,实现以单片机为控制系统核心的智能小车系统设计。(二)、控制任务和要求基本任务:1. 完成小车的组装工作2. 小车可完成前进、后退、左转、右转等动作,并且可以正确显示当前的速度及行进位移3. 小车具有循迹(自己设计跑道)及避障功能4. 三周设计任务完成后,不必拆分小车,将小车归还老师并如实汇报功能部件运转情况, 便于老师及时维护,为下一组同学的设计做好准备进阶任务

2、:1. 实现舵机转动下的超声波壁障功能,并且可以正确显示前方物体的距离2. 与按键功能配合,正确有序显示小车位移、速度及与前方障碍物距离3. 小车具有无线遥控功能4. 与其它组的小车模型配合可以完成交替领跑任务二、课程设计总结报告要求:1. 完整的设计任务书:封面(设计题目、指导教师、专业班级、姓名、学号、时间);摘要及关键词(35):设计总体概述(采用何种硬件,利用何种方法,设计何种东西,实现了何种功能)目录(按目录格式书写,页码要标清)第一章绪言(本设计的内容与实现的基本原理,设计的特点及可以最终可以实现的功能,可以达到的性能指标)第二章方案论证(对所提供的硬件理解并画出系统结构图,为实现

3、该任务所采取软件设 计思路及核心算法)第三章硬件设计(按照结构框图对各功能部分进行分别介绍,如系统CPU部分、数据采 集部分、程序控制部分、人机接口部分等)第四章软件设计(整体设计思路,各独立程序功能、原理介绍包括流程图,如主程序、各子程序及中断服务程序)第五章 设计总结(对整个设计过程的总结、体会,还包括设计中遇到的问题及解决的办 法,以及想要实现却未能完成的功能)参考文献:著作格式:作者.书名.版次.出版地:出版者,出版年;期刊格式:作者.文章名.期刊名,年,卷(期):起止页注:字数10000字左右,不得抄袭和雷同,使用学生作业纸(16开)2. 手绘硬件连接2#图一张、手绘软件流程2#图一

4、张。三、设计进度:第一周:熟悉掌握系统要求,完成硬件设计、调试。第二周:完成软件设计,用仿真器完成软、硬件联调,最终实现单片机在目标系统中的 合理运行第三周:完善设计,完成说明书编写,答辩。指导教师签字:附录:电信学院课程设计报告要求1、设计题目;2、目录;3、本设计的基本原理;4、简要说明本设计内容、用途及特点;5、本设计达到的性能指标;6、设计方案的选择;7、写出各部分设计过程、工作原理、元器件选择;8、绘制图纸(手绘2号图纸);9、设计参考文献;10、附录;11、设计总结体会;12、设计说明书不得少于10000字。智能小车运行图显示速度,距离,超声波探测距离经过调试,小车完美实现了如下功

5、能1. 小车具有无线遥控功能,小车可完成前进、后退、左转、右 转等动作,并且可以正确显示当前的速度及行进位移。2. 小车具有循迹及避障功能,实现了舵机转动下的超声波壁障功 能,并且可以正确有序显示小车位移、速度及与前方障碍物距离。3. 与其它组的小车模型配合可以完成交替领跑任务。4. 小车所有模式切换均由遥控器控制。席时霸.郭成啡点煜和陪此.骼配料中孔 X时衲 E -t - ;t frjihten _ N孝E.甘候H f%序I处Z盎苴*唱式谷.-wixxT 回退Fl同科:3L- Sr? -右埔.里一:匚映州!敏岑0障汪也式建中无!H距上娘式.4田声-”韭FT册匡时r - 托辑.叫变下 T :j

6、fiitii流程图硬件原理图附件一:智能小车系统程序#include #include sbit AA=P3”0;sbit DD=P3”1;sbit BB=P3”2;sbit CC=P2”2;sbit LCM_RW=P24;/定义 LCD 引脚sbit LCM_RS=P2”3;#define RX P2_0#define TX P2_1#define LCM_E P2_5P2_7 /接舵机信号端输入PWM信号调节速度用于检测LCM状态字中的Busy标识#define Sevro_moto_pwm#define LCM_Data P0#define Busy 0x80#define Left_1

7、_ledP3_7出信号即中控板上面标记为OUT1#define XUNJI_left_ledP3_6出信号即中控板上面标记为OUT2#define XUNJI_right_ledP3_5出信号即中控板上面标记为OUT3#define Right_2_ledP3_4出信号即中控板上面标记为OUT4/P3_7接四路寻迹模块接口第一路输/P3_6接四路寻迹模块接口第二路输/P3_5接四路寻迹模块接口第三路输/P3_4 接四路寻迹模块接口第四路输#define Left_moto_go(P1_4=1,P1个电机向前走#define Left_moto_back(P1_4=0,P1个电机向后转#defi

8、ne Left_moto_Stop(P1_4=0,P1个电机停转#define Right_moto_go(P1_0=1,P1个电机向前走#define Right_moto_back (P1_0=0,P1个电机向后走#define Right_moto_Stop (P1_0=0,P1个电机停转5=0,P1_6=1,P1_7=0;/左边两5=1,P1_6=0,P1_7=1;/左边两5=0,P1_6=0,P1_7=0;/左边两1=0,P1_2=1,P1_3=0;/右边两1=1,P1_2=0,P1_3=1;/右边两1=0,P1_2=0,P1_3=0;/右边两void LCMInit(void);/

9、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 WriteD

10、ataLCM(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 ASCII13 = 01

11、23456789.-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 信号 void WriteDataLCM(unsigned char WDLCM) /写数据unsigned int CH0=0;unsigned int

12、 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 disbuff4= (unsigned char

13、 disbuff14=(/循迹模式标志超声波模式标志/速度基准变量/延时基准变量/计左电机码盘脉冲值/扫描时间变量定义其速度0,0,0,0,;0,0,0,0,;(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 时 忽略忙检测if (BuysC) ReadStatusLCM();LCM_Data =

14、WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;unsigned char ReadStatusLCM(void)(LCM_Data = 0xFF;LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;while (LCM_Data & Busy);return(LCM_Data);void LCMInit(void)(LCM_Data = 0;WriteCommandLCM(0x38,0);Delay5Ms();WriteCommandLCM(0x38,0);Delay5Ms

15、();WriteCommandLCM(0x38,0);Delay5Ms();根据需要检测忙/读状态检测忙信号/LCM初始化三次显示模式设置,不检测忙信号/显示模式设置,开始要求每次检测忙信号WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1); 关闭显示WriteCommandLCM(0x01,1); 显示清屏WriteCommandLCM(0x06,1); / 显示光标移动设置WriteCommandLCM(0x0c,1); / 显示开及光标设置 按指定位置显示一个字符void DisplayOneChar(unsigned char X, unsi

16、gned char Y, unsigned char DData) (Y &= 0x1;X &= 0xF;if (Y) X |= 0x40;X |= 0x80;WriteCommandLCM(X, 1);WriteDataLCM(DData);限制X不能大于15, Y不能大于1当要显示第二行时地址码+0x40;算出指令码发命令字/发数据 按指定位置显示一串字符void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)(unsigned char ListLength;ListLength =

17、 0;Y &= 0x1;X &= 0xF;/限制X不能大于15, Y不能大于1while (DDataListLength0x19) /若到达字串尾则退出(if (X = 0xF)/X 坐标应小于 0xF(DisplayOneChar(X, Y, DDataListLength);/显示单个字符ListLength+;X+;/5ms延时void Delay5Ms(void)(unsigned int TempCyc = 5552;while(TempCyc-);/400ms 延时void Delay400Ms(void)(unsigned char TempCycA = 5;unsigned

18、int TempCycB;while(TempCycA-)(TempCycB=7269;while(TempCycB-);/*/超声波距离计算函数void Conut(void)(当RX为零时等待开启计数当RX为零时等待while(!RX);TR0=1;while(RX);TR0=0;time=TH0*256+TL0;TH0=0;TL0=0;S=(time*1.7)/10+10;disbuff10=V%10;disbuff11=V/10;DisplayListChar(0, 0, Range);DisplayOneChar(2, 0, ASCIIdisbuff11);DisplayOneCha

19、r(3, 0, ASCIIdisbuff10);disbuff10=SS/10%10;disbuff11=SS/100%10;disbuff12=SS/1000;DisplayOneChar(11, 0, ASCIIdisbuff12);DisplayOneChar(12, 0, ASCIIdisbuff11);DisplayOneChar(13, 1, ASCII10);DisplayOneChar(14, 0, ASCIIdisbuff10);disbuff0=S%10;disbuff1=S/10%10;disbuff2=S/100%10;disbuff3=S/1000;DisplayLi

20、stChar(0, 1, table);DisplayOneChar(9, 1, ASCIIdisbuff3);DisplayOneChar(10, 1, ASCIIdisbuff2);DisplayOneChar(11, 1, ASCIIdisbuff1);DisplayOneChar(12, 1, ASCII10);DisplayOneChar(13, 1, ASCIIdisbuff0);/*/void Conut0(void)/循迹模式显示(disbuff10=V%10;disbuff11=V/10;DisplayListChar(0, 0, Range);DisplayOneChar(

21、2, 0, ASCIIdisbuff11);DisplayOneChar(3, 0, ASCIIdisbuff10);disbuff10=SS/10%10;disbuff11=SS/100%10;disbuff12=SS/1000;DisplayOneChar(11, 0, ASCIIdisbuff12);DisplayOneChar(12, 0, ASCIIdisbuff11);DisplayOneChar(13, 0, ASCII10);DisplayOneChar(14, 0, ASCIIdisbuff10);DisplayListChar(0, 1, table2);/*/void S

22、tartModule()启动模块(TX=1;/启动一次模块_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();nop_();nop_();nop_();nop_();nop_();nop_();nop_();nop_();nop_();nop_();nop_();nop_();nop_();nop_();nop_();TX=0;/*/ms)/*void delayms(unsigned int(unsigned char i=100,j;for(;ms;ms-)(while(-i)(j=10;while(-j);*/void(Timer_Count(

23、void)超声波高电平脉冲宽度计算函数TR0=1;while(RX);TR0=0;Conut();开启计数/当RX为1计数并等待关闭计数/计算 /*/前速前进void run(void)(Left_moto_go ;/左电机往前走Right_moto_go ;/右电机往前走/*/前速后退void backrun(void)(Left_moto_back ;/左电机往前走Right_moto_back ; /右电机往前走/*/左转void leftrun(void)(Left_moto_back ;/左电机往前走Right_moto_go ;/右电机往前走/*/右转void rightrun(v

24、oid)(Left_moto_go ;/左电机往前走Right_moto_back ; /右电机往前走/*/STOPvoid stoprun(void)(Left_moto_Stop ;/左电机停走Right_moto_Stop ; /右电机停走/*/void COMM( void )(V=0;push_val_left=5;/舵机向左转 90 度timer=0;while(timer=4000); /延时400MS让舵机转到其位置 4000StartModule();启动超声波测距Conut();计算距离S2=S;push_val_left=23;舵机向右转 90 度timer=0;whil

25、e(timer=4000); /延时400MS让舵机转到其位置StartModule();启动超声波测距Conut();/计算距离S4=S;push_val_left=14; /舵机归中 timer=0;while(timer=4000); /延时400MS让舵机转到其位置StartModule();启动超声波测距Conut();/计算距离S1=S;if(S2300)|(S4300) /只要左右各有距离小于,30CM小车后退 (backrun();/后退timer=0;while(timerS4)(rightrun();/车的左边比车的右边距离小右转timer=0;while(timer=80

26、0);else(leftrun();/车的左边比车的右边距离大左转timer=0;while(timer=800);/*/void pwm_Servomoto(void)(if(pwm_val_left=100)pwm_val_left=0;/*/*TIMER1中断服务子函数产生PWM信号*/using 2/100US 定时/定时器100US为准。在这个基础上延时void time1()interrupt 3(TH1=(65536-100)/256;TL1=(65536-100)%256;timer+;pwm_val_left+;pwm_Servomoto();t+;timer1+;if(t=

27、6000)(V=count1;count1=0;t=0;if(timer1=500)timer1=0;/*/void intersvrl(void) interrupt 2 using 1(SS+;count1+;/*/void timer0()interrupt 1(void main(void)(Delay400Ms();LCMInit();Delay5Ms();DisplayListChar(0, 0,DisplayListChar(0, 1, TMOD=0X11;TH1=(65536-100)/256;TL1=(65536-100)%256;TH0=0;TL0=0;TR1= 1;ET1

28、= 1;ET0= 1;EX1=1;IT1=1;IE1=0;EA = 1;push_val_left=14;while(1)(if(AA=1&BB=1)(CH0=1;CH1=0;Conut0();Delay400Ms();if(AA=1&CC=1)(CH0=0;CH1=1;stoprun();Delay400Ms();if(timer=800&CH1=1)using 0/TIMER0 计数welcome);key);/启动等待,等LCM讲入工作状态/LCM初始化/延时片刻/100US 定时/开启外部中断0下降沿有效舵机归中/80MS检测启动检测一次800timer=0;StartModule()

29、;Conut();if(S400)run();if(CH0=1)/启动检测计算距离距离小于30CM小车停止/方向函数/距离大于,40CM往前走循迹模式if(XUNJI_left_led=0&XUNJI_right_led=0)(if(timer1=pwm)(run();前进else stoprun(); Conut0(); else(if(XUNJI_right_led=0&XUNJI_left_led=1) 左边检测到黑线(if(timer1=pwm)(Right_moto_go;/右边两个电机正转elsestoprun(); Conut0(); Left_moto_Stopif(XUNJI

30、_left_led=0&XUNJI_right_led=1)/右边检测到黑线(if(timer1=pwm)(Left_moto_go;左边两个电机正转else stoprun(); Conut0(); Right_moto_Stopif(AA=1&BB=0&CC=0&DD=0)(CH0=0;CH1=0;run();DisplayListChar(0, 0, welcome);DisplayListChar(0, 1, tablel);Delay5Ms();stoprun();if(AA=0&BB=0&CC=1&DD=0)(CH0=0;CH1=0;leftrun();DisplayListChar(0, 0, welcome);DisplayListChar(0, 1, table1);Delay5Ms();stoprun();if(AA=0&BB=0&CC=0&DD=1)(CH0=0;CH1=0;rightrun();DisplayListChar(0, 0, welcome);DisplayListChar(0, 1, table1);stoprun();if(AA=0&BB=1&CC=0&DD=0)(CH0=0;CH1=0;backrun();Delay5Ms();stoprun();

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!